コード例 #1
0
void TransferFunction::InitializeByItkHistogram(
  const itk::Statistics::Histogram<double>* histogram)
{
  m_Histogram = histogram;
  m_Min = (int)GetHistogram()->GetBinMin(0,0);
  m_Max = (int)GetHistogram()->GetBinMax(0, GetHistogram()->Size()-1);

  /*
  m_ScalarOpacityFunction->Initialize();
  m_ScalarOpacityFunction->AddPoint(m_Min,0.0);
  m_ScalarOpacityFunction->AddPoint(0.0,0.0);
  m_ScalarOpacityFunction->AddPoint(m_Max,1.0);
  m_GradientOpacityFunction->Initialize();
  m_GradientOpacityFunction->AddPoint(m_Min,0.0);
  m_GradientOpacityFunction->AddPoint(0.0,1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.125),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.2),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.25),1.0);
  m_GradientOpacityFunction->AddPoint(m_Max,1.0);
  m_ColorTransferFunction->RemoveAllPoints();
  m_ColorTransferFunction->AddRGBPoint(m_Min,1,0,0);
  m_ColorTransferFunction->AddRGBPoint(m_Max,1,1,0);
  m_ColorTransferFunction->SetColorSpaceToHSV();
  MITK_INFO << "min/max in tf-c'tor:" << m_Min << "/" << m_Max << std::endl;
  */
}
コード例 #2
0
void TransferFunction::InitializeByMitkImage( const Image * image )
{
  HistogramGenerator::Pointer histGen= HistogramGenerator::New();
  histGen->SetImage(image);
  histGen->SetSize(256);
  histGen->ComputeHistogram();
  m_Histogram = histGen->GetHistogram();
  m_Min = (int)GetHistogram()->GetBinMin(0,0);
  m_Max = (int)GetHistogram()->GetBinMax(0, GetHistogram()->Size()-1);
  m_ScalarOpacityFunction->Initialize();
  m_ScalarOpacityFunction->AddPoint(m_Min,0.0);
  m_ScalarOpacityFunction->AddPoint(0.0,0.0);
  m_ScalarOpacityFunction->AddPoint(m_Max,1.0);
  m_GradientOpacityFunction->Initialize();
  m_GradientOpacityFunction->AddPoint(m_Min,0.0);
  m_GradientOpacityFunction->AddPoint(0.0,1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.125),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.2),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.25),1.0);
  m_GradientOpacityFunction->AddPoint(m_Max,1.0);
  m_ColorTransferFunction->RemoveAllPoints();
  m_ColorTransferFunction->AddRGBPoint(m_Min,1,0,0);
  m_ColorTransferFunction->AddRGBPoint(m_Max,1,1,0);
  m_ColorTransferFunction->SetColorSpaceToHSV();
  //MITK_INFO << "min/max in tf-c'tor:" << m_Min << "/" << m_Max << std::endl;
}
コード例 #3
0
void TransferFunction::InitializeHistogram( const Image * image )
{
  HistogramGenerator::Pointer histGen= HistogramGenerator::New();
  histGen->SetImage(image);
  histGen->SetSize(256);
  histGen->ComputeHistogram();
  m_Histogram = histGen->GetHistogram();
  m_Min = (int)GetHistogram()->GetBinMin(0,0);
  m_Max = (int)GetHistogram()->GetBinMax(0, GetHistogram()->Size()-1);
}
コード例 #4
0
int
__glXDispSwap_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
{
    const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);

    return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
コード例 #5
0
int
__glXDisp_GetHistogram(__GLXclientState * cl, GLbyte * pc)
{
    const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);

    return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
コード例 #6
0
ファイル: singlepixswap.c プロジェクト: mirror/xserver
int
__glXDispSwap_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
{
    const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
    ClientPtr client = cl->client;

    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
    return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
コード例 #7
0
ファイル: singlepixswap.c プロジェクト: mirror/xserver
int
__glXDispSwap_GetHistogram(__GLXclientState * cl, GLbyte * pc)
{
    const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
    ClientPtr client = cl->client;

    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
    return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
コード例 #8
0
ファイル: MCA_ROOT.cpp プロジェクト: ksmith0/PixieSuite2
bool MCA_ROOT::StoreData(int mod, int ch) {
	PixieInterface::word_t histo[ADC_SIZE];

	_pif->ReadHistogram(histo, ADC_SIZE, mod, ch);

	TH1F *histogram = GetHistogram(mod,ch);
	if (!histogram) return false;

	for (size_t i = 0; i < ADC_SIZE; i++) {
		histogram->SetBinContent(i+1,histo[i]);
	}

  return true;

}
コード例 #9
0
ファイル: ttSF.C プロジェクト: cedricpri/AnalysisCMS
void ttSF(){

	processID[fakes ] = "00_Fakes_reduced_1outof6"; 
	processID[data  ] = "01_Data_reduced_1outof6" ; 
	processID[WZ    ] = "02_WZTo3LNu"  ; 
	processID[VZ    ] = "03_VZ"        ; 
	processID[TT    ] = "04_TTTo2L2Nu" ; 
	processID[ST    ] = "05_ST"        ; 
	processID[WW    ] = "06_WW"        ; 
	processID[DY    ] = "07_ZJets"     ; 
	processID[TTV   ] = "09_TTV"       ; 
	processID[HWW   ] = "10_HWW"       ; 
	processID[Wg    ] = "11_Wg"        ; 
	processID[Zg    ] = "12_Zg"        ; 
	processID[VVV   ] = "13_VVV"       ; 
	processID[HZ    ] = "14_HZ"        ; 
	processID[WgStar] = "15_WgStar"    ; 


	for( int i = 0; i < nprocess; i++ ){

		cout << "\n\n" << processID[i] << "\n" << endl; 

		GetHistogram( i ); 

		float myyield = ( i > data ) ?  theLumi*myhisto[i]->Integral() : myhisto[i]->Integral(); 

		//cout << myyield << endl;

		if( i > data ) myhisto[i]->Scale(theLumi); 

		for( int j = 0; j < nband; j++ ){

			yield[i][j] = myhisto[i]->Integral( myhisto[i]->FindBin(threshold - (nband-j)*width), myhisto[i]->FindBin(threshold - (nband-j-1)*width));

		
		}

	}


   	TH1F* ttSF = new TH1F( "ttSF","tt SF", nband, threshold-nband*width, threshold );
 
	for( int j = 0; j < nband; j++ ){

		float bkg = yield[fakes][j] + yield[WZ][j] + yield[VZ][j] + yield[ST][j] + 
                            yield[WW][j] + yield[DY][j] + yield[TTV][j] + yield[HWW][j] +
                            yield[Wg][j] + yield[Zg][j] + yield[VVV][j] + yield[HZ][j] + 
                            yield[WgStar][j];
		
		 SF[j] = ( yield[data][j] - bkg )/yield[TT][j];
		eSF[j] = sqrt( yield[data][j] )  /yield[TT][j]; 

		//cout << j << " -  " << SF[j] << " +/- " << eSF[j] << endl;

		ttSF -> SetBinContent( ttSF->FindBin(threshold - (nband-j)*width+width/2), SF[j]  ); 
		ttSF -> SetBinError  ( ttSF->FindBin(threshold - (nband-j)*width+width/2), eSF[j] );  

	}

	ttSF->Fit("pol0");
	

	TCanvas* mycanvas = new TCanvas("mycanvas", "mycanvas"); 

	ttSF -> SetStats(false); 

	ttSF -> Draw(); 

	mycanvas -> SaveAs("figures/ttSF.pdf");
	mycanvas -> SaveAs("figures/ttSF.png");
	


}
コード例 #10
0
//______________________________________________________________________________
void processJpsi2eeQAplots(const Char_t* filename="jpsi_Default.root", 
			   TString suffix = "eps",
			   const Char_t* outfile="Jpsi2eeQAplots_output.root") {
  //
 
  //  
  TFile* file = TFile::Open(filename);
  
  // event wise histograms 
  TH1F* zDistrib = (TH1F*)GetHistogram(file, "default", "Event", "Z");
  
  // electron candidate histograms
  TH2F* tpcDedx = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_signal");
  tpcDedx->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_signal"));
  TH2F* tpcNsigmaEle = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_nSigma_Electrons");
  tpcNsigmaEle->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_nSigma_Electrons"));
  
  // pair candidate histograms
  TH1F* invmass_pp = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1+", "pM");
  TH1F* invmass_pm = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1-", "pM");
  TH1F* invmass_mm = (TH1F*)GetHistogram(file, "default", "Pair_ev1-_ev1-", "pM");
    
  // draw stuff
  TLatex* latex=new TLatex();
  latex->SetNDC();
  latex->SetTextSize(0.04);
  latex->SetTextFont(42);
  TCanvas* c1=new TCanvas("fig_dq_tpcDedx", "");
  if(tpcDedx) {
    tpcDedx->SetStats(kFALSE);
    tpcDedx->GetXaxis()->SetRangeUser(0.0,10.0);
    tpcDedx->GetYaxis()->SetRangeUser(40.0,120.0);
    tpcDedx->SetTitle("");
    tpcDedx->Draw("colz");
    latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
  }
  
  TCanvas* c2=new TCanvas("fig_dq_tpcNsigmaElectron", "");
  if(tpcNsigmaEle) {
    tpcNsigmaEle->SetStats(kFALSE);
    tpcNsigmaEle->GetYaxis()->SetRangeUser(-5.0,5.0);
    tpcNsigmaEle->GetXaxis()->SetRangeUser(0.0,10.0);
    tpcNsigmaEle->SetTitle("");
    tpcNsigmaEle->Draw("colz");
    latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
  }
  
  TCanvas* c3=new TCanvas("fig_dq_eeInvMass", "");
  if(invmass_pm) {
    invmass_pm->SetStats(kFALSE);
    invmass_pm->SetTitle("");
    invmass_pm->SetLineColor(1);
    invmass_pm->GetYaxis()->SetTitle(Form("Pairs per %.0f MeV/c^{2}", 1000.0*invmass_pm->GetXaxis()->GetBinWidth(1)));
    invmass_pm->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
    invmass_pm->Draw();
  }
  if(invmass_pp) {
    invmass_pp->SetLineColor(2);
    invmass_pp->Draw((invmass_pm ? "same" : ""));
  }
  if(invmass_mm) {
    invmass_mm->SetLineColor(4);
    invmass_mm->Draw((invmass_mm ? "same" : ""));
  }
  if(invmass_pm || invmass_mm || invmass_pp)
    latex->DrawLatex(0.12, 0.85, "J/#psi candidates");
  if(invmass_pm && zDistrib && zDistrib->Integral()>1.);
    latex->DrawLatex(0.12, 0.80, Form("candidates / event = %.3f", invmass_pm->Integral() / zDistrib->Integral()));
  TLegend* legend=new TLegend(0.7,0.7,0.89,0.89);
  legend->SetTextFont(42);
  legend->SetBorderSize(0);
  legend->SetFillColor(0);
  if(invmass_pm) legend->AddEntry(invmass_pm, "+- pairs", "l");
  if(invmass_pp) legend->AddEntry(invmass_pp, "++ pairs", "l");
  if(invmass_mm) legend->AddEntry(invmass_mm, "-- pairs", "l");
  if(invmass_mm || invmass_pm || invmass_pp) legend->Draw();
  
  c1->SaveAs(Form("fig_dq_tpcDedx.%s",suffix.Data()));
  c2->SaveAs(Form("fig_dq_tpcNsigmaElectron.%s",suffix.Data()));
  c3->SaveAs(Form("fig_dq_eeInvMass.%s",suffix.Data()));


  //  TFile* save=new TFile(outputName, "RECREATE");
  // c1->Write();
  // c2->Write();
  // c3->Write();
  // save->Close();


  // Added by jsatya

  TFile *fout = TFile::Open(outfile,"UPDATE");
  fout->ls();
  
  TDirectoryFile *cdd = NULL;
  cdd = (TDirectoryFile*)fout->Get("DQ");
  if(!cdd) {
    Printf("Warning: DQ <dir> doesn't exist, creating a new one");
    cdd = (TDirectoryFile*)fout->mkdir("DQ");
  }
  cdd->cd();
  cdd->ls();



  if (invmass_pp){
    invmass_pp->SetName(Form("fig_dq_%s_pp", invmass_pp->GetName()));
    invmass_pp->Write();
  }
  
  if (invmass_pm){
    invmass_pm->SetName(Form("fig_dq_%s_pm", invmass_pm->GetName()));
    invmass_pm->Write();
  }
  if (invmass_mm){
    invmass_mm->SetName(Form("fig_dq_%s_mm", invmass_mm->GetName()));
    invmass_mm->Write();
  }
  
  tpcNsigmaEle->SetName(Form("fig_dq_%s", tpcNsigmaEle->GetName()));
  tpcNsigmaEle->Write();
  
  tpcDedx->SetName(Form("fig_dq_%s", tpcDedx->GetName()));
  tpcDedx->Write();
  
  fout->cd();
  fout->Close();
  
}
コード例 #11
0
ファイル: SIMMCAnalysisThread.cpp プロジェクト: bearing/grif
int SIMMCAnalysisThread::Analyze() {
  // Read SIMDAQ
  double* ADC1;
  int* Ch1;
  qint64* ts1;
  int nADC1;

  QPair<int, double*> pADC1 = ReadData<double>("SIMDAQ1","ADCOutput");
  nADC1 = pADC1.first;
  ADC1 = pADC1.second;
  QPair<int, int*> pCH1 = ReadData<int>("SIMDAQ1","CHAN");
  Ch1 = pCH1.second;
  QPair<int, qint64*> pTS1 = ReadData<qint64>("SIMDAQ1","TS");
  ts1 = pTS1.second;

  // Loop over channels
  for (int channel=0; channel<n_channels_; channel++) {
    // Loop over all events and pull out those from this channel
    QList<double> ADCs_from_channel;
    for (int j=0; j<nADC1; j++) {
      if (Ch1[j]==channel) {
        ADCs_from_channel.append(ADC1[j]);
      }
    }
    // Add array of ADCs from this channel to the channel's histogram
    QString histname = "ADC Channel "+QString::number(channel);
    if (GetHistogram(histname) and ADCs_from_channel.size()>0) {
      UpdateHistogram(histname, &(ADCs_from_channel[0]),ADCs_from_channel.size());
    }
  }

  QList<double> ADCs_channel1;
  QList<double> ADCs_channel2;
  for (int i1 = 0; i1 < nADC1; ++i1) {
    for (int i2 = 0; i2 < nADC1; ++i2) {
      if (Ch1[i1] == 0 && Ch1[i2] == 1) {
        ADCs_channel1.append(ADC1[i1]);
        ADCs_channel2.append(ADC1[i2]);
      }
    }
  }
  if (ADCs_channel1.size()>0) {
    UpdateHistogram("ADC Channel 0 by Channel 1",
                    &(ADCs_channel1[0]), &(ADCs_channel2[0]),ADCs_channel1.size());
  }

  // Read SIMDAQ2
  double* ADC2;
  int* Ch2;
  qint64* ts2;
  int nADC2;

  QPair<int, double*> pADC2 = ReadData<double>("SIMDAQ2","ADCOutput");
  nADC2 = pADC2.first;
  ADC2 = pADC2.second;
  QPair<int, int*> pCH2 = ReadData<int>("SIMDAQ2","CHAN");
  Ch2 = pCH2.second;
  QPair<int, qint64*> pTS2 = ReadData<qint64>("SIMDAQ2","TS");
  ts2 = pTS2.second;

  // Loop over channels
  for (int channel=0; channel<n_channels_; channel++) {
    // Loop over all events and pull out those from this channel
    QList<double> ADCs_from_channel;
    for (int j=0; j<nADC2; j++) {
      if (Ch2[j]==channel) {
        ADCs_from_channel.append(ADC2[j]);
      }
    }
    // Add array of ADCs from this channel to the channel's histogram
    QString histname = "ADC Channel "+QString::number(channel);
    if (GetHistogram(histname) and ADCs_from_channel.size()>0) {
      UpdateHistogram(histname, &(ADCs_from_channel[0]),ADCs_from_channel.size());
    }
  }

  ADCs_channel1.clear();
  ADCs_channel2.clear();
  for (int i1 = 0; i1 < nADC2; ++i1) {
    for (int i2 = 0; i2 < nADC2; ++i2) {
      if (Ch2[i1] == 0 && Ch2[i2] == 1) {
        ADCs_channel1.append(ADC2[i1]);
        ADCs_channel2.append(ADC2[i2]);
      }
    }
  }
  if (ADCs_channel1.size()>0) {
    UpdateHistogram("ADC Channel 0 by Channel 1",
                    &(ADCs_channel1[0]), &(ADCs_channel2[0]),ADCs_channel1.size());
  }

  return 0;
}
コード例 #12
0
int SIMMCAnalysisThread::Analyze() {
  // Read SIMDAQ
  double* ADC1;
  int* Ch1;
  qint64* ts1;
  int nADC1;

  QPair<int, double*> pADC1 = ReadData<double>("SIMDAQ1","ADCOutput");
  nADC1 = pADC1.first;
  ADC1 = pADC1.second;
  QPair<int, int*> pCH1 = ReadData<int>("SIMDAQ1","CHAN");
  Ch1 = pCH1.second;
  QPair<int, qint64*> pTS1 = ReadData<qint64>("SIMDAQ1","TS");
  ts1 = pTS1.second;

  // these should all be the same
  for (int i = 0; i < nADC1; ++i) {
    QString histname = "ADC Channel "+QString::number(Ch1[i]);
    if (GetHistogram(histname)) {
      UpdateHistogram(histname, &(ADC1[i]),1);
    } else {
      std::cerr << "SIMMCAnalysisThread::Analyze: ADC1 channel out of range!  ch="
		<< Ch1[i] << std::endl;
    }
  }

  for (int i1 = 0; i1 < nADC1; ++i1) {
    for (int i2 = 0; i2 < nADC1; ++i2) {
      if (Ch1[i1] == 0 && Ch1[i2] == 1) {
	UpdateHistogram("ADC Channel 0 by Channel 1",&(ADC1[i1]),&(ADC1[i2]),1);
      }
    }
  }

  // Read SIMDAQ2
  double* ADC2;
  int* Ch2;
  qint64* ts2;
  int nADC2;

  QPair<int, double*> pADC2 = ReadData<double>("SIMDAQ2","ADCOutput");
  nADC2 = pADC2.first;
  ADC2 = pADC2.second;
  QPair<int, int*> pCH2 = ReadData<int>("SIMDAQ2","CHAN");
  Ch2 = pCH2.second;
  QPair<int, qint64*> pTS2 = ReadData<qint64>("SIMDAQ2","TS");
  ts2 = pTS2.second;

  for (int i = 0; i < nADC2; ++i) {
    QString histname = "ADC Channel "+QString::number(Ch2[i]);
    if (GetHistogram(histname)) {
      UpdateHistogram(histname, &(ADC2[i]), 1);
    } else {
      std::cerr << "SIMMCAnalysisThread::Analyze: ADC2 channel out of range!  ch=" 
                << Ch2[i] << std::endl;
    }
  }
  for (int i1 = 0; i1 < nADC2; ++i1) {
    for (int i2 = 0; i2 < nADC2; ++i2) {
      if (Ch2[i1] == 0 && Ch2[i2] == 1) {
	UpdateHistogram("ADC Channel 0 by Channel 1", 
                        &(ADC2[i1]), &(ADC2[i2]),1);
      }
    }
  }

  return 0;
}