13 #include <trg/gdl/modules/trggdlDQM/TRGGDLDQMModule.h>
14 #include <trg/gdl/modules/trggdlUnpacker/trggdlUnpackerModule.h>
15 #include <mdst/dataobjects/SoftwareTriggerResult.h>
17 #include <framework/datastore/StoreObjPtr.h>
18 #include <framework/datastore/StoreArray.h>
20 #include <TDirectory.h>
21 #include <TPostScript.h>
26 #include <framework/logging/Logger.h>
27 #include <boost/algorithm/string.hpp>
29 #include <mdst/dataobjects/Track.h>
30 #include <mdst/dataobjects/HitPatternCDC.h>
31 #include <mdst/dataobjects/ECLCluster.h>
32 #include <ecl/dataobjects/ECLDigit.h>
33 #include <ecl/dataobjects/ECLCalDigit.h>
34 #include "trg/ecl/dataobjects/TRGECLCluster.h"
55 addParam(
"eventByEventTimingHistRecord", m_eventByEventTimingHistRecord,
56 "Recording event by event timing distribution histogram or not",
58 addParam(
"dumpVcdFile", m_dumpVcdFile,
59 "Dumping vcd file or not",
61 addParam(
"bitConditionToDumpVcd", m_bitConditionToDumpVcd,
62 "Condition for vcd. alg format with '!' and '+'.",
64 addParam(
"vcdEventStart", m_vcdEventStart,
65 "Start equential event number",
67 addParam(
"vcdNumberOfEvents", m_vcdNumberOfEvents,
68 "Number of events to dump vcd file",
70 addParam(
"bitNameOnBinLabel", m_bitNameOnBinLabel,
71 "Put bitname on BinLabel",
73 addParam(
"generatePostscript", m_generatePostscript,
74 "Genarete postscript file or not",
76 addParam(
"postScriptName", m_postScriptName,
77 "postscript file name",
80 "use skim information or not",
82 B2DEBUG(20,
"eventByEventTimingFlag(" << m_eventByEventTimingHistRecord
83 <<
"), m_dumpVcdFile(" << m_dumpVcdFile
84 <<
"), m_bitConditionToDumpVcd(" << m_bitConditionToDumpVcd
85 <<
"), m_vcdEventStart(" << m_vcdEventStart
86 <<
"), m_vcdNumberOfEvents(" << m_vcdNumberOfEvents);
95 oldDir->mkdir(
"TRGGDL");
98 for (
int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
99 h_c8_gdlL1TocomL1[iskim] =
new TH1I(Form(
"hGDL_gdlL1TocomL1_%s", skim_smap[iskim].c_str()),
"comL1 - gdlL1 [clk8ns]", 100, 0,
103 h_c8_topTogdlL1[iskim] =
new TH1I(Form(
"hGDL_topTogdlL1_%s", skim_smap[iskim].c_str()),
"gdlL1 - top_timing [clk8ns]", 700, 0,
106 h_c8_eclTogdlL1[iskim] =
new TH1I(Form(
"hGDL_eclTogdlL1_%s", skim_smap[iskim].c_str()),
"gdlL1 - ecl_timing [clk8ns]", 500, 0,
109 h_c8_cdcTogdlL1[iskim] =
new TH1I(Form(
"hGDL_cdcTogdlL1_%s", skim_smap[iskim].c_str()),
"gdlL1 - cdc_timing [clk8ns]", 700, 0,
113 h_c8_ecl8mToGDL[iskim] =
new TH1I(Form(
"hGDL_ecl8mToGDL_%s", skim_smap[iskim].c_str()),
"gdlIn^{8MHz} - ecl_timing [clk8ns]",
116 h_c8_topToGDL[iskim] =
new TH1I(Form(
"hGDL_topToGDL_%s", skim_smap[iskim].c_str()),
"gdlIn - top_timing [clk8ns]", 700, 0,
119 h_c8_eclToGDL[iskim] =
new TH1I(Form(
"hGDL_eclToGDL_%s", skim_smap[iskim].c_str()),
"gdlIn - ecl_timing [clk8ns]", 500, 0,
122 h_c8_cdcToGDL[iskim] =
new TH1I(Form(
"hGDL_cdcToGDL_%s", skim_smap[iskim].c_str()),
"gdlIn - cdc_timing [clk8ns]", 700, 0,
126 h_c2_cdcTocomL1[iskim] =
new TH1I(Form(
"hGDL_cdcTocomL1_%s", skim_smap[iskim].c_str()),
"comL1 - cdc_timing [clk2ns]", 520, 0,
129 h_ns_cdcTocomL1[iskim] =
new TH1D(Form(
"hGDL_ns_cdcTocomL1_%s", skim_smap[iskim].c_str()),
"comL1 - cdc_timing [ns]", 2600, 0,
133 h_ns_cdcTogdlL1[iskim] =
new TH1D(Form(
"hGDL_ns_cdcTogdlL1_%s", skim_smap[iskim].c_str()),
"gdlL1 - cdc_timing [ns]", 2600, 0,
138 h_ns_topToecl[iskim] =
new TH1D(Form(
"hGDL_ns_topToecl_%s", skim_smap[iskim].c_str()),
"ecl_timing - top_timing [ns]", 800, 0,
142 h_ns_topTocdc[iskim] =
new TH1D(Form(
"hGDL_ns_topTocdc_%s", skim_smap[iskim].c_str()),
"cdc_timing - top_timing [ns]", 800, 0,
146 h_ns_cdcToecl[iskim] =
new TH1D(Form(
"hGDL_ns_cdcToecl_%s", skim_smap[iskim].c_str()),
"ecl_timing - cdc_timing [ns]", 2000, 0,
151 h_c2_cdcToecl[iskim] =
new TH1I(Form(
"hGDL_cdcToecl_%s", skim_smap[iskim].c_str()),
"ecl_timing - cdc_timing [clk2ns]", 1000, 0,
155 h_timtype[iskim] =
new TH1I(Form(
"hGDL_timtype_%s", skim_smap[iskim].c_str()),
"timtype", 7, 0, 7);
157 h_itd[iskim] =
new TH1I(Form(
"hGDL_itd_%s", skim_smap[iskim].c_str()),
"itd", n_inbit + 1, -1, n_inbit);
158 h_ftd[iskim] =
new TH1I(Form(
"hGDL_ftd_%s", skim_smap[iskim].c_str()),
"ftd", n_outbit + 1, -1, n_outbit);
159 h_psn[iskim] =
new TH1I(Form(
"hGDL_psn_%s", skim_smap[iskim].c_str()),
"psn", n_outbit + 1, -1, n_outbit);
161 h_psn_extra[iskim] =
new TH1I(Form(
"hGDL_psn_extra_%s", skim_smap[iskim].c_str()),
"psn extra", n_output_extra, 0, n_output_extra);
162 for (
int i = 0; i < n_output_extra; i++) {
163 h_psn_extra[iskim]->GetXaxis()->SetBinLabel(i + 1, output_extra[i]);
166 h_psn_overlap[iskim] =
new TH1I(Form(
"hGDL_psn_overlap_%s", skim_smap[iskim].c_str()),
"psn overlap", n_output_overlap, 0,
168 for (
int i = 0; i < n_output_overlap; i++) {
169 h_psn_overlap[iskim]->GetXaxis()->SetBinLabel(i + 1, output_overlap[i]);
172 h_psn_nooverlap[iskim] =
new TH1I(Form(
"hGDL_psn_nooverlap_%s", skim_smap[iskim].c_str()),
"psn nooverlap", n_output_overlap, 0,
174 for (
int i = 0; i < n_output_overlap; i++) {
175 h_psn_nooverlap[iskim]->GetXaxis()->SetBinLabel(i + 1, output_overlap[i]);
178 h_psn_pure_extra[iskim] =
new TH1I(Form(
"hGDL_psn_pure_extra_%s", skim_smap[iskim].c_str()),
"psn pure extra", n_output_pure_extra,
179 0, n_output_pure_extra);
180 for (
int i = 0; i < n_output_pure_extra; i++) {
181 h_psn_pure_extra[iskim]->GetXaxis()->SetBinLabel(i + 1, output_pure_extra[i]);
184 h_eff[iskim] =
new TH1D(Form(
"hGDL_eff_%s", skim_smap[iskim].c_str()),
"efficiency", n_eff, 0, n_eff);
185 for (
int i = 0; i < n_eff; i++) {
186 h_eff[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
188 h_pure_eff[iskim] =
new TH1D(Form(
"hGDL_pure_eff_%s", skim_smap[iskim].c_str()),
"efficiency wrt. offline", n_pure_eff, 0,
190 for (
int i = 0; i < n_pure_eff; i++) {
191 h_pure_eff[iskim]->GetXaxis()->SetBinLabel(i + 1, c_pure_eff[i]);
192 h_pure_eff[iskim]->GetXaxis()->SetLabelSize(0.05);
194 for (
unsigned i = 0; i < n_inbit; i++) {
195 if (m_bitNameOnBinLabel) {
196 h_itd[iskim]->GetXaxis()->SetBinLabel(
h_itd[iskim]->GetXaxis()->FindBin(i + 0.5), inbitname[i]);
197 h_ftd[iskim]->GetXaxis()->SetBinLabel(
h_ftd[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
198 h_psn[iskim]->GetXaxis()->SetBinLabel(
h_psn[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
203 if (iskim != 0)
continue;
206 for (
unsigned i = 0; i < n_inbit; i++) {
207 h_itd_rise[i][iskim] =
new TH1I(Form(
"hGDL_itd_%s_rise_%s", inbitname[i], skim_smap[iskim].c_str()),
208 Form(
"itd%d(%s) rising", i, inbitname[i]), 48, 0, 48);
209 h_itd_rise[i][iskim]->SetLineColor(kRed);
210 h_itd_fall[i][iskim] =
new TH1I(Form(
"hGDL_itd_%s_fall_%s", inbitname[i], skim_smap[iskim].c_str()),
211 Form(
"itd%d(%s) falling", i, inbitname[i]), 48, 0, 48);
212 h_itd_fall[i][iskim]->SetLineColor(kGreen);
214 for (
unsigned i = 0; i < n_outbit; i++) {
215 h_ftd[iskim]->GetXaxis()->SetBinLabel(
h_ftd[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
216 h_ftd_rise[i][iskim] =
new TH1I(Form(
"hGDL_ftd_%s_rise_%s", outbitname[i], skim_smap[iskim].c_str()),
217 Form(
"ftd%d(%s) rising", i, outbitname[i]), 48, 0, 48);
218 h_ftd_rise[i][iskim]->SetLineColor(kRed);
219 h_ftd_fall[i][iskim] =
new TH1I(Form(
"hGDL_ftd_%s_fall_%s", outbitname[i], skim_smap[iskim].c_str()),
220 Form(
"ftd%d(%s) falling", i, outbitname[i]), 48, 0, 48);
221 h_ftd_fall[i][iskim]->SetLineColor(kGreen);
222 h_psn[iskim]->GetXaxis()->SetBinLabel(
h_psn[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
223 h_psn_rise[i][iskim] =
new TH1I(Form(
"hGDL_psn_%s_rise_%s", outbitname[i], skim_smap[iskim].c_str()),
224 Form(
"psn%d(%s) rising", i, outbitname[i]), 48, 0, 48);
225 h_psn_rise[i][iskim]->SetLineColor(kRed);
226 h_psn_fall[i][iskim] =
new TH1I(Form(
"hGDL_psn_%s_fall_%s", outbitname[i], skim_smap[iskim].c_str()),
227 Form(
"psn%d(%s) falling", i, outbitname[i]), 48, 0, 48);
228 h_psn_fall[i][iskim]->SetLineColor(kGreen);
233 h_eff_shifter =
new TH1D(Form(
"hGDL_eff_shifter"),
"efficiency", n_eff_shifter, 0, n_eff_shifter);
234 for (
int i = 0; i < n_eff_shifter; i++) {
235 h_eff_shifter->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
237 h_eff_shifter->SetMaximum(1.2);
238 h_eff_shifter->SetMinimum(0);
239 h_eff_shifter->GetXaxis()->SetLabelSize(0.05);
249 for (
int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
265 h_itd[iskim]->Reset();
266 h_ftd[iskim]->Reset();
267 h_psn[iskim]->Reset();
268 h_psn_extra[iskim]->Reset();
269 h_psn_pure_extra[iskim]->Reset();
270 h_eff[iskim]->Reset();
271 h_pure_eff[iskim]->Reset();
275 h_eff_shifter->Reset();
285 start_skim_gdldqm = 0;
287 }
else if (m_skim == 1) {
288 start_skim_gdldqm = 1;
289 end_skim_gdldqm = nskim_gdldqm;
291 start_skim_gdldqm = 0;
292 end_skim_gdldqm = nskim_gdldqm;
296 _exp = bevt->getExperiment();
297 _run = bevt->getRun();
299 m_ECLCalDigitData.registerInDataStore();
300 m_ECLDigitData.registerInDataStore();
306 for (
int i = 0; i < 320; i++) {
307 LeafBitMap[i] = m_unpacker->getLeafMap(i);
309 for (
int i = 0; i < 320; i++) {
310 strcpy(LeafNames[i], m_unpacker->getLeafnames(i));
321 for (
int i = 0; i < 10; i++) {
326 for (
int i = 0; i < 320; i++) {
327 if (strcmp(LeafNames[i],
"timtype") == 0) _e_timtype = LeafBitMap[i];
328 if (strcmp(LeafNames[i],
"gdll1rvc") == 0) _e_gdll1rvc = LeafBitMap[i];
329 if (strcmp(LeafNames[i],
"coml1rvc") == 0) _e_coml1rvc = LeafBitMap[i];
330 if (strcmp(LeafNames[i],
"toptiming") == 0)_e_toptiming = LeafBitMap[i];
331 if (strcmp(LeafNames[i],
"ecltiming") == 0)_e_ecltiming = LeafBitMap[i];
332 if (strcmp(LeafNames[i],
"cdctiming") == 0)_e_cdctiming = LeafBitMap[i];
333 if (strcmp(LeafNames[i],
"toprvc") == 0) _e_toprvc = LeafBitMap[i];
334 if (strcmp(LeafNames[i],
"eclrvc") == 0) _e_eclrvc = LeafBitMap[i];
335 if (strcmp(LeafNames[i],
"cdcrvc") == 0) _e_cdcrvc = LeafBitMap[i];
336 if (strcmp(LeafNames[i],
"psn0") == 0) ee_psn[0] = LeafBitMap[i];
337 if (strcmp(LeafNames[i],
"psn1") == 0) ee_psn[1] = LeafBitMap[i];
338 if (strcmp(LeafNames[i],
"psn2") == 0) ee_psn[2] = LeafBitMap[i];
339 if (strcmp(LeafNames[i],
"psn3") == 0) ee_psn[3] = LeafBitMap[i];
340 if (strcmp(LeafNames[i],
"psn4") == 0) ee_psn[4] = LeafBitMap[i];
341 if (strcmp(LeafNames[i],
"psn5") == 0) ee_psn[5] = LeafBitMap[i];
342 if (strcmp(LeafNames[i],
"psn6") == 0) ee_psn[6] = LeafBitMap[i];
343 if (strcmp(LeafNames[i],
"psn7") == 0) ee_psn[7] = LeafBitMap[i];
344 if (strcmp(LeafNames[i],
"psn8") == 0) ee_psn[8] = LeafBitMap[i];
345 if (strcmp(LeafNames[i],
"psn9") == 0) ee_psn[9] = LeafBitMap[i];
346 if (strcmp(LeafNames[i],
"ftd0") == 0) ee_ftd[0] = LeafBitMap[i];
347 if (strcmp(LeafNames[i],
"ftd1") == 0) ee_ftd[1] = LeafBitMap[i];
348 if (strcmp(LeafNames[i],
"ftd2") == 0) ee_ftd[2] = LeafBitMap[i];
349 if (strcmp(LeafNames[i],
"ftd3") == 0) ee_ftd[3] = LeafBitMap[i];
350 if (strcmp(LeafNames[i],
"ftd4") == 0) ee_ftd[4] = LeafBitMap[i];
351 if (strcmp(LeafNames[i],
"ftd5") == 0) ee_ftd[5] = LeafBitMap[i];
352 if (strcmp(LeafNames[i],
"ftd6") == 0) ee_ftd[6] = LeafBitMap[i];
353 if (strcmp(LeafNames[i],
"ftd7") == 0) ee_ftd[7] = LeafBitMap[i];
354 if (strcmp(LeafNames[i],
"ftd8") == 0) ee_ftd[8] = LeafBitMap[i];
355 if (strcmp(LeafNames[i],
"ftd9") == 0) ee_ftd[9] = LeafBitMap[i];
356 if (strcmp(LeafNames[i],
"itd0") == 0) ee_itd[0] = LeafBitMap[i];
357 if (strcmp(LeafNames[i],
"itd1") == 0) ee_itd[1] = LeafBitMap[i];
358 if (strcmp(LeafNames[i],
"itd2") == 0) ee_itd[2] = LeafBitMap[i];
359 if (strcmp(LeafNames[i],
"itd3") == 0) ee_itd[3] = LeafBitMap[i];
360 if (strcmp(LeafNames[i],
"itd4") == 0) ee_itd[4] = LeafBitMap[i];
361 if (strcmp(LeafNames[i],
"itd5") == 0) ee_itd[5] = LeafBitMap[i];
362 if (strcmp(LeafNames[i],
"itd6") == 0) ee_itd[6] = LeafBitMap[i];
363 if (strcmp(LeafNames[i],
"itd7") == 0) ee_itd[7] = LeafBitMap[i];
364 if (strcmp(LeafNames[i],
"itd8") == 0) ee_itd[8] = LeafBitMap[i];
365 if (strcmp(LeafNames[i],
"itd9") == 0) ee_itd[9] = LeafBitMap[i];
368 n_inbit = m_dbinput->getninbit();
369 n_outbit = m_dbftdl ->getnoutbit();
370 for (
int i = 0; i < 320; i++) {
371 strcpy(inbitname[i], m_dbinput->getinbitname(i));
373 for (
int i = 0; i < 320; i++) {
374 strcpy(outbitname[i], m_dbftdl->getoutbitname(i));
381 if (m_generatePostscript) {
382 TPostScript* ps =
new TPostScript(m_postScriptName.c_str(), 112);
383 gStyle->SetOptStat(0);
384 TCanvas c1(
"c1",
"", 0, 0, 500, 300);
387 for (
int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
389 h_itd[iskim]->GetXaxis()->SetRange(
h_itd[iskim]->GetXaxis()->FindBin(0.5),
390 h_itd[iskim]->GetXaxis()->FindBin(n_inbit - 0.5));
391 h_itd[iskim]->Draw();
393 h_ftd[iskim]->GetXaxis()->SetRange(
h_ftd[iskim]->GetXaxis()->FindBin(0.5),
394 h_ftd[iskim]->GetXaxis()->FindBin(n_outbit - 0.5));
395 h_ftd[iskim]->Draw();
397 h_psn[iskim]->GetXaxis()->SetRange(
h_psn[iskim]->GetXaxis()->FindBin(0.5),
398 h_psn[iskim]->GetXaxis()->FindBin(n_outbit - 0.5));
399 h_psn[iskim]->Draw();
401 h_ftd[iskim]->SetTitle(
"ftd(green), psnm(red)");
402 h_ftd[iskim]->SetFillColor(kGreen);
403 h_ftd[iskim]->SetBarWidth(0.4);
404 h_ftd[iskim]->Draw(
"bar");
405 h_psn[iskim]->SetFillColor(kRed);
406 h_psn[iskim]->SetBarWidth(0.4);
407 h_psn[iskim]->SetBarOffset(0.5);
408 h_psn[iskim]->Draw(
"bar,same");
445 if (iskim != 0)
continue;
446 for (
unsigned i = 0; i < n_inbit; i++) {
448 h_itd_rise[i][iskim]->SetTitle(Form(
"itd%d(%s) rising(red), falling(green)",
450 h_itd_rise[i][iskim]->Draw();
451 h_itd_fall[i][iskim]->Draw(
"same");
464 static unsigned nvcd = 0;
465 static bool begin_run =
true;
468 n_leafs = m_unpacker->getnLeafs();
469 int n_leafsExtra = 0;
470 n_leafsExtra = m_unpacker->getnLeafsExtra();
471 n_clocks = m_unpacker->getnClks();
472 int nconf = m_unpacker->getconf();
473 int nword_input = m_unpacker->get_nword_input();
474 const int nword_output = m_unpacker->get_nword_output();
483 for (
int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
484 if (iskim == 0)
skim.push_back(iskim);
488 const std::map<std::string, int>& skim_map = result_soft->getResults();
489 for (
int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
491 else if (skim_map.find(skim_menu[iskim]) != skim_map.end()) {
493 if (accepted)
skim.push_back(iskim);
501 for (
int i = 0; i < 320; i++) {
502 if (strcmp(entAry[0]->m_unpackername[i],
"evt") == 0) evtno = entAry[0]->m_unpacker[i];
503 if (strcmp(entAry[0]->m_unpackername[i],
"clk") == 0) clk_map = i;
506 const double clkTo2ns = 1. / .508877;
507 const double clkTo1ns = 0.5 / .508877;
513 h_0 =
new TH2I(Form(
"hgdl%08d", evtno),
"", n_clocks, 0, n_clocks, n_leafs + n_leafsExtra, 0,
514 n_leafs + n_leafsExtra);
515 h_p =
new TH2I(Form(
"hpsn%08d", evtno),
"", n_clocks, 0, n_clocks, n_outbit, 0, n_outbit);
516 h_f =
new TH2I(Form(
"hftd%08d", evtno),
"", n_clocks, 0, n_clocks, n_outbit, 0, n_outbit);
517 h_i =
new TH2I(Form(
"hitd%08d", evtno),
"", n_clocks, 0, n_clocks, n_inbit, 0, n_inbit);
518 for (
unsigned i = 0; i < n_inbit; i++) {
519 h_i->GetYaxis()->SetBinLabel(i + 1, inbitname[i]);
521 for (
unsigned i = 0; i < n_outbit; i++) {
522 h_f->GetYaxis()->SetBinLabel(i + 1, outbitname[i]);
523 h_p->GetYaxis()->SetBinLabel(i + 1, outbitname[i]);
530 for (
int ii = 0; ii < entAry.
getEntries(); ii++) {
531 std::vector<int*> Bits(n_leafs + n_leafsExtra);
533 for (
int i = 0; i < 320; i++) {
534 if (LeafBitMap[i] != -1) {
535 Bits[LeafBitMap[i]] = &(entAry[ii]->m_unpacker[i]);
538 for (
int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
539 h_0->SetBinContent(entAry[ii]->m_unpacker[clk_map] + 1, leaf + 1, *Bits[leaf]);
542 for (
int leaf = 0; leaf < 320; leaf++) {
543 if (LeafBitMap[leaf] != -1)h_0->GetYaxis()->SetBinLabel(LeafBitMap[leaf] + 1, LeafNames[LeafBitMap[leaf]]);
546 int coml1rvc = h_0->GetBinContent(1, 1 + _e_coml1rvc);
547 int toprvc = h_0->GetBinContent(1, 1 + _e_toprvc);
548 int eclrvc = h_0->GetBinContent(1, 1 + _e_eclrvc);
549 int cdcrvc = h_0->GetBinContent(1, 1 + _e_cdcrvc);
550 int c1_top_timing = h_0->GetBinContent(n_clocks, 1 + _e_toptiming);
551 int c1_ecl_timing = h_0->GetBinContent(n_clocks, 1 + _e_ecltiming);
552 int c1_cdc_timing = h_0->GetBinContent(n_clocks, 1 + _e_cdctiming);
553 int c8_top_timing = c1_top_timing >> 3;
554 int c2_top_timing = c1_top_timing >> 1;
555 int c8_ecl_timing = c1_ecl_timing >> 3;
556 int c2_ecl_timing = c1_ecl_timing >> 1;
557 int c8_cdc_timing = c1_cdc_timing >> 3;
558 int c2_cdc_timing = c1_cdc_timing >> 1;
561 B2DEBUG(20,
"nconf(" << nconf
562 <<
"), n_clocks(" << n_clocks
563 <<
"), n_leafs(" << n_leafs
564 <<
"), n_leafsExtra(" << n_leafsExtra
575 int gdll1_rvc = h_0->GetBinContent(h_0->GetXaxis()->FindBin(n_clocks - 0.5), 1 + _e_gdll1rvc);
578 for (
unsigned clk = 1; clk <= n_clocks; clk++) {
579 int psn_tmp[10] = {0};
580 int ftd_tmp[10] = {0};
581 int itd_tmp[10] = {0};
582 for (
unsigned j = 0; j < (unsigned)nword_input; j++) {
583 itd_tmp[j] = h_0->GetBinContent(clk, 1 + ee_itd[j]);
584 itd[j] |= itd_tmp[j];
585 for (
int i = 0; i < 32; i++) {
586 if (itd_tmp[j] & (1 << i))
h_i->SetBinContent(clk, i + 1 + j * 32, 1);
590 psn_tmp[0] = h_0->GetBinContent(clk, 1 + ee_psn[0]);
591 ftd_tmp[0] = h_0->GetBinContent(clk, 1 + ee_ftd[0]);
592 psn[0] |= psn_tmp[0];
593 ftd[0] |= ftd_tmp[0];
594 for (
int i = 0; i < 32; i++) {
595 if (psn_tmp[0] & (1 << i))
h_p->SetBinContent(clk, i + 1, 1);
596 if (ftd_tmp[0] & (1 << i))
h_f->SetBinContent(clk, i + 1, 1);
598 psn_tmp[1] = h_0->GetBinContent(clk, 1 + ee_psn[2]) * (1 << 16) + h_0->GetBinContent(clk, 1 + ee_psn[1]);
599 ftd_tmp[1] = h_0->GetBinContent(clk, 1 + ee_ftd[2]) * (1 << 16) + h_0->GetBinContent(clk, 1 + ee_ftd[1]);
600 psn[1] |= psn_tmp[1];
601 ftd[1] |= ftd_tmp[1];
602 for (
int i = 0; i < 32; i++) {
603 if (psn_tmp[1] & (1 << i))
h_p->SetBinContent(clk, i + 1 + 32, 1);
604 if (ftd_tmp[1] & (1 << i))
h_f->SetBinContent(clk, i + 1 + 32, 1);
607 for (
unsigned j = 0; j < (unsigned)nword_output; j++) {
608 psn_tmp[j] = h_0->GetBinContent(clk, 1 + ee_psn[j]);
609 ftd_tmp[j] = h_0->GetBinContent(clk, 1 + ee_ftd[j]);
610 psn[j] |= psn_tmp[j];
611 ftd[j] |= ftd_tmp[j];
612 for (
int i = 0; i < 32; i++) {
613 if (psn_tmp[j] & (1 << i))
h_p->SetBinContent(clk, i + 1 + j * 32, 1);
614 if (ftd_tmp[j] & (1 << i))
h_f->SetBinContent(clk, i + 1 + j * 32, 1);
618 int timtype_tmp = h_0->GetBinContent(clk, 1 + _e_timtype);
619 timtype = (timtype_tmp == 0) ? timtype : timtype_tmp;
624 fillRiseFallTimings();
631 fillOutputPureExtra();
635 for (
unsigned ifill = 0; ifill <
skim.size(); ifill++) {
640 for (
int i = 0; i < 32; i++) {
641 for (
unsigned j = 0; j < (unsigned)nword_input; j++) {
642 if (itd[j] & (1 << i))
h_itd[
skim[ifill]]->Fill(i + 0.5 + 32 * j);
644 for (
unsigned j = 0; j < (unsigned)nword_output; j++) {
645 if (ftd[j] & (1 << i))
h_ftd[
skim[ifill]]->Fill(i + 0.5 + 32 * j);
646 if (psn[j] & (1 << i))
h_psn[
skim[ifill]]->Fill(i + 0.5 + 32 * j);
651 int gdlL1TocomL1 = gdll1_rvc < coml1rvc ? coml1rvc - gdll1_rvc : (coml1rvc + 1280) - gdll1_rvc;
654 int topTogdlL1 = gdll1_rvc < c8_top_timing ? (gdll1_rvc + 1280) - c8_top_timing : gdll1_rvc - c8_top_timing;
657 int eclTogdlL1 = gdll1_rvc < c8_ecl_timing ? (gdll1_rvc + 1280) - c8_ecl_timing : gdll1_rvc - c8_ecl_timing;
660 int cdcTogdlL1 = gdll1_rvc < c8_cdc_timing ? (gdll1_rvc + 1280) - c8_cdc_timing : gdll1_rvc - c8_cdc_timing;
663 int c127_ecl_timing = c8_ecl_timing & (((1 << 7) - 1) << 4);
664 int fit8mToGDL = c127_ecl_timing < eclrvc ? eclrvc - c127_ecl_timing : (eclrvc + 1280) - c127_ecl_timing;
667 int topToGDL = c8_top_timing < toprvc ? toprvc - c8_top_timing : (toprvc + 1280) - c8_top_timing;
669 int eclToGDL = c8_ecl_timing < eclrvc ? eclrvc - c8_ecl_timing : (eclrvc + 1280) - c8_ecl_timing;
671 int cdcToGDL = c8_cdc_timing < cdcrvc ? cdcrvc - c8_cdc_timing : (cdcrvc + 1280) - c8_cdc_timing;
674 int c2_comL1 = coml1rvc << 2;
675 int c2_gdlL1 = gdll1_rvc << 2;
676 int c2_diff_cdcTogdlL1 = c2_gdlL1 > c2_cdc_timing ?
677 c2_gdlL1 - c2_cdc_timing :
678 c2_gdlL1 - c2_cdc_timing + (1280 << 2) ;
681 int c2_diff_cdcTocomL1 = c2_comL1 > c2_cdc_timing ?
682 c2_comL1 - c2_cdc_timing :
683 c2_comL1 - c2_cdc_timing + (1280 << 2) ;
687 int c2_diff_cdcToecl = c2_ecl_timing > c2_cdc_timing ?
688 c2_ecl_timing - c2_cdc_timing :
689 c2_ecl_timing - c2_cdc_timing + (1280 << 2);
693 int c1_diff_topToecl = c1_ecl_timing > c1_top_timing ?
694 c1_ecl_timing - c1_top_timing :
695 c1_ecl_timing - c1_top_timing + (1280 << 3);
698 int c2_diff_topTocdc = c2_cdc_timing > c2_top_timing ?
699 c2_cdc_timing - c2_top_timing :
700 c2_cdc_timing - c2_top_timing + (1280 << 2);
707 if (anaBitCondition()) {
709 B2DEBUG(20,
"anaBitCondition fired, evt(" << evtno <<
")");
710 if (m_vcdEventStart <= nvcd && nvcd < m_vcdEventStart + m_vcdNumberOfEvents) {
717 if (! m_eventByEventTimingHistRecord) {
725 bool TRGGDLDQMModule::anaBitCondition(
void)
727 if (m_bitConditionToDumpVcd.length() == 0)
return true;
728 const char* cst = m_bitConditionToDumpVcd.c_str();
729 bool reading_word =
false;
730 bool result_the_term =
true;
731 bool not_flag =
false;
732 unsigned begin_word = 0;
733 unsigned word_length = 0;
736 for (
unsigned i = 0; i < m_bitConditionToDumpVcd.length(); i++) {
737 if ((
'a' <= cst[i] && cst[i] <=
'z') ||
738 (
'A' <= cst[i] && cst[i] <=
'Z') ||
739 (
'_' == cst[i]) || (
'!' == cst[i]) ||
740 (
'0' <= cst[i] && cst[i] <=
'9')) {
743 if (i == m_bitConditionToDumpVcd.length() - 1) {
744 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
746 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
747 <<
"(" << fired <<
")");
748 if (((!not_flag && fired) || (not_flag && !fired)) && result_the_term) {
763 if (i == m_bitConditionToDumpVcd.length() - 1) {
765 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
767 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
768 <<
"(" << fired <<
")");
769 if (((!not_flag && fired) || (not_flag && !fired)) && result_the_term) {
775 }
else if (
'+' == cst[i] || i == m_bitConditionToDumpVcd.length() - 1) {
778 if (result_the_term) {
779 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
781 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
782 <<
"(" << fired <<
")");
783 if ((!not_flag && fired) || (not_flag && !fired)) {
791 reading_word =
false;
794 if (result_the_term) {
800 result_the_term =
true;
805 reading_word =
false;
806 if (result_the_term) {
808 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
810 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
811 <<
"(" << fired <<
")");
812 if ((!not_flag && fired) || (not_flag && !fired)) {
815 result_the_term =
false;
820 reading_word =
false;
829 void TRGGDLDQMModule::genVcd(
void)
831 int prev_i[400] = {0};
832 int prev_f[400] = {0};
833 int prev_p[400] = {0};
835 ofstream outf(Form(
"vcd/e%02dr%08de%08d.vcd", _exp, _run, evtno));
836 outf <<
"$date" << endl;
837 outf <<
" Aug 20, 2018 17:53:52" << endl;
838 outf <<
"$end" << endl;
839 outf <<
"$version" << endl;
840 outf <<
" ChipScope Pro Analyzer 14.7 P.20131013 (Build 14700.13.286.464)" << endl;
841 outf <<
"$end" << endl;
842 outf <<
"$timescale" << endl;
843 if (n_clocks == 32) {
844 outf <<
" 32ns" << endl;
845 }
else if (n_clocks == 48) {
846 outf <<
" 8ns" << endl;
848 outf <<
" 1ns" << endl;
850 outf <<
"$end" << endl;
852 outf <<
"$scope module gdl0067d_icn $end" << endl;
854 for (
unsigned j = 0; j < n_inbit; j++) {
855 outf <<
"$var wire 1 n" << seqnum++ <<
" " << inbitname[j] <<
" $end" << endl;
857 for (
unsigned j = 0; j < n_outbit; j++) {
858 outf <<
"$var wire 1 n" << seqnum++ <<
" ftd." << outbitname[j] <<
" $end" << endl;
860 for (
unsigned j = 0; j < n_outbit; j++) {
861 outf <<
"$var wire 1 n" << seqnum++ <<
" psn." << outbitname[j] <<
" $end" << endl;
864 outf <<
"$upscope $end" << endl;
865 outf <<
"$enddefinitions $end" << endl << endl;
867 for (
unsigned clk = 1; clk <= n_clocks; clk++) {
869 outf <<
"#" << clk - 1 << endl;
870 for (
unsigned k = 1; k <= n_inbit; k++) {
871 if (clk == 1 || prev_i[k - 1] !=
h_i->GetBinContent(clk, k)) {
872 prev_i[k - 1] =
h_i->GetBinContent(clk, k);
873 outf <<
h_i->GetBinContent(clk, k) <<
"n" << seqnum << endl;
877 for (
unsigned k = 1; k <= n_outbit; k++) {
878 if (clk == 1 || prev_f[k - 1] !=
h_f->GetBinContent(clk, k)) {
879 prev_f[k - 1] =
h_f->GetBinContent(clk, k);
880 outf <<
h_f->GetBinContent(clk, k) <<
"n" << seqnum << endl;
884 for (
unsigned k = 1; k <= n_outbit; k++) {
885 if (clk == 1 || prev_p[k - 1] !=
h_p->GetBinContent(clk, k)) {
886 prev_p[k - 1] =
h_p->GetBinContent(clk, k);
887 outf <<
h_p->GetBinContent(clk, k) <<
"n" << seqnum << endl;
915 TRGGDLDQMModule::isFired(std::string bitname)
918 for (
unsigned i = 0; i < bitname.length(); i++) {
919 if (
'A' <= bitname[i] && bitname[i] <=
'Z') {
923 boost::algorithm::to_lower(bitname);
924 int bn = m_dbftdl->getoutbitnum(bitname.c_str());
925 for (
unsigned clk = 0; clk < n_clocks; clk++) {
928 if (
h_p->GetBinContent(clk + 1, bn + 1) > 0)
931 if (
h_f->GetBinContent(clk + 1, bn + 1) > 0)
936 bn = m_dbinput->getinbitnum(bitname.c_str());
937 for (
unsigned clk = 0; clk < n_clocks; clk++) {
939 if (
h_i->GetBinContent(clk + 1, bn + 1) > 0)
947 TRGGDLDQMModule::fillRiseFallTimings(
void)
952 for (
unsigned ifill = 0; ifill <
skim.size(); ifill++) {
954 if (
skim[ifill] != 0)
continue;
956 for (
unsigned i = 0; i < n_inbit; i++) {
957 if (n_clocks == 32) {
958 h_itd_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
959 h_itd_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
960 h_itd_rise[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
961 h_itd_fall[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
963 h_itd_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
964 h_itd_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
966 bool rising_done =
false;
967 bool falling_done =
false;
968 for (
unsigned clk = 0; clk < n_clocks; clk++) {
969 if (
h_i->GetBinContent(clk + 1, i + 1) > 0) {
971 h_itd_rise[i][
skim[ifill]]->Fill(clk + 0.5);
973 }
else if (rising_done && !falling_done && clk == n_clocks - 1) {
974 h_itd_fall[i][
skim[ifill]]->Fill(clk + 0.5);
976 }
else if (
h_i->GetBinContent(clk + 1, i + 1) == 0) {
977 if (rising_done && ! falling_done) {
978 h_itd_fall[i][
skim[ifill]]->Fill(clk + 0.5);
984 for (
unsigned i = 0; i < n_outbit; i++) {
985 if (n_clocks == 32) {
986 h_ftd_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
987 h_psn_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
988 h_ftd_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
989 h_psn_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk32ns");
990 h_ftd_rise[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
991 h_psn_rise[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
992 h_ftd_fall[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
993 h_psn_fall[i][
skim[ifill]]->GetXaxis()->SetRange(1, 32);
995 h_ftd_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
996 h_psn_rise[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
997 h_ftd_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
998 h_psn_fall[i][
skim[ifill]]->GetXaxis()->SetTitle(
"clk8ns");
1000 bool rising_done =
false;
1001 bool falling_done =
false;
1002 for (
unsigned clk = 0; clk < n_clocks; clk++) {
1003 if (
h_f->GetBinContent(clk + 1, i + 1) > 0) {
1004 if (! rising_done) {
1005 h_ftd_rise[i][
skim[ifill]]->Fill(clk + 0.5);
1007 }
else if (rising_done && !falling_done && clk == n_clocks - 1) {
1008 h_ftd_fall[i][
skim[ifill]]->Fill(clk + 0.5);
1010 }
else if (
h_f->GetBinContent(clk + 1, i + 1) == 0) {
1011 if (rising_done && ! falling_done) {
1012 h_ftd_fall[i][
skim[ifill]]->Fill(clk + 0.5);
1013 falling_done =
true;
1017 rising_done =
false;
1018 falling_done =
false;
1019 for (
unsigned clk = 0; clk < n_clocks; clk++) {
1020 if (
h_p->GetBinContent(clk + 1, i + 1) > 0) {
1021 if (! rising_done) {
1022 h_psn_rise[i][
skim[ifill]]->Fill(clk + 0.5);
1024 }
else if (rising_done && !falling_done && clk == n_clocks - 1) {
1025 h_psn_fall[i][
skim[ifill]]->Fill(clk + 0.5);
1027 }
else if (
h_p->GetBinContent(clk + 1, i + 1) == 0) {
1028 if (rising_done && ! falling_done) {
1029 h_psn_fall[i][
skim[ifill]]->Fill(clk + 0.5);
1030 falling_done =
true;
1040 TRGGDLDQMModule::fillOutputOverlap(
void)
1042 for (
unsigned ifill = 0; ifill <
skim.size(); ifill++) {
1043 bool cdc_fired = isFired(
"FFF") || isFired(
"FFO") || isFired(
"FFB") || isFired(
"FFY") || isFired(
"FYO") || isFired(
"FYB");
1044 bool c4_fired = isFired(
"C4");
1045 bool hie_fired = isFired(
"HIE");
1046 bool lml_fired = (isFired(
"LML0") || isFired(
"LML1") || isFired(
"LML2") || isFired(
"LML3") || isFired(
"LML4") || isFired(
"LML5")
1047 || isFired(
"LML6") || isFired(
"LML7") || isFired(
"LML8") || isFired(
"LML9") || isFired(
"LML10") || isFired(
"LML11")
1048 || isFired(
"LML12") || isFired(
"LML13") || isFired(
"ECLMUMU"));
1049 bool klm_fired = isFired(
"MU_B2B") || isFired(
"MU_EB2B") || isFired(
"BEKLM") || isFired(
"CDCKLM1") || isFired(
"CDCKLM2");
1050 bool short_fired = isFired(
"FSO") || isFired(
"FSB") || isFired(
"YSO") || isFired(
"YSB");
1051 bool ff30_fired = isFired(
"FF30") || isFired(
"FY30");
1052 bool bha3d_fired = isFired(
"BHA3D");
1055 h_psn_overlap[
skim[ifill]]->Fill(0.5);
1058 h_psn_overlap[
skim[ifill]]->Fill(1.5);
1059 }
else if (c4_fired) {
1060 h_psn_overlap[
skim[ifill]]->Fill(2.5);
1061 }
else if (hie_fired) {
1062 h_psn_overlap[
skim[ifill]]->Fill(3.5);
1063 }
else if (klm_fired) {
1064 h_psn_overlap[
skim[ifill]]->Fill(4.5);
1065 }
else if (short_fired) {
1066 h_psn_overlap[
skim[ifill]]->Fill(5.5);
1067 }
else if (ff30_fired) {
1068 h_psn_overlap[
skim[ifill]]->Fill(6.5);
1069 }
else if (lml_fired) {
1070 h_psn_overlap[
skim[ifill]]->Fill(7.5);
1071 }
else if (bha3d_fired) {
1072 h_psn_overlap[
skim[ifill]]->Fill(8.5);
1074 h_psn_overlap[
skim[ifill]]->Fill(9.5);
1078 h_psn_nooverlap[
skim[ifill]]->Fill(0.5);
1081 h_psn_nooverlap[
skim[ifill]]->Fill(1.5);
1084 h_psn_nooverlap[
skim[ifill]]->Fill(2.5);
1087 h_psn_nooverlap[
skim[ifill]]->Fill(3.5);
1090 h_psn_nooverlap[
skim[ifill]]->Fill(4.5);
1093 h_psn_nooverlap[
skim[ifill]]->Fill(5.5);
1096 h_psn_nooverlap[
skim[ifill]]->Fill(6.5);
1099 h_psn_nooverlap[
skim[ifill]]->Fill(7.5);
1102 h_psn_nooverlap[
skim[ifill]]->Fill(8.5);
1109 TRGGDLDQMModule::fillOutputExtra(
void)
1111 for (
unsigned ifill = 0; ifill <
skim.size(); ifill++) {
1112 bool c4_fired = isFired(
"C4");
1113 bool hie_fired = isFired(
"HIE");
1114 bool lml_fired = (isFired(
"LML0") || isFired(
"LML1") || isFired(
"LML2") || isFired(
"LML3") || isFired(
"LML4") || isFired(
"LML5")
1115 || isFired(
"LML6") || isFired(
"LML7") || isFired(
"LML8") || isFired(
"LML9") || isFired(
"LML10") || isFired(
"ECLMUMU"));
1116 bool fff_fired = isFired(
"FFF");
1117 bool ff_fired = isFired(
"ff");
1118 bool f_fired = isFired(
"f");
1119 bool ffo_fired = isFired(
"FFO");
1120 bool ffb_fired = isFired(
"FFB");
1121 bool ffy_fired = isFired(
"ffy");
1122 bool fyo_fired = isFired(
"fyo");
1123 bool fyb_fired = isFired(
"fyb");
1124 bool bha2D_fired = isFired(
"bhabha");
1125 bool bha3D_fired = isFired(
"bha3d");
1126 bool lml0_fired = isFired(
"LML0");
1127 bool lml1_fired = isFired(
"LML1");
1128 bool lml2_fired = isFired(
"LML2");
1129 bool lml3_fired = isFired(
"LML3");
1130 bool lml4_fired = isFired(
"LML4");
1131 bool lml5_fired = isFired(
"LML5");
1132 bool lml6_fired = isFired(
"LML6");
1133 bool lml7_fired = isFired(
"LML7");
1134 bool lml8_fired = isFired(
"LML8");
1135 bool lml9_fired = isFired(
"LML9");
1136 bool lml10_fired = isFired(
"LML10");
1137 bool lml12_fired = isFired(
"LML12");
1138 bool lml13_fired = isFired(
"LML13");
1139 bool eclmumu_fired = isFired(
"ECLMUMU");
1140 bool mu_b2b_fired = isFired(
"mu_b2b");
1141 bool mu_eb2b_fired = isFired(
"mu_eb2b");
1142 bool cdcklm1_fired = isFired(
"cdcklm1");
1143 bool cdcklm2_fired = isFired(
"cdcklm2");
1144 bool klm_hit_fired = isFired(
"klm_hit");
1145 bool eklm_hit_fired = isFired(
"eklm_hit");
1146 bool cdcecl1_fired = isFired(
"cdcecl1");
1147 bool cdcecl2_fired = isFired(
"cdcecl2");
1148 bool cdcecl3_fired = isFired(
"cdcecl3");
1149 bool cdcecl4_fired = isFired(
"cdcecl4");
1150 bool fso_fired = isFired(
"fso");
1151 bool fsb_fired = isFired(
"fsb");
1152 bool syo_fired = isFired(
"syo");
1153 bool syb_fired = isFired(
"syb");
1154 bool x_fired = isFired(
"x");
1155 bool fioiecl1_fired = isFired(
"fioiecl1");
1156 bool ecleklm1_fired = isFired(
"ecleklm1");
1157 bool seklm1_fired = isFired(
"seklm1");
1158 bool seklm2_fired = isFired(
"seklm2");
1159 bool ieklm_fired = isFired(
"ieklm");
1160 bool iecl_fired = isFired(
"iecl");
1163 h_psn_extra[
skim[ifill]]->Fill(0.5);
1165 if (fff_fired && (c4_fired || hie_fired)) {
1166 h_psn_extra[
skim[ifill]]->Fill(1.5);
1168 if (ffo_fired && (c4_fired || hie_fired)) {
1169 h_psn_extra[
skim[ifill]]->Fill(2.5);
1171 if (ffb_fired && (c4_fired || hie_fired)) {
1172 h_psn_extra[
skim[ifill]]->Fill(3.5);
1175 h_psn_extra[
skim[ifill]]->Fill(4.5);
1177 if (c4_fired || hie_fired) {
1178 h_psn_extra[
skim[ifill]]->Fill(5.5);
1180 if (fff_fired || ffo_fired || ffb_fired) {
1181 h_psn_extra[
skim[ifill]]->Fill(6.5);
1183 if ((fff_fired || ffo_fired || ffb_fired) && (c4_fired || hie_fired)) {
1184 h_psn_extra[
skim[ifill]]->Fill(7.5);
1187 h_psn_extra[
skim[ifill]]->Fill(8.5);
1190 h_psn_extra[
skim[ifill]]->Fill(9.5);
1193 h_psn_extra[
skim[ifill]]->Fill(10.5);
1195 if (ff_fired && (lml_fired)) {
1196 h_psn_extra[
skim[ifill]]->Fill(11.5);
1199 h_psn_extra[
skim[ifill]]->Fill(12.5);
1201 if (f_fired && (lml_fired)) {
1202 h_psn_extra[
skim[ifill]]->Fill(13.5);
1205 h_psn_extra[
skim[ifill]]->Fill(14.5);
1207 if (fff_fired && (lml_fired)) {
1208 h_psn_extra[
skim[ifill]]->Fill(15.5);
1210 if (ffo_fired && (lml_fired)) {
1211 h_psn_extra[
skim[ifill]]->Fill(16.5);
1213 if (ffb_fired && (lml_fired)) {
1214 h_psn_extra[
skim[ifill]]->Fill(17.5);
1217 h_psn_extra[
skim[ifill]]->Fill(18.5);
1219 if (ffy_fired && (c4_fired || hie_fired)) {
1220 h_psn_extra[
skim[ifill]]->Fill(19.5);
1222 if (fyo_fired && (c4_fired || hie_fired)) {
1223 h_psn_extra[
skim[ifill]]->Fill(20.5);
1225 if (fyb_fired && (c4_fired || hie_fired)) {
1226 h_psn_extra[
skim[ifill]]->Fill(21.5);
1228 if ((ffy_fired || fyo_fired || fyb_fired) && (c4_fired || hie_fired)) {
1229 h_psn_extra[
skim[ifill]]->Fill(22.5);
1231 if (ffy_fired && (lml_fired)) {
1232 h_psn_extra[
skim[ifill]]->Fill(23.5);
1234 if (fyo_fired && (lml_fired)) {
1235 h_psn_extra[
skim[ifill]]->Fill(24.5);
1237 if (fyb_fired && (lml_fired)) {
1238 h_psn_extra[
skim[ifill]]->Fill(25.5);
1240 if (c4_fired && (fff_fired || ffo_fired || ffb_fired)) {
1241 h_psn_extra[
skim[ifill]]->Fill(26.5);
1243 if (hie_fired && (fff_fired || ffo_fired || ffb_fired)) {
1244 h_psn_extra[
skim[ifill]]->Fill(27.5);
1246 if (lml0_fired && (fff_fired || ffo_fired || ffb_fired)) {
1247 h_psn_extra[
skim[ifill]]->Fill(28.5);
1249 if (lml1_fired && (fff_fired || ffo_fired || ffb_fired)) {
1250 h_psn_extra[
skim[ifill]]->Fill(29.5);
1252 if (lml2_fired && (fff_fired || ffo_fired || ffb_fired)) {
1253 h_psn_extra[
skim[ifill]]->Fill(30.5);
1255 if (lml3_fired && (fff_fired || ffo_fired || ffb_fired)) {
1256 h_psn_extra[
skim[ifill]]->Fill(31.5);
1258 if (lml4_fired && (fff_fired || ffo_fired || ffb_fired)) {
1259 h_psn_extra[
skim[ifill]]->Fill(32.5);
1261 if (lml5_fired && (fff_fired || ffo_fired || ffb_fired)) {
1262 h_psn_extra[
skim[ifill]]->Fill(33.5);
1264 if (lml6_fired && (fff_fired || ffo_fired || ffb_fired)) {
1265 h_psn_extra[
skim[ifill]]->Fill(34.5);
1267 if (lml7_fired && (fff_fired || ffo_fired || ffb_fired)) {
1268 h_psn_extra[
skim[ifill]]->Fill(35.5);
1270 if (lml8_fired && (fff_fired || ffo_fired || ffb_fired)) {
1271 h_psn_extra[
skim[ifill]]->Fill(36.5);
1273 if (lml9_fired && (fff_fired || ffo_fired || ffb_fired)) {
1274 h_psn_extra[
skim[ifill]]->Fill(37.5);
1276 if (lml10_fired && (fff_fired || ffo_fired || ffb_fired)) {
1277 h_psn_extra[
skim[ifill]]->Fill(38.5);
1279 if (lml12_fired && (fff_fired || ffo_fired || ffb_fired)) {
1280 h_psn_extra[
skim[ifill]]->Fill(39.5);
1282 if (lml13_fired && (fff_fired || ffo_fired || ffb_fired)) {
1283 h_psn_extra[
skim[ifill]]->Fill(40.5);
1285 if (eclmumu_fired && (fff_fired || ffo_fired || ffb_fired)) {
1286 h_psn_extra[
skim[ifill]]->Fill(41.5);
1288 if (mu_b2b_fired && (fff_fired || ffo_fired || ffb_fired)) {
1289 h_psn_extra[
skim[ifill]]->Fill(42.5);
1291 if (mu_eb2b_fired && (fff_fired || ffo_fired || ffb_fired)) {
1292 h_psn_extra[
skim[ifill]]->Fill(43.5);
1294 if (cdcklm1_fired && (fff_fired || ffo_fired || ffb_fired)) {
1295 h_psn_extra[
skim[ifill]]->Fill(44.5);
1297 if (cdcklm2_fired && (fff_fired || ffo_fired || ffb_fired)) {
1298 h_psn_extra[
skim[ifill]]->Fill(45.5);
1300 if (klm_hit_fired && (fff_fired || ffo_fired || ffb_fired)) {
1301 h_psn_extra[
skim[ifill]]->Fill(46.5);
1303 if (eklm_hit_fired && (fff_fired || ffo_fired || ffb_fired)) {
1304 h_psn_extra[
skim[ifill]]->Fill(47.5);
1306 if (mu_b2b_fired && lml_fired) {
1307 h_psn_extra[
skim[ifill]]->Fill(48.5);
1309 if (mu_eb2b_fired && lml_fired) {
1310 h_psn_extra[
skim[ifill]]->Fill(49.5);
1312 if (cdcklm1_fired && lml_fired) {
1313 h_psn_extra[
skim[ifill]]->Fill(50.5);
1315 if (cdcklm2_fired && lml_fired) {
1316 h_psn_extra[
skim[ifill]]->Fill(51.5);
1318 if (klm_hit_fired && lml_fired) {
1319 h_psn_extra[
skim[ifill]]->Fill(52.5);
1321 if (eklm_hit_fired && lml_fired) {
1322 h_psn_extra[
skim[ifill]]->Fill(53.5);
1324 if (cdcecl1_fired && (fff_fired || ffo_fired || ffb_fired)) {
1325 h_psn_extra[
skim[ifill]]->Fill(54.5);
1327 if (cdcecl2_fired && (fff_fired || ffo_fired || ffb_fired)) {
1328 h_psn_extra[
skim[ifill]]->Fill(55.5);
1330 if (cdcecl3_fired && (fff_fired || ffo_fired || ffb_fired)) {
1331 h_psn_extra[
skim[ifill]]->Fill(56.5);
1333 if (cdcecl4_fired && (fff_fired || ffo_fired || ffb_fired)) {
1334 h_psn_extra[
skim[ifill]]->Fill(57.5);
1336 if (cdcecl1_fired && lml_fired) {
1337 h_psn_extra[
skim[ifill]]->Fill(58.5);
1339 if (cdcecl2_fired && lml_fired) {
1340 h_psn_extra[
skim[ifill]]->Fill(59.5);
1342 if (cdcecl3_fired && lml_fired) {
1343 h_psn_extra[
skim[ifill]]->Fill(60.5);
1345 if (cdcecl4_fired && lml_fired) {
1346 h_psn_extra[
skim[ifill]]->Fill(61.5);
1348 if (fso_fired && lml_fired) {
1349 h_psn_extra[
skim[ifill]]->Fill(62.5);
1351 if (fsb_fired && lml_fired) {
1352 h_psn_extra[
skim[ifill]]->Fill(63.5);
1354 if (syo_fired && lml_fired) {
1355 h_psn_extra[
skim[ifill]]->Fill(64.5);
1357 if (syb_fired && lml_fired) {
1358 h_psn_extra[
skim[ifill]]->Fill(65.5);
1360 if (x_fired && lml_fired) {
1361 h_psn_extra[
skim[ifill]]->Fill(66.5);
1363 if (fioiecl1_fired && lml_fired) {
1364 h_psn_extra[
skim[ifill]]->Fill(67.5);
1366 if (ecleklm1_fired && lml_fired) {
1367 h_psn_extra[
skim[ifill]]->Fill(68.5);
1369 if (seklm1_fired && lml_fired) {
1370 h_psn_extra[
skim[ifill]]->Fill(69.5);
1372 if (seklm2_fired && lml_fired) {
1373 h_psn_extra[
skim[ifill]]->Fill(70.5);
1375 if (ieklm_fired && lml_fired) {
1376 h_psn_extra[
skim[ifill]]->Fill(71.5);
1378 if (iecl_fired && lml_fired) {
1379 h_psn_extra[
skim[ifill]]->Fill(72.5);
1385 for (
unsigned ifill = 0; ifill <
skim.size(); ifill++) {
1387 h_eff[
skim[ifill]]->SetBinContent(1, h_psn_extra[
skim[ifill]]->GetBinContent(1 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1389 h_eff[
skim[ifill]]->SetBinContent(2, h_psn_extra[
skim[ifill]]->GetBinContent(2 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1391 h_eff[
skim[ifill]]->SetBinContent(3, h_psn_extra[
skim[ifill]]->GetBinContent(3 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1393 h_eff[
skim[ifill]]->SetBinContent(4, h_psn_extra[
skim[ifill]]->GetBinContent(19 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1395 h_eff[
skim[ifill]]->SetBinContent(5, h_psn_extra[
skim[ifill]]->GetBinContent(20 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1397 h_eff[
skim[ifill]]->SetBinContent(6, h_psn_extra[
skim[ifill]]->GetBinContent(21 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1399 h_eff[
skim[ifill]]->SetBinContent(7, h_psn_extra[
skim[ifill]]->GetBinContent(27 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1401 h_eff[
skim[ifill]]->SetBinContent(8, h_psn_extra[
skim[ifill]]->GetBinContent(26 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1403 h_eff[
skim[ifill]]->SetBinContent(9, h_psn_extra[
skim[ifill]]->GetBinContent(28 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1405 h_eff[
skim[ifill]]->SetBinContent(10, h_psn_extra[
skim[ifill]]->GetBinContent(29 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1407 h_eff[
skim[ifill]]->SetBinContent(11, h_psn_extra[
skim[ifill]]->GetBinContent(30 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1409 h_eff[
skim[ifill]]->SetBinContent(12, h_psn_extra[
skim[ifill]]->GetBinContent(31 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1411 h_eff[
skim[ifill]]->SetBinContent(13, h_psn_extra[
skim[ifill]]->GetBinContent(32 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1413 h_eff[
skim[ifill]]->SetBinContent(14, h_psn_extra[
skim[ifill]]->GetBinContent(33 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1415 h_eff[
skim[ifill]]->SetBinContent(15, h_psn_extra[
skim[ifill]]->GetBinContent(34 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1417 h_eff[
skim[ifill]]->SetBinContent(16, h_psn_extra[
skim[ifill]]->GetBinContent(35 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1419 h_eff[
skim[ifill]]->SetBinContent(17, h_psn_extra[
skim[ifill]]->GetBinContent(36 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1421 h_eff[
skim[ifill]]->SetBinContent(18, h_psn_extra[
skim[ifill]]->GetBinContent(37 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1423 h_eff[
skim[ifill]]->SetBinContent(19, h_psn_extra[
skim[ifill]]->GetBinContent(38 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1425 h_eff[
skim[ifill]]->SetBinContent(20, h_psn_extra[
skim[ifill]]->GetBinContent(39 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1427 h_eff[
skim[ifill]]->SetBinContent(21, h_psn_extra[
skim[ifill]]->GetBinContent(40 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1429 h_eff[
skim[ifill]]->SetBinContent(22, h_psn_extra[
skim[ifill]]->GetBinContent(9 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1431 h_eff[
skim[ifill]]->SetBinContent(23, h_psn_extra[
skim[ifill]]->GetBinContent(42 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1433 h_eff[
skim[ifill]]->SetBinContent(24, h_psn_extra[
skim[ifill]]->GetBinContent(48 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1435 h_eff[
skim[ifill]]->SetBinContent(25, h_psn_extra[
skim[ifill]]->GetBinContent(49 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1437 h_eff[
skim[ifill]]->SetBinContent(26, h_psn_extra[
skim[ifill]]->GetBinContent(44 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1439 h_eff[
skim[ifill]]->SetBinContent(27, h_psn_extra[
skim[ifill]]->GetBinContent(45 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1441 h_eff[
skim[ifill]]->SetBinContent(28, h_psn_extra[
skim[ifill]]->GetBinContent(15 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1443 h_eff[
skim[ifill]]->SetBinContent(29, h_psn_extra[
skim[ifill]]->GetBinContent(16 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1445 h_eff[
skim[ifill]]->SetBinContent(30, h_psn_extra[
skim[ifill]]->GetBinContent(17 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1447 h_eff[
skim[ifill]]->SetBinContent(31, h_psn_extra[
skim[ifill]]->GetBinContent(11 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1449 h_eff[
skim[ifill]]->SetBinContent(32, h_psn_extra[
skim[ifill]]->GetBinContent(13 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1451 h_eff[
skim[ifill]]->SetBinContent(33, h_psn_extra[
skim[ifill]]->GetBinContent(23 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1453 h_eff[
skim[ifill]]->SetBinContent(34, h_psn_extra[
skim[ifill]]->GetBinContent(24 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1455 h_eff[
skim[ifill]]->SetBinContent(35, h_psn_extra[
skim[ifill]]->GetBinContent(25 + 1) / h_psn_extra[
skim[ifill]]->GetBinContent(
1460 h_eff_shifter->SetBinContent(1, h_psn_extra[1]->GetBinContent(1 + 1) / h_psn_extra[1]->GetBinContent(5 + 1));
1461 h_eff_shifter->SetBinContent(2, h_psn_extra[1]->GetBinContent(2 + 1) / h_psn_extra[1]->GetBinContent(5 + 1));
1462 h_eff_shifter->SetBinContent(3, h_psn_extra[1]->GetBinContent(19 + 1) / h_psn_extra[1]->GetBinContent(5 + 1));
1463 h_eff_shifter->SetBinContent(4, h_psn_extra[1]->GetBinContent(20 + 1) / h_psn_extra[1]->GetBinContent(5 + 1));
1464 h_eff_shifter->SetBinContent(5, h_psn_extra[1]->GetBinContent(27 + 1) / h_psn_extra[1]->GetBinContent(
1466 h_eff_shifter->SetBinContent(6, h_psn_extra[1]->GetBinContent(26 + 1) / h_psn_extra[1]->GetBinContent(
1468 h_eff_shifter->SetBinContent(7, h_psn_extra[4]->GetBinContent(48 + 1) / h_psn_extra[4]->GetBinContent(
1470 h_eff_shifter->SetBinContent(8, h_psn_extra[4]->GetBinContent(49 + 1) / h_psn_extra[4]->GetBinContent(
1476 const char* TRGGDLDQMModule::output_extra[n_output_extra] = {
1477 "all",
"fff&(c4|hie)",
"ffo&(c4|hie)",
"ffb&(c4|hie)",
"fff",
"c4|hie",
"fff|ffo|ffb",
"(fff|ffo|ffb)&(c4|hie)",
"bha2D",
"bha3D",
1478 "ff",
"ff&(lml|eclmumu)",
"f",
"f&(lml|eclmumu)",
"lml|eclmumu",
"fff&(lml|eclmumu)",
"ffo&(lml|eclmumu)",
"ffb&(lml|eclmumu)",
"ffy",
"ffy&(c4|hie)",
1479 "fyo&(c4|hie)",
"fyb&(c4|hie)",
"(ffy|ffo|ffb)&(c4|hie)",
"ffy&(lml|eclmumu)",
"fyo&(lml|eclmumu)",
"fyb&(lml|eclmumu)",
"c4&(fff|ffo|ffb)",
"hie&(fff|ffo|ffb)",
"lml0&(fff|ffo|ffb)",
"lml1&(fff|ffo|ffb)",
1480 "lml2&(fff|ffo|ffb)",
"lml3&(fff|ffo|ffb)",
"lml4&(fff|ffo|ffb)",
"lml5&(fff|ffo|ffb)",
"lml6&(fff|ffo|ffb)",
"lml7&(fff|ffo|ffb)",
"lml8&(fff|ffo|ffb)",
"lml9&(fff|ffo|ffb)",
"lml10&(fff|ffo|ffb)",
"lml12&(fff|ffo|ffb)",
1481 "lml13&(fff|ffo|ffb)",
"eclmumu&(fff|ffo|ffb)",
"mu_b2b&(fff|ffo|ffb)",
"mu_eb2b&(fff|ffo|ffb)",
"cdcklm1&(fff|ffo|ffb)",
"cdcklm2&(fff|ffo|ffb)",
"klm_hit&(fff|ffo|ffb)",
"eklm_hit&(fff|ffo|ffb)",
"mu_b2b&(lml|eclmumu)",
"mu_eb2b&(lml|eclmumu)",
1482 "cdcklm1&(lml|eclmumu)",
"cdcklm2&(lml|eclmumu)",
"klm_hit&(lml|eclmumu)",
"eklm_hit&(lml|eclmumu)",
"cdcecl1&(fff|ffo|ffb)",
"cdcecl2&(fff|ffo|ffb)",
"cdcecl3&(fff|ffo|ffb)",
"cdcecl4&(fff|ffo|ffb)",
"cdcecl1&(lml|eclmumu)",
"cdcecl2&(lml|eclmumu)",
1483 "cdcecl3&(lml|eclmumu)",
"cdcecl4&(lml|eclmumu)",
"fso&(lml|eclmumu)",
"fsb&(lml|eclmumu)",
"syo&(lml|eclmumu)",
"syb&(lml|eclmumu)",
"x&(lml|eclmumu)",
"fioiecl1&(lml|eclmumu)",
"ecleklm1&(lml|eclmumu)",
"seklm1&(lml|eclmumu)",
1484 "seklm2&(lml|eclmumu)",
"ieklm&(lml|eclmumu)",
"iecl&(lml|eclmumu)"
1487 const char* TRGGDLDQMModule::output_overlap[n_output_overlap] = {
1488 "all",
"cdc",
"c4",
"hie",
"klm",
"short",
"ff30",
"lml",
"bha3D",
"other"
1491 const char* TRGGDLDQMModule::c_eff_shifter[n_eff_shifter] = {
1502 const char* TRGGDLDQMModule::c_eff[n_eff] = {
1509 "hie with fff|ffo|ffb",
1510 "c4 with fff|ffo|ffb",
1511 "lml0 with fff|ffo|ffb",
1512 "lml1 with fff|ffo|ffb",
1513 "lml2 with fff|ffo|ffb",
1514 "lml3 with fff|ffo|ffb",
1515 "lml4 with fff|ffo|ffb",
1516 "lml5 with fff|ffo|ffb",
1517 "lml6 with fff|ffo|ffb",
1518 "lml7 with fff|ffo|ffb",
1519 "lml8 with fff|ffo|ffb",
1520 "lml9 with fff|ffo|ffb",
1521 "lml10 with fff|ffo|ffb",
1522 "lml12 with fff|ffo|ffb",
1523 "lml13 with fff|ffo|ffb",
1525 "mu_b2b with fff|ffo|ffb",
1526 "mu_b2b with lml|eclmumu",
1527 "mu_eb2b with lml|eclmumu",
1528 "cdcklm1 with fff|ffo|ffb",
1529 "cdcklm2 with fff|ffo|ffb",
1530 "fff with lml|eclmumu",
1531 "ffo with lml|eclmumu",
1532 "ffb with lml|eclmumu",
1533 "ff with lml|eclmumu",
1534 "f with lml|eclmumu",
1535 "ffy with lml|eclmumu",
1536 "fyo with lml|eclmumu",
1537 "fyb with lml|eclmumu"
1542 TRGGDLDQMModule::fillOutputPureExtra(
void)
1546 int n_fulltrack = 0;
1548 float phi_list[100];
1549 for (
int itrack = 0; itrack < Tracks.
getEntries(); itrack++) {
1551 if (tfr ==
nullptr)
continue;
1553 float z0 = tfr->
getZ0();
1554 float d0 = tfr->
getD0();
1555 float phi = tfr->
getPhi();
1561 if (z0 > -1 && z0 < 1 && d0 > -1 && d0 < 1 && flayer < 8 && llayer > 50
1563 phi_list[n_fulltrack] = phi;
1567 for (
int i = 0; i < n_fulltrack; i++) {
1568 for (
int j = 0; j < n_fulltrack; j++) {
1569 float dphi = phi_list[i] - phi_list[j];
1570 if (dphi < 0) dphi = -dphi;
1571 if (dphi > 3.14) dphi = 2 * 3.14 - dphi;
1572 if (dphi > max_dphi) max_dphi = dphi;
1584 int ecl_timing_threshold_low = -200;
1585 int ecl_timing_threshold_high = 200;
1586 double ecl_xtcid_energy_sum[576] = {0};
1587 double total_energy = 0;
1589 for (
const auto& eclcalhit : m_ECLCalDigitData) {
1592 if (!eclcalhit.isCalibrated()) {
continue;}
1593 if (eclcalhit.isFailedFit()) {
continue;}
1594 if (eclcalhit.isTimeResolutionFailed()) {
continue;}
1597 int ecl_cid = (double) eclcalhit.getCellId();
1600 int ecl_quality = -1;
1601 for (
const auto& eclhit : m_ECLDigitData) {
1602 if (ecl_cid == eclhit.getCellId()) {
1603 ecl_quality = (int) eclhit.getQuality();
1606 if (ecl_quality != 0) {
continue;}
1609 double ecl_xtal_energy = eclcalhit.getEnergy();
1613 int ecl_timing = eclcalhit.getTime();
1614 if (ecl_timing < ecl_timing_threshold_low ||
1615 ecl_timing > ecl_timing_threshold_high) {
continue;}
1621 if (ecl_tcid >= 0 && ecl_tcid < 576 && ecl_thetaid >= 2 && ecl_thetaid <= 15) {
1622 ecl_xtcid_energy_sum[ecl_tcid] = ecl_xtcid_energy_sum[ecl_tcid] + ecl_xtal_energy;
1627 for (
int i = 0; i < 576; i++) {
1628 if (ecl_xtcid_energy_sum[i] > 0.1) {
1629 total_energy += ecl_xtcid_energy_sum[i];
1638 if (n_fulltrack > 2) {
1640 bool fff_fired = isFired(
"fff");
1641 bool ffy_fired = isFired(
"ffy");
1642 bool c4_fired = isFired(
"C4");
1643 bool hie_fired = isFired(
"HIE");
1644 if (c4_fired || hie_fired) {
1645 h_psn_pure_extra[0]->Fill(0.5);
1647 if (fff_fired && (c4_fired || hie_fired)) {
1648 h_psn_pure_extra[0]->Fill(1.5);
1650 if (ffy_fired && (c4_fired || hie_fired)) {
1651 h_psn_pure_extra[0]->Fill(2.5);
1655 if (n_fulltrack > 1 && max_dphi > 3.14 / 2.) {
1657 bool ffo_fired = isFired(
"ffo");
1658 bool fyo_fired = isFired(
"fyo");
1659 bool c4_fired = isFired(
"C4");
1660 bool hie_fired = isFired(
"HIE");
1661 if (c4_fired || hie_fired) {
1662 h_psn_pure_extra[0]->Fill(3.5);
1664 if (ffo_fired && (c4_fired || hie_fired)) {
1665 h_psn_pure_extra[0]->Fill(4.5);
1667 if (fyo_fired && (c4_fired || hie_fired)) {
1668 h_psn_pure_extra[0]->Fill(5.5);
1672 if (n_fulltrack > 1 && max_dphi > 3.14 * 5 / 6.) {
1674 bool ffb_fired = isFired(
"ffb");
1675 bool fyb_fired = isFired(
"fyb");
1676 bool c4_fired = isFired(
"C4");
1677 bool hie_fired = isFired(
"HIE");
1678 if (c4_fired || hie_fired) {
1679 h_psn_pure_extra[0]->Fill(6.5);
1681 if (ffb_fired && (c4_fired || hie_fired)) {
1682 h_psn_pure_extra[0]->Fill(7.5);
1684 if (fyb_fired && (c4_fired || hie_fired)) {
1685 h_psn_pure_extra[0]->Fill(8.5);
1690 if (total_energy > 1) {
1692 bool fff_fired = isFired(
"FFF");
1693 bool ffo_fired = isFired(
"FFO");
1694 bool ffb_fired = isFired(
"FFB");
1695 bool hie_fired = isFired(
"hie");
1696 if (fff_fired || ffo_fired || ffb_fired) {
1697 h_psn_pure_extra[0]->Fill(9.5);
1699 if (hie_fired && (fff_fired || ffo_fired || ffb_fired)) {
1700 h_psn_pure_extra[0]->Fill(10.5);
1707 bool fff_fired = isFired(
"FFF");
1708 bool ffo_fired = isFired(
"FFO");
1709 bool ffb_fired = isFired(
"FFB");
1710 bool c4_fired = isFired(
"c4");
1711 if (fff_fired || ffo_fired || ffb_fired) {
1712 h_psn_pure_extra[0]->Fill(11.5);
1714 if (c4_fired && (fff_fired || ffo_fired || ffb_fired)) {
1715 h_psn_pure_extra[0]->Fill(12.5);
1719 h_pure_eff[0]->SetBinContent(1, h_psn_pure_extra[0]->GetBinContent(1 + 1) / h_psn_pure_extra[0]->GetBinContent(
1721 h_pure_eff[0]->SetBinContent(2, h_psn_pure_extra[0]->GetBinContent(4 + 1) / h_psn_pure_extra[0]->GetBinContent(
1723 h_pure_eff[0]->SetBinContent(3, h_psn_pure_extra[0]->GetBinContent(7 + 1) / h_psn_pure_extra[0]->GetBinContent(
1725 h_pure_eff[0]->SetBinContent(4, h_psn_pure_extra[0]->GetBinContent(2 + 1) / h_psn_pure_extra[0]->GetBinContent(
1727 h_pure_eff[0]->SetBinContent(5, h_psn_pure_extra[0]->GetBinContent(5 + 1) / h_psn_pure_extra[0]->GetBinContent(
1729 h_pure_eff[0]->SetBinContent(6, h_psn_pure_extra[0]->GetBinContent(8 + 1) / h_psn_pure_extra[0]->GetBinContent(
1731 h_pure_eff[0]->SetBinContent(7, h_psn_pure_extra[0]->GetBinContent(10 + 1) / h_psn_pure_extra[0]->GetBinContent(
1733 h_pure_eff[0]->SetBinContent(8, h_psn_pure_extra[0]->GetBinContent(12 + 1) / h_psn_pure_extra[0]->GetBinContent(
1738 const char* TRGGDLDQMModule::output_pure_extra[n_output_pure_extra] = {
1739 "c4|hie offline_fff",
"fff&(c4|hie) offline_fff",
"ffy&(c4|hie) offline_fff",
1740 "c4|hie offline_ffo",
"ffo&(c4|hie) offline_ffo",
"fyo&(c4|hie) offline_ffo",
1741 "c4|hie offline_ffb",
"ffb&(c4|hie) offline_ffb",
"fyb&(c4|hie) offline_ffb",
1742 "fff|ffb|ffo offline_hie",
"hie&(fff|ffb|ffo) offline_hie",
1743 "fff|ffb|ffo offline_c4",
"c4&(fff|ffb|ffo) offline_c4"
1747 const char* TRGGDLDQMModule::c_pure_eff[n_pure_eff] = {
1754 "hie with fff|ffo|ffb",
1755 "c4 with fff|ffo|ffb"