/** This method initializes histograms. */ INT MPulseLengths_init() { // This histogram has the pulse lengths on the X-axis and the number of pulses on the Y-axis // One histogram is created for each detector std::map<std::string, std::string> bank_to_detector_map = gSetup->fBankToDetectorMap; for(std::map<std::string, std::string>::iterator mapIter = bank_to_detector_map.begin(); mapIter != bank_to_detector_map.end(); mapIter++) { std::string bankname = mapIter->first; std::string detname = gSetup->GetDetectorName(bankname); std::string histname = "h" + detname + "_Lengths"; std::string histtitle = "Plot of the pulse lengths for the " + detname + " detector"; TH1I* hDetLengths = new TH1I(histname.c_str(), histtitle.c_str(), 100,0,100); hDetLengths->GetXaxis()->SetTitle("Pulse Lengths [N Samples]"); hDetLengths->GetYaxis()->SetTitle("Arbitrary Unit"); hDetLengths->SetBit(TH1::kCanRebin); length_histograms_map[bankname] = hDetLengths; } std::string histname = "hAvgPulseLengthsPerChannel"; std::string histtitle = "Plot of the average pulse lengths per event for the each channel"; average_length_histogram = new TH2I(histname.c_str(), histtitle.c_str(), 1,0,1, 5000,0,5000); average_length_histogram->GetXaxis()->SetTitle("Bank Name"); average_length_histogram->GetYaxis()->SetTitle("MIDAS Event Number"); average_length_histogram->SetBit(TH1::kCanRebin); return SUCCESS; }
plotClasses(const char* canvas, const char* title, int nClasses, const char classes[][200], const int* events, const double* weights) { char evtitle[200], wttitle[200]; strcpy(evtitle,title); strcpy(wttitle,title); strcat(evtitle,": Events"); strcat(wttitle,": Weights"); TCanvas *c = new TCanvas(canvas,"SPR Input Classes",200,10,600,400); gStyle->SetPalette(1); int maxEv = TMath::MaxElement(nClasses,events); double maxWt = TMath::MaxElement(nClasses,weights); TPad* pad1 = new TPad("events", evtitle,0,0,1.,0.5); TPad* pad2 = new TPad("weights",wttitle,0,0.5,1.,1.); pad1->Draw(); pad2->Draw(); // events pad1->cd(); TH1I* hev = new TH1I("events",evtitle,nClasses,0,nClasses); for( int i=0;i<nClasses;i++ ) hev->Fill(classes[i],events[i]); hev->LabelsDeflate("X"); hev->SetLabelSize(0.06,"X"); hev->SetLabelSize(0.1,"X"); hev->SetLabelSize(0.1,"Y"); hev->SetLineColor(4); hev->SetFillColor(4); hev->SetBarWidth(0.8); hev->SetBarOffset(0.1); TAxis* yaxis1 = hev->GetYaxis(); yaxis1->SetRangeUser(0.,1.1*maxEv); hev->Draw("B"); // weights pad2->cd(); TH1D* hwt = new TH1D("weights",wttitle,nClasses,0,nClasses); for( int i=0;i<nClasses;i++ ) hwt->Fill(classes[i],weights[i]); hwt->LabelsDeflate("X"); hwt->SetLabelSize(0.06,"X"); hwt->SetLabelSize(0.1,"X"); hwt->SetLabelSize(0.1,"Y"); hwt->SetLineColor(3); hwt->SetFillColor(3); hwt->SetBarWidth(0.8); hwt->SetBarOffset(0.1); TAxis* yaxis2 = hwt->GetYaxis(); yaxis2->SetRangeUser(0.,1.1*maxWt); hwt->Draw("B"); }
int RFMacro_BeamBunchPeriod(void) { gDirectory->cd("/"); //return to file base directory //Goto Beam Path TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("RF"); if(!locDirectory) return 0; locDirectory->cd(); //Get RF Bunch Period Histograms gDirectory->cd("RF_BeamBunchPeriod"); TH1I* locHist_RFBeamBunchPeriod = (TH1I*)gDirectory->Get("RFBeamBunchPeriod"); //Get/Make Canvas TCanvas *locCanvas = NULL; if(TVirtualPad::Pad() == NULL) locCanvas = new TCanvas("RF_BeamBunchPeriod", "RF_BeamBunchPeriod", 1200, 800); //for testing else locCanvas = gPad->GetCanvas(); //Draw gPad->SetTicks(); gPad->SetGrid(); if(locHist_RFBeamBunchPeriod != NULL) { TH1I* locHist = locHist_RFBeamBunchPeriod; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } return 1; }
int RFMacro_TDCConversion(void) { gDirectory->cd("/"); //return to file base directory //Goto Beam Path TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("RF"); if(!locDirectory) return 0; locDirectory->cd(); //Get RF DeltaT Histograms gDirectory->cd("DeltaT_RF_FirstTime"); TH1I* locHist_FDCRF_FirstTimeDeltaT = (TH1I*)gDirectory->Get("FDCRF_FirstTimeDeltaT"); TH1I* locHist_TOFRF_FirstTimeDeltaT = (TH1I*)gDirectory->Get("TOFRF_FirstTimeDeltaT"); TH1I* locHist_TAGHRF_FirstTimeDeltaT = (TH1I*)gDirectory->Get("TAGHRF_FirstTimeDeltaT"); TH1I* locHist_PSCRF_FirstTimeDeltaT = (TH1I*)gDirectory->Get("PSCRF_FirstTimeDeltaT"); //Get/Make Canvas TCanvas *locCanvas = NULL; if(TVirtualPad::Pad() == NULL) locCanvas = new TCanvas("RF_TDCConversion", "RF_TDCConversion", 1200, 800); //for testing else locCanvas = gPad->GetCanvas(); locCanvas->Divide(2, 2); //Draw locCanvas->cd(1); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TOFRF_FirstTimeDeltaT != NULL) { TH1I* locHist = locHist_TOFRF_FirstTimeDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(2); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TAGHRF_FirstTimeDeltaT != NULL) { TH1I* locHist = locHist_TAGHRF_FirstTimeDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(3); gPad->SetTicks(); gPad->SetGrid(); if(locHist_PSCRF_FirstTimeDeltaT != NULL) { TH1I* locHist = locHist_PSCRF_FirstTimeDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(4); gPad->SetTicks(); gPad->SetGrid(); if(locHist_FDCRF_FirstTimeDeltaT != NULL) { TH1I* locHist = locHist_FDCRF_FirstTimeDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } return 1; }
int RFMacro_SelfResolution(void) { gStyle->SetOptStat(1111); gDirectory->cd("/"); //return to file base directory //Goto Beam Path TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("RF"); if(!locDirectory) return 0; locDirectory->cd(); //Get RF DeltaT Histograms gDirectory->cd("DeltaT_RF_Itself"); TH1I* locHist_FDCRF_SelfDeltaT = (TH1I*)gDirectory->Get("FDCRF_SelfDeltaT"); TH1I* locHist_TOFRF_SelfDeltaT = (TH1I*)gDirectory->Get("TOFRF_SelfDeltaT"); TH1I* locHist_TAGHRF_SelfDeltaT = (TH1I*)gDirectory->Get("TAGHRF_SelfDeltaT"); TH1I* locHist_PSCRF_SelfDeltaT = (TH1I*)gDirectory->Get("PSCRF_SelfDeltaT"); //Time resolutions double locTimeResolutionSq_TOF = locHist_TOFRF_SelfDeltaT->GetStdDev() / sqrt(2.0); locTimeResolutionSq_TOF *= locTimeResolutionSq_TOF; double locTimeResolutionSq_FDC = locHist_FDCRF_SelfDeltaT->GetStdDev() / sqrt(2.0); locTimeResolutionSq_FDC *= locTimeResolutionSq_FDC; double locTimeResolutionSq_PSC = locHist_PSCRF_SelfDeltaT->GetStdDev() / sqrt(2.0); locTimeResolutionSq_PSC *= locTimeResolutionSq_PSC; double locTimeResolutionSq_TAGH = locHist_TAGHRF_SelfDeltaT->GetStdDev() / sqrt(2.0); locTimeResolutionSq_TAGH *= locTimeResolutionSq_TAGH; //Print Coarse offsets to screen: cout << "Time-resolution-squared for TOF/TAGH/PSC/FDC are: " << locTimeResolutionSq_TOF << ", " << locTimeResolutionSq_TAGH << ", " << locTimeResolutionSq_PSC << ", " << locTimeResolutionSq_FDC << endl; //Print Coarse offsets to file: ofstream locOutputFileStream; locOutputFileStream.open("rf_time_resolution_sq.txt"); locOutputFileStream << std::setprecision(6) << locTimeResolutionSq_TOF << " " << locTimeResolutionSq_TAGH << " " << locTimeResolutionSq_PSC << " " << locTimeResolutionSq_FDC << endl; locOutputFileStream.close(); //Get/Make Canvas TCanvas *locCanvas = NULL; if(TVirtualPad::Pad() == NULL) locCanvas = new TCanvas("RF_SelfResolution", "RF_SelfResolution", 1200, 800); //for testing else locCanvas = gPad->GetCanvas(); locCanvas->Divide(2, 2); //Draw locCanvas->cd(1); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TOFRF_SelfDeltaT != NULL) { TH1I* locHist = locHist_TOFRF_SelfDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(2); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TAGHRF_SelfDeltaT != NULL) { TH1I* locHist = locHist_TAGHRF_SelfDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(3); gPad->SetTicks(); gPad->SetGrid(); if(locHist_PSCRF_SelfDeltaT != NULL) { TH1I* locHist = locHist_PSCRF_SelfDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(4); gPad->SetTicks(); gPad->SetGrid(); if(locHist_FDCRF_SelfDeltaT != NULL) { TH1I* locHist = locHist_FDCRF_SelfDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } }
int main(void) { gStyle->SetOptStat(1111); TDirectory *locTopDirectory = gDirectory; //Goto Beam Path TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("RF"); if(!locDirectory) return 0; locDirectory->cd(); //Get RF DeltaT Histograms gDirectory->cd("DeltaT_RF_TAGH"); TH1I* locHist_FDCRF_TaggerDeltaT = (TH1I*)gDirectory->Get("FDCRF_TaggerDeltaT"); TH1I* locHist_TOFRF_TaggerDeltaT = (TH1I*)gDirectory->Get("TOFRF_TaggerDeltaT"); TH1I* locHist_TAGHRF_TaggerDeltaT = (TH1I*)gDirectory->Get("TAGHRF_TaggerDeltaT"); TH1I* locHist_PSCRF_TaggerDeltaT = (TH1I*)gDirectory->Get("PSCRF_TaggerDeltaT"); //Get/Make Canvas TCanvas *locCanvas = NULL; if(TVirtualPad::Pad() == NULL) locCanvas = new TCanvas("RF_TaggerDeltaT", "RF_TaggerDeltaT", 1200, 800); //for testing else locCanvas = gPad->GetCanvas(); locCanvas->Divide(2, 2); //Draw locCanvas->cd(1); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TOFRF_TaggerDeltaT != NULL) { TH1I* locHist = locHist_TOFRF_TaggerDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(2); gPad->SetTicks(); gPad->SetGrid(); if(locHist_TAGHRF_TaggerDeltaT != NULL) { TH1I* locHist = locHist_TAGHRF_TaggerDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(3); gPad->SetTicks(); gPad->SetGrid(); if(locHist_PSCRF_TaggerDeltaT != NULL) { TH1I* locHist = locHist_PSCRF_TaggerDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } locCanvas->cd(4); gPad->SetTicks(); gPad->SetGrid(); if(locHist_FDCRF_TaggerDeltaT != NULL) { TH1I* locHist = locHist_FDCRF_TaggerDeltaT; locHist->GetXaxis()->SetTitleSize(0.05); locHist->GetYaxis()->SetTitleSize(0.05); locHist->GetXaxis()->SetLabelSize(0.05); locHist->GetYaxis()->SetLabelSize(0.05); locHist->Draw(); } }
void fitParamSet( string plc = "Pi", string charge = "n", int iPar = 0 ){ gStyle->SetOptStat( 0 ); gStyle->SetOptFit( 111 ); XmlConfig cfg( "TpcEff.xml" ); Logger::setGlobalLogLevel( "info" ); vector<int> centralityBins = { 0, 1, 2, 3, 4, 5, 6 }; vector<double> centrality = { 266.9, 218.8, 167.2, 114.3, 75.06, 36.99, 11.8 }; vector<XmlFunction> fns; vector<double> x, y, ey; for ( int i : centralityBins ){ INFO( "", fmt::format("{0}_{1}.TpcEffParams[{2}]", plc, charge, i) ); XmlFunction fn( &cfg, fmt::format("{0}_{1}.TpcEffParams[{2}]", plc, charge, i) ); fns.push_back( fn ); } // Parameter A y.clear(); x.clear(); for ( int i : centralityBins ){ y.push_back( fns[i].getTF1()->GetParameter( iPar ) ); ey.push_back( fns[i].getTF1()->GetParError( iPar ) ); x.push_back( centrality[ i ] ); } TH1I* frame = new TH1I( "frame", (plc_label( plc, charge ) + " efficiency fit parameter " + ts( iPar ) ).c_str(), 100, 0, 300 ); TGraphErrors * gA = new TGraphErrors( x.size(), x.data(), y.data(), 0, ey.data() ); TF1 * fpol = new TF1( "fpol1", "pol1" ); gA->Fit( fpol, "SE" ); TFitResultPtr fitResult = gA->Fit( fpol, "SE" ); double x1 = 0; double x2 = 300; TGraphErrors * band = FitConfidence::choleskyBands( fitResult, fpol, 500, 100, nullptr, x1, x2 ); frame->Draw(); vector<double> rangeMod = { 0.05, 0.05, 2 }; frame->GetYaxis()->SetRangeUser( *std::min_element(y.begin(),y.end()) - rangeMod[ iPar ], *std::max_element(y.begin(),y.end()) + rangeMod[ iPar ] ); gA->Draw( "same pe" ); band->SetFillColorAlpha( kRed, 0.7 ); band->Draw( "same e3" ); gA->SetMarkerStyle( 8 ); gA->SetMarkerSize( 2 ); // gA->GetXaxis()->SetRangeUser( 0, 10 ); // XmlFunction fn( &cfg, "Pi_n.TpcEffParams[0]" ); // INFO( "", fn.getTF1()->GetParameter( 0 ) ); // translate name to even format map<string, string> chargeMap = { { "p" , "c1" }, { "n" , "c0" } } ; map<string, string> plcMap = { { "Pi" , "p0" }, { "K" , "p1" }, { "P" , "p2" } }; map<int, string> parMap = { { 0 , "a" }, { 1 , "b" }, { 2 , "c" } }; gPad->Print( fmt::format( "efficiency_{0}_{1}_{2}.png", chargeMap[ charge ], plcMap[ plc ], parMap[ iPar ] ).c_str() ); }