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; */ }
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; }
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); }
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); }
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); }
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); }
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); }
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; }
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"); }
//______________________________________________________________________________ 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(); }
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; }
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; }