10 #include <beast/analysis/modules/NtuplePhase1_v6Module.h>
11 #include <beast/analysis/modules/BEASTTree_v5.h>
14 #include <framework/datastore/DataStore.h>
15 #include <framework/datastore/StoreObjPtr.h>
18 #include <framework/logging/Logger.h>
19 #include <framework/core/RandomNumbers.h>
22 #include <framework/io/RootIOUtilities.h>
23 #include <framework/dataobjects/EventMetaData.h>
38 using namespace RootIOUtilities;
53 setDescription(
"Read SKB PVs, simulated measurements of BEAST sensors, and write scaled simulated Ntuple in BEAST phase 1 data format");
57 addParam(
"inputFileNames", m_inputFileNames,
58 "List of files with SKB PVs ");
60 addParam(
"outputFileName", m_outputFileName,
"Output file name");
64 addParam(
"input_Time_eqv", m_input_Time_eqv,
"time-eqv");
66 addParam(
"input_I_HER", m_input_I_HER,
"HER current");
67 addParam(
"input_I_LER", m_input_I_LER,
"LER current");
69 addParam(
"input_P_HER", m_input_P_HER,
"HER pressure");
70 addParam(
"input_P_LER", m_input_P_LER,
"LER pressure");
72 addParam(
"input_sigma_x_HER", m_input_sigma_x_HER,
"HER beam size");
73 addParam(
"input_sigma_x_LER", m_input_sigma_x_LER,
"LER beam size");
74 addParam(
"input_sigma_y_HER", m_input_sigma_y_HER,
"HER beam size");
75 addParam(
"input_sigma_y_LER", m_input_sigma_y_LER,
"LER beam size");
77 addParam(
"input_bunchNb_HER", m_input_bunchNb_HER,
"HER bunch number");
78 addParam(
"input_bunchNb_LER", m_input_bunchNb_LER,
"LER bunch number");
80 addParam(
"input_data_bunchNb_HER", m_input_data_bunchNb_HER,
"HER bunch number");
81 addParam(
"input_data_bunchNb_LER", m_input_data_bunchNb_LER,
"LER bunch number");
82 addParam(
"input_data_SingleBeam", m_input_data_SingleBeam,
"LER/HER/Both");
84 addParam(
"input_LT_SAD_RLR", m_input_LT_SAD_RLR,
"SAD Low Ring Loss Rate");
85 addParam(
"input_HT_SAD_RLR", m_input_HT_SAD_RLR,
"SAD High Ring Loss Rate");
86 addParam(
"input_LC_SAD_RLR", m_input_LC_SAD_RLR,
"SAD Low Ring Loss Rate");
87 addParam(
"input_HC_SAD_RLR", m_input_HC_SAD_RLR,
"SAD High Ring Loss Rate");
88 addParam(
"input_LB_SAD_RLR", m_input_LB_SAD_RLR,
"SAD Low Ring Loss Rate");
89 addParam(
"input_HB_SAD_RLR", m_input_HB_SAD_RLR,
"SAD High Ring Loss Rate");
90 addParam(
"input_LC_SAD_RLR_av", m_input_LC_SAD_RLR_av,
"SAD Low Ring Loss Rate");
91 addParam(
"input_HC_SAD_RLR_av", m_input_HC_SAD_RLR_av,
"SAD High Ring Loss Rate");
92 addParam(
"input_LB_SAD_RLR_av", m_input_LB_SAD_RLR_av,
"SAD Low Ring Loss Rate");
93 addParam(
"input_HB_SAD_RLR_av", m_input_HB_SAD_RLR_av,
"SAD High Ring Loss Rate");
95 addParam(
"input_BGSol", m_input_BGSol,
"BG solution 0 or 1");
96 addParam(
"input_ToSol", m_input_ToSol,
"To solution 0 or 1");
98 addParam(
"input_Z", m_input_Z,
"Z number");
100 addParam(
"input_GasCorrection", m_input_GasCorrection,
"GasCorrection");
102 addParam(
"input_part", m_input_part,
"Part");
104 addParam(
"inputHistoFileNames", m_inputHistoFileNames,
105 "List of root files with histograms");
107 addParam(
"inputRateHistoNames", m_inputRateHistoNames,
108 "List of rate histograms");
109 addParam(
"inputDoseHistoNames", m_inputDoseHistoNames,
110 "List of dose histograms");
111 addParam(
"inputRateHistoNamesVrs", m_inputRateHistoNamesVrs,
112 "List of rate histograms");
113 addParam(
"inputDoseHistoNamesVrs", m_inputDoseHistoNamesVrs,
114 "List of dose histograms");
117 addParam(
"input_PIN_width", m_input_PIN_width,
"PIN width");
118 addParam(
"input_HE3_EfCor", m_input_HE3_EfCor,
"HE3 inefficiency correction");
132 NtuplePhase1_v6Module::~NtuplePhase1_v6Module()
136 void NtuplePhase1_v6Module::initialize()
142 if (m_inputFileNames.empty()) {
143 B2FATAL(
"No valid files specified!");
147 TDirectory* dir = gDirectory;
148 for (
const string& fileName : m_inputFileNames) {
149 TFile* f = TFile::Open(fileName.c_str(),
"READ");
150 if (!f or !f->IsOpen()) {
151 B2FATAL(
"Couldn't open input file " + fileName);
159 m_tree =
new TChain(
"tout");
160 for (
const string& fileName : m_inputFileNames) {
161 m_tree->AddFile(fileName.c_str());
163 m_numEvents = m_tree->GetEntries();
164 if (m_numEvents == 0) B2ERROR(
c_treeNames[DataStore::c_Event] <<
" has no entires");
167 m_tree->SetBranchAddress(
"ts", &(m_beast.ts));
168 m_tree->SetBranchAddress(
"event", &(m_beast.event));
169 m_tree->SetBranchAddress(
"run", &(m_beast.run));
170 m_tree->SetBranchAddress(
"subrun", &(m_beast.subrun));
171 m_tree->SetBranchAddress(
"SKB_HER_injectionFlag", &(m_beast.SKB_HER_injectionFlag));
172 m_tree->SetBranchAddress(
"SKB_LER_injectionFlag", &(m_beast.SKB_LER_injectionFlag));
173 m_tree->SetBranchAddress(
"SKB_HER_injectionFlag_safe", &(m_beast.SKB_HER_injectionFlag_safe));
174 m_tree->SetBranchAddress(
"SKB_LER_injectionFlag_safe", &(m_beast.SKB_LER_injectionFlag_safe));
175 m_tree->SetBranchAddress(
"SKB_HER_abortFlag", &(m_beast.SKB_HER_abortFlag));
176 m_tree->SetBranchAddress(
"SKB_LER_abortFlag", &(m_beast.SKB_LER_abortFlag));
177 m_tree->SetBranchAddress(
"SKB_HER_abortFlag_safe", &(m_beast.SKB_HER_abortFlag_safe));
178 m_tree->SetBranchAddress(
"SKB_LER_abortFlag_safe", &(m_beast.SKB_LER_abortFlag_safe));
179 m_tree->SetBranchAddress(
"SKB_Status", &(m_beast.SKB_Status));
180 m_tree->SetBranchAddress(
"SKB_HER_injectionRate", &(m_beast.SKB_HER_injectionRate));
181 m_tree->SetBranchAddress(
"SKB_LER_injectionRate", &(m_beast.SKB_LER_injectionRate));
182 m_tree->SetBranchAddress(
"SKB_HER_lifetime", &(m_beast.SKB_HER_lifetime));
183 m_tree->SetBranchAddress(
"SKB_LER_lifetime", &(m_beast.SKB_LER_lifetime));
184 m_tree->SetBranchAddress(
"SKB_LER_current", &(m_beast.SKB_LER_current));
185 m_tree->SetBranchAddress(
"SKB_HER_current", &(m_beast.SKB_HER_current));
186 m_tree->SetBranchAddress(
"SKB_LER_injectionEfficiency", &(m_beast.SKB_LER_injectionEfficiency));
187 m_tree->SetBranchAddress(
"SKB_HER_injectionEfficiency", &(m_beast.SKB_HER_injectionEfficiency));
188 m_tree->SetBranchAddress(
"SKB_beamLoss_ionChambers_mean", &(m_beast.SKB_beamLoss_ionChambers_mean));
189 m_tree->SetBranchAddress(
"SKB_beamLoss_PINdiodes_mean", &(m_beast.SKB_beamLoss_PINdiodes_mean));
190 m_tree->SetBranchAddress(
"SKB_beamLoss_nearCollimators", &(m_beast.SKB_beamLoss_nearCollimators));
191 m_tree->SetBranchAddress(
"SKB_beamLoss_aroundMasks", &(m_beast.SKB_beamLoss_aroundMasks));
192 m_tree->SetBranchAddress(
"SKB_LER_injectionCharge", &(m_beast.SKB_LER_injectionCharge));
193 m_tree->SetBranchAddress(
"SKB_HER_injectionCharge", &(m_beast.SKB_HER_injectionCharge));
194 m_tree->SetBranchAddress(
"SKB_LER_injectionRepetitionRate", &(m_beast.SKB_LER_injectionRepetitionRate));
195 m_tree->SetBranchAddress(
"SKB_HER_injectionRepetitionRate", &(m_beast.SKB_HER_injectionRepetitionRate));
196 m_tree->SetBranchAddress(
"SKB_LER_injectionNumberOfBunches", &(m_beast.SKB_LER_injectionNumberOfBunches));
197 m_tree->SetBranchAddress(
"SKB_HER_injectionNumberOfBunches", &(m_beast.SKB_HER_injectionNumberOfBunches));
198 m_tree->SetBranchAddress(
"SKB_LER_pressures", &(m_beast.SKB_LER_pressures));
199 m_tree->SetBranchAddress(
"SKB_HER_pressures", &(m_beast.SKB_HER_pressures));
200 m_tree->SetBranchAddress(
"SKB_LER_pressure_average", &(m_beast.SKB_LER_pressure_average));
201 m_tree->SetBranchAddress(
"SKB_HER_pressure_average", &(m_beast.SKB_HER_pressure_average));
202 m_tree->SetBranchAddress(
"SKB_LER_pressures_corrected", &(m_beast.SKB_LER_pressures_corrected));
203 m_tree->SetBranchAddress(
"SKB_HER_pressures_corrected", &(m_beast.SKB_HER_pressures_corrected));
204 m_tree->SetBranchAddress(
"SKB_LER_pressure_average_corrected", &(m_beast.SKB_LER_pressure_average_corrected));
205 m_tree->SetBranchAddress(
"SKB_HER_pressure_average_corrected", &(m_beast.SKB_HER_pressure_average_corrected));
206 m_tree->SetBranchAddress(
"SKB_HER_collimatorPositions_mm", &(m_beast.SKB_HER_collimatorPositions_mm));
207 m_tree->SetBranchAddress(
"SKB_HER_collimatorPositions_DMM", &(m_beast.SKB_HER_collimatorPositions_DMM));
208 m_tree->SetBranchAddress(
"SKB_HER_collimatorPositions_inX", &(m_beast.SKB_HER_collimatorPositions_inX));
209 m_tree->SetBranchAddress(
"SKB_HER_collimatorPositions_inY", &(m_beast.SKB_HER_collimatorPositions_inY));
210 m_tree->SetBranchAddress(
"SKB_HER_collimatorPositions_fromBeam", &(m_beast.SKB_HER_collimatorPositions_fromBeam));
211 m_tree->SetBranchAddress(
"SKB_LER_collimatorPositions_mm", &(m_beast.SKB_LER_collimatorPositions_mm));
212 m_tree->SetBranchAddress(
"SKB_LER_collimatorPositions_X", &(m_beast.SKB_LER_collimatorPositions_X));
213 m_tree->SetBranchAddress(
"SKB_LER_collimatorPositions_Y", &(m_beast.SKB_LER_collimatorPositions_Y));
214 m_tree->SetBranchAddress(
"SKB_LER_collimatorPositions_fromBeam", &(m_beast.SKB_LER_collimatorPositions_fromBeam));
215 m_tree->SetBranchAddress(
"SKB_HER_beamSize_xray_X", &(m_beast.SKB_HER_beamSize_xray_X));
216 m_tree->SetBranchAddress(
"SKB_HER_beamSize_xray_Y", &(m_beast.SKB_HER_beamSize_xray_Y));
217 m_tree->SetBranchAddress(
"SKB_HER_correctedBeamSize_xray_Y", &(m_beast.SKB_HER_correctedBeamSize_xray_Y));
218 m_tree->SetBranchAddress(
"SKB_LER_beamSize_xray_X", &(m_beast.SKB_LER_beamSize_xray_X));
219 m_tree->SetBranchAddress(
"SKB_LER_beamSize_xray_Y", &(m_beast.SKB_LER_beamSize_xray_Y));
220 m_tree->SetBranchAddress(
"SKB_LER_correctedBeamSize_xray_Y", &(m_beast.SKB_LER_correctedBeamSize_xray_Y));
221 m_tree->SetBranchAddress(
"SKB_LER_beamSize_SR_X", &(m_beast.SKB_LER_beamSize_SR_X));
222 m_tree->SetBranchAddress(
"SKB_LER_beamSize_SR_Y", &(m_beast.SKB_LER_beamSize_SR_Y));
223 m_tree->SetBranchAddress(
"SKB_HER_beamSize_SR_X", &(m_beast.SKB_HER_beamSize_SR_X));
224 m_tree->SetBranchAddress(
"SKB_HER_beamSize_SR_Y", &(m_beast.SKB_HER_beamSize_SR_Y));
225 m_tree->SetBranchAddress(
"SKB_HER_integratedCurrent", &(m_beast.SKB_HER_integratedCurrent));
226 m_tree->SetBranchAddress(
"SKB_LER_integratedCurrent", &(m_beast.SKB_LER_integratedCurrent));
227 m_tree->SetBranchAddress(
"SKB_LER_partialPressures_D06", &(m_beast.SKB_LER_partialPressures_D06));
228 m_tree->SetBranchAddress(
"SKB_LER_partialPressures_D02", &(m_beast.SKB_LER_partialPressures_D02));
229 m_tree->SetBranchAddress(
"SKB_LER_pressures_local", &(m_beast.SKB_LER_pressures_local));
230 m_tree->SetBranchAddress(
"SKB_HER_pressures_local", &(m_beast.SKB_HER_pressures_local));
231 m_tree->SetBranchAddress(
"SKB_LER_pressures_local_corrected", &(m_beast.SKB_LER_pressures_local_corrected));
232 m_tree->SetBranchAddress(
"SKB_HER_pressures_local_corrected", &(m_beast.SKB_HER_pressures_local_corrected));
233 m_tree->SetBranchAddress(
"SKB_LER_Zeff_D02", &(m_beast.SKB_LER_Zeff_D02));
234 m_tree->SetBranchAddress(
"SKB_LER_Zeff_D06", &(m_beast.SKB_LER_Zeff_D06));
235 m_tree->SetBranchAddress(
"CSI_sumE", &(m_beast.CSI_data_sumE));
236 m_tree->SetBranchAddress(
"BGO_dose", &(m_beast.BGO_data_dose));
237 m_tree->SetBranchAddress(
"PIN_dose", &(m_beast.PIN_data_dose));
238 m_tree->SetBranchAddress(
"DIA_dose", &(m_beast.DIA_data_dose));
240 m_tree->SetBranchAddress(
"HE3_rate", &(m_beast.HE3_data_rate));
241 m_tree->SetBranchAddress(
"CSI_hitRate", &(m_beast.CSI_data_rate));
242 m_tree->SetBranchAddress(
"CSI_binnedE", &(m_beast.CSI_data_Ebin));
243 m_tree->SetBranchAddress(
"SCI_rate", &(m_beast.QCSS_data_rate));
244 m_tree->SetBranchAddress(
"CLW_N_MIPs_online", &(m_beast.CLAWS_data_rate));
246 if (m_numEvents > 0) {
248 m_DayBin = (int)((m_beast.ts - 1454943600) / 60. / 60. / 24.);
253 if (m_inputFileNames.empty()) {
254 B2FATAL(
"No valid files specified!");
257 fctRate_HB =
new TF1(
"fctRate_HB",
"[0] * x*x * log([1] / TMath::Power(x,1./3.) + [2])", 1.0, 19.0);
258 fctRate_LB =
new TF1(
"fctRate_LB",
"[0] * x*x * log([1] / TMath::Power(x,1./3.) + [2])", 1.0, 19.0);
259 fctRate_HC =
new TF1(
"fctRate_HC",
"[0] * x*x / TMath::Power( ([1] / TMath::Power(x,1./3.) + [2]), 2.)", 1.0, 19.0);
260 fctRate_LC =
new TF1(
"fctRate_LC",
"[0] * x*x / TMath::Power( ([1] / TMath::Power(x,1./3.) + [2]), 2.)", 1.0, 19.0);
261 fctRate_HB->SetParameters(0.183373, 0.117173, 1.23431);
262 fctRate_LB->SetParameters(0.900838, 0.0455552, 1.10098);
263 fctRate_HC->SetParameters(1.80992, -0.000115401, 8.4047);
264 fctRate_LC->SetParameters(0.210872, -4.50637e-06, 1.64209);
265 m_input_Z_scaling[0] = fctRate_HC->Eval(m_input_Z[0]) / fctRate_HC->Eval(7);
266 m_input_Z_scaling[1] = fctRate_LC->Eval(m_input_Z[1]) / fctRate_LC->Eval(7);
267 m_input_Z_scaling[2] = fctRate_HB->Eval(m_input_Z[2]) / fctRate_HB->Eval(7);
268 m_input_Z_scaling[3] = fctRate_LB->Eval(m_input_Z[3]) / fctRate_LB->Eval(7);
270 if (m_input_Z[0] == 0) m_input_Z_scaling[0] = 0;
271 if (m_input_Z[1] == 0) m_input_Z_scaling[1] = 0;
272 if (m_input_Z[2] == 0) m_input_Z_scaling[2] = 0;
273 if (m_input_Z[3] == 0) m_input_Z_scaling[3] = 0;
278 const double RadConv = 6.24e7;
281 TDirectory* dirh = gDirectory;
284 for (
const string& fileNameTmp : m_inputHistoFileNames) {
285 const TString& fileName = (TString)fileNameTmp;
286 fh[iter] = TFile::Open(fileName,
"READ");
287 if (!fh[iter] or !fh[iter]->IsOpen()) {
288 B2FATAL(
"Couldn't open input file " + fileName);
290 if (fileName.Contains(
"Touschek") || fileName.Contains(
"Coulomb") || fileName.Contains(
"Brems")) {
291 for (
const string& HistoRateNameTmp : m_inputRateHistoNames) {
292 const TString& HistoRateName = (TString)HistoRateNameTmp;
295 if (HistoRateName.Contains(
"csi")) h1D = (TH1F*)fh[iter]->Get(TString::Format(
"csi_rate_%d", m_DayBin));
296 else h1D = (TH1F*)fh[iter]->Get(HistoRateName);
298 for (
int i = 0; i < h1D->GetNbinsX(); i++) {
299 double counts = h1D->GetBinContent(i + 1);
300 double rate = counts / m_input_Time_eqv;
302 if (fileName.Contains(
"Coulomb")) {
303 if (fileName.Contains(
"HER")) rate *= m_input_Z_scaling[0];
304 if (fileName.Contains(
"LER")) rate *= m_input_Z_scaling[1];
306 if (fileName.Contains(
"Brems")) {
307 if (fileName.Contains(
"HER")) rate *= m_input_Z_scaling[2];
308 if (fileName.Contains(
"LER")) rate *= m_input_Z_scaling[3];
311 if (HistoRateName.Contains(
"Def")) rate *= m_input_HE3_EfCor[i];
313 if (fileName.Contains(
"HER")) {
314 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Touschek")) m_input_HT_QCSS_rate.push_back(rate);
315 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Touschek")) m_input_HT_CLAWS_rate.push_back(rate);
316 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Touschek")) m_input_HT_CSI_rate.push_back(rate);
317 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Touschek")) m_input_HT_HE3_rate.push_back(rate);
318 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Touschek")) m_input_HT_TPC_rate.push_back(rate);
319 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Touschek")) m_input_HT_TPC_angular_rate.push_back(rate);
320 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Touschek")) m_input_HT_TPC_angular_dose.push_back(rate);
321 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Brems")) m_input_HB_QCSS_rate_av.push_back(rate);
322 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Brems")) m_input_HB_CLAWS_rate_av.push_back(rate);
323 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Brems")) m_input_HB_CSI_rate_av.push_back(rate);
324 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Brems")) m_input_HB_HE3_rate_av.push_back(rate);
325 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Brems")) m_input_HB_TPC_rate_av.push_back(rate);
326 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Brems")) m_input_HB_TPC_angular_rate_av.push_back(rate);
327 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Brems")) m_input_HB_TPC_angular_dose_av.push_back(rate);
328 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Coulomb")) m_input_HC_QCSS_rate_av.push_back(rate);
329 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Coulomb")) m_input_HC_CLAWS_rate_av.push_back(rate);
330 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Coulomb")) m_input_HC_CSI_rate_av.push_back(rate);
331 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Coulomb")) m_input_HC_HE3_rate_av.push_back(rate);
332 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Coulomb")) m_input_HC_TPC_rate_av.push_back(rate);
333 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Coulomb")) m_input_HC_TPC_angular_rate_av.push_back(rate);
334 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Coulomb")) m_input_HC_TPC_angular_dose_av.push_back(rate);
336 if (fileName.Contains(
"LER")) {
337 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Touschek")) m_input_LT_QCSS_rate.push_back(rate);
338 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Touschek")) m_input_LT_CLAWS_rate.push_back(rate);
339 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Touschek")) m_input_LT_CSI_rate.push_back(rate);
340 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Touschek")) m_input_LT_HE3_rate.push_back(rate);
341 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Touschek")) m_input_LT_TPC_rate.push_back(rate);
342 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Touschek")) m_input_LT_TPC_angular_rate.push_back(rate);
343 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Touschek")) m_input_LT_TPC_angular_dose.push_back(rate);
344 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Brems")) m_input_LB_QCSS_rate_av.push_back(rate);
345 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Brems")) m_input_LB_CLAWS_rate_av.push_back(rate);
346 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Brems")) m_input_LB_CSI_rate_av.push_back(rate);
347 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Brems")) m_input_LB_HE3_rate_av.push_back(rate);
348 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Brems")) m_input_LB_TPC_rate_av.push_back(rate);
349 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Brems")) m_input_LB_TPC_angular_rate_av.push_back(rate);
350 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Brems")) m_input_LB_TPC_angular_dose_av.push_back(rate);
351 if (HistoRateName.Contains(
"qcss") && fileName.Contains(
"Coulomb")) m_input_LC_QCSS_rate_av.push_back(rate);
352 if (HistoRateName.Contains(
"claws") && fileName.Contains(
"Coulomb")) m_input_LC_CLAWS_rate_av.push_back(rate);
353 if (HistoRateName.Contains(
"csi") && fileName.Contains(
"Coulomb")) m_input_LC_CSI_rate_av.push_back(rate);
354 if (HistoRateName.Contains(
"Def") && fileName.Contains(
"Coulomb")) m_input_LC_HE3_rate_av.push_back(rate);
355 if (HistoRateName.Contains(
"tpc_rate") && fileName.Contains(
"Coulomb")) m_input_LC_TPC_rate_av.push_back(rate);
356 if (HistoRateName.Contains(
"tpc_angular_rate") && fileName.Contains(
"Coulomb")) m_input_LC_TPC_angular_rate_av.push_back(rate);
357 if (HistoRateName.Contains(
"tpc_angular_dose") && fileName.Contains(
"Coulomb")) m_input_LC_TPC_angular_dose_av.push_back(rate);
362 for (
const string& HistoDoseNameTmp : m_inputDoseHistoNames) {
363 const TString& HistoDoseName = (TString)HistoDoseNameTmp;
366 if (HistoDoseName.Contains(
"csi")) imax = 18;
367 if (HistoDoseName.Contains(
"bgo")) imax = 8;
368 if (HistoDoseName.Contains(
"pin")) {
370 volume = 0.265 * 0.265 * m_input_PIN_width;
372 mass = rho * volume * 1e-3;
374 if (HistoDoseName.Contains(
"dia")) {
376 volume = 0.4 * 0.4 * 0.05;
378 mass = rho * volume * 1e-3;
380 if (HistoDoseName.Contains(
"dosi")) {
382 volume = 0.265 * 0.265 * 0.01;
384 mass = rho * volume * 1e-3;
386 if (HistoDoseName.Contains(
"tpc")) {
388 volume = 10.8537 * 2.0 * 1.68;
390 mass = rho * volume * 1e-3;
392 for (
int i = 0; i < imax; i++) {
395 if (HistoDoseName.Contains(
"csi")) {
396 he = (TH1F*)fh[iter]->Get(TString::Format(
"csi_dedep_%d_%d", i, m_DayBin));
398 he = (TH1F*)fh[iter]->Get(TString::Format(
"%s_%d", HistoDoseName.Data(), i));
403 for (
int j = 0; j < he->GetNbinsX(); j++) {
404 double co = he->GetBinContent(j + 1);
405 double va = he->GetXaxis()->GetBinCenter(j + 1);
406 double esumbin = va * co;
408 if (fileName.Contains(
"Coulomb")) {
409 if (fileName.Contains(
"HER")) esumbin *= m_input_Z_scaling[0];
410 if (fileName.Contains(
"LER")) esumbin *= m_input_Z_scaling[1];
412 if (fileName.Contains(
"Brems")) {
413 if (fileName.Contains(
"HER")) esumbin *= m_input_Z_scaling[2];
414 if (fileName.Contains(
"LER")) esumbin *= m_input_Z_scaling[3];
418 if (HistoDoseName.Contains(
"csi_energy")) {
419 if (fileName.Contains(
"HER")) {
420 if (fileName.Contains(
"Touschek")) m_input_HT_CSI_dose_binE.push_back(esumbin / m_input_Time_eqv * 1e-3);
421 if (fileName.Contains(
"Coulomb")) m_input_HC_CSI_dose_binE_av.push_back(esumbin / m_input_Time_eqv * 1e-3);
422 if (fileName.Contains(
"Brems")) m_input_HB_CSI_dose_binE_av.push_back(esumbin / m_input_Time_eqv * 1e-3);
424 if (fileName.Contains(
"LER")) {
425 if (fileName.Contains(
"Touschek")) m_input_LT_CSI_dose_binE.push_back(esumbin / m_input_Time_eqv * 1e-3);
426 if (fileName.Contains(
"Coulomb")) m_input_LC_CSI_dose_binE_av.push_back(esumbin / m_input_Time_eqv * 1e-3);
427 if (fileName.Contains(
"Brems")) m_input_LB_CSI_dose_binE_av.push_back(esumbin / m_input_Time_eqv * 1e-3);
431 if (fileName.Contains(
"HER")) {
432 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
433 && fileName.Contains(
"Touschek")) m_input_HT_CSI_dose.push_back(esum / m_input_Time_eqv * 1e-3);
434 if (HistoDoseName.Contains(
"bgo")
435 && fileName.Contains(
"Touschek")) m_input_HT_BGO_dose.push_back(esum / m_input_Time_eqv * 1e-3);
436 if (HistoDoseName.Contains(
"pin")
437 && fileName.Contains(
"Touschek")) m_input_HT_PIN_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
438 if (HistoDoseName.Contains(
"dosi")
439 && fileName.Contains(
"Touschek")) m_input_HT_DOSI.push_back(esum / m_input_Time_eqv / mass / RadConv);
440 if (HistoDoseName.Contains(
"tpc_dose")
441 && fileName.Contains(
"Touschek")) m_input_HT_TPC_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
445 if (HistoDoseName.Contains(
"dia")
446 && fileName.Contains(
"Touschek")) m_input_HT_DIA_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
447 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
448 && fileName.Contains(
"Brems")) m_input_HB_CSI_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
449 if (HistoDoseName.Contains(
"bgo")
450 && fileName.Contains(
"Brems")) m_input_HB_BGO_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
451 if (HistoDoseName.Contains(
"pin")
452 && fileName.Contains(
"Brems")) m_input_HB_PIN_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
453 if (HistoDoseName.Contains(
"dosi")
454 && fileName.Contains(
"Brems")) m_input_HB_DOSI_av.push_back(esum / m_input_Time_eqv / mass / RadConv);
455 if (HistoDoseName.Contains(
"tpc_dose")
456 && fileName.Contains(
"Brems")) m_input_HB_TPC_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
460 if (HistoDoseName.Contains(
"dia")
461 && fileName.Contains(
"Brems")) m_input_HB_DIA_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
462 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
463 && fileName.Contains(
"Coulomb")) m_input_HC_CSI_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
464 if (HistoDoseName.Contains(
"bgo")
465 && fileName.Contains(
"Coulomb")) m_input_HC_BGO_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
466 if (HistoDoseName.Contains(
"pin")
467 && fileName.Contains(
"Coulomb")) m_input_HC_PIN_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
468 if (HistoDoseName.Contains(
"dosi")
469 && fileName.Contains(
"Coulomb")) m_input_HC_DOSI_av.push_back(esum / m_input_Time_eqv / mass / RadConv);
470 if (HistoDoseName.Contains(
"tpc_dose")
471 && fileName.Contains(
"Coulomb")) m_input_HC_TPC_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
475 if (HistoDoseName.Contains(
"dia")
476 && fileName.Contains(
"Coulomb")) m_input_HC_DIA_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
478 if (fileName.Contains(
"LER")) {
479 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
480 && fileName.Contains(
"Touschek")) m_input_LT_CSI_dose.push_back(esum / m_input_Time_eqv * 1e-3);
481 if (HistoDoseName.Contains(
"bgo")
482 && fileName.Contains(
"Touschek")) m_input_LT_BGO_dose.push_back(esum / m_input_Time_eqv * 1e-3);
483 if (HistoDoseName.Contains(
"pin")
484 && fileName.Contains(
"Touschek")) m_input_LT_PIN_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
485 if (HistoDoseName.Contains(
"dosi")
486 && fileName.Contains(
"Touschek")) m_input_LT_DOSI.push_back(esum / m_input_Time_eqv / mass / RadConv);
487 if (HistoDoseName.Contains(
"tpc_dose")
488 && fileName.Contains(
"Touschek")) m_input_LT_TPC_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
492 if (HistoDoseName.Contains(
"dia")
493 && fileName.Contains(
"Touschek")) m_input_LT_DIA_dose.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
494 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
495 && fileName.Contains(
"Brems")) m_input_LB_CSI_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
496 if (HistoDoseName.Contains(
"bgo")
497 && fileName.Contains(
"Brems")) m_input_LB_BGO_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
498 if (HistoDoseName.Contains(
"pin")
499 && fileName.Contains(
"Brems")) m_input_LB_PIN_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
500 if (HistoDoseName.Contains(
"dosi")
501 && fileName.Contains(
"Brems")) m_input_LB_DOSI_av.push_back(esum / m_input_Time_eqv / mass / RadConv);
502 if (HistoDoseName.Contains(
"tpc_dose")
503 && fileName.Contains(
"Brems")) m_input_LB_TPC_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
507 if (HistoDoseName.Contains(
"dia")
508 && fileName.Contains(
"Brems")) m_input_LB_DIA_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
509 if (HistoDoseName.Contains(
"csi") && HistoDoseName.Contains(
"edep")
510 && fileName.Contains(
"Coulomb")) m_input_LC_CSI_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
511 if (HistoDoseName.Contains(
"bgo")
512 && fileName.Contains(
"Coulomb")) m_input_LC_BGO_dose_av.push_back(esum / m_input_Time_eqv * 1e-3);
513 if (HistoDoseName.Contains(
"pin")
514 && fileName.Contains(
"Coulomb")) m_input_LC_PIN_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
515 if (HistoDoseName.Contains(
"dosi")
516 && fileName.Contains(
"Coulomb")) m_input_LC_DOSI_av.push_back(esum / m_input_Time_eqv / mass / RadConv);
517 if (HistoDoseName.Contains(
"tpc_dose")
518 && fileName.Contains(
"Coulomb")) m_input_LC_TPC_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
522 if (HistoDoseName.Contains(
"dia")
523 && fileName.Contains(
"Coulomb")) m_input_LC_DIA_dose_av.push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
529 if (fileName.Contains(
"Coulomb") || fileName.Contains(
"Brems")) {
530 for (
const string& HistoRateNameTmp : m_inputRateHistoNamesVrs) {
531 const TString& HistoRateName = (TString)HistoRateNameTmp;
534 if (HistoRateName.Contains(
"csi")) h2D = (TH2F*)fh[iter]->Get(TString::Format(
"csi_rs_drate_%d", m_DayBin));
535 else h2D = (TH2F*)fh[iter]->Get(HistoRateName);
537 for (
int k = 0; k < h2D->GetNbinsY(); k++) {
538 for (
int i = 0; i < h2D->GetNbinsX(); i++) {
539 double counts = h2D->GetBinContent(i + 1, k + 1);
540 double rate = counts / m_input_Time_eqv;
542 if (fileName.Contains(
"Coulomb")) {
543 if (fileName.Contains(
"HER")) rate *= m_input_Z_scaling[0];
544 if (fileName.Contains(
"LER")) rate *= m_input_Z_scaling[1];
546 if (fileName.Contains(
"Brems")) {
547 if (fileName.Contains(
"HER")) rate *= m_input_Z_scaling[2];
548 if (fileName.Contains(
"LER")) rate *= m_input_Z_scaling[3];
551 if (HistoRateName.Contains(
"Def")) rate *= m_input_HE3_EfCor[i];
553 if (fileName.Contains(
"Coulomb_HER")) {
554 if (HistoRateName.Contains(
"qcss")) m_input_HC_QCSS_rate[k].push_back(rate);
555 if (HistoRateName.Contains(
"claws")) m_input_HC_CLAWS_rate[k].push_back(rate);
556 if (HistoRateName.Contains(
"csi")) m_input_HC_CSI_rate[k].push_back(rate);
557 if (HistoRateName.Contains(
"Def")) m_input_HC_HE3_rate[k].push_back(rate);
558 if (HistoRateName.Contains(
"tpc_rate")) m_input_HC_TPC_rate[k].push_back(rate);
559 if (HistoRateName.Contains(
"tpc_angular_rate")) m_input_HC_TPC_angular_rate[k].push_back(rate);
560 if (HistoRateName.Contains(
"tpc_angular_dose")) m_input_HC_TPC_angular_dose[k].push_back(rate);
562 if (fileName.Contains(
"Coulomb_LER")) {
563 if (HistoRateName.Contains(
"qcss")) m_input_LC_QCSS_rate[k].push_back(rate);
564 if (HistoRateName.Contains(
"claws")) m_input_LC_CLAWS_rate[k].push_back(rate);
565 if (HistoRateName.Contains(
"csi")) m_input_LC_CSI_rate[k].push_back(rate);
566 if (HistoRateName.Contains(
"Def")) m_input_LC_HE3_rate[k].push_back(rate);
567 if (HistoRateName.Contains(
"tpc_rate")) m_input_LC_TPC_rate[k].push_back(rate);
568 if (HistoRateName.Contains(
"tpc_angular_rate")) m_input_LC_TPC_angular_rate[k].push_back(rate);
569 if (HistoRateName.Contains(
"tpc_angular_dose")) m_input_LC_TPC_angular_dose[k].push_back(rate);
571 if (fileName.Contains(
"Brems_HER")) {
572 if (HistoRateName.Contains(
"qcss")) m_input_HB_QCSS_rate[k].push_back(rate);
573 if (HistoRateName.Contains(
"claws")) m_input_HB_CLAWS_rate[k].push_back(rate);
574 if (HistoRateName.Contains(
"csi")) m_input_HB_CSI_rate[k].push_back(rate);
575 if (HistoRateName.Contains(
"Def")) m_input_HB_HE3_rate[k].push_back(rate);
576 if (HistoRateName.Contains(
"tpc_rate")) m_input_HB_TPC_rate[k].push_back(rate);
577 if (HistoRateName.Contains(
"tpc_angular_rate")) m_input_HB_TPC_angular_rate[k].push_back(rate);
578 if (HistoRateName.Contains(
"tpc_angular_dose")) m_input_HB_TPC_angular_dose[k].push_back(rate);
580 if (fileName.Contains(
"Brems_LER")) {
581 if (HistoRateName.Contains(
"qcss")) m_input_LB_QCSS_rate[k].push_back(rate);
582 if (HistoRateName.Contains(
"claws")) m_input_LB_CLAWS_rate[k].push_back(rate);
583 if (HistoRateName.Contains(
"csi")) m_input_LB_CSI_rate[k].push_back(rate);
584 if (HistoRateName.Contains(
"Def")) m_input_LB_HE3_rate[k].push_back(rate);
585 if (HistoRateName.Contains(
"tpc_rate")) m_input_LB_TPC_rate[k].push_back(rate);
586 if (HistoRateName.Contains(
"tpc_angular_rate")) m_input_LB_TPC_angular_rate[k].push_back(rate);
587 if (HistoRateName.Contains(
"tpc_angular_dose")) m_input_LB_TPC_angular_dose[k].push_back(rate);
594 for (
const string& HistoDoseNameTmp : m_inputDoseHistoNamesVrs) {
595 const TString& HistoDoseName = (TString)HistoDoseNameTmp;
597 if (HistoDoseName.Contains(
"csi")) imax = 18;
598 if (HistoDoseName.Contains(
"bgo")) imax = 8;
599 if (HistoDoseName.Contains(
"pin")) {
601 volume = 0.265 * 0.265 * m_input_PIN_width;
603 mass = rho * volume * 1e-3;
605 if (HistoDoseName.Contains(
"dia")) {
607 volume = 0.4 * 0.4 * 0.05;
609 mass = rho * volume * 1e-3;
611 if (HistoDoseName.Contains(
"dosi")) {
613 volume = 0.265 * 0.265 * 0.01;
615 mass = rho * volume * 1e-3;
617 if (HistoDoseName.Contains(
"tpc")) {
619 volume = 10.8537 * 2.0 * 1.68;
621 mass = rho * volume * 1e-3;
623 for (
int i = 0; i < imax; i++) {
626 if (HistoDoseName.Contains(
"csi")) {
627 he = (TH2F*)fh[iter]->Get(TString::Format(
"csi_rs_dedep_%d_%d", i, m_DayBin));
629 he = (TH2F*)fh[iter]->Get(TString::Format(
"%s_%d", HistoDoseName.Data(), i));
633 for (
int k = 0; k < he->GetNbinsY(); k++) {
635 for (
int j = 0; j < he->GetNbinsX(); j++) {
636 double co = he->GetBinContent(j + 1, k + 1);
637 double va = he->GetXaxis()->GetBinCenter(j + 1);
638 double esumbin = va * co;
640 if (fileName.Contains(
"Coulomb")) {
641 if (fileName.Contains(
"HER")) esumbin *= m_input_Z_scaling[0];
642 if (fileName.Contains(
"LER")) esumbin *= m_input_Z_scaling[1];
644 if (fileName.Contains(
"Brems")) {
645 if (fileName.Contains(
"HER")) esumbin *= m_input_Z_scaling[2];
646 if (fileName.Contains(
"LER")) esumbin *= m_input_Z_scaling[3];
650 if (HistoDoseName.Contains(
"csi_energy")) {
651 if (fileName.Contains(
"HER")) {
652 if (fileName.Contains(
"Coulomb")) m_input_HC_CSI_dose_binE[k].push_back(esumbin / m_input_Time_eqv * 1e-3);
653 if (fileName.Contains(
"Brems")) m_input_HB_CSI_dose_binE[k].push_back(esumbin / m_input_Time_eqv * 1e-3);
655 if (fileName.Contains(
"LER")) {
656 if (fileName.Contains(
"Coulomb")) m_input_LC_CSI_dose_binE[k].push_back(esumbin / m_input_Time_eqv * 1e-3);
657 if (fileName.Contains(
"Brems")) m_input_LB_CSI_dose_binE[k].push_back(esumbin / m_input_Time_eqv * 1e-3);
662 if (fileName.Contains(
"Coulomb_HER")) {
663 if (HistoDoseName.Contains(
"csi")
664 && HistoDoseName.Contains(
"edep")) m_input_HC_CSI_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
665 if (HistoDoseName.Contains(
"bgo")) m_input_HC_BGO_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
666 if (HistoDoseName.Contains(
"pin")) m_input_HC_PIN_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
667 if (HistoDoseName.Contains(
"dosi")) m_input_HC_DOSI[k].push_back(esum / m_input_Time_eqv / mass / RadConv);
668 if (HistoDoseName.Contains(
"tpc_dose")) m_input_HC_TPC_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv *
672 if (HistoDoseName.Contains(
"dia")) m_input_HC_DIA_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
674 if (fileName.Contains(
"Coulomb_LER")) {
675 if (HistoDoseName.Contains(
"csi")
676 && HistoDoseName.Contains(
"edep")) m_input_LC_CSI_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
677 if (HistoDoseName.Contains(
"bgo")) m_input_LC_BGO_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
678 if (HistoDoseName.Contains(
"pin")) m_input_LC_PIN_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
679 if (HistoDoseName.Contains(
"dosi")) m_input_LC_DOSI[k].push_back(esum / m_input_Time_eqv / mass / RadConv);
680 if (HistoDoseName.Contains(
"tpc_dose")) m_input_LC_TPC_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv *
684 if (HistoDoseName.Contains(
"dia")) m_input_LC_DIA_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
686 if (fileName.Contains(
"Brems_HER")) {
687 if (HistoDoseName.Contains(
"csi")
688 && HistoDoseName.Contains(
"edep")) m_input_HB_CSI_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
689 if (HistoDoseName.Contains(
"bgo")) m_input_HB_BGO_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
690 if (HistoDoseName.Contains(
"pin")) m_input_HB_PIN_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
691 if (HistoDoseName.Contains(
"dosi")) m_input_HB_DOSI[k].push_back(esum / m_input_Time_eqv / mass / RadConv);
692 if (HistoDoseName.Contains(
"tpc_dose")) m_input_HB_TPC_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv *
696 if (HistoDoseName.Contains(
"dia")) m_input_HB_DIA_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
698 if (fileName.Contains(
"Brems_LER")) {
699 if (HistoDoseName.Contains(
"csi")
700 && HistoDoseName.Contains(
"edep")) m_input_LB_CSI_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
701 if (HistoDoseName.Contains(
"bgo")) m_input_LB_BGO_dose[k].push_back(esum / m_input_Time_eqv * 1e-3);
702 if (HistoDoseName.Contains(
"pin")) m_input_LB_PIN_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
703 if (HistoDoseName.Contains(
"dosi")) m_input_LB_DOSI[k].push_back(esum / m_input_Time_eqv / mass / RadConv);
704 if (HistoDoseName.Contains(
"tpc_dose")) m_input_LB_TPC_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv *
708 if (HistoDoseName.Contains(
"dia")) m_input_LB_DIA_dose[k].push_back(esum / m_input_Time_eqv / mass / RadConv * 1e-3);
720 m_numEntries = m_tree->GetEntries();
721 cout <<
"m_numEntries " << m_numEntries << endl;
729 m_file =
new TFile(m_outputFileName.c_str(),
"RECREATE");
730 m_treeTruth =
new TTree(
"truth",
"Truth table (simulation)");
732 m_treeBEAST =
new TTree(
"tout",
"BEAST data tree (simulation)");
734 m_treeBEAST->Branch(
"ts", &(m_beast.ts));
735 m_treeBEAST->Branch(
"event", &(m_beast.event));
736 m_treeBEAST->Branch(
"run", &(m_beast.run));
737 m_treeBEAST->Branch(
"subrun", &(m_beast.subrun));
739 m_treeBEAST->Branch(
"SKB_HER_injectionFlag", &(m_beast.SKB_HER_injectionFlag));
740 m_treeBEAST->Branch(
"SKB_LER_injectionFlag", &(m_beast.SKB_LER_injectionFlag));
741 m_treeBEAST->Branch(
"SKB_HER_injectionFlag_safe", &(m_beast.SKB_HER_injectionFlag_safe));
742 m_treeBEAST->Branch(
"SKB_LER_injectionFlag_safe", &(m_beast.SKB_LER_injectionFlag_safe));
743 m_treeBEAST->Branch(
"SKB_HER_abortFlag", &(m_beast.SKB_HER_abortFlag));
744 m_treeBEAST->Branch(
"SKB_LER_abortFlag", &(m_beast.SKB_LER_abortFlag));
745 m_treeBEAST->Branch(
"SKB_HER_abortFlag_safe", &(m_beast.SKB_HER_abortFlag_safe));
746 m_treeBEAST->Branch(
"SKB_LER_abortFlag_safe", &(m_beast.SKB_LER_abortFlag_safe));
747 m_treeBEAST->Branch(
"SKB_Status", &(m_beast.SKB_Status));
748 m_treeBEAST->Branch(
"SKB_HER_injectionRate", &(m_beast.SKB_HER_injectionRate));
749 m_treeBEAST->Branch(
"SKB_LER_injectionRate", &(m_beast.SKB_LER_injectionRate));
750 m_treeBEAST->Branch(
"SKB_HER_lifetime", &(m_beast.SKB_HER_lifetime));
751 m_treeBEAST->Branch(
"SKB_LER_lifetime", &(m_beast.SKB_LER_lifetime));
752 m_treeBEAST->Branch(
"SKB_LER_current", &(m_beast.SKB_LER_current));
753 m_treeBEAST->Branch(
"SKB_HER_current", &(m_beast.SKB_HER_current));
754 m_treeBEAST->Branch(
"SKB_LER_injectionEfficiency", &(m_beast.SKB_LER_injectionEfficiency));
755 m_treeBEAST->Branch(
"SKB_HER_injectionEfficiency", &(m_beast.SKB_HER_injectionEfficiency));
756 m_treeBEAST->Branch(
"SKB_beamLoss_ionChambers_mean", &(m_beast.SKB_beamLoss_ionChambers_mean));
757 m_treeBEAST->Branch(
"SKB_beamLoss_PINdiodes_mean", &(m_beast.SKB_beamLoss_PINdiodes_mean));
758 m_treeBEAST->Branch(
"SKB_beamLoss_nearCollimators", &(m_beast.SKB_beamLoss_nearCollimators));
759 m_treeBEAST->Branch(
"SKB_beamLoss_aroundMasks", &(m_beast.SKB_beamLoss_aroundMasks));
760 m_treeBEAST->Branch(
"SKB_LER_injectionCharge", &(m_beast.SKB_LER_injectionCharge));
761 m_treeBEAST->Branch(
"SKB_HER_injectionCharge", &(m_beast.SKB_HER_injectionCharge));
762 m_treeBEAST->Branch(
"SKB_LER_injectionRepetitionRate", &(m_beast.SKB_LER_injectionRepetitionRate));
763 m_treeBEAST->Branch(
"SKB_HER_injectionRepetitionRate", &(m_beast.SKB_HER_injectionRepetitionRate));
764 m_treeBEAST->Branch(
"SKB_LER_injectionNumberOfBunches", &(m_beast.SKB_LER_injectionNumberOfBunches));
765 m_treeBEAST->Branch(
"SKB_HER_injectionNumberOfBunches", &(m_beast.SKB_HER_injectionNumberOfBunches));
766 m_treeBEAST->Branch(
"SKB_LER_pressures", &(m_beast.SKB_LER_pressures));
767 m_treeBEAST->Branch(
"SKB_HER_pressures", &(m_beast.SKB_HER_pressures));
768 m_treeBEAST->Branch(
"SKB_LER_pressure_average", &(m_beast.SKB_LER_pressure_average));
769 m_treeBEAST->Branch(
"SKB_HER_pressure_average", &(m_beast.SKB_HER_pressure_average));
770 m_treeBEAST->Branch(
"SKB_LER_pressures_corrected", &(m_beast.SKB_LER_pressures_corrected));
771 m_treeBEAST->Branch(
"SKB_HER_pressures_corrected", &(m_beast.SKB_HER_pressures_corrected));
772 m_treeBEAST->Branch(
"SKB_LER_pressure_average_corrected", &(m_beast.SKB_LER_pressure_average_corrected));
773 m_treeBEAST->Branch(
"SKB_HER_pressure_average_corrected", &(m_beast.SKB_HER_pressure_average_corrected));
774 m_treeBEAST->Branch(
"SKB_HER_collimatorPositions_mm", &(m_beast.SKB_HER_collimatorPositions_mm));
775 m_treeBEAST->Branch(
"SKB_HER_collimatorPositions_DMM", &(m_beast.SKB_HER_collimatorPositions_DMM));
776 m_treeBEAST->Branch(
"SKB_HER_collimatorPositions_inX", &(m_beast.SKB_HER_collimatorPositions_inX));
777 m_treeBEAST->Branch(
"SKB_HER_collimatorPositions_inY", &(m_beast.SKB_HER_collimatorPositions_inY));
778 m_treeBEAST->Branch(
"SKB_HER_collimatorPositions_fromBeam", &(m_beast.SKB_HER_collimatorPositions_fromBeam));
779 m_treeBEAST->Branch(
"SKB_LER_collimatorPositions_mm", &(m_beast.SKB_LER_collimatorPositions_mm));
780 m_treeBEAST->Branch(
"SKB_LER_collimatorPositions_X", &(m_beast.SKB_LER_collimatorPositions_X));
781 m_treeBEAST->Branch(
"SKB_LER_collimatorPositions_Y", &(m_beast.SKB_LER_collimatorPositions_Y));
782 m_treeBEAST->Branch(
"SKB_LER_collimatorPositions_fromBeam", &(m_beast.SKB_LER_collimatorPositions_fromBeam));
783 m_treeBEAST->Branch(
"SKB_HER_beamSize_xray_X", &(m_beast.SKB_HER_beamSize_xray_X));
784 m_treeBEAST->Branch(
"SKB_HER_beamSize_xray_Y", &(m_beast.SKB_HER_beamSize_xray_Y));
785 m_treeBEAST->Branch(
"SKB_HER_correctedBeamSize_xray_Y", &(m_beast.SKB_HER_correctedBeamSize_xray_Y));
786 m_treeBEAST->Branch(
"SKB_LER_beamSize_xray_X", &(m_beast.SKB_LER_beamSize_xray_X));
787 m_treeBEAST->Branch(
"SKB_LER_beamSize_xray_Y", &(m_beast.SKB_LER_beamSize_xray_Y));
788 m_treeBEAST->Branch(
"SKB_LER_correctedBeamSize_xray_Y", &(m_beast.SKB_LER_correctedBeamSize_xray_Y));
789 m_treeBEAST->Branch(
"SKB_LER_beamSize_SR_X", &(m_beast.SKB_LER_beamSize_SR_X));
790 m_treeBEAST->Branch(
"SKB_LER_beamSize_SR_Y", &(m_beast.SKB_LER_beamSize_SR_Y));
791 m_treeBEAST->Branch(
"SKB_HER_beamSize_SR_X", &(m_beast.SKB_HER_beamSize_SR_X));
792 m_treeBEAST->Branch(
"SKB_HER_beamSize_SR_Y", &(m_beast.SKB_HER_beamSize_SR_Y));
793 m_treeBEAST->Branch(
"SKB_HER_integratedCurrent", &(m_beast.SKB_HER_integratedCurrent));
794 m_treeBEAST->Branch(
"SKB_LER_integratedCurrent", &(m_beast.SKB_LER_integratedCurrent));
795 m_treeBEAST->Branch(
"SKB_LER_partialPressures_D06", &(m_beast.SKB_LER_partialPressures_D06));
796 m_treeBEAST->Branch(
"SKB_LER_partialPressures_D02", &(m_beast.SKB_LER_partialPressures_D02));
797 m_treeBEAST->Branch(
"SKB_LER_pressures_local", &(m_beast.SKB_LER_pressures_local));
798 m_treeBEAST->Branch(
"SKB_HER_pressures_local", &(m_beast.SKB_HER_pressures_local));
799 m_treeBEAST->Branch(
"SKB_LER_pressures_local_corrected", &(m_beast.SKB_LER_pressures_local_corrected));
800 m_treeBEAST->Branch(
"SKB_HER_pressures_local_corrected", &(m_beast.SKB_HER_pressures_local_corrected));
801 m_treeBEAST->Branch(
"SKB_LER_Zeff_D02", &(m_beast.SKB_LER_Zeff_D02));
802 m_treeBEAST->Branch(
"SKB_LER_Zeff_D06", &(m_beast.SKB_LER_Zeff_D06));
804 m_treeBEAST->Branch(
"CSI_data_sumE", &(m_beast.CSI_data_sumE));
805 m_treeBEAST->Branch(
"BGO_data_dose", &(m_beast.BGO_data_dose));
806 m_treeBEAST->Branch(
"PIN_data_dose", &(m_beast.PIN_data_dose));
807 m_treeBEAST->Branch(
"DIA_data_dose", &(m_beast.DIA_data_dose));
809 m_treeBEAST->Branch(
"HE3_data_rate", &(m_beast.HE3_data_rate));
810 m_treeBEAST->Branch(
"CSI_data_rate", &(m_beast.CSI_data_rate));
811 m_treeBEAST->Branch(
"QCSS_data_rate", &(m_beast.QCSS_data_rate));
812 m_treeBEAST->Branch(
"CLAWS_data_rate", &(m_beast.CLAWS_data_rate));
814 m_treeBEAST->Branch(
"CSI_data_Ebin", &(m_beast.CSI_data_Ebin));
816 m_treeBEAST->Branch(
"PIN_dose", &(m_beast.PIN_dose));
817 m_treeBEAST->Branch(
"BGO_energy", &(m_beast.BGO_energy));
818 m_treeBEAST->Branch(
"HE3_rate", &(m_beast.HE3_rate));
823 m_treeBEAST->Branch(
"CSI_sumE", &(m_beast.CSI_sumE));
824 m_treeBEAST->Branch(
"CSI_Ebin", &(m_beast.CSI_Ebin));
825 m_treeBEAST->Branch(
"CSI_hitRate", &(m_beast.CSI_hitRate));
826 m_treeBEAST->Branch(
"DIA_dose", &(m_beast.DIA_dose));
827 m_treeBEAST->Branch(
"CLAWS_rate", &(m_beast.CLAWS_rate));
828 m_treeBEAST->Branch(
"QCSS_rate", &(m_beast.QCSS_rate));
830 m_treeBEAST->Branch(
"DOSI_av", &(m_beast.DOSI_av));
831 m_treeBEAST->Branch(
"DOSI", &(m_beast.DOSI));
832 m_treeBEAST->Branch(
"PIN_dose_av", &(m_beast.PIN_dose_av));
833 m_treeBEAST->Branch(
"BGO_energy_av", &(m_beast.BGO_energy_av));
834 m_treeBEAST->Branch(
"HE3_rate_av", &(m_beast.HE3_rate_av));
835 m_treeBEAST->Branch(
"TPC_rate_av", &(m_beast.TPC_rate_av),
"TPC_rate_av[2][5]/F");
837 m_treeBEAST->Branch(
"TPC_dose_av", &(m_beast.TPC_dose_av));
838 m_treeBEAST->Branch(
"TPC_angular_rate_av", &(m_beast.TPC_angular_rate_av),
"TPC_angular_rate_av[2][9][18]/F");
839 m_treeBEAST->Branch(
"TPC_angular_dose_av", &(m_beast.TPC_angular_dose_av),
"TPC_angular_dose_av[2][9][18]/F");
840 m_treeBEAST->Branch(
"CSI_sumE_av", &(m_beast.CSI_sumE_av));
841 m_treeBEAST->Branch(
"CSI_Ebin_av", &(m_beast.CSI_Ebin_av));
842 m_treeBEAST->Branch(
"CSI_hitRate_av", &(m_beast.CSI_hitRate_av));
843 m_treeBEAST->Branch(
"DIA_dose_av", &(m_beast.DIA_dose_av));
844 m_treeBEAST->Branch(
"CLAWS_rate_av", &(m_beast.CLAWS_rate_av));
845 m_treeBEAST->Branch(
"QCSS_rate_av", &(m_beast.QCSS_rate_av));
847 m_treeBEAST->Branch(
"SAD_HER_lifetime", &(m_beast.SAD_HER_lifetime));
848 m_treeBEAST->Branch(
"SAD_LER_lifetime", &(m_beast.SAD_LER_lifetime));
849 m_treeBEAST->Branch(
"SAD_HER_lifetime_av", &(m_beast.SAD_HER_lifetime_av));
850 m_treeBEAST->Branch(
"SAD_LER_lifetime_av", &(m_beast.SAD_LER_lifetime_av));
851 m_treeBEAST->Branch(
"SAD_HER_RLR", &(m_beast.SAD_HER_RLR));
852 m_treeBEAST->Branch(
"SAD_LER_RLR", &(m_beast.SAD_LER_RLR));
853 m_treeBEAST->Branch(
"SKB_HER_RLR", &(m_beast.SKB_HER_RLR));
854 m_treeBEAST->Branch(
"SKB_LER_RLR", &(m_beast.SKB_LER_RLR));
855 m_treeBEAST->Branch(
"SAD_HER_RLR_av", &(m_beast.SAD_HER_RLR_av));
856 m_treeBEAST->Branch(
"SAD_LER_RLR_av", &(m_beast.SAD_LER_RLR_av));
858 m_treeBEAST->Branch(
"mc_reweight_LERT", &(m_beast.mc_reweight_LERT));
859 m_treeBEAST->Branch(
"mc_reweight_LERC", &(m_beast.mc_reweight_LERC));
860 m_treeBEAST->Branch(
"mc_reweight_LERB", &(m_beast.mc_reweight_LERB));
861 m_treeBEAST->Branch(
"mc_reweight_HERT", &(m_beast.mc_reweight_HERT));
862 m_treeBEAST->Branch(
"mc_reweight_HERC", &(m_beast.mc_reweight_HERC));
863 m_treeBEAST->Branch(
"mc_reweight_HERB", &(m_beast.mc_reweight_HERB));
879 m_treeTruth->Branch(
"SAD_I_HER", &(m_input_I_HER));
880 m_treeTruth->Branch(
"SAD_I_LER", &(m_input_I_LER));
881 m_treeTruth->Branch(
"SAD_P_HER", &(m_input_P_HER));
882 m_treeTruth->Branch(
"SAD_P_LER", &(m_input_P_LER));
883 m_treeTruth->Branch(
"SAD_sigma_x_HER", &(m_input_sigma_x_HER));
884 m_treeTruth->Branch(
"SAD_sigma_x_LER", &(m_input_sigma_x_LER));
885 m_treeTruth->Branch(
"SAD_sigma_y_HER", &(m_input_sigma_y_HER));
886 m_treeTruth->Branch(
"SAD_sigma_y_LER", &(m_input_sigma_y_LER));
887 m_treeTruth->Branch(
"SAD_bunchNb_HER", &(m_input_bunchNb_HER));
888 m_treeTruth->Branch(
"SAD_bunchNb_LER", &(m_input_bunchNb_LER));
890 for (
int i = 0; i < 12; i ++) {
891 m_treeTruth->Branch(TString::Format(
"MC_LC_DIA_dose_%d", i), &(m_input_LC_DIA_dose[i]));
892 m_treeTruth->Branch(TString::Format(
"MC_HC_DIA_dose_%d", i), &(m_input_HC_DIA_dose[i]));
893 m_treeTruth->Branch(TString::Format(
"MC_LB_DIA_dose_%d", i), &(m_input_LB_DIA_dose[i]));
894 m_treeTruth->Branch(TString::Format(
"MC_HB_DIA_dose_%d", i), &(m_input_HB_DIA_dose[i]));
896 m_treeTruth->Branch(TString::Format(
"MC_LC_PIN_dose_%d", i), &(m_input_LC_PIN_dose[i]));
897 m_treeTruth->Branch(TString::Format(
"MC_HC_PIN_dose_%d", i), &(m_input_HC_PIN_dose[i]));
898 m_treeTruth->Branch(TString::Format(
"MC_LB_PIN_dose_%d", i), &(m_input_LB_PIN_dose[i]));
899 m_treeTruth->Branch(TString::Format(
"MC_HB_PIN_dose_%d", i), &(m_input_HB_PIN_dose[i]));
901 m_treeTruth->Branch(TString::Format(
"MC_LC_BGO_dose_%d", i), &(m_input_LC_BGO_dose[i]));
902 m_treeTruth->Branch(TString::Format(
"MC_HC_BGO_dose_%d", i), &(m_input_HC_BGO_dose[i]));
903 m_treeTruth->Branch(TString::Format(
"MC_LB_BGO_dose_%d", i), &(m_input_LB_BGO_dose[i]));
904 m_treeTruth->Branch(TString::Format(
"MC_HB_BGO_dose_%d", i), &(m_input_HB_BGO_dose[i]));
906 m_treeTruth->Branch(TString::Format(
"MC_LC_HE3_rate_%d", i), &(m_input_LC_HE3_rate[i]));
907 m_treeTruth->Branch(TString::Format(
"MC_HC_HE3_rate_%d", i), &(m_input_HC_HE3_rate[i]));
908 m_treeTruth->Branch(TString::Format(
"MC_LB_HE3_rate_%d", i), &(m_input_LB_HE3_rate[i]));
909 m_treeTruth->Branch(TString::Format(
"MC_HB_HE3_rate_%d", i), &(m_input_HB_HE3_rate[i]));
931 m_treeTruth->Branch(TString::Format(
"MC_LC_CSI_rate_%d", i), &(m_input_LC_CSI_rate[i]));
932 m_treeTruth->Branch(TString::Format(
"MC_HC_CSI_rate_%d", i), &(m_input_HC_CSI_rate[i]));
933 m_treeTruth->Branch(TString::Format(
"MC_LB_CSI_rate_%d", i), &(m_input_LB_CSI_rate[i]));
934 m_treeTruth->Branch(TString::Format(
"MC_HB_CSI_rate_%d", i), &(m_input_HB_CSI_rate[i]));
936 m_treeTruth->Branch(TString::Format(
"MC_LC_CSI_dose_%d", i), &(m_input_LC_CSI_dose[i]));
937 m_treeTruth->Branch(TString::Format(
"MC_HC_CSI_dose_%d", i), &(m_input_HC_CSI_dose[i]));
938 m_treeTruth->Branch(TString::Format(
"MC_LB_CSI_dose_%d", i), &(m_input_LB_CSI_dose[i]));
939 m_treeTruth->Branch(TString::Format(
"MC_HB_CSI_dose_%d", i), &(m_input_HB_CSI_dose[i]));
941 m_treeTruth->Branch(TString::Format(
"MC_LC_CLAWS_rate_%d", i), &(m_input_LC_CLAWS_rate[i]));
942 m_treeTruth->Branch(TString::Format(
"MC_HC_CLAWS_rate_%d", i), &(m_input_HC_CLAWS_rate[i]));
943 m_treeTruth->Branch(TString::Format(
"MC_LB_CLAWS_rate_%d", i), &(m_input_LB_CLAWS_rate[i]));
944 m_treeTruth->Branch(TString::Format(
"MC_HB_CLAWS_rate_%d", i), &(m_input_HB_CLAWS_rate[i]));
946 m_treeTruth->Branch(TString::Format(
"MC_LC_QCSS_rate_%d", i), &(m_input_LC_QCSS_rate[i]));
947 m_treeTruth->Branch(TString::Format(
"MC_HC_QCSS_rate_%d", i), &(m_input_HC_QCSS_rate[i]));
948 m_treeTruth->Branch(TString::Format(
"MC_LB_QCSS_rate_%d", i), &(m_input_LB_QCSS_rate[i]));
949 m_treeTruth->Branch(TString::Format(
"MC_HB_QCSS_rate_%d", i), &(m_input_HB_QCSS_rate[i]));
952 m_treeTruth->Branch(
"MC_LT_DIA_dose", &(m_input_LT_DIA_dose));
953 m_treeTruth->Branch(
"MC_HT_DIA_dose", &(m_input_HT_DIA_dose));
954 m_treeTruth->Branch(
"MC_LC_DIA_dose_av", &(m_input_LC_DIA_dose_av));
955 m_treeTruth->Branch(
"MC_HC_DIA_dose_av", &(m_input_HC_DIA_dose_av));
956 m_treeTruth->Branch(
"MC_LB_DIA_dose_av", &(m_input_LB_DIA_dose_av));
957 m_treeTruth->Branch(
"MC_HB_DIA_dose_av", &(m_input_HB_DIA_dose_av));
959 m_treeTruth->Branch(
"MC_LT_PIN_dose", &(m_input_LT_PIN_dose));
960 m_treeTruth->Branch(
"MC_HT_PIN_dose", &(m_input_HT_PIN_dose));
961 m_treeTruth->Branch(
"MC_LC_PIN_dose_av", &(m_input_LC_PIN_dose_av));
962 m_treeTruth->Branch(
"MC_HC_PIN_dose_av", &(m_input_HC_PIN_dose_av));
963 m_treeTruth->Branch(
"MC_LB_PIN_dose_av", &(m_input_LB_PIN_dose_av));
964 m_treeTruth->Branch(
"MC_HB_PIN_dose_av", &(m_input_HB_PIN_dose_av));
966 m_treeTruth->Branch(
"MC_LT_BGO_dose", &(m_input_LT_BGO_dose));
967 m_treeTruth->Branch(
"MC_HT_BGO_dose", &(m_input_HT_BGO_dose));
968 m_treeTruth->Branch(
"MC_LC_BGO_dose_av", &(m_input_LC_BGO_dose_av));
969 m_treeTruth->Branch(
"MC_HC_BGO_dose_av", &(m_input_HC_BGO_dose_av));
970 m_treeTruth->Branch(
"MC_LB_BGO_dose_av", &(m_input_LB_BGO_dose_av));
971 m_treeTruth->Branch(
"MC_HB_BGO_dose_av", &(m_input_HB_BGO_dose_av));
973 m_treeTruth->Branch(
"MC_LT_HE3_rate", &(m_input_LT_HE3_rate));
974 m_treeTruth->Branch(
"MC_HT_HE3_rate", &(m_input_HT_HE3_rate));
975 m_treeTruth->Branch(
"MC_LC_HE3_rate_av", &(m_input_LC_HE3_rate_av));
976 m_treeTruth->Branch(
"MC_HC_HE3_rate_av", &(m_input_HC_HE3_rate_av));
977 m_treeTruth->Branch(
"MC_LB_HE3_rate_av", &(m_input_LB_HE3_rate_av));
978 m_treeTruth->Branch(
"MC_HB_HE3_rate_av", &(m_input_HB_HE3_rate_av));
982 m_treeTruth->Branch(
"MC_LC_TPC_rate_av", &(m_input_LC_TPC_rate_av));
983 m_treeTruth->Branch(
"MC_HC_TPC_rate_av", &(m_input_HC_TPC_rate_av));
984 m_treeTruth->Branch(
"MC_LB_TPC_rate_av", &(m_input_LB_TPC_rate_av));
985 m_treeTruth->Branch(
"MC_HB_TPC_rate_av", &(m_input_HB_TPC_rate_av));
989 m_treeTruth->Branch(
"MC_LC_TPC_dose_av", &(m_input_LC_TPC_dose_av));
990 m_treeTruth->Branch(
"MC_HC_TPC_dose_av", &(m_input_HC_TPC_dose_av));
991 m_treeTruth->Branch(
"MC_LB_TPC_dose_av", &(m_input_LB_TPC_dose_av));
992 m_treeTruth->Branch(
"MC_HB_TPC_dose_av", &(m_input_HB_TPC_dose_av));
996 m_treeTruth->Branch(
"MC_LC_TPC_angular_rate_av", &(m_input_LC_TPC_angular_rate_av));
997 m_treeTruth->Branch(
"MC_HC_TPC_angular_rate_av", &(m_input_HC_TPC_angular_rate_av));
998 m_treeTruth->Branch(
"MC_LB_TPC_angular_rate_av", &(m_input_LB_TPC_angular_rate_av));
999 m_treeTruth->Branch(
"MC_HB_TPC_angular_rate_av", &(m_input_HB_TPC_angular_rate_av));
1003 m_treeTruth->Branch(
"MC_LC_TPC_angular_dose_av", &(m_input_LC_TPC_angular_dose_av));
1004 m_treeTruth->Branch(
"MC_HC_TPC_angular_dose_av", &(m_input_HC_TPC_angular_dose_av));
1005 m_treeTruth->Branch(
"MC_LB_TPC_angular_dose_av", &(m_input_LB_TPC_angular_dose_av));
1006 m_treeTruth->Branch(
"MC_HB_TPC_angular_dose_av", &(m_input_HB_TPC_angular_dose_av));
1008 m_treeTruth->Branch(
"MC_LT_CSI_rate", &(m_input_LT_CSI_rate));
1009 m_treeTruth->Branch(
"MC_HT_CSI_rate", &(m_input_HT_CSI_rate));
1010 m_treeTruth->Branch(
"MC_LC_CSI_rate_av", &(m_input_LC_CSI_rate_av));
1011 m_treeTruth->Branch(
"MC_HC_CSI_rate_av", &(m_input_HC_CSI_rate_av));
1012 m_treeTruth->Branch(
"MC_LB_CSI_rate_av", &(m_input_LB_CSI_rate_av));
1013 m_treeTruth->Branch(
"MC_HB_CSI_rate_av", &(m_input_HB_CSI_rate_av));
1015 m_treeTruth->Branch(
"MC_LT_CSI_dose", &(m_input_LT_CSI_dose));
1016 m_treeTruth->Branch(
"MC_HT_CSI_dose", &(m_input_HT_CSI_dose));
1017 m_treeTruth->Branch(
"MC_LC_CSI_dose_av", &(m_input_LC_CSI_dose_av));
1018 m_treeTruth->Branch(
"MC_HC_CSI_dose_av", &(m_input_HC_CSI_dose_av));
1019 m_treeTruth->Branch(
"MC_LB_CSI_dose_av", &(m_input_LB_CSI_dose_av));
1020 m_treeTruth->Branch(
"MC_HB_CSI_dose_av", &(m_input_HB_CSI_dose_av));
1022 m_treeTruth->Branch(
"MC_LT_CLAWS_rate", &(m_input_LT_CLAWS_rate));
1023 m_treeTruth->Branch(
"MC_HT_CLAWS_rate", &(m_input_HT_CLAWS_rate));
1024 m_treeTruth->Branch(
"MC_LC_CLAWS_rate_av", &(m_input_LC_CLAWS_rate_av));
1025 m_treeTruth->Branch(
"MC_HC_CLAWS_rate_av", &(m_input_HC_CLAWS_rate_av));
1026 m_treeTruth->Branch(
"MC_LB_CLAWS_rate_av", &(m_input_LB_CLAWS_rate_av));
1027 m_treeTruth->Branch(
"MC_HB_CLAWS_rate_av", &(m_input_HB_CLAWS_rate_av));
1029 m_treeTruth->Branch(
"MC_LT_QCSS_rate", &(m_input_LT_QCSS_rate));
1030 m_treeTruth->Branch(
"MC_HT_QCSS_rate", &(m_input_HT_QCSS_rate));
1031 m_treeTruth->Branch(
"MC_LC_QCSS_rate_av", &(m_input_LC_QCSS_rate_av));
1032 m_treeTruth->Branch(
"MC_HC_QCSS_rate_av", &(m_input_HC_QCSS_rate_av));
1033 m_treeTruth->Branch(
"MC_LB_QCSS_rate_av", &(m_input_LB_QCSS_rate_av));
1034 m_treeTruth->Branch(
"MC_HB_QCSS_rate_av", &(m_input_HB_QCSS_rate_av));
1036 m_treeTruth->Fill();
1040 void NtuplePhase1_v6Module::beginRun()
1045 void NtuplePhase1_v6Module::event()
1053 if (m_eventCount == m_numEvents) {
1054 evtMetaData->setEndOfData();
1058 m_tree->GetEntry(m_eventCount);
1060 double Zeff_LER = 2.7;
1061 if (m_beast.SKB_LER_Zeff_D02 != 0 && m_beast.SKB_LER_Zeff_D02->size() > 0) Zeff_LER = m_beast.SKB_LER_Zeff_D02->at(0);
1070 if (Zeff_LER > 0 && Zeff_LER < 40) {
1071 Zeff_LC = fctRate_LC->Eval(Zeff_LER) / fctRate_LC->Eval(7) / m_input_Z_scaling[1];
1072 Zeff_LB = fctRate_LB->Eval(Zeff_LER) / fctRate_LB->Eval(7) / m_input_Z_scaling[3];
1075 if (m_input_Z[1] == 2.7 && m_input_Z[3] == 2.7) {
1079 double Zeff_HC = m_input_Z_scaling[0];
1080 double Zeff_HB = m_input_Z_scaling[2];
1083 if (m_beast.SKB_HER_current != 0 && m_beast.SKB_HER_current->size() > 0) I_HER = m_beast.SKB_HER_current->at(0);
1084 if (m_input_I_HER[1] > 0) I_HER += gRandom->Gaus(0, m_input_I_HER[1]);
1086 if (m_beast.SKB_LER_current != 0 && m_beast.SKB_LER_current->size() > 0) I_LER = m_beast.SKB_LER_current->at(0);
1087 if (m_input_I_LER[1] > 0) I_LER += gRandom->Gaus(0, m_input_I_LER[1]);
1098 double P_corrected_HER = 0;
1099 if (m_beast.SKB_HER_pressure_average_corrected != 0
1100 && m_beast.SKB_HER_pressure_average_corrected->size() > 0) P_corrected_HER = m_beast.SKB_HER_pressure_average_corrected->at(
1101 0) * 0.00750062 * 1e9;
1102 if (m_input_P_HER[1] > 0) P_corrected_HER += gRandom->Gaus(0, m_input_P_HER[1]);
1103 double P_corrected_LER = 0;
1104 if (m_beast.SKB_LER_pressure_average_corrected != 0
1105 && m_beast.SKB_LER_pressure_average_corrected->size() > 0) P_corrected_LER = m_beast.SKB_LER_pressure_average_corrected->at(
1106 0) * 0.00750062 * 1e9;
1107 if (m_input_P_LER[1] > 0) P_corrected_LER += gRandom->Gaus(0, m_input_P_LER[1]);
1109 double sigma_y_HER = 0;
1110 double sigma_x_HER = 0;
1111 if (m_beast.SKB_HER_correctedBeamSize_xray_Y != 0
1112 && m_beast.SKB_HER_beamSize_xray_Y != 0
1113 && m_beast.SKB_HER_correctedBeamSize_xray_Y->size() > 0) {
1114 sigma_y_HER = m_beast.SKB_HER_correctedBeamSize_xray_Y->at(0);
1116 if (m_beast.SKB_HER_beamSize_SR_X != 0 && m_beast.SKB_HER_beamSize_SR_Y
1117 && m_beast.SKB_HER_beamSize_SR_X->size() > 0
1118 && m_beast.SKB_HER_beamSize_SR_Y->size() > 0)
1119 sigma_x_HER = m_beast.SKB_HER_correctedBeamSize_xray_Y->at(0) * m_beast.SKB_HER_beamSize_SR_X->at(
1120 0) / m_beast.SKB_HER_beamSize_SR_Y->at(0);
1127 if (m_input_sigma_x_HER[1] > 0) sigma_x_HER += gRandom->Gaus(0, m_input_sigma_x_HER[1]);
1128 if (m_input_sigma_y_HER[1] > 0) sigma_y_HER += gRandom->Gaus(0, m_input_sigma_y_HER[1]);
1129 double sigma_y_LER = 0;
1130 double sigma_x_LER = 0;
1131 if (m_beast.SKB_LER_correctedBeamSize_xray_Y != 0
1132 && m_beast.SKB_LER_beamSize_xray_Y != 0
1133 && m_beast.SKB_LER_correctedBeamSize_xray_Y->size() > 0) {
1134 sigma_y_LER = m_beast.SKB_LER_correctedBeamSize_xray_Y->at(0);
1136 if (m_beast.SKB_LER_beamSize_SR_X != 0 && m_beast.SKB_LER_beamSize_SR_Y
1137 && m_beast.SKB_LER_beamSize_SR_X->size() > 0
1138 && m_beast.SKB_LER_beamSize_SR_Y->size() > 0)
1139 sigma_x_LER = m_beast.SKB_LER_correctedBeamSize_xray_Y->at(0) * m_beast.SKB_LER_beamSize_SR_X->at(
1140 0) / m_beast.SKB_LER_beamSize_SR_Y->at(0);
1147 if (m_input_sigma_x_LER[1] > 0) sigma_x_LER += gRandom->Gaus(0, m_input_sigma_x_LER[1]);
1148 if (m_input_sigma_y_LER[1] > 0) sigma_y_LER += gRandom->Gaus(0, m_input_sigma_y_LER[1]);
1149 double bunch_nb_HER = 0;
1150 if (m_beast.SKB_HER_injectionNumberOfBunches != 0
1151 && m_beast.SKB_HER_injectionNumberOfBunches->size() > 0) bunch_nb_HER = m_beast.SKB_HER_injectionNumberOfBunches->at(0);
1152 if (bunch_nb_HER == 0) bunch_nb_HER = m_input_data_bunchNb_HER;
1153 if (m_input_bunchNb_HER[1] > 0) bunch_nb_HER += gRandom->Gaus(0, m_input_bunchNb_HER[1]);
1154 double bunch_nb_LER = 0;
1155 if (m_beast.SKB_LER_injectionNumberOfBunches != 0
1156 && m_beast.SKB_LER_injectionNumberOfBunches->size() > 0) bunch_nb_LER = m_beast.SKB_LER_injectionNumberOfBunches->at(0);
1157 if (bunch_nb_LER == 0) bunch_nb_LER = m_input_data_bunchNb_LER;
1158 if (m_input_bunchNb_LER[1] > 0) bunch_nb_LER += gRandom->Gaus(0, m_input_bunchNb_LER[1]);
1166 if (I_HER < 0) I_HER = 0;
1167 if (I_LER < 0) I_LER = 0;
1170 if (P_corrected_HER < 0) P_corrected_HER = 0;
1171 if (P_corrected_LER < 0) P_corrected_LER = 0;
1173 if (m_input_data_SingleBeam ==
"LER") {
1176 P_corrected_HER = 0;
1177 }
else if (m_input_data_SingleBeam ==
"HER") {
1180 P_corrected_LER = 0;
1184 if (bunch_nb_HER > 0) Ib_HER = I_HER / bunch_nb_HER * 1e-3;
1186 if (bunch_nb_LER > 0) Ib_LER = I_LER / bunch_nb_LER * 1e-3;
1189 if (Ib_HER > 0) Nb_HER = Ib_HER * 3000. / TMath::C() / (1.6e-19);
1191 if (Ib_LER > 0) Nb_LER = Ib_LER * 3000. / TMath::C() / (1.6e-19);
1194 if (m_beast.SKB_HER_lifetime != 0 && m_beast.SKB_HER_lifetime->size() > 0 && Nb_HER > 0) {
1195 double RLR_HER = Nb_HER / (m_beast.SKB_HER_lifetime->at(0) * 60.) * 1e-9 * bunch_nb_HER;
1196 m_beast.SKB_HER_RLR.push_back(RLR_HER);
1199 if (m_beast.SKB_LER_lifetime != 0 && m_beast.SKB_LER_lifetime->size() > 0 && Nb_LER > 0) {
1200 double RLR_LER = Nb_LER / (m_beast.SKB_LER_lifetime->at(0) * 60.) * 1e-9 * bunch_nb_LER;
1201 m_beast.SKB_LER_RLR.push_back(RLR_LER);
1207 double ScaleFacBGav_HER = 0;
1208 double ScaleFacBGav_LER = 0;
1223 if (I_LER > 0 && P_corrected_LER > 0) {
1224 if (m_input_BGSol == 0
1225 && bunch_nb_LER > 0) ScaleFacBGav_LER = I_LER * P_corrected_LER / (m_input_I_LER[0] * m_input_P_LER[0]) / bunch_nb_LER *
1226 m_input_bunchNb_LER[0];
1227 if (m_input_BGSol == 1 && bunch_nb_LER > 0) ScaleFacBGav_LER = I_LER * P_corrected_LER / (m_input_I_LER[0] * m_input_P_LER[0]);
1229 if (I_HER > 0 && P_corrected_HER > 0) {
1230 if (m_input_BGSol == 0
1231 && bunch_nb_HER > 0) ScaleFacBGav_HER = I_HER * P_corrected_HER / (m_input_I_HER[0] * m_input_P_HER[0]) / bunch_nb_HER *
1232 m_input_bunchNb_HER[0];
1233 if (m_input_BGSol == 1 && bunch_nb_HER > 0) ScaleFacBGav_HER = I_HER * P_corrected_HER / (m_input_I_HER[0] * m_input_P_HER[0]);
1237 double ScaleFacBG_HER[12];
1238 double ScaleFacBG_LER[12];
1240 if (m_beast.SKB_HER_pressures != 0 && m_input_GasCorrection[0] != 1) {
1241 for (
int i = 0; i < (int)m_beast.SKB_HER_pressures->size(); i++) {
1242 ScaleFacBG_HER[i] = 0;
1244 iP_HER = m_beast.SKB_HER_pressures->at(i) * 0.00750062 * 1e9 * m_input_GasCorrection[0];
1245 if (m_input_P_HER[1] > 0) iP_HER += gRandom->Gaus(0, m_input_P_HER[1]);
1246 if (iP_HER < 0 || iP_HER > 260.) iP_HER = 0;
1247 if (I_HER > 0 && iP_HER > 0) {
1248 if (m_input_BGSol == 0
1249 && bunch_nb_HER > 0) ScaleFacBG_HER[i] = I_HER * iP_HER / (m_input_I_HER[0] * m_input_P_HER[0]) / bunch_nb_HER *
1250 m_input_bunchNb_HER[0];
1251 if (m_input_BGSol == 1 && bunch_nb_HER > 0) ScaleFacBG_HER[i] = I_HER * iP_HER / (m_input_I_HER[0] * m_input_P_HER[0]);
1255 if (m_beast.SKB_LER_pressures != 0 && m_input_GasCorrection[1] != 1) {
1256 for (
int i = 0; i < (int)m_beast.SKB_LER_pressures->size(); i++) {
1257 ScaleFacBG_LER[i] = 0;
1259 iP_LER = m_beast.SKB_LER_pressures->at(i) * 0.00750062 * 1e9 * m_input_GasCorrection[1];
1260 if (m_input_P_LER[1] > 0) iP_LER += gRandom->Gaus(0, m_input_P_LER[1]);
1261 if (iP_LER < 0 || iP_LER > 260.) iP_LER = 0;
1262 if (I_LER > 0 && iP_LER > 0) {
1263 if (m_input_BGSol == 0
1264 && bunch_nb_LER > 0) ScaleFacBG_LER[i] = I_LER * iP_LER / (m_input_I_LER[0] * m_input_P_LER[0]) / bunch_nb_LER *
1265 m_input_bunchNb_LER[0];
1266 if (m_input_BGSol == 1 && bunch_nb_LER > 0) ScaleFacBG_LER[i] = I_LER * iP_LER / (m_input_I_LER[0] * m_input_P_LER[0]);
1271 if (m_beast.SKB_HER_pressures_corrected != 0 && m_input_GasCorrection[0] == 1) {
1272 for (
int i = 0; i < (int)m_beast.SKB_HER_pressures_corrected->size(); i++) {
1273 ScaleFacBG_HER[i] = 0;
1275 iP_HER = m_beast.SKB_HER_pressures_corrected->at(i) * 0.00750062 * 1e9 * m_input_GasCorrection[0];
1276 if (m_input_P_HER[1] > 0) iP_HER += gRandom->Gaus(0, m_input_P_HER[1]);
1277 if (iP_HER < 0 || iP_HER > 260.) iP_HER = 0;
1278 if (I_HER > 0 && iP_HER > 0) {
1279 if (m_input_BGSol == 0
1280 && bunch_nb_HER > 0) ScaleFacBG_HER[i] = I_HER * iP_HER / (m_input_I_HER[0] * m_input_P_HER[0]) / bunch_nb_HER *
1281 m_input_bunchNb_HER[0];
1282 if (m_input_BGSol == 1 && bunch_nb_HER > 0) ScaleFacBG_HER[i] = I_HER * iP_HER / (m_input_I_HER[0] * m_input_P_HER[0]);
1286 if (m_beast.SKB_LER_pressures_corrected != 0 && m_input_GasCorrection[1] == 1) {
1287 for (
int i = 0; i < (int)m_beast.SKB_LER_pressures_corrected->size(); i++) {
1288 ScaleFacBG_LER[i] = 0;
1290 iP_LER = m_beast.SKB_LER_pressures_corrected->at(i) * 0.00750062 * 1e9 * m_input_GasCorrection[1];
1291 if (m_input_P_LER[1] > 0) iP_LER += gRandom->Gaus(0, m_input_P_LER[1]);
1292 if (iP_LER < 0 || iP_LER > 260.) iP_LER = 0;
1293 if (I_LER > 0 && iP_LER > 0) {
1294 if (m_input_BGSol == 0
1295 && bunch_nb_LER > 0) ScaleFacBG_LER[i] = I_LER * iP_LER / (m_input_I_LER[0] * m_input_P_LER[0]) / bunch_nb_LER *
1296 m_input_bunchNb_LER[0];
1297 if (m_input_BGSol == 1 && bunch_nb_LER > 0) ScaleFacBG_LER[i] = I_LER * iP_LER / (m_input_I_LER[0] * m_input_P_LER[0]);
1302 double ScaleFacTo_HER = 0;
1303 double ScaleFacTo_LER = 0;
1304 if (bunch_nb_LER > 0 && sigma_y_LER > 0 && I_LER > 0) {
1305 if (m_input_ToSol == 0) ScaleFacTo_LER = TMath::Power(I_LER / m_input_I_LER[0],
1306 2) / (bunch_nb_LER / m_input_bunchNb_LER[0]) / (sigma_y_LER / m_input_sigma_y_LER[0]);
1307 else if (m_input_ToSol == 1) ScaleFacTo_LER = TMath::Power(I_LER / m_input_I_LER[0],
1308 2) / (bunch_nb_LER / m_input_bunchNb_LER[0]) /
1309 (sqrt(sigma_y_LER * sigma_x_LER / m_input_sigma_y_LER[0] / m_input_sigma_x_LER[0]));
1311 if (bunch_nb_HER > 0 && sigma_y_HER > 0 && I_HER > 0) {
1312 if (m_input_ToSol == 0) ScaleFacTo_HER = TMath::Power(I_HER / m_input_I_HER[0],
1313 2) / (bunch_nb_HER / m_input_bunchNb_HER[0]) / (sigma_y_HER / m_input_sigma_y_HER[0]);
1314 else if (m_input_ToSol == 1) ScaleFacTo_HER = TMath::Power(I_HER / m_input_I_HER[0],
1315 2) / (bunch_nb_HER / m_input_bunchNb_HER[0]) /
1316 (sqrt(sigma_y_HER * sigma_x_HER / m_input_sigma_y_HER[0] / m_input_sigma_x_HER[0]));
1320 m_beast.mc_reweight_LERT.push_back(ScaleFacTo_LER);
1321 m_beast.mc_reweight_HERT.push_back(ScaleFacTo_HER);
1322 for (
int i = 0; i < 12; i ++) {
1323 m_beast.mc_reweight_HERC.push_back(Zeff_HC * ScaleFacBG_HER[i]);
1324 m_beast.mc_reweight_HERB.push_back(Zeff_HB * ScaleFacBG_HER[i]);
1326 m_beast.mc_reweight_LERC.push_back(Zeff_LC * ScaleFacBG_LER[i]);
1328 m_beast.mc_reweight_LERC.push_back(m_input_Z_scaling[1] * ScaleFacBG_LER[i]);
1330 m_beast.mc_reweight_LERB.push_back(Zeff_LB * ScaleFacBG_LER[i]);
1332 m_beast.mc_reweight_LERB.push_back(m_input_Z_scaling[3] * ScaleFacBG_LER[i]);
1335 if (m_input_part == 0) {
1336 ScaleFacBGav_HER = 0;
1337 ScaleFacBGav_LER = 0;
1338 for (
int i = 0; i < 12; i ++) {
1339 ScaleFacBG_HER[i] = 0;
1340 ScaleFacBG_LER[i] = 0;
1344 if (m_input_part == 1) {
1383 for (
int i = 0; i < (int)m_input_LT_SAD_RLR.size(); i++) {
1384 float LBG = m_input_LB_SAD_RLR_av[i] * Zeff_LB + m_input_LC_SAD_RLR_av[i] * Zeff_LC;
1385 float BG = LBG * ScaleFacBGav_LER;
1386 float To = ScaleFacTo_LER * m_input_LT_SAD_RLR[i];
1389 m_beast.SAD_LER_RLR_av.push_back(BG + To);
1390 m_beast.SAD_LER_lifetime_av.push_back(Nb_LER / (BG + To) * 1e-9 / 60. * bunch_nb_LER);
1393 for (
int j = 0; j < 12; j++) {
1395 if (m_input_LB_SAD_RLR.size() > 0) {
1396 LBG = m_input_LB_SAD_RLR[j] * Zeff_LB + m_input_LC_SAD_RLR[j] * Zeff_LC;
1397 BG += LBG * ScaleFacBG_LER[j];
1402 m_beast.SAD_LER_RLR.push_back(BG + To);
1403 m_beast.SAD_LER_lifetime.push_back(Nb_LER / (BG + To) * 1e-9 / 60. * bunch_nb_LER);
1407 for (
int i = 0; i < (int)m_input_HT_SAD_RLR.size(); i++) {
1408 float HBG = m_input_HB_SAD_RLR_av[i] + m_input_HC_SAD_RLR_av[i];
1409 float BG = HBG * ScaleFacBGav_HER;
1410 float To = ScaleFacTo_HER * m_input_HT_SAD_RLR[i];
1413 m_beast.SAD_HER_RLR_av.push_back(BG + To);
1414 m_beast.SAD_HER_lifetime_av.push_back(Nb_HER / (BG + To) * 1e-9 / 60. * bunch_nb_HER);
1417 for (
int j = 0; j < 12; j++) {
1419 if (m_input_HB_SAD_RLR.size() > 0) {
1420 HBG = m_input_HB_SAD_RLR[j] + m_input_HC_SAD_RLR[j];
1421 BG += HBG * ScaleFacBG_HER[j];
1426 m_beast.SAD_HER_RLR.push_back(BG + To);
1427 m_beast.SAD_HER_lifetime.push_back(Nb_HER / (BG + To) * 1e-9 / 60. * bunch_nb_HER);
1431 for (
int i = 0; i < (int)m_input_LT_DIA_dose.size(); i++) {
1432 double LBG = m_input_LB_DIA_dose_av[i] + m_input_LC_DIA_dose_av[i];
1433 double HBG = m_input_HB_DIA_dose_av[i] + m_input_HC_DIA_dose_av[i];
1434 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1435 double To = ScaleFacTo_LER * m_input_LT_DIA_dose[i] + ScaleFacTo_HER * m_input_HT_DIA_dose[i];
1443 m_beast.DIA_dose_av.push_back(BG + To);
1444 BG = 0; LBG = 0; HBG = 0;
1445 for (
int j = 0; j < 12; j++) {
1447 if (m_input_LB_DIA_dose[j].size() > 0) {
1449 HBG = m_input_HB_DIA_dose[j][i] + m_input_HC_DIA_dose[j][i];
1450 LBG = m_input_LB_DIA_dose[j][i] * Zeff_LB + m_input_LC_DIA_dose[j][i] * Zeff_LC;
1454 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1459 m_beast.DIA_dose.push_back(BG + To);
1463 for (
int i = 0; i < (int)m_input_LT_PIN_dose.size(); i++) {
1464 double LBG = m_input_LB_PIN_dose_av[i] + m_input_LC_PIN_dose_av[i];
1465 double HBG = m_input_HB_PIN_dose_av[i] + m_input_HC_PIN_dose_av[i];
1466 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1467 double To = ScaleFacTo_LER * m_input_LT_PIN_dose[i] + ScaleFacTo_HER * m_input_HT_PIN_dose[i];
1470 m_beast.PIN_dose_av.push_back(BG + To);
1471 BG = 0; LBG = 0; HBG = 0;
1472 for (
int j = 0; j < 12; j++) {
1474 if (m_input_LB_PIN_dose[j].size() > 0) {
1476 HBG = m_input_HB_PIN_dose[j][i] + m_input_HC_PIN_dose[j][i];
1477 LBG = m_input_LB_PIN_dose[j][i] * Zeff_LB + m_input_LC_PIN_dose[j][i] * Zeff_LC;
1478 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1483 m_beast.PIN_dose.push_back(BG + To);
1487 for (
int i = 0; i < (int)m_input_LT_DOSI.size(); i++) {
1491 double LBG = m_input_LB_DOSI_av[i] + m_input_LC_DOSI_av[i];
1492 double HBG = m_input_HB_DOSI_av[i] + m_input_HC_DOSI_av[i];
1493 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1494 double To = ScaleFacTo_LER * m_input_LT_DOSI[i] + ScaleFacTo_HER * m_input_HT_DOSI[i];
1497 m_beast.DOSI_av.push_back(BG + To);
1498 BG = 0; LBG = 0; HBG = 0;
1499 for (
int j = 0; j < 12; j++) {
1501 if (m_input_LB_DOSI[j].size() > 0) {
1503 HBG = m_input_HB_DOSI[j][i] + m_input_HC_DOSI[j][i];
1504 LBG = m_input_LB_DOSI[j][i] * Zeff_LB + m_input_LC_DOSI[j][i] * Zeff_LC;
1505 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1510 m_beast.DOSI.push_back(BG + To);
1514 for (
int i = 0; i < (int)m_input_LT_BGO_dose.size(); i++) {
1515 double LBG = m_input_LB_BGO_dose_av[i] + m_input_LC_BGO_dose_av[i];
1516 double HBG = m_input_HB_BGO_dose_av[i] + m_input_HC_BGO_dose_av[i];
1517 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1518 double To = ScaleFacTo_LER * m_input_LT_BGO_dose[i] + ScaleFacTo_HER * m_input_HT_BGO_dose[i];
1521 m_beast.BGO_energy_av.push_back(BG + To);
1522 BG = 0; LBG = 0; HBG = 0;
1523 for (
int j = 0; j < 12; j++) {
1525 if (m_input_LB_BGO_dose[j].size() > 0) {
1527 HBG = m_input_HB_BGO_dose[j][i] + m_input_HC_BGO_dose[j][i];
1528 LBG = m_input_LB_BGO_dose[j][i] * Zeff_LB + m_input_LC_BGO_dose[j][i] * Zeff_LC;
1529 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1534 m_beast.BGO_energy.push_back(BG + To);
1537 if (m_beast.ts > 1464868800) {
1549 for (
int i = 0; i < (int)m_input_LT_HE3_rate.size(); i++) {
1550 double LBG = m_input_LB_HE3_rate_av[he3order[i]] + m_input_LC_HE3_rate_av[he3order[i]];
1551 double HBG = m_input_HB_HE3_rate_av[he3order[i]] + m_input_HC_HE3_rate_av[he3order[i]];
1552 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1553 double To = ScaleFacTo_LER * m_input_LT_HE3_rate[he3order[i]] + ScaleFacTo_HER * m_input_HT_HE3_rate[he3order[i]];
1556 m_beast.HE3_rate_av.push_back(BG + To);
1557 BG = 0; LBG = 0; HBG = 0;
1558 for (
int j = 0; j < 12; j++) {
1560 if (m_input_LB_HE3_rate[j].size() > 0) {
1562 HBG = m_input_HB_HE3_rate[j][he3order[i]] + m_input_HC_HE3_rate[j][he3order[i]];
1563 LBG = m_input_LB_HE3_rate[j][he3order[i]] * Zeff_LB + m_input_LC_HE3_rate[j][he3order[i]] * Zeff_LC;
1564 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1569 m_beast.HE3_rate.push_back(BG + To);
1573 for (
int i = 0; i < (int)m_input_LT_TPC_rate.size(); i++) {
1574 double LBG = m_input_LB_TPC_rate_av[i] + m_input_LC_TPC_rate_av[i];
1575 double HBG = m_input_HB_TPC_rate_av[i] + m_input_HC_TPC_rate_av[i];
1576 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1577 double To = ScaleFacTo_LER * m_input_LT_TPC_rate[i] + ScaleFacTo_HER * m_input_HT_TPC_rate[i];
1578 int tpc_ch = (int)(i / 5);
1579 int n_type = i - 5 * tpc_ch;
1580 m_beast.TPC_rate_av[tpc_ch][n_type] = (BG + To);
1581 BG = 0; LBG = 0; HBG = 0;
1582 for (
int j = 0; j < 12; j++) {
1584 if (m_input_LB_TPC_rate[j].size() > 0) {
1586 HBG = m_input_HB_TPC_rate[j][i] + m_input_HC_TPC_rate[j][i];
1587 LBG = m_input_LB_TPC_rate[j][i] * Zeff_LB + m_input_LC_TPC_rate[j][i] * Zeff_LC;
1588 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1596 for (
int i = 0; i < (int)m_input_LT_TPC_dose.size(); i++) {
1597 double LBG = m_input_LB_TPC_dose_av[i] + m_input_LC_TPC_dose_av[i];
1598 double HBG = m_input_HB_TPC_dose_av[i] + m_input_HC_TPC_dose_av[i];
1599 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1600 double To = ScaleFacTo_LER * m_input_LT_TPC_dose[i] + ScaleFacTo_HER * m_input_HT_TPC_dose[i];
1604 m_beast.TPC_dose_av.push_back(BG + To);
1605 BG = 0; LBG = 0; HBG = 0;
1606 for (
int j = 0; j < 12; j++) {
1608 if (m_input_LB_TPC_dose[j].size() > 0) {
1610 HBG = m_input_HB_TPC_dose[j][i] + m_input_HC_TPC_dose[j][i];
1611 LBG = m_input_LB_TPC_dose[j][i] * Zeff_LB + m_input_LC_TPC_dose[j][i] * Zeff_LC;
1612 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1619 for (
int i = 0; i < (int)m_input_LT_TPC_angular_rate.size(); i++) {
1620 double LBG = m_input_LB_TPC_angular_rate_av[i] + m_input_LC_TPC_angular_rate_av[i];
1621 double HBG = m_input_HB_TPC_angular_rate_av[i] + m_input_HC_TPC_angular_rate_av[i];
1622 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1623 double To = ScaleFacTo_LER * m_input_LT_TPC_angular_rate[i] + ScaleFacTo_HER * m_input_HT_TPC_angular_rate[i];
1624 int tpc_ch = (int)(i / (9 * 18));
1625 int angle = i - (9 * 18) * tpc_ch;
1626 int i_theta = (int)(angle / 18);
1627 int i_phi = angle - 9 * i_theta;
1628 m_beast.TPC_angular_rate_av[tpc_ch][i_theta][i_phi] = (BG + To);
1629 BG = 0; LBG = 0; HBG = 0;
1630 for (
int j = 0; j < 12; j++) {
1632 if (m_input_LB_TPC_angular_rate[j].size() > 0) {
1634 HBG = m_input_HB_TPC_angular_rate[j][i] + m_input_HC_TPC_angular_rate[j][i];
1635 LBG = m_input_LB_TPC_angular_rate[j][i] * Zeff_LB + m_input_LC_TPC_angular_rate[j][i] * Zeff_LC;
1636 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1643 for (
int i = 0; i < (int)m_input_LT_TPC_angular_dose.size(); i++) {
1644 double LBG = m_input_LB_TPC_angular_dose_av[i] + m_input_LC_TPC_angular_dose_av[i];
1645 double HBG = m_input_HB_TPC_angular_dose_av[i] + m_input_HC_TPC_angular_dose_av[i];
1646 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1647 double To = ScaleFacTo_LER * m_input_LT_TPC_angular_dose[i] + ScaleFacTo_HER * m_input_HT_TPC_angular_dose[i];
1648 int tpc_ch = (int)(i / (9 * 18));
1649 int angle = i - (9 * 18) * tpc_ch;
1650 int i_theta = (int)(angle / 18);
1651 int i_phi = angle - 9 * i_theta;
1652 m_beast.TPC_angular_dose_av[tpc_ch][i_theta][i_phi] = (BG + To);
1653 BG = 0; LBG = 0; HBG = 0;
1654 for (
int j = 0; j < 12; j++) {
1656 if (m_input_LB_TPC_angular_dose[j].size() > 0) {
1658 HBG = m_input_HB_TPC_angular_dose[j][i] + m_input_HC_TPC_angular_dose[j][i];
1659 LBG = m_input_LB_TPC_angular_dose[j][i] * Zeff_LB + m_input_LC_TPC_angular_dose[j][i] * Zeff_LC;
1660 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1668 for (
int i = 0; i < (int)m_input_LT_CLAWS_rate.size(); i++) {
1669 double LBG = m_input_LB_CLAWS_rate_av[i] + m_input_LC_CLAWS_rate_av[i];
1670 double HBG = m_input_HB_CLAWS_rate_av[i] + m_input_HC_CLAWS_rate_av[i];
1671 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1672 double To = ScaleFacTo_LER * m_input_LT_CLAWS_rate[i] + ScaleFacTo_HER * m_input_HT_CLAWS_rate[i];
1675 m_beast.CLAWS_rate_av.push_back(BG + To);
1676 BG = 0; LBG = 0; HBG = 0;
1677 for (
int j = 0; j < 12; j++) {
1679 if (m_input_LB_CLAWS_rate[j].size() > 0) {
1681 HBG = m_input_HB_CLAWS_rate[j][i] + m_input_HC_CLAWS_rate[j][i];
1682 LBG = m_input_LB_CLAWS_rate[j][i] * Zeff_LB + m_input_LC_CLAWS_rate[j][i] * Zeff_LC;
1683 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1688 m_beast.CLAWS_rate.push_back(BG + To);
1692 for (
int i = 0; i < (int)m_input_LT_QCSS_rate.size(); i++) {
1693 double LBG = m_input_LB_QCSS_rate_av[i] + m_input_LC_QCSS_rate_av[i];
1694 double HBG = m_input_HB_QCSS_rate_av[i] + m_input_HC_QCSS_rate_av[i];
1695 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1696 double To = ScaleFacTo_LER * m_input_LT_QCSS_rate[i] + ScaleFacTo_HER * m_input_HT_QCSS_rate[i];
1699 m_beast.QCSS_rate_av.push_back(BG + To);
1700 BG = 0; LBG = 0; HBG = 0;
1701 for (
int j = 0; j < 12; j++) {
1703 if (m_input_LB_QCSS_rate[j].size() > 0) {
1705 HBG = m_input_HB_QCSS_rate[j][i] + m_input_HC_QCSS_rate[j][i];
1706 LBG = m_input_LB_QCSS_rate[j][i] * Zeff_LB + m_input_LC_QCSS_rate[j][i] * Zeff_LC;
1707 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1712 m_beast.QCSS_rate.push_back(BG + To);
1716 for (
int i = 0; i < (int)m_input_LT_CSI_dose.size(); i++) {
1717 double LBG = m_input_LB_CSI_dose_av[i] + m_input_LC_CSI_dose_av[i];
1718 double HBG = m_input_HB_CSI_dose_av[i] + m_input_HC_CSI_dose_av[i];
1719 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1720 double To = ScaleFacTo_LER * m_input_LT_CSI_dose[i] + ScaleFacTo_HER * m_input_HT_CSI_dose[i];
1723 m_beast.CSI_sumE_av.push_back(BG + To);
1724 BG = 0; LBG = 0; HBG = 0;
1725 for (
int j = 0; j < 12; j++) {
1727 if (m_input_LB_CSI_dose[j].size() > 0) {
1729 HBG = m_input_HB_CSI_dose[j][i] + m_input_HC_CSI_dose[j][i];
1730 LBG = m_input_LB_CSI_dose[j][i] * Zeff_LB + m_input_LC_CSI_dose[j][i] * Zeff_LC;
1731 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1736 m_beast.CSI_sumE.push_back(BG + To);
1738 for (
int i = 0; i < (int)m_input_LT_CSI_dose_binE.size(); i++) {
1739 double LBG = m_input_LB_CSI_dose_binE_av[i] + m_input_LC_CSI_dose_binE_av[i];
1740 double HBG = m_input_HB_CSI_dose_binE_av[i] + m_input_HC_CSI_dose_binE_av[i];
1741 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1742 double To = ScaleFacTo_LER * m_input_LT_CSI_dose_binE[i] + ScaleFacTo_HER * m_input_HT_CSI_dose_binE[i];
1745 m_beast.CSI_Ebin_av.push_back(BG + To);
1746 BG = 0; LBG = 0; HBG = 0;
1747 for (
int j = 0; j < 12; j++) {
1749 if (m_input_LB_CSI_dose_binE[j].size() > 0) {
1751 HBG = m_input_HB_CSI_dose_binE[j][i] + m_input_HC_CSI_dose_binE[j][i];
1752 LBG = m_input_LB_CSI_dose_binE[j][i] * Zeff_LB + m_input_LC_CSI_dose_binE[j][i] * Zeff_LC;
1753 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1758 m_beast.CSI_Ebin.push_back(BG + To);
1760 for (
int i = 0; i < (int)m_input_LT_CSI_rate.size(); i++) {
1761 double LBG = m_input_LB_CSI_rate_av[i] + m_input_LC_CSI_rate_av[i];
1762 double HBG = m_input_HB_CSI_rate_av[i] + m_input_HC_CSI_rate_av[i];
1763 double BG = LBG * ScaleFacBGav_LER + HBG * ScaleFacBGav_HER;
1764 double To = ScaleFacTo_LER * m_input_LT_CSI_rate[i] + ScaleFacTo_HER * m_input_HT_CSI_rate[i];
1767 m_beast.CSI_hitRate_av.push_back(BG + To);
1768 BG = 0; LBG = 0; HBG = 0;
1769 for (
int j = 0; j < 12; j++) {
1771 if (m_input_LB_CSI_rate[j].size() > 0) {
1773 HBG = m_input_HB_CSI_rate[j][i] + m_input_HC_CSI_rate[j][i];
1774 LBG = m_input_LB_CSI_rate[j][i] * Zeff_LB + m_input_LC_CSI_rate[j][i] * Zeff_LC;
1775 BG += LBG * ScaleFacBG_LER[j] + HBG * ScaleFacBG_HER[j];
1780 m_beast.CSI_hitRate.push_back(BG + To);
1783 m_treeBEAST->Fill();
1795 void NtuplePhase1_v6Module::endRun()
1799 void NtuplePhase1_v6Module::terminate()
1803 m_treeBEAST->Write();
1804 m_treeTruth->Write();
1808 void NtuplePhase1_v6Module::printModuleParams()
const
Read SKB PVs, simulated measurements of BEAST sensors, and write scaled simulated Ntuple in BEAST pha...
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
bool create(bool replace=false)
Create a default object in the data store.
Type-safe access to single objects in the data store.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
const std::string c_treeNames[]
Names of trees.
std::vector< std::string > expandWordExpansions(const std::vector< std::string > &filenames)
Performs wildcard expansion using wordexp(), returns matches.
Abstract base class for different kinds of events.