Belle II Software  release-08-01-09
TRGECLDQMModule.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <trg/ecl/modules/trgeclDQM/TRGECLDQMModule.h>
10 #include <trg/ecl/TrgEclMapping.h>
11 #include <trg/ecl/TrgEclCluster.h>
12 #include <trg/ecl/TrgEclDataBase.h>
13 
14 #include <framework/datastore/StoreArray.h>
15 
16 #include <TDirectory.h>
17 
18 #include <TH1D.h>
19 #include <TH2D.h>
20 
21 using namespace Belle2;
22 
23 REG_MODULE(TRGECLDQM);
24 
25 
27 {
28 
29 
30  setDescription("DQM for ECL Trigger system");
32 
33  TCId.clear();
34  TCHitWin.clear();
35  TCEnergy.clear();
36  TCTiming.clear();
37  RevoFAM.clear();
38  RevoTrg.clear();
39  FineTiming.clear();
40 
41 }
42 
43 
45 {
46 
47 }
48 
49 
51 {
52  TDirectory* oldDir = gDirectory;
53  TDirectory* dirDQM = (TDirectory*)gDirectory->Get("TRG");
54  if (!dirDQM) {
55  dirDQM = oldDir->mkdir("TRG");
56  }
57  dirDQM->cd();
58 
59  h_TCId = new TH1D("h_TCId", "[TRGECL] Hit TC ID", 578, 0, 578);
60  h_TCthetaId = new TH1D("h_TCthetaId", "[TRGECL] Hit TC #theta ID", 19, 0, 19);
61  h_TCphiId_FWD = new TH1D("h_TCphiId_FWD", "[TRGECL] Hit TC #phi ID in FWD", 34, 0, 34);
62  h_TCphiId_BR = new TH1D("h_TCphiId_BR", "[TRGECL] Hit TC #phi ID in BR", 38, 0, 38);
63  h_TCphiId_BWD = new TH1D("h_TCphiId_BWD", "[TRGECL] Hit TC #phi ID in BWD", 34, 0, 34);
64  h_TotalEnergy = new TH1D("h_TotalEnergy", "[TRGECL] Total TC Energy (ADC)", 100, 0, 3000);
65  h_TCEnergy = new TH1D("h_TCEnergy", "[TRGECL] TC Energy (ADC)", 100, 0, 1500);
66  h_Narrow_TotalEnergy = new TH1D("h_Narrow_TotalEnergy", "[TRGECL] Total TC Energy (ADC)", 100, 0, 500);
67  h_Narrow_TCEnergy = new TH1D("h_Narrow_TCEnergy", "[TRGECL] TC Energy (ADC)", 100, 0, 100);
68  h_n_TChit_event = new TH1D("h_n_TChit_event", "[TRGECL] N(TC) ", 50, 0, 50);
69  h_n_TChit_clean = new TH1D("h_n_TChit_clean", "[TRGECL] N(TC) (Injection BG Clean)", 300, 0, 300);
70  h_n_TChit_injHER = new TH1D("h_n_TChit_injHER", "[TRGECL] N(TC) (HER Injection BG)", 300, 0, 300);
71  h_n_TChit_injLER = new TH1D("h_n_TChit_injLER", "[TRGECL] N(TC) (LER Injection BG)", 300, 0, 300);
72  h_nTChit_injtime = new TH2D("h_nTChit_injtime", "[TRGECL] N(TC) vs. Time since injection", 201, 0, 200, 100, 0, 50);
73  h_n_TChit_event_2clk = new TH1D("h_n_TChit_event_2clk", "[TRGECL] N(TC_2clk) ", 50, 0, 50);
74  h_n_TChit_clean_2clk = new TH1D("h_n_TChit_clean_2clk", "[TRGECL] N(TC_2clk) (Injection BG Clean)", 300, 0, 300);
75  h_n_TChit_injHER_2clk = new TH1D("h_n_TChit_injHER_2clk", "[TRGECL] N(TC_2clk) (HER Injection BG)", 300, 0, 300);
76  h_n_TChit_injLER_2clk = new TH1D("h_n_TChit_injLER_2clk", "[TRGECL] N(TC_2clk) (LER Injection BG)", 300, 0, 300);
77  h_nTChit_injtime_2clk = new TH2D("h_nTChit_injtime_2clk", "[TRGECL] N(TC_2clk) vs. Time since injection", 201, 0, 200, 100, 0, 50);
78  h_Cluster = new TH1D("h_Cluster", "[TRGECL] N(Cluster) ", 20, 0, 20);
79  h_TCTiming = new TH1D("h_TCTiming", "[TRGECL] TC Timing (ns)", 100, 3010, 3210);
80  h_TRGTiming = new TH1D("h_TRGTiming", "[TRGECL] TRG Timing (ns)", 100, 3010, 3210);
81  h_Cal_TCTiming = new TH1D("h_Cal_TCTiming", "[TRGECL] Cal TC Timing (ns)", 100, -400, 400);
82  h_Cal_TRGTiming = new TH1D("h_Cal_TRGTiming", "[TRGECL] TRG Timing (ns)", 100, -400, 400);
83  h_ECL_TriggerBit = new TH1D("h_ECL_TriggerBit", "[TRGECL] ECL Trigger Bit", 29, 0, 29);
84  h_Cluster_Energy_Sum = new TH1D("h_Cluster_Energy_Sum", "[TRGECL] Energy Sum of 2 Clusters (ADC)", 300, 0, 3000);
85 
86  h_nTChit_injtime->GetXaxis()->SetTitle("The number of TC hits");
87  h_nTChit_injtime->GetYaxis()->SetTitle("Time since injection [ms]");
88 
89 
90  const char* label[44] = {"Hit", "Timing Source(FWD)", "Timing Source(BR)", "Timing Source(BWD)", "physics Trigger", "2D Bhabha Veto", "3D Bhabha veto", "3D Bhabha Selection", "E Low", "E High", "E LOM", "Cluster Overflow", "Low multi bit 0", "Low multi bit 1", "Low multi bit 2", "Low multi bit 3", "Low multi bit 4", "Low multi bit 5", "Low multi bit 6", "Low multi bit 7", "Low multi bit 8", "Low multi bit 9", "Low multi bit 10", "Low multi bit 11", "Low multi bit 12", "Low multi bit 13", "mumu bit", "prescale bit", "ECL burst bit", "2D Bhabha bit 1", "2D Bhabha bit 2", "2D Bhabha bit 3", "2D Bhabha bit 4", "2D Bhabha bit 5", "2D Bhabha bit 6", "2D Bhabha bit 7", "2D Bhabha bit 8", "2D Bhabha bit 9", "2D Bhabha bit 10", "2D Bhabha bit 11", "2D Bhabha bit 12", "2D Bhabha bit 13", "2D Bhabha bit 14"};
91 
92 
93  for (int j = 0; j < 29; j++) {
94  h_ECL_TriggerBit->GetXaxis()-> SetBinLabel(j + 1, label[j]);
95  }
96  h_ECL_TriggerBit->SetStats(0);
97 
98  oldDir->cd();
99 }
100 
101 
103 {
104 
105  // calls back the defineHisto() function, but the HistoManager module has to be in the path
106  REG_HISTOGRAM
107 
108  trgeclHitArray.registerInDataStore();
109  trgeclEvtArray.registerInDataStore();
110  trgeclCluster.registerInDataStore();
111  trgeclSumArray.registerInDataStore();
112 
113 }
114 
115 
117 {
118 }
119 
121 {
122  // delete h_TCId;
123 }
124 
126 {
127  TCId.clear();
128  TCHitWin.clear();
129  TCEnergy.clear();
130  TCTiming.clear();
131  RevoFAM.clear();
132  RevoTrg.clear();
133  FineTiming.clear();
134 
135  // StoreArray<TRGECLUnpackerStore> trgeclHitArray;
136  /* cppcheck-suppress variableScope */
137  double HitTiming;
138  /* cppcheck-suppress variableScope */
139  double HitEnergy;
140  double HitRevoFam = 0;
141  double HitRevoTrg = 0;
142  double HitFineTiming = 0;
143  double HitRevoEvtTiming = 0;
144  double HitCalTiming = 0;
145  int CheckSum = 0;
146 
147  for (int iii = 0; iii < trgeclEvtArray.getEntries(); iii++) {
148  TRGECLUnpackerEvtStore* aTRGECLUnpackerEvtStore = trgeclEvtArray[iii];
149 
150  HitFineTiming = aTRGECLUnpackerEvtStore -> getEvtTime();
151  HitRevoTrg = aTRGECLUnpackerEvtStore -> getL1Revo();
152  HitRevoEvtTiming = aTRGECLUnpackerEvtStore -> getEvtRevo();
153  CheckSum = aTRGECLUnpackerEvtStore -> getEvtExist() ;
154 
155 
156  RevoTrg.push_back(HitRevoTrg);
157 
158 
159 
160  }
161  if (CheckSum == 0) {return;}
162 
163 
164 
165  for (int ii = 0; ii < trgeclHitArray.getEntries(); ii++) {
166  TRGECLUnpackerStore* aTRGECLUnpackerStore = trgeclHitArray[ii];
167  int TCID = (aTRGECLUnpackerStore->getTCId());
168  int hit_win = aTRGECLUnpackerStore -> getHitWin();
169  HitEnergy = aTRGECLUnpackerStore -> getTCEnergy();
170  HitTiming = aTRGECLUnpackerStore ->getTCTime();
171 
172  if (TCID < 1 || TCID > 576 || HitEnergy == 0) {continue;}
173  if (!(hit_win == 3 || hit_win == 4)) {continue;}
174  HitCalTiming = aTRGECLUnpackerStore ->getTCCALTime() ;
175  HitRevoFam = aTRGECLUnpackerStore-> getRevoFAM() ;
176 
177  TCId.push_back(TCID);
178  TCHitWin.push_back(hit_win);
179  TCEnergy.push_back(HitEnergy);
180  TCTiming.push_back(HitTiming);
181  RevoFAM.push_back(HitRevoFam);
182  FineTiming.push_back(HitCalTiming);
183  }
184  //
185  //
186  if (TCId.size() == 0) {return;}
187 
188  /* cppcheck-suppress variableScope */
189  int phy;
190  /* cppcheck-suppress variableScope */
191  int b1;
192  /* cppcheck-suppress variableScope */
193  int b2v;
194  /* cppcheck-suppress variableScope */
195  int b2s;
196  /* cppcheck-suppress variableScope */
197  int mu;
198  /* cppcheck-suppress variableScope */
199  int pre;
200  /* cppcheck-suppress variableScope */
201  int clover;
202  /* cppcheck-suppress variableScope */
203  int tsource;
204  /* cppcheck-suppress variableScope */
205  int b1type;
206  /* cppcheck-suppress variableScope */
207  int etot;
208  /* cppcheck-suppress variableScope */
209  int vlm;
210  /* cppcheck-suppress variableScope */
211  int eclburst;
212  // int s_hit_win= 0;
213  std::vector<int> trgbit ;
214  trgbit.resize(44, 0);
215  for (int iii = 0; iii < trgeclSumArray.getEntries(); iii++) {
216  TRGECLUnpackerSumStore* aTRGECLUnpackerSumStore = trgeclSumArray[iii];
217 
218  tsource = aTRGECLUnpackerSumStore ->getTimeType();
219  phy = aTRGECLUnpackerSumStore ->getPhysics();
220  b1 = aTRGECLUnpackerSumStore ->get2DBhabha();
221  b1type = aTRGECLUnpackerSumStore -> getBhabhaType();
222  b2v = aTRGECLUnpackerSumStore -> get3DBhabhaV();
223  b2s = aTRGECLUnpackerSumStore -> get3DBhabhaS() ;
224  etot = aTRGECLUnpackerSumStore -> getEtotType();
225  clover = aTRGECLUnpackerSumStore -> getICNOver();
226  vlm = aTRGECLUnpackerSumStore -> getLowMulti();
227  mu = aTRGECLUnpackerSumStore -> getMumu();
228  pre = aTRGECLUnpackerSumStore -> getPrescale();
229  eclburst = aTRGECLUnpackerSumStore -> getECLBST();
230 
231  //
232  trgbit[0] = 1;
233  trgbit[1] = tsource & 0x1;
234  trgbit[2] = (tsource >> 1) & 0x1;
235  trgbit[3] = (tsource >> 2) & 0x1;
236  trgbit[4] = phy;
237  trgbit[5] = b1;
238  trgbit[6] = b2v;
239  trgbit[7] = b2s;
240  trgbit[8] = etot & 0x1;
241  trgbit[9] = (etot >> 1) & 0x1;
242  trgbit[10] = (etot >> 2) & 0x1;
243  trgbit[11] = clover;
244 
245  for (int j = 0; j < 14; j++) {
246  trgbit[12 + j] = (vlm >> j) & 0x1;
247  }
248 
249  trgbit[26] = mu;
250  trgbit[27] = pre;
251  trgbit[28] = eclburst;
252 
253  trgbit[29] = b1type & 0x1;
254  trgbit[30] = (b1type >> 1) & 0x1;
255  trgbit[31] = (b1type >> 2) & 0x1;
256  trgbit[32] = (b1type >> 3) & 0x1;
257  trgbit[33] = (b1type >> 4) & 0x1;
258  trgbit[34] = (b1type >> 5) & 0x1;
259  trgbit[35] = (b1type >> 6) & 0x1;
260  trgbit[36] = (b1type >> 7) & 0x1;
261  trgbit[37] = (b1type >> 8) & 0x1;
262  trgbit[38] = (b1type >> 9) & 0x1;
263  trgbit[39] = (b1type >> 10) & 0x1;
264  trgbit[40] = (b1type >> 11) & 0x1;
265  trgbit[41] = (b1type >> 12) & 0x1;
266  trgbit[42] = (b1type >> 13) & 0x1;
267  trgbit[43] = (b1type >> 14) & 0x1;
268 
269 
270  }
271 
272  for (int j = 0; j < 29; j++) {
273  if (trgbit[j] == 0x1) {h_ECL_TriggerBit->Fill(j, 1);}
274  }
275 
276 
277  //----------------------
278  //Clustering
279  //----------------------
280  //
281 
282  TrgEclCluster _TCCluster ;
283  _TCCluster.setICN(TCId, TCEnergy, TCTiming);
284 
285  int c = _TCCluster.getNofCluster();
286  h_Cluster->Fill(c);
287  std::vector<double> ClusterTiming;
288  std::vector<double> ClusterEnergy;
289  std::vector<int> MaxTCId;
290  ClusterTiming.clear();
291  ClusterEnergy.clear();
292  MaxTCId.clear();
293 
294  for (int iii = 0; iii < trgeclCluster.getEntries(); iii++) {
295  TRGECLCluster* aTRGECLCluster = trgeclCluster[iii];
296  int maxTCId = aTRGECLCluster ->getMaxTCId();
297  double clusterenergy = aTRGECLCluster ->getEnergyDep();
298  double clustertiming = aTRGECLCluster -> getTimeAve();
299  ClusterTiming.push_back(clustertiming);
300  ClusterEnergy.push_back(clusterenergy);
301  MaxTCId.push_back(maxTCId);
302  }
303 
304 
305  std::vector<double> maxClusterEnergy;
306  std::vector<double> maxClusterTiming;
307  std::vector<int> maxCenterTCId;
308  maxClusterTiming.clear();
309  maxClusterEnergy.clear();
310  maxCenterTCId.clear();
311 
312  maxClusterEnergy.resize(2, 0.0);
313  maxClusterTiming.resize(2, 0.0);
314  maxCenterTCId.resize(2, 0.0);
315  const int cl_size = ClusterEnergy.size();
316  for (int icl = 0; icl < cl_size; icl++) {
317  if (maxClusterEnergy[0] < ClusterEnergy[icl]) {
318  maxClusterEnergy[0] = ClusterEnergy[icl];
319  maxClusterTiming[0] = ClusterTiming[icl];
320  maxCenterTCId[0] = MaxTCId[icl];
321  } else if (maxClusterEnergy[1] < ClusterEnergy[icl]) {
322  maxClusterEnergy[1] = ClusterEnergy[icl];
323  maxClusterTiming[1] = ClusterTiming[icl];
324  maxCenterTCId[1] = MaxTCId[icl];
325 
326  }
327 
328  }
329  TrgEclDataBase _database;
330 
331  std::vector<double> _3DBhabhaThreshold;
332  _3DBhabhaThreshold = {30, 45}; // /10 MeV
333 
334 
335  bool BtoBFlag = false;
336  bool BhabhaFlag = false;
337  int lut1 = _database.Get3DBhabhaLUT(maxCenterTCId[0]);
338  int lut2 = _database.Get3DBhabhaLUT(maxCenterTCId[1]);
339  int energy1 = 15 & lut1;
340  int energy2 = 15 & lut2;
341  lut1 >>= 4;
342  lut2 >>= 4;
343  int phi1 = 511 & lut1;
344  int phi2 = 511 & lut2;
345  lut1 >>= 9;
346  lut2 >>= 9;
347  int theta1 = lut1;
348  int theta2 = lut2;
349  int dphi = abs(phi1 - phi2);
350  if (dphi > 180) {dphi = 360 - dphi;}
351  int thetaSum = theta1 + theta2;
352  if (dphi > 160 && thetaSum > 165 && thetaSum < 190) {BtoBFlag = true;}
353 
354  if ((maxClusterEnergy[0] * 0.1) > _3DBhabhaThreshold[0] * energy1
355  && (maxClusterEnergy[1] * 0.1) > _3DBhabhaThreshold[0] * (energy2)
356  && ((maxClusterEnergy[0] * 0.1) > _3DBhabhaThreshold[1] * energy1
357  || (maxClusterEnergy[1] * 0.1) > _3DBhabhaThreshold[1] * (energy2))) {
358  if (BtoBFlag) {BhabhaFlag = true;}
359  }
360 
361 
362  if (BhabhaFlag) {
363  h_Cluster_Energy_Sum -> Fill((maxClusterEnergy[0] + maxClusterEnergy[1]) / 5.25);
364  }
365 
366 
367  const int NofTCHit = TCId.size();
368 
369  int NofTCHitPerClk[8] = {0};
370  double totalEnergy = 0;
371  TrgEclMapping* a = new TrgEclMapping();
372  double max = 0;
373  double caltrgtiming = 0;
374  double diff = -1;
375  bool isHER;
376 
377  diff = m_trgTime->getTimeSinceLastInjectionInMicroSeconds() / 1000.;
378  isHER = m_trgTime->isHER();
379 
380  for (int ihit = 0; ihit < NofTCHit ; ihit ++) {
381  h_TCId -> Fill(TCId[ihit]);
382  h_TCthetaId -> Fill(a -> getTCThetaIdFromTCId(TCId[ihit]));
383  {
384  if (a->getTCThetaIdFromTCId(TCId[ihit]) < 4) {
385  h_TCphiId_FWD -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
386  } else if (a->getTCThetaIdFromTCId(TCId[ihit]) > 3 && a->getTCThetaIdFromTCId(TCId[ihit]) < 16) {
387  h_TCphiId_BR -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
388  } else {
389  h_TCphiId_BWD -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
390 
391  }
392  }
393  h_TCEnergy -> Fill(TCEnergy[ihit]);
394  h_Narrow_TCEnergy -> Fill(TCEnergy[ihit]);
395  h_Cal_TCTiming -> Fill(FineTiming[ihit]);
396 
397  if (max < TCEnergy[ihit]) {
398  max = TCEnergy[ihit];
399  caltrgtiming = FineTiming[ihit];
400  }
401 
402  totalEnergy += TCEnergy[ihit];
403  double timing = 8 * HitRevoTrg - (128 * RevoFAM[ihit] + TCTiming[ihit]);
404  if (timing < 0) {timing = timing + 10240;}
405  h_TCTiming->Fill(timing);
406  NofTCHitPerClk[TCHitWin[ihit]]++;
407  }
408 
409  const double revotime_in_us = 5.120 / m_hwclkdb->getAcceleratorRF();
410  int quotient;
411  double running_in_us, diff_in_us;
412 
413  diff_in_us = diff * 1000.;
414  quotient = diff_in_us / revotime_in_us;
415  running_in_us = diff_in_us - quotient * revotime_in_us;
416 
417  bool cond_clean, cond_injHER, cond_injLER;
418 
419  cond_clean = (6 < running_in_us && running_in_us < 8) && (50 < diff && diff < 70);
420 
421  cond_injHER = isHER && ((diff < 0.5) || ((diff < 20) && (2 < running_in_us && running_in_us < 3)));
422  cond_injLER = !isHER && ((diff < 0.5) || ((diff < 20) && (1 < running_in_us && running_in_us < 2)));
423 
424  h_n_TChit_event -> Fill(NofTCHit);
425  h_nTChit_injtime->Fill(NofTCHit, diff);
426 
427  if (cond_clean) {
428  h_n_TChit_clean->Fill(NofTCHit);
429  } else if (cond_injHER) {
430  h_n_TChit_injHER->Fill(NofTCHit);
431  } else if (cond_injLER) {
432  h_n_TChit_injLER->Fill(NofTCHit);
433  }
434 
435  const int grouping_num = 2;
436  for (int iclk = 0; iclk < 8 - (grouping_num - 1); iclk++) {
437  int group_tcnum = 0;
438  for (int igrp = 0; igrp < grouping_num; igrp++)
439  group_tcnum += NofTCHitPerClk[iclk + igrp];
440 
441  h_n_TChit_event_2clk->Fill(group_tcnum);
442  h_nTChit_injtime_2clk->Fill(group_tcnum, diff);
443 
444  if (cond_clean) {
445  h_n_TChit_clean_2clk->Fill(group_tcnum);
446  } else if (cond_injHER) {
447  h_n_TChit_injHER_2clk->Fill(group_tcnum);
448  } else if (cond_injLER) {
449  h_n_TChit_injLER_2clk->Fill(group_tcnum);
450  }
451  }
452 
453  double trgtiming = 8 * HitRevoTrg - (128 * HitRevoEvtTiming + HitFineTiming);
454 
455  if (trgtiming < 0) {trgtiming = trgtiming + 10240;}
456  h_TRGTiming -> Fill(trgtiming);
457  h_Cal_TRGTiming -> Fill(caltrgtiming);
458  h_TotalEnergy -> Fill(totalEnergy);
459  h_Narrow_TotalEnergy -> Fill(totalEnergy);
460 
461  // usleep(100);
462 }
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
Definition: HistoModule.h:29
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
Example Detector.
Definition: TRGECLCluster.h:24
double getEnergyDep() const
The method to get deposited energy.
int getMaxTCId() const
The method to get the Maximum(center) TC id.
TH1 * h_n_TChit_clean
N of TC Hit / event vs. time since injection.
std::vector< double > TCEnergy
Hit TC Energy.
TH1 * h_n_TChit_clean_2clk
N of TC Hit / event vs. time since injection per two ETM clocks.
TH1 * h_TCId
TCId histogram.
TH1 * h_TCphiId_BWD
TCphiId histogram.
TH1 * h_Narrow_TotalEnergy
Total Energy on narrow range.
TH1 * h_TotalEnergy
Total Energy.
TH1 * h_n_TChit_event_2clk
N of TC Hit / event per two ETM clocks.
TH1 * h_Cluster
N of Cluster / event.
virtual void initialize() override
initialize
StoreArray< TRGECLUnpackerStore > trgeclHitArray
Trg ECL Unpakcer TC output.
virtual void event() override
Event.
TH1 * h_Cal_TRGTiming
Event Timing / event.
TH1 * h_n_TChit_injHER
N of TC Hit / events in the injection BG clean region vs. time since injection.
TH1 * h_Narrow_TCEnergy
TC Energy histogram on narrow range.
virtual void endRun() override
End Run.
DBObjPtr< HardwareClockSettings > m_hwclkdb
DB pointerto access the hardware clock information.
TH1 * h_Cluster_Energy_Sum
Energy sum of 2 Top energetic clusters when 3D bhabnha bit on.
virtual void terminate() override
terminate
virtual ~TRGECLDQMModule()
Destrunctor.
std::vector< int > TCHitWin
Hit TCHitWin.
TH1 * h_TCphiId_FWD
TCphiId histogram.
TH1 * h_TRGTiming
Event Timing / event.
TH2 * h_nTChit_injtime
N of TC Hit / events in the LER injection BG region vs. time since injection.
TH1 * h_ECL_TriggerBit
ECL Trigger Bit.
std::vector< double > TCTiming
Hit TC Timing.
TH1 * h_n_TChit_injLER_2clk
N of TC Hit / events in the HER injection BG region vs. time since injection per two ETM clocks.
TH1 * h_n_TChit_injHER_2clk
N of TC Hit / events in the injection BG clean region vs. time since injection per two ETM clocks.
StoreArray< TRGECLUnpackerEvtStore > trgeclEvtArray
Trg ECL Unpakcer Event output.
TH1 * h_TCthetaId
TCthetaId histogram.
virtual void beginRun() override
begin Run
StoreArray< TRGECLUnpackerSumStore > trgeclSumArray
Trg Ecl Unpacker Summary output.
TH1 * h_TCphiId_BR
TCphiId histogram.
TH2 * h_nTChit_injtime_2clk
N of TC Hit / events in the LER injection BG region vs. time since injection per two ETM clocks.
TH1 * h_Cal_TCTiming
TC Timing / event.
TH1 * h_TCEnergy
TC Energy.
std::vector< double > FineTiming
Event Timing.
std::vector< double > RevoTrg
GDL Revolution Clk.
TH1 * h_TCTiming
TC Timing / event.
TH1 * h_n_TChit_event
N of TC Hit / event.
std::vector< double > RevoFAM
FAM Revolution Clk.
TH1 * h_n_TChit_injLER
N of TC Hit / events in the HER injection BG region vs. time since injection.
StoreArray< TRGECLCluster > trgeclCluster
Trg ECL Cluster output.
StoreObjPtr< EventLevelTriggerTimeInfo > m_trgTime
Array to access the FTSW information.
std::vector< int > TCId
Hit TCId.
virtual void defineHisto() override
Define Histogram.
int getTCCALTime() const
The method to get cal timing.
int getTCId() const
The method to get cell id.
int getTCTime() const
The method to get hit average time.
int get2DBhabha() const
The mothod to get 2D Bhabha bit.
int getPhysics() const
The mothod to get Physics bit.
int getTimeType() const
The mothod to get Timing Type.
A Class of ECL Trigger clustering
Definition: TrgEclCluster.h:30
void setICN(const std::vector< int > &)
set ICN for each part(Fw,Br,Bw)
int getNofCluster()
0 : center , 1; upper , 2: right , 3: lower , 4: lower right
Definition: TrgEclCluster.h:95
class TrgEclDataBase;
int Get3DBhabhaLUT(int)
TC CM Phi
A class of TC Mapping.
Definition: TrgEclMapping.h:26
REG_MODULE(arichBtest)
Register the Module.
Abstract base class for different kinds of events.