57 TClonesArray digitCalibrationConstants(
"Belle2::ECLDigitEnergyConstants");
65 TFile* f = TFile::Open(inputFile.c_str(),
"READ");
67 TIter next(f->GetListOfKeys());
69 while ((key = (TKey*) next())) {
71 string histconstants = key->GetName();
73 if (histconstants.compare(
"energy") == 0) {
74 energy = (TH1F*)f->Get(histconstants.c_str());
75 }
else if (histconstants.compare(
"amplitude") == 0) {
76 amplitude = (TH1F*)f->Get(histconstants.c_str());
79 else { B2FATAL(
"Key name does not match any of the following: energy, amplitude!"); }
85 if (nFiles != 1) { B2FATAL(
"Sorry, you must only import one file at a time for now!"); }
87 if (!amplitude) B2FATAL(
"None of the input files contains the histogram called 'amplitude'!");
88 if (!energy) B2FATAL(
"None of the input files contains the histogram called 'energy'!");
92 for (
int bin = 1; bin <= amplitude->GetNbinsX(); ++bin) {
93 float amplitudeval = amplitude->GetBinContent(bin);
94 float energyval = energy->GetBinContent(bin);
148 B2FATAL(
"Sorry, you must only import one file at a time for now!");
153 if (!inputFile || inputFile->IsZombie())
164 int bgFractionBinNum;
169 float correctionFactor;
180 std::vector<int> m_bgFractionBinNum;
181 std::vector<int> m_regNum;
182 std::vector<int> m_phiBinNum;
183 std::vector<int> m_thetaBinNum;
184 std::vector<int> m_energyBinNum;
185 std::vector<float> m_correctionFactor;
187 for (
long iEntry = 0; iEntry < correctionTree->GetEntries(); ++iEntry) {
188 correctionTree->GetEntry(iEntry);
190 m_bgFractionBinNum.push_back(bgFractionBinNum);
191 m_regNum.push_back(regNum);
192 m_phiBinNum.push_back(phiBinNum);
193 m_thetaBinNum.push_back(thetaBinNum);
194 m_energyBinNum.push_back(energyBinNum);
195 m_correctionFactor.push_back(correctionFactor);
212 int numOfReg1ThetaBins;
213 int numOfReg2ThetaBins;
214 int numOfReg3ThetaBins;
239 std::vector<float> m_avgRecEn;
240 std::vector<float> m_lReg1Theta;
241 std::vector<float> m_hReg1Theta;
242 std::vector<float> m_lReg2Theta;
243 std::vector<float> m_hReg2Theta;
244 std::vector<float> m_lReg3Theta;
245 std::vector<float> m_hReg3Theta;
246 std::vector<int> m_numOfBfBins;
247 std::vector<int> m_numOfEnergyBins;
248 std::vector<int> m_numOfPhiBins;
249 std::vector<int> m_numOfReg1ThetaBins;
250 std::vector<int> m_numOfReg2ThetaBins;
251 std::vector<int> m_numOfReg3ThetaBins;
252 std::vector<int> m_phiPeriodicity;
254 for (
long iEntry = 0; iEntry < helperTree->GetEntries(); ++iEntry) {
255 helperTree->GetEntry(iEntry);
256 for (
unsigned int iIdx = 0; iIdx < avgRecEns.size(); ++iIdx) m_avgRecEn.push_back(avgRecEns[iIdx]);
258 m_lReg1Theta.push_back(lReg1Theta);
259 m_hReg1Theta.push_back(hReg1Theta);
260 m_lReg2Theta.push_back(lReg2Theta);
261 m_hReg2Theta.push_back(hReg2Theta);
262 m_lReg3Theta.push_back(lReg3Theta);
263 m_hReg3Theta.push_back(hReg3Theta);
264 m_numOfBfBins.push_back(numOfBfBins);
265 m_numOfEnergyBins.push_back(numOfEnergyBins);
266 m_numOfPhiBins.push_back(numOfPhiBins);
267 m_numOfReg1ThetaBins.push_back(numOfReg1ThetaBins);
268 m_numOfReg2ThetaBins.push_back(numOfReg2ThetaBins);
269 m_numOfReg3ThetaBins.push_back(numOfReg3ThetaBins);
270 m_phiPeriodicity.push_back(phiPeriodicity);
293 m_numOfReg1ThetaBins,
294 m_numOfReg2ThetaBins,
295 m_numOfReg3ThetaBins,
357 B2FATAL(
"Sorry, you must only import one file at a time for now!");
361 if (path.extension() !=
".root")
362 B2FATAL(
"Expecting a .root file. Aborting");
372 double bkgFactor = bg_histo->GetBinContent(1);
374 double thetaMin = theta_en_graph->GetXmin();
375 double thetaMax = theta_en_graph->GetXmax();
376 double phiMin = phi_en_graph->GetXmin();
377 double phiMax = phi_en_graph->GetXmax();
379 double energyMin = theta_en_graph->GetYmin();
380 double energyMax = theta_en_graph->GetYmax();
383 B2DEBUG(28,
"Leakage DBobjects angle boundaries: thetaMin=" << thetaMin <<
" thetaMax=" << thetaMax <<
" phiMin= " << phiMin <<
384 " phiMax= " << phiMax <<
" enmin=" << energyMin <<
385 " enmax=" << energyMax);
394 if (std::abs(bkgFactor - 1.0) < 1e-9) {
397 dbPtr_theta_geo.
construct(*theta_geo_graph, thetaMin, thetaMax, energyMin, energyMax);
399 dbPtr_phi_geo.
construct(*phi_geo_graph, phiMin, phiMax, energyMin, energyMax);
401 dbPtr_theta_en.
construct(*theta_en_graph, thetaMin, thetaMax, energyMin, energyMax);
403 dbPtr_phi_en.
construct(*phi_en_graph, phiMin, phiMax, energyMin, energyMax);
406 dbPtr_theta_geo.
import(iov);
407 dbPtr_phi_geo.
import(iov);
408 dbPtr_theta_en.
import(iov);
411 if (std::abs(bkgFactor - 1.0) < 1e-9) {
414 dbPtr_theta_geo.
construct(*theta_geo_graph, thetaMin, thetaMax, energyMin, energyMax);
416 dbPtr_phi_geo.
construct(*phi_geo_graph, phiMin, phiMax, energyMin, energyMax);
418 dbPtr_theta_en.
construct(*theta_en_graph, thetaMin, thetaMax, energyMin, energyMax);
420 dbPtr_phi_en.
construct(*phi_en_graph, phiMin, phiMax, energyMin, energyMax);
423 dbPtr_theta_geo.
import(iov);
424 dbPtr_phi_geo.
import(iov);
425 dbPtr_theta_en.
import(iov);
435 B2FATAL(
"Sorry, you must only import one file at a time for now!");
439 if (path.extension() !=
".txt")
440 B2FATAL(
"Expecting a .txt file. Aborting");
442 vector<pair<double, double>> m_matchingThresholdPairsFWD;
443 vector<pair<double, double>> m_matchingThresholdPairsBWD;
444 vector<pair<double, pair<double, double>>> m_matchingThresholdPairsBRL;
445 pair<double, double> m_matchingThresholdPair;
446 pair<double, pair<double, double>> m_thetaMatchingThresholdPair;
447 double pt, threshold, thetalimit;
452 while (getline(infile, line)) {
453 istringstream iss(line);
455 if (eclregion ==
"FWD" || eclregion ==
"BWD") {
456 iss >> pt >> threshold;
457 m_matchingThresholdPair = make_pair(pt, threshold);
458 if (eclregion ==
"FWD") m_matchingThresholdPairsFWD.push_back(m_matchingThresholdPair);
459 else m_matchingThresholdPairsBWD.push_back(m_matchingThresholdPair);
460 }
else if (eclregion ==
"BRL") {
461 iss >> thetalimit >> pt >> threshold;
462 m_matchingThresholdPair = make_pair(pt, threshold);
463 m_thetaMatchingThresholdPair = make_pair(thetalimit, m_matchingThresholdPair);
464 m_matchingThresholdPairsBRL.push_back(m_thetaMatchingThresholdPair);
469 dbPtr.
construct(m_matchingThresholdPairsFWD, m_matchingThresholdPairsBWD, m_matchingThresholdPairsBRL);