42 ExpRun chosenRun = runs.front();
43 B2INFO(
"merging using the ExpRun (" << chosenRun.second <<
"," << chosenRun.first <<
")");
49 bool allObjectsFound =
true;
52 allObjectsFound =
false;
53 B2ERROR(
"No valid DBObject found for 'ECLCrystalEnergyGammaGamma'");
56 allObjectsFound =
false;
57 B2ERROR(
"No valid DBObject found for 'ECLCrystalEnergyMuMu'");
60 allObjectsFound =
false;
61 B2ERROR(
"No valid DBObject found for 'ECLCrystalEnergyee5x5'");
64 allObjectsFound =
false;
65 B2ERROR(
"No valid DBObject found for 'ECLCrystalEnergy'");
68 if (allObjectsFound) {
69 B2INFO(
"Valid objects found for both 'ECLCrystalEnergy' and 'ECLCrystalEnergyGammaGamma'");
71 B2INFO(
"Exiting with failure");
80 vector<float> existingCalib =
m_existing->getCalibVector();
81 vector<float> existingCalibUnc =
m_existing->getCalibUncVector();
90 if (gammaGammaCalib[ic] > 0.) {
91 newCalib[ic] = gammaGammaCalib[ic];
92 newCalibUnc[ic] = gammaGammaCalibUnc[ic];
94 newCalib[ic] = existingCalib[ic];
95 newCalibUnc[ic] = existingCalibUnc[ic];
101 for (
int ic = 0; ic < 9000; ic += 1000) {
102 B2INFO(ic + 1 <<
" " << existingCalib[ic] <<
" " << existingCalibUnc[ic] <<
" "
103 << gammaGammaCalib[ic] <<
" " << gammaGammaCalibUnc[ic] <<
" "
104 << newCalib[ic] <<
" " << newCalibUnc[ic]);
111 TDirectory* executeDir = gDirectory;
115 TFile hfile(fname,
"recreate");
118 htitle +=
" existing values;cellID";
119 TH1F* existingPayload =
new TH1F(
"existingPayload", htitle,
m_numCrystals, 1, 8737);
122 htitle +=
" new values;cellID";
123 TH1F* newPayload =
new TH1F(
"newPayload", htitle,
m_numCrystals, 1, 8737);
126 htitle +=
" ratio new/old;cellID";
127 TH1F* payloadRatioVsCellID =
new TH1F(
"payloadRatioVsCellID", htitle,
m_numCrystals, 1, 8737);
130 htitle +=
" ratio new/old";
131 TH1F* payloadRatio =
new TH1F(
"payloadRatio", htitle, 200, 0.95, 1.05);
134 existingPayload->SetBinContent(cellID, existingCalib[cellID - 1]);
135 existingPayload->SetBinError(cellID, existingCalibUnc[cellID - 1]);
137 newPayload->SetBinContent(cellID, newCalib[cellID - 1]);
138 newPayload->SetBinError(cellID, newCalibUnc[cellID - 1]);
142 if (abs(existingCalib[cellID - 1]) > 1.0e-12) {
143 ratio = newCalib[cellID - 1] / existingCalib[cellID - 1];
144 float rUnc0 = existingCalibUnc[cellID - 1] / existingCalib[cellID - 1];
146 if (abs(newCalib[cellID - 1]) > 1.0e-12) {rUnc1 = newCalibUnc[cellID - 1] / newCalib[cellID - 1];}
147 ratioUnc = ratio *
sqrt(rUnc0 * rUnc0 + rUnc1 * rUnc1);
150 payloadRatioVsCellID->SetBinContent(cellID, ratio);
151 payloadRatioVsCellID->SetBinError(cellID, ratioUnc);
153 payloadRatio->Fill(ratio);
158 B2INFO(
"Debugging histograms written to " << fname);