69 if (fGeomFile.IsNull())
70 Fatal(
"BmnEfficiencyTools::Process()",
"No geometry file passed!!!");
72 TGeoManager::Import(fGeomFile.Data());
76 vector<Int_t> selectedRuns;
77 vector<TString> selectedDst;
79 if (!isMc && !fManualList.size()) {
81 for (Int_t iDst = startRun; iDst < finishRun; iDst++) {
84 TString trigger = fRunTrigInfo->
GetTrigger(iDst);
100 auto triggerSearch = find(fTriggers.begin(), fTriggers.end(), trigger);
101 auto targetSearch = find(fTargets.begin(), fTargets.end(), *targ);
102 auto beamSearch = find(fBeams.begin(), fBeams.end(), beam);
104 if (targetSearch != fTargets.end() && triggerSearch != fTriggers.end() && beamSearch != fBeams.end())
105 selectedRuns.push_back(iDst);
108 for (
auto run : selectedRuns) {
111 + ((!isL1) ? TString::Format(
"bmndst_%d.root",
run) : (TString::Format(
"dst-cbm2bmn-%d.root",
run)));
112 selectedDst.push_back(dstFile);
114 }
else if (!isMc && fManualList.size())
115 for (
auto it : fManualList)
116 selectedDst.push_back(fDataPath +
"/" + TString::Format(
"dst-cbm2bmn-%d.root", it));
118 selectedDst.push_back(fDstName);
124 effGem =
new TClonesArray(
"EffStore2D");
125 for (Int_t iStat = 0; iStat < nStatsGem; iStat++)
126 new ((*effGem)[effGem->GetEntriesFast()])
EffStore2D(
"GEM", iStat, fYRangesGem);
128 effSilicon =
new TClonesArray(
"EffStore2D");
129 for (Int_t iStat = 0; iStat < nStatsSil; iStat++)
130 new ((*effSilicon)[effSilicon->GetEntriesFast()])
EffStore2D(
"SILICON", iStat, fYRangesSilicon);
132 for (
auto it = selectedDst.begin(); it != selectedDst.end(); it++) {
134 eff->
Efficiency(effGem, effSilicon, fYRangesGem, fYRangesSilicon);
138 TFile* fOut =
nullptr;
140 if (fOutFile.IsNull())
141 fOut =
new TFile(
"outFile.root",
"recreate");
143 fOut =
new TFile(Form(
"%s", fOutFile.Data()),
"recreate");
148 for (Int_t iEff = 0; iEff < effGem->GetEntriesFast(); iEff++) {
151 Int_t stat = epsilon->
Station();
153 for (Int_t iGemStat = 0; iGemStat < nStatsGem; iGemStat++) {
154 if (iGemStat != stat)
157 for (Int_t iQp = 0; iQp < nQp; iQp++) {
160 for (
size_t iRange = 0; iRange < fYRangesGem.find(iGemStat)->second.size(); iRange++)
167 for (Int_t iEff = 0; iEff < effSilicon->GetEntriesFast(); iEff++) {
170 Int_t stat = epsilon->
Station();
172 for (Int_t iSilStat = 0; iSilStat < nStatsSil; iSilStat++) {
174 if (iSilStat != stat)
177 for (Int_t iQp = 0; iQp < nQp; iQp++) {
178 epsilon->
efficiency(iQp,
"",
"SILICON")->Write();
179 TH2F* hPassed = (TH2F*)epsilon->
efficiency(iQp,
"xP",
"SILICON")->GetPassedHistogram();
181 epsilon->
efficiency(iQp,
"xP",
"SILICON")->Write();
182 hPassed->Write(
"#varepsilon (x, P)");
185 TString tmp = !iQp ?
">" :
"<";
187 TH1D* hMomPassed = hPassed->ProjectionY(Form(
"Momentum (passed), Q_{p} %s 0", tmp.Data()), 1,
188 hPassed->GetNbinsX());
193 for (
size_t iRange = 0; iRange < fYRangesSilicon.find(iSilStat)->second.size(); iRange++)
204 if (h->GetEntries() == 0)
208 Double_t contentAll = 0.;
209 for (Int_t iBin = 1; iBin < h->GetNbinsX() + 1; iBin++)
210 contentAll += h->GetBinContent(iBin);
212 for (Int_t iBin = 1; iBin < h->GetNbinsX() + 1; iBin++) {
213 h->SetBinContent(iBin, h->GetBinContent(iBin) / contentAll);
214 h->SetBinError(iBin, 0.);
216 h->GetYaxis()->SetRangeUser(0., 1.1 * h->GetMaximum());
void Efficiency(TClonesArray *, TClonesArray *effSilicon, map< Int_t, vector< pair< Double_t, Double_t > > >, map< Int_t, vector< pair< Double_t, Double_t > > >)