Belle II Software development
DQMHistAnalysisEventT0TriggerJitter.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// File : DQMHistAnalysisEventT0TriggerJitter.cc
10// Description : module for trigger jitter/EventT0 DQM histogram analysis
11//-
12
13
14#include <dqm/analysis/modules/DQMHistAnalysisEventT0TriggerJitter.h>
15
16#include <TROOT.h>
17#include <TStyle.h>
18#include <TF1.h>
19#include <TMath.h>
20
21using namespace Belle2;
22
23//-----------------------------------------------------------------
24// Register the Module
25//-----------------------------------------------------------------
26REG_MODULE(DQMHistAnalysisEventT0TriggerJitter);
27
28//-----------------------------------------------------------------
29// Implementation
30//-----------------------------------------------------------------
31
34{
35 setDescription("Determining and processing EventT0s from different subdetectors (ECL, CDC, TOP, SVD) for different L1 trigger sources (ECL, CDC, and TOP) to estimate trigger jitter information for different HLT event types (hadron, BhaBha, ยตยต).");
36
37 //Parameter definition
38 addParam("min_nEntries", m_nEntriesMin, "Minimum number of entries to process the histogram.", m_nEntriesMin);
39 addParam("prefixCanvas", m_prefixCanvas, "Prefix to be added to canvas filename when saved as pdf.", std::string("c"));
40 addParam("printCanvas", m_printCanvas, "If true, prints pdf of the analysis canvas.", bool(false));
41}
42
44{
45 gROOT->cd();
46
48
49 m_monObj = getMonitoringObject("eventT0");
50
51 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0");
52 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0");
53 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0");
54}
55
56
66
80
82{
83 // final calculation of the mean values for MiraBelle
87
88 if (m_printCanvas) {
90 }
91}
92
97
99{
100 double N = par[0];
101 double frac = par[1];
102 double mean = par[2];
103 double sigma = par[3];
104 double mean2 = par[4];
105 double sigma2 = par[5];
106
107 return N * frac * TMath::Gaus(x[0], mean, sigma) + N * (1 - frac) * TMath::Gaus(x[0], mean2, sigma2);
108}
109
110std::tuple<bool, std::optional<double>> DQMHistAnalysisEventT0TriggerJitterModule::processHistogram(TH1* h, TString tag,
111 bool retrieveMeanT0)
112{
113
114 if (h == nullptr) {
115 B2DEBUG(20, "h == nullptr");
116 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
117 return {false, {}};
118 }
119
120 // The default value for the EventT0 value is -1000, but bins start at -100, so we might mostly fill the underflow bin if
121 // EventT0 for a detector is not present. And also the nominal EventT0 might be too big or too small. Only use the content
122 // of the actually useful bins to decide whether or not to fit the histogram.
123 auto nValidEntries = h->GetEntries() - h->GetBinContent(0) - h->GetBinContent(h->GetNbinsX() + 1);
124 if (static_cast<uint>(nValidEntries) < m_nEntriesMin) {
125 B2DEBUG(20, "not enough entries");
126 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
127 return {false, {}};
128 }
129
130
131 //scale the histogram only with content of valid bins, ignore over and underflow bins
132 h->Scale(1. / nValidEntries);
133 h->GetXaxis()->SetRangeUser(-50, 50);
134
135 //define the fitting function
137 fitf.SetParNames("N", "f_{1}", "#mu_{1}", "#sigma_{1}", "#mu_{2}", "#sigma_{2}");
138 fitf.SetParameters(0.1, 0.8, 0, 5, 0, 15);
139 fitf.SetParLimits(1, 0, 1); //fraction
140 fitf.SetParLimits(3, 0, 100); //sigma1
141 fitf.SetParLimits(5, 0, 100); //sigma2
142
143 if (h->Fit(&fitf, "SR+") != 0) {
144 B2DEBUG(20, "failed fit");
145 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
146 return {false, {}};
147 }
148
149 Double_t par[6];
150 fitf.GetParameters(&par[0]);
151 Double_t parErr[6];
152 for (int i = 0; i < 6; i++)
153 parErr[i] = fitf.GetParError(i) ;
154
155
156 //define gaussian components
157 TF1 gauss1("gauss1", "gaus", -100, 100);
158 TF1 gauss2("gauss2", "gaus", -100, 100);
159
160 // Sometimes the first Gaussian isn't the main one, messing up the DQM plots
161 // Thus, chose the Gaussian with the larger relative contribution to be the main one
162 const double mainFrac = par[1] > 0.5 ? par[1] : (1 - par[1]);
163 const double mainMean = par[1] > 0.5 ? par[2] : par[4];
164 const double mainSigma = par[1] > 0.5 ? par[3] : par[5];
165 const double miniMean = par[1] > 0.5 ? par[4] : par[2];
166 const double miniSigma = par[1] > 0.5 ? par[5] : par[3];
167 const double mainMeanErr = par[1] > 0.5 ? parErr[2] : parErr[4];
168 const double mainSigmaErr = par[1] > 0.5 ? parErr[3] : parErr[5];
169 const double miniMeanErr = par[1] > 0.5 ? parErr[4] : parErr[2];
170 const double miniSigmaErr = par[1] > 0.5 ? parErr[5] : parErr[3];
171
172 gauss1.SetLineColor(kBlue);
173 gauss1.SetLineStyle(kDashed);
174 gauss1.SetParameters(par[0]*mainFrac, mainMean, mainSigma);
175
176 gauss2.SetLineColor(kRed);
177 gauss2.SetLineStyle(kDashed);
178 gauss2.SetParameters(par[0] * (1 - mainFrac), miniMean, miniSigma);
179
180 m_monObj->setVariable(Form("fit_%s", tag.Data()), 1);
181 m_monObj->setVariable(Form("N_%s", tag.Data()), nValidEntries, TMath::Sqrt(nValidEntries));
182 m_monObj->setVariable(Form("f_%s", tag.Data()), mainFrac, parErr[1]);
183 m_monObj->setVariable(Form("mean1_%s", tag.Data()), mainMean, mainMeanErr);
184 m_monObj->setVariable(Form("sigma1_%s", tag.Data()), mainSigma, mainSigmaErr);
185 m_monObj->setVariable(Form("mean2_%s", tag.Data()), miniMean, miniMeanErr);
186 m_monObj->setVariable(Form("sigma2_%s", tag.Data()), miniSigma, miniSigmaErr);
187
188 //SETUP gSTYLE - all plots
189 gStyle->SetOptFit(1111);
190
191 gPad->Clear();// better clear before to get rid of all fit lines drawn before
192 h->Draw();
193 fitf.DrawCopy("same");// Do not use DrawClone, it result in meory leak (even so unclear why)
194 gauss1.DrawCopy("same");
195 gauss2.DrawCopy("same");
196
197 if (retrieveMeanT0) {
198 // return mean of the core Gaussian
199 return {true, mainMean};
200 }
201 return {true, {}};
202
203
204}
205
207{
208
209 const bool retrieveMeanT0 = retrieveDeltas;
210 bool processingSuccessful = false;
211 std::optional<double> currentT0;
212
213 // --- ECL EventT0 plots for ECLTRG ---
214
215 // find ECL EventT0 Hadrons ECLTRG histogram and process it
216 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_ECLTRG");
217 TString tag = "hadronECLTRG_ECLT0";
219 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
220 if (processingSuccessful) {
221 m_cECLTimeHadronsECLTRG->SetFillColor(0);
222 m_cECLTimeHadronsECLTRG->Modified();
223 m_cECLTimeHadronsECLTRG->Update();
224 if (*currentT0) {
225 m_ECLTRGHLThadronECLT0 = *currentT0;
226 }
227 } else {
228 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
229 if (h) h->Draw();
230 m_cECLTimeHadronsECLTRG->SetFillColor(kGray);
232 }
233
234 // find ECL EventT0 Bhabhas ECLTRG histogram and process it
235 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_ECLTRG");
236 tag = "bhabhaECLTRG_ECLT0";
238 if (std::get<0>(processHistogram(h, tag))) {
239 m_cECLTimeBhaBhaECLTRG->SetFillColor(0);
240 m_cECLTimeBhaBhaECLTRG->Modified();
241 m_cECLTimeBhaBhaECLTRG->Update();
242 } else {
243 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
244 if (h) h->Draw();
245 m_cECLTimeBhaBhaECLTRG->SetFillColor(kGray);
247 }
248
249 // find ECL EventT0 Mumus ECLTRG histogram and process it
250 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_ECLTRG");
251 tag = "mumuECLTRG_ECLT0";
253 if (std::get<0>(processHistogram(h, tag))) {
254 m_cECLTimeMuMuECLTRG->SetFillColor(0);
255 m_cECLTimeMuMuECLTRG->Modified();
256 m_cECLTimeMuMuECLTRG->Update();
257 } else {
258 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
259 if (h) h->Draw();
260 m_cECLTimeMuMuECLTRG->SetFillColor(kGray);
261 m_cECLTimeMuMuECLTRG->Draw();
262 }
263
264
265 // --- CDC EventT0 plots for ECLTRG ---
266
267 // find CDC EventT0 Hadrons ECLTRG histogram and process it
268 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_ECLTRG");
269 tag = "hadronECLTRG_CDCT0";
271 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
272 if (processingSuccessful) {
273 m_cCDCTimeHadronsECLTRG->SetFillColor(0);
274 m_cCDCTimeHadronsECLTRG->Modified();
275 m_cCDCTimeHadronsECLTRG->Update();
276 if (*currentT0) {
277 m_ECLTRGHLThadronCDCT0 = *currentT0;
278 }
279 } else {
280 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
281 if (h) h->Draw();
282 m_cCDCTimeHadronsECLTRG->SetFillColor(kGray);
284 }
285
286 // find CDC EventT0 Bhabhas ECLTRG histogram and process it
287 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_ECLTRG");
288 tag = "bhabhaECLTRG_CDCT0";
290 if (std::get<0>(processHistogram(h, tag))) {
291 m_cCDCTimeBhaBhaECLTRG->SetFillColor(0);
292 m_cCDCTimeBhaBhaECLTRG->Modified();
293 m_cCDCTimeBhaBhaECLTRG->Update();
294 } else {
295 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
296 if (h) h->Draw();
297 m_cCDCTimeBhaBhaECLTRG->SetFillColor(kGray);
299 }
300
301 // find CDC EventT0 Mumus ECLTRG histogram and process it
302 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_ECLTRG");
303 tag = "mumuECLTRG_CDCT0";
305 if (std::get<0>(processHistogram(h, tag))) {
306 m_cCDCTimeMuMuECLTRG->SetFillColor(0);
307 m_cCDCTimeMuMuECLTRG->Modified();
308 m_cCDCTimeMuMuECLTRG->Update();
309 } else {
310 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
311 if (h) h->Draw();
312 m_cCDCTimeMuMuECLTRG->SetFillColor(kGray);
313 m_cCDCTimeMuMuECLTRG->Draw();
314 }
315
316
317 // --- TOP EventT0 plots for ECLTRG ---
318
319 // find TOP EventT0 Hadrons ECLTRG histogram and process it
320 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_ECLTRG");
321 tag = "hadronECLTRG_TOPT0";
323 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
324 if (processingSuccessful) {
325 m_cTOPTimeHadronsECLTRG->SetFillColor(0);
326 m_cTOPTimeHadronsECLTRG->Modified();
327 m_cTOPTimeHadronsECLTRG->Update();
328 if (*currentT0) {
329 m_ECLTRGHLThadronTOPT0 = *currentT0;
330 }
331 } else {
332 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
333 if (h) h->Draw();
334 m_cTOPTimeHadronsECLTRG->SetFillColor(kGray);
336 }
337
338 // find TOP EventT0 Bhabhas ECLTRG histogram and process it
339 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_ECLTRG");
340 tag = "bhabhaECLTRG_TOPT0";
342 if (std::get<0>(processHistogram(h, tag))) {
343 m_cTOPTimeBhaBhaECLTRG->SetFillColor(0);
344 m_cTOPTimeBhaBhaECLTRG->Modified();
345 m_cTOPTimeBhaBhaECLTRG->Update();
346 } else {
347 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
348 if (h) h->Draw();
349 m_cTOPTimeBhaBhaECLTRG->SetFillColor(kGray);
351 }
352
353 // find TOP EventT0 Mumus ECLTRG histogram and process it
354 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_ECLTRG");
355 tag = "mumuECLTRG_TOPT0";
357 if (std::get<0>(processHistogram(h, tag))) {
358 m_cTOPTimeMuMuECLTRG->SetFillColor(0);
359 m_cTOPTimeMuMuECLTRG->Modified();
360 m_cTOPTimeMuMuECLTRG->Update();
361 } else {
362 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
363 if (h) h->Draw();
364 m_cTOPTimeMuMuECLTRG->SetFillColor(kGray);
365 m_cTOPTimeMuMuECLTRG->Draw();
366 }
367
368
369 // --- SVD EventT0 plots for ECLTRG ---
370
371 // find SVD EventT0 Hadrons ECLTRG histogram and process it
372 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_ECLTRG");
373 tag = "hadronECLTRG_SVDT0";
375 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
376 if (processingSuccessful) {
377 m_cSVDTimeHadronsECLTRG->SetFillColor(0);
378 m_cSVDTimeHadronsECLTRG->Modified();
379 m_cSVDTimeHadronsECLTRG->Update();
380 if (*currentT0) {
381 m_ECLTRGHLThadronSVDT0 = *currentT0;
382 }
383 } else {
384 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
385 if (h) h->Draw();
386 m_cSVDTimeHadronsECLTRG->SetFillColor(kGray);
388 }
389
390 // find SVD EventT0 Bhabhas ECLTRG histogram and process it
391 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_ECLTRG");
392 tag = "bhabhaECLTRG_SVDT0";
394 if (std::get<0>(processHistogram(h, tag))) {
395 m_cSVDTimeBhaBhaECLTRG->SetFillColor(0);
396 m_cSVDTimeBhaBhaECLTRG->Modified();
397 m_cSVDTimeBhaBhaECLTRG->Update();
398 } else {
399 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
400 if (h) h->Draw();
401 m_cSVDTimeBhaBhaECLTRG->SetFillColor(kGray);
403 }
404
405 // find SVD EventT0 Mumus ECLTRG histogram and process it
406 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_ECLTRG");
407 tag = "mumuECLTRG_SVDT0";
409 if (std::get<0>(processHistogram(h, tag))) {
410 m_cSVDTimeMuMuECLTRG->SetFillColor(0);
411 m_cSVDTimeMuMuECLTRG->Modified();
412 m_cSVDTimeMuMuECLTRG->Update();
413 } else {
414 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
415 if (h) h->Draw();
416 m_cSVDTimeMuMuECLTRG->SetFillColor(kGray);
417 m_cSVDTimeMuMuECLTRG->Draw();
418 }
419
420
421}
422
424{
425 // --- ECL EventT0 plots for CDCTRG ---
426
427 // find ECL EventT0 Hadrons CDCTRG histogram and process it
428 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_CDCTRG");
429 TString tag = "hadronCDCTRG_ECLT0";
431 if (std::get<0>(processHistogram(h, tag))) {
432 m_cECLTimeHadronsCDCTRG->SetFillColor(0);
433 m_cECLTimeHadronsCDCTRG->Modified();
434 m_cECLTimeHadronsCDCTRG->Update();
436 } else {
437 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
438 if (h) h->Draw();
439 m_cECLTimeHadronsCDCTRG->SetFillColor(kGray);
441 }
442
443 // find ECL EventT0 Bhabhas CDCTRG histogram and process it
444 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_CDCTRG");
445 tag = "bhabhaCDCTRG_ECLT0";
447 if (std::get<0>(processHistogram(h, tag))) {
448 m_cECLTimeBhaBhaCDCTRG->SetFillColor(0);
449 m_cECLTimeBhaBhaCDCTRG->Modified();
450 m_cECLTimeBhaBhaCDCTRG->Update();
452 } else {
453 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
454 if (h) h->Draw();
455 m_cECLTimeBhaBhaCDCTRG->SetFillColor(kGray);
457 }
458
459 // find ECL EventT0 Mumus CDCTRG histogram and process it
460 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_CDCTRG");
461 tag = "mumuCDCTRG_ECLT0";
463 if (std::get<0>(processHistogram(h, tag))) {
464 m_cECLTimeMuMuCDCTRG->SetFillColor(0);
465 m_cECLTimeMuMuCDCTRG->Modified();
466 m_cECLTimeMuMuCDCTRG->Update();
467 } else {
468 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
469 if (h) h->Draw();
470 m_cECLTimeMuMuCDCTRG->SetFillColor(kGray);
471 m_cECLTimeMuMuCDCTRG->Draw();
472 }
473
474
475 // --- CDC EventT0 plots for CDCTRG ---
476
477 // find CDC EventT0 Hadrons CDCTRG histogram and process it
478 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_CDCTRG");
479 tag = "hadronCDCTRG_CDCT0";
481 if (std::get<0>(processHistogram(h, tag))) {
482 m_cCDCTimeHadronsCDCTRG->SetFillColor(0);
483 m_cCDCTimeHadronsCDCTRG->Modified();
484 m_cCDCTimeHadronsCDCTRG->Update();
486 } else {
487 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
488 if (h) h->Draw();
489 m_cCDCTimeHadronsCDCTRG->SetFillColor(kGray);
491 }
492
493 // find CDC EventT0 Bhabhas CDCTRG histogram and process it
494 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_CDCTRG");
495 tag = "bhabhaCDCTRG_CDCT0";
497 if (std::get<0>(processHistogram(h, tag))) {
498 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(0);
499 m_cCDCTimeBhaBhaCDCTRG->Modified();
500 m_cCDCTimeBhaBhaCDCTRG->Update();
502 } else {
503 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
504 if (h) h->Draw();
505 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(kGray);
507 }
508
509 // find CDC EventT0 Mumus CDCTRG histogram and process it
510 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_CDCTRG");
511 tag = "mumuCDCTRG_CDCT0";
513 if (std::get<0>(processHistogram(h, tag))) {
514 m_cCDCTimeMuMuCDCTRG->SetFillColor(0);
515 m_cCDCTimeMuMuCDCTRG->Modified();
516 m_cCDCTimeMuMuCDCTRG->Update();
517 } else {
518 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
519 if (h) h->Draw();
520 m_cCDCTimeMuMuCDCTRG->SetFillColor(kGray);
521 m_cCDCTimeMuMuCDCTRG->Draw();
522 }
523
524
525 // --- TOP EventT0 plots for CDCTRG ---
526
527 // find TOP EventT0 Hadrons CDCTRG histogram and process it
528 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_CDCTRG");
529 tag = "hadronCDCTRG_TOPT0";
531 if (std::get<0>(processHistogram(h, tag))) {
532 m_cTOPTimeHadronsCDCTRG->SetFillColor(0);
533 m_cTOPTimeHadronsCDCTRG->Modified();
534 m_cTOPTimeHadronsCDCTRG->Update();
536 } else {
537 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
538 if (h) h->Draw();
539 m_cTOPTimeHadronsCDCTRG->SetFillColor(kGray);
541 }
542
543 // find TOP EventT0 Bhabhas CDCTRG histogram and process it
544 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_CDCTRG");
545 tag = "bhabhaCDCTRG_TOPT0";
547 if (std::get<0>(processHistogram(h, tag))) {
548 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(0);
549 m_cTOPTimeBhaBhaCDCTRG->Modified();
550 m_cTOPTimeBhaBhaCDCTRG->Update();
552 } else {
553 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
554 if (h) h->Draw();
555 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(kGray);
557 }
558
559 // find TOP EventT0 Mumus CDCTRG histogram and process it
560 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_CDCTRG");
561 tag = "mumuCDCTRG_TOPT0";
563 if (std::get<0>(processHistogram(h, tag))) {
564 m_cTOPTimeMuMuCDCTRG->SetFillColor(0);
565 m_cTOPTimeMuMuCDCTRG->Modified();
566 m_cTOPTimeMuMuCDCTRG->Update();
567 } else {
568 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
569 if (h) h->Draw();
570 m_cTOPTimeMuMuCDCTRG->SetFillColor(kGray);
571 m_cTOPTimeMuMuCDCTRG->Draw();
572 }
573
574
575 // --- SVD EventT0 plots for CDCTRG ---
576
577 // find SVD EventT0 Hadrons CDCTRG histogram and process it
578 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_CDCTRG");
579 tag = "hadronCDCTRG_SVDT0";
581 if (std::get<0>(processHistogram(h, tag))) {
582 m_cSVDTimeHadronsCDCTRG->SetFillColor(0);
583 m_cSVDTimeHadronsCDCTRG->Modified();
584 m_cSVDTimeHadronsCDCTRG->Update();
586 } else {
587 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
588 if (h) h->Draw();
589 m_cSVDTimeHadronsCDCTRG->SetFillColor(kGray);
591 }
592
593 // find SVD EventT0 Bhabhas CDCTRG histogram and process it
594 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_CDCTRG");
595 tag = "bhabhaCDCTRG_SVDT0";
597 if (std::get<0>(processHistogram(h, tag))) {
598 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(0);
599 m_cSVDTimeBhaBhaCDCTRG->Modified();
600 m_cSVDTimeBhaBhaCDCTRG->Update();
602 } else {
603 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
604 if (h) h->Draw();
605 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(kGray);
607 }
608
609 // find SVD EventT0 Mumus CDCTRG histogram and process it
610 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_CDCTRG");
611 tag = "mumuCDCTRG_SVDT0";
613 if (std::get<0>(processHistogram(h, tag))) {
614 m_cSVDTimeMuMuCDCTRG->SetFillColor(0);
615 m_cSVDTimeMuMuCDCTRG->Modified();
616 m_cSVDTimeMuMuCDCTRG->Update();
617 } else {
618 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
619 if (h) h->Draw();
620 m_cSVDTimeMuMuCDCTRG->SetFillColor(kGray);
621 m_cSVDTimeMuMuCDCTRG->Draw();
622 }
623}
624
626{
627 // --- ECL EventT0 plots for TOPTRG ---
628
629 // find ECL EventT0 Hadrons TOPTRG histogram and process it
630 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_TOPTRG");
631 TString tag = "hadronTOPTRG_ECLT0";
633 if (std::get<0>(processHistogram(h, tag))) {
634 m_cECLTimeHadronsTOPTRG->SetFillColor(0);
635 m_cECLTimeHadronsTOPTRG->Modified();
636 m_cECLTimeHadronsTOPTRG->Update();
638 } else {
639 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
640 if (h) h->Draw();
641 m_cECLTimeHadronsTOPTRG->SetFillColor(kGray);
643 }
644
645 // find ECL EventT0 Bhabhas TOPTRG histogram and process it
646 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_TOPTRG");
647 tag = "bhabhaTOPTRG_ECLT0";
649 if (std::get<0>(processHistogram(h, tag))) {
650 m_cECLTimeBhaBhaTOPTRG->SetFillColor(0);
651 m_cECLTimeBhaBhaTOPTRG->Modified();
652 m_cECLTimeBhaBhaTOPTRG->Update();
654 } else {
655 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
656 if (h) h->Draw();
657 m_cECLTimeBhaBhaTOPTRG->SetFillColor(kGray);
659 }
660
661 // find ECL EventT0 Mumus TOPTRG histogram and process it
662 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_TOPTRG");
663 tag = "mumuTOPTRG_ECLT0";
665 if (std::get<0>(processHistogram(h, tag))) {
666 m_cECLTimeMuMuTOPTRG->SetFillColor(0);
667 m_cECLTimeMuMuTOPTRG->Modified();
668 m_cECLTimeMuMuTOPTRG->Update();
669 } else {
670 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
671 if (h) h->Draw();
672 m_cECLTimeMuMuTOPTRG->SetFillColor(kGray);
673 m_cECLTimeMuMuTOPTRG->Draw();
674 }
675
676
677 // --- CDC EventT0 plots for TOPTRG ---
678
679 // find CDC EventT0 Hadrons TOPTRG histogram and process it
680 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_TOPTRG");
681 tag = "hadronTOPTRG_CDCT0";
683 if (std::get<0>(processHistogram(h, tag))) {
684 m_cCDCTimeHadronsTOPTRG->SetFillColor(0);
685 m_cCDCTimeHadronsTOPTRG->Modified();
686 m_cCDCTimeHadronsTOPTRG->Update();
688 } else {
689 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
690 if (h) h->Draw();
691 m_cCDCTimeHadronsTOPTRG->SetFillColor(kGray);
693 }
694
695 // find CDC EventT0 Bhabhas TOPTRG histogram and process it
696 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_TOPTRG");
697 tag = "bhabhaTOPTRG_CDCT0";
699 if (std::get<0>(processHistogram(h, tag))) {
700 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(0);
701 m_cCDCTimeBhaBhaTOPTRG->Modified();
702 m_cCDCTimeBhaBhaTOPTRG->Update();
704 } else {
705 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
706 if (h) h->Draw();
707 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(kGray);
709 }
710
711 // find CDC EventT0 Mumus TOPTRG histogram and process it
712 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_TOPTRG");
713 tag = "mumuTOPTRG_CDCT0";
715 if (std::get<0>(processHistogram(h, tag))) {
716 m_cCDCTimeMuMuTOPTRG->SetFillColor(0);
717 m_cCDCTimeMuMuTOPTRG->Modified();
718 m_cCDCTimeMuMuTOPTRG->Update();
719 } else {
720 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
721 if (h) h->Draw();
722 m_cCDCTimeMuMuTOPTRG->SetFillColor(kGray);
723 m_cCDCTimeMuMuTOPTRG->Draw();
724 }
725
726
727 // --- TOP EventT0 plots for TOPTRG ---
728
729 // find TOP EventT0 Hadrons TOPTRG histogram and process it
730 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_TOPTRG");
731 tag = "hadronTOPTRG_TOPT0";
733 if (std::get<0>(processHistogram(h, tag))) {
734 m_cTOPTimeHadronsTOPTRG->SetFillColor(0);
735 m_cTOPTimeHadronsTOPTRG->Modified();
736 m_cTOPTimeHadronsTOPTRG->Update();
738 } else {
739 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
740 if (h) h->Draw();
741 m_cTOPTimeHadronsTOPTRG->SetFillColor(kGray);
743 }
744
745 // find TOP EventT0 Bhabhas TOPTRG histogram and process it
746 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_TOPTRG");
747 tag = "bhabhaTOPTRG_TOPT0";
749 if (std::get<0>(processHistogram(h, tag))) {
750 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(0);
751 m_cTOPTimeBhaBhaTOPTRG->Modified();
752 m_cTOPTimeBhaBhaTOPTRG->Update();
754 } else {
755 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
756 if (h) h->Draw();
757 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(kGray);
759 }
760
761 // find TOP EventT0 Mumus TOPTRG histogram and process it
762 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_TOPTRG");
763 tag = "mumuTOPTRG_TOPT0";
765 if (std::get<0>(processHistogram(h, tag))) {
766 m_cTOPTimeMuMuTOPTRG->SetFillColor(0);
767 m_cTOPTimeMuMuTOPTRG->Modified();
768 m_cTOPTimeMuMuTOPTRG->Update();
769 } else {
770 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
771 if (h) h->Draw();
772 m_cTOPTimeMuMuTOPTRG->SetFillColor(kGray);
773 m_cTOPTimeMuMuTOPTRG->Draw();
774 }
775
776
777 // --- SVD EventT0 plots for TOPTRG ---
778
779 // find SVD EventT0 Hadrons TOPTRG histogram and process it
780 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_TOPTRG");
781 tag = "hadronTOPTRG_SVDT0";
783 if (std::get<0>(processHistogram(h, tag))) {
784 m_cSVDTimeHadronsTOPTRG->SetFillColor(0);
785 m_cSVDTimeHadronsTOPTRG->Modified();
786 m_cSVDTimeHadronsTOPTRG->Update();
788 } else {
789 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
790 if (h) h->Draw();
791 m_cSVDTimeHadronsTOPTRG->SetFillColor(kGray);
793 }
794
795 // find SVD EventT0 Bhabhas TOPTRG histogram and process it
796 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_TOPTRG");
797 tag = "bhabhaTOPTRG_SVDT0";
799 if (std::get<0>(processHistogram(h, tag))) {
800 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(0);
801 m_cSVDTimeBhaBhaTOPTRG->Modified();
802 m_cSVDTimeBhaBhaTOPTRG->Update();
804 } else {
805 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
806 if (h) h->Draw();
807 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(kGray);
809 }
810
811 // find SVD EventT0 Mumus TOPTRG histogram and process it
812 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_TOPTRG");
813 tag = "mumuTOPTRG_SVDT0";
815 if (std::get<0>(processHistogram(h, tag))) {
816 m_cSVDTimeMuMuTOPTRG->SetFillColor(0);
817 m_cSVDTimeMuMuTOPTRG->Modified();
818 m_cSVDTimeMuMuTOPTRG->Update();
819 } else {
820 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
821 if (h) h->Draw();
822 m_cSVDTimeMuMuTOPTRG->SetFillColor(kGray);
823 m_cSVDTimeMuMuTOPTRG->Draw();
824 }
825}
826
828{
829 //ECLTRG canvas
830 m_cECLTimeHadronsECLTRG = new TCanvas("ECLTimeHadronsECLTRG", "ECL time hadrons ECLTRG jitter");
831 m_cECLTimeBhaBhaECLTRG = new TCanvas("ECLTimeBhaBhaECLTRG", "ECL time BhaBha ECLTRG jitter");
832 m_cECLTimeMuMuECLTRG = new TCanvas("ECLTimeMuMuECLTRG", "ECL time #mu#mu ECLTRG jitter");
833 m_cCDCTimeHadronsECLTRG = new TCanvas("CDCTimeHadronsECLTRG", "CDC time hadrons ECLTRG jitter");
834 m_cCDCTimeBhaBhaECLTRG = new TCanvas("CDCTimeBhaBhaECLTRG", "CDC time BhaBha ECLTRG jitter");
835 m_cCDCTimeMuMuECLTRG = new TCanvas("CDCTimeMuMuECLTRG", "CDC time #mu#mu ECLTRG jitter");
836 m_cTOPTimeHadronsECLTRG = new TCanvas("TOPTimeHadronsECLTRG", "TOP time hadrons ECLTRG jitter");
837 m_cTOPTimeBhaBhaECLTRG = new TCanvas("TOPTimeBhaBhaECLTRG", "TOP time BhaBha ECLTRG jitter");
838 m_cTOPTimeMuMuECLTRG = new TCanvas("TOPTimeMuMuECLTRG", "TOP time #mu#mu ECLTRG jitter");
839 m_cSVDTimeHadronsECLTRG = new TCanvas("SVDTimeHadronsECLTRG", "SVD time hadrons ECLTRG jitter");
840 m_cSVDTimeBhaBhaECLTRG = new TCanvas("SVDTimeBhaBhaECLTRG", "SVD time BhaBha ECLTRG jitter");
841 m_cSVDTimeMuMuECLTRG = new TCanvas("SVDTimeMuMuECLTRG", "SVD time #mu#mu ECLTRG jitter");
842
843 //CDCTRG canvas
844 m_cECLTimeHadronsCDCTRG = new TCanvas("ECLTimeHadronsCDCTRG", "ECL time hadrons CDCTRG jitter");
845 m_cECLTimeBhaBhaCDCTRG = new TCanvas("ECLTimeBhaBhaCDCTRG", "ECL time BhaBha CDCTRG jitter");
846 m_cECLTimeMuMuCDCTRG = new TCanvas("ECLTimeMuMuCDCTRG", "ECL time #mu#mu CDCTRG jitter");
847 m_cCDCTimeHadronsCDCTRG = new TCanvas("CDCTimeHadronsCDCTRG", "CDC time hadrons CDCTRG jitter");
848 m_cCDCTimeBhaBhaCDCTRG = new TCanvas("CDCTimeBhaBhaCDCTRG", "CDC time BhaBha CDCTRG jitter");
849 m_cCDCTimeMuMuCDCTRG = new TCanvas("CDCTimeMuMuCDCTRG", "CDC time #mu#mu CDCTRG jitter");
850 m_cTOPTimeHadronsCDCTRG = new TCanvas("TOPTimeHadronsCDCTRG", "TOP time hadrons CDCTRG jitter");
851 m_cTOPTimeBhaBhaCDCTRG = new TCanvas("TOPTimeBhaBhaCDCTRG", "TOP time BhaBha CDCTRG jitter");
852 m_cTOPTimeMuMuCDCTRG = new TCanvas("TOPTimeMuMuCDCTRG", "TOP time #mu#mu CDCTRG jitter");
853 m_cSVDTimeHadronsCDCTRG = new TCanvas("SVDTimeHadronsCDCTRG", "SVD time hadrons CDCTRG jitter");
854 m_cSVDTimeBhaBhaCDCTRG = new TCanvas("SVDTimeBhaBhaCDCTRG", "SVD time BhaBha CDCTRG jitter");
855 m_cSVDTimeMuMuCDCTRG = new TCanvas("SVDTimeMuMuCDCTRG", "SVD time #mu#mu CDCTRG jitter");
856
857 //TOPTRG canvas
858 m_cECLTimeHadronsTOPTRG = new TCanvas("ECLTimeHadronsTOPTRG", "ECL time hadrons TOPTRG jitter");
859 m_cECLTimeBhaBhaTOPTRG = new TCanvas("ECLTimeBhaBhaTOPTRG", "ECL time BhaBha TOPTRG jitter");
860 m_cECLTimeMuMuTOPTRG = new TCanvas("ECLTimeMuMuTOPTRG", "ECL time #mu#mu TOPTRG jitter");
861 m_cCDCTimeHadronsTOPTRG = new TCanvas("CDCTimeHadronsTOPTRG", "CDC time hadrons TOPTRG jitter");
862 m_cCDCTimeBhaBhaTOPTRG = new TCanvas("CDCTimeBhaBhaTOPTRG", "CDC time BhaBha TOPTRG jitter");
863 m_cCDCTimeMuMuTOPTRG = new TCanvas("CDCTimeMuMuTOPTRG", "CDC time #mu#mu TOPTRG jitter");
864 m_cTOPTimeHadronsTOPTRG = new TCanvas("TOPTimeHadronsTOPTRG", "TOP time hadrons TOPTRG jitter");
865 m_cTOPTimeBhaBhaTOPTRG = new TCanvas("TOPTimeBhaBhaTOPTRG", "TOP time BhaBha TOPTRG jitter");
866 m_cTOPTimeMuMuTOPTRG = new TCanvas("TOPTimeMuMuTOPTRG", "TOP time #mu#mu TOPTRG jitter");
867 m_cSVDTimeHadronsTOPTRG = new TCanvas("SVDTimeHadronsTOPTRG", "SVD time hadrons TOPTRG jitter");
868 m_cSVDTimeBhaBhaTOPTRG = new TCanvas("SVDTimeBhaBhaTOPTRG", "SVD time BhaBha TOPTRG jitter");
869 m_cSVDTimeMuMuTOPTRG = new TCanvas("SVDTimeMuMuTOPTRG", "SVD time #mu#mu TOPTRG jitter");
870}
871
873{
875 m_cECLTimeBhaBhaECLTRG->Clear();
876 m_cECLTimeMuMuECLTRG->Clear();
878 m_cCDCTimeBhaBhaECLTRG->Clear();
879 m_cCDCTimeMuMuECLTRG->Clear();
881 m_cTOPTimeBhaBhaECLTRG->Clear();
882 m_cTOPTimeMuMuECLTRG->Clear();
884 m_cSVDTimeBhaBhaECLTRG->Clear();
885 m_cSVDTimeMuMuECLTRG->Clear();
886
888 m_cECLTimeBhaBhaCDCTRG->Clear();
889 m_cECLTimeMuMuCDCTRG->Clear();
891 m_cCDCTimeBhaBhaCDCTRG->Clear();
892 m_cCDCTimeMuMuCDCTRG->Clear();
894 m_cTOPTimeBhaBhaCDCTRG->Clear();
895 m_cTOPTimeMuMuCDCTRG->Clear();
897 m_cSVDTimeBhaBhaCDCTRG->Clear();
898 m_cSVDTimeMuMuCDCTRG->Clear();
899
901 m_cECLTimeBhaBhaTOPTRG->Clear();
902 m_cECLTimeMuMuTOPTRG->Clear();
904 m_cCDCTimeBhaBhaTOPTRG->Clear();
905 m_cCDCTimeMuMuTOPTRG->Clear();
907 m_cTOPTimeBhaBhaTOPTRG->Clear();
908 m_cTOPTimeMuMuTOPTRG->Clear();
910 m_cSVDTimeBhaBhaTOPTRG->Clear();
911 m_cSVDTimeMuMuTOPTRG->Clear();
912}
913
915{
916 m_cECLTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf(");
917 m_cECLTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
918 m_cECLTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
919 m_cCDCTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
920 m_cCDCTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
921 m_cCDCTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
922 m_cTOPTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
923 m_cTOPTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
924 m_cTOPTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
925 m_cSVDTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
926 m_cSVDTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
927 m_cSVDTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
928
929 m_cECLTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
930 m_cECLTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
931 m_cECLTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
932 m_cCDCTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
933 m_cCDCTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
934 m_cCDCTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
935 m_cTOPTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
936 m_cTOPTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
937 m_cTOPTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
938 m_cSVDTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
939 m_cSVDTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
940 m_cSVDTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
941
942 m_cECLTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
943 m_cECLTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
944 m_cECLTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
945 m_cCDCTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
946 m_cCDCTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
947 m_cCDCTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
948 m_cTOPTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
949 m_cTOPTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
950 m_cTOPTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
951 m_cSVDTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
952 m_cSVDTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
953 m_cSVDTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf)");
954}
955
956
958{
971
984
997}
998
999
1001{
1002 // Set the deltaT0 values to be accissble on the DQM web page for the shifters, with SVD EventT0 being the reference
1003 // As we are only interested in trends, just the raw difference is used, no (error) weighted values
1004 // However, not all values might exist, so make the algorithm fault tolerant
1005 if (m_ECLTRGHLThadronSVDT0 > -998) {
1006 if (m_ECLTRGHLThadronCDCT0 > -998) {
1007 setEpicsPV("ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", m_ECLTRGHLThadronCDCT0 - m_ECLTRGHLThadronSVDT0);
1008 }
1009 if (m_ECLTRGHLThadronECLT0 > -998) {
1010 setEpicsPV("ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", m_ECLTRGHLThadronECLT0 - m_ECLTRGHLThadronSVDT0);
1011 }
1012 if (m_ECLTRGHLThadronTOPT0 > -998) {
1013 setEpicsPV("ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", m_ECLTRGHLThadronTOPT0 - m_ECLTRGHLThadronSVDT0);
1014 }
1015 }
1016}
TCanvas * m_cCDCTimeMuMuECLTRG
Canvas for CDC time ECLTRG jitter mumu.
TCanvas * m_cECLTimeHadronsECLTRG
Canvas for ECL time ECLTRG jitter hadrons.
void initialize() override final
create TCanvas and MonitoringObject
TCanvas * m_cTOPTimeHadronsECLTRG
Canvas for TOP time ECLTRG jitter hadrons.
TCanvas * m_cECLTimeHadronsCDCTRG
Canvas for ECL time CDCTRG jitter hadrons.
TCanvas * m_cECLTimeMuMuECLTRG
Canvas for ECL time ECLTRG jitter mumu.
TCanvas * m_cCDCTimeHadronsECLTRG
Canvas for CDC time ECLTRG jitter hadrons.
static double fDoubleGaus(double *x, double *par)
double gaussian fitting function for the jitter distribution
double m_ECLTRGHLThadronCDCT0
CDC T0 for ECLTRG jitter for HLT hadron events.
double m_ECLTRGHLThadronTOPT0
TOP T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeBhaBhaECLTRG
Canvas for CDC time ECLTRG jitter bhabhas.
TCanvas * m_cSVDTimeMuMuTOPTRG
Canvas for SVD time TOPTRG jitter mumu.
double m_ECLTRGHLThadronSVDT0
SVD T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeHadronsTOPTRG
Canvas for CDC time TOPTRG jitter hadrons.
TCanvas * m_cECLTimeBhaBhaECLTRG
Canvas for ECL time ECLTRG jitter bhabhas.
TCanvas * m_cCDCTimeBhaBhaCDCTRG
Canvas for CDC time CDCTRG jitter bhabhas.
std::tuple< bool, std::optional< double > > processHistogram(TH1 *h, TString tag, bool retrieveMeanT0=false)
process the EventT0 distribution fitting with two gaussians filling the MonitoringObject
std::string m_prefixCanvas
prefix to be added to canvas name when saved as pdf
void analyseECLTRGEventT0Distributions(bool retrieveDeltas=true)
Analyse the ECLTRG EventT0 distributions The only function to retrieve deltaT values ECL-SVD,...
double m_ECLTRGHLThadronECLT0
ECL T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeMuMuCDCTRG
Canvas for CDC time CDCTRG jitter mumu.
MonitoringObject * m_monObj
MonitoringObject to be produced by this module.
TCanvas * m_cCDCTimeMuMuTOPTRG
Canvas for CDC time TOPTRG jitter mumu.
TCanvas * m_cCDCTimeHadronsCDCTRG
Canvas for CDC time CDCTRG jitter hadrons.
TCanvas * m_cTOPTimeHadronsTOPTRG
Canvas for TOP time TOPTRG jitter hadrons.
void analyseTOPTRGEventT0Distributions()
Analyse the TOPTRG EventT0 distributions.
void event() override final
fit the histograms in the event
TCanvas * m_cECLTimeBhaBhaTOPTRG
Canvas for ECL time TOPTRG jitter bhabhas.
TCanvas * m_cTOPTimeBhaBhaECLTRG
Canvas for TOP time ECLTRG jitter bhabhas.
TCanvas * m_cSVDTimeHadronsTOPTRG
Canvas for SVD time TOPTRG jitter hadrons.
TCanvas * m_cTOPTimeBhaBhaTOPTRG
Canvas for TOP time TOPTRG jitter bhabhas.
TCanvas * m_cSVDTimeBhaBhaECLTRG
Canvas for SVD time ECLTRG jitter bhabhas.
TCanvas * m_cTOPTimeBhaBhaCDCTRG
Canvas for TOP time CDCTRG jitter bhabhas.
uint m_nEntriesMin
minimum number of entries to process the histogram
TCanvas * m_cECLTimeMuMuCDCTRG
Canvas for ECL time CDCTRG jitter mumu.
TCanvas * m_cSVDTimeMuMuCDCTRG
Canvas for SVD time CDCTRG jitter mumu.
TCanvas * m_cTOPTimeMuMuTOPTRG
Canvas for TOP time TOPTRG jitter mumu.
TCanvas * m_cECLTimeBhaBhaCDCTRG
Canvas for ECL time CDCTRG jitter bhabhas.
void endRun() override final
final fit of T0 distributions
TCanvas * m_cTOPTimeHadronsCDCTRG
Canvas for TOP time CDCTRG jitter hadrons.
TCanvas * m_cECLTimeHadronsTOPTRG
Canvas for ECL time TOPTRG jitter hadrons.
TCanvas * m_cCDCTimeBhaBhaTOPTRG
Canvas for CDC time TOPTRG jitter bhabhas.
TCanvas * m_cSVDTimeHadronsECLTRG
Canvas for SVD time ECLTRG jitter hadrons.
TCanvas * m_cECLTimeMuMuTOPTRG
Canvas for ECL time TOPTRG jitter mumu.
TCanvas * m_cTOPTimeMuMuCDCTRG
Canvas for TOP time CDCTRG jitter mumu.
TCanvas * m_cSVDTimeMuMuECLTRG
Canvas for SVD time ECLTRG jitter mumu.
TCanvas * m_cSVDTimeHadronsCDCTRG
Canvas for SVD time CDCTRG jitter hadrons.
TCanvas * m_cTOPTimeMuMuECLTRG
Canvas for TOP time ECLTRG jitter mumu.
TCanvas * m_cSVDTimeBhaBhaCDCTRG
Canvas for SVD time CDCTRG jitter bhabhas.
TCanvas * m_cSVDTimeBhaBhaTOPTRG
Canvas for SVD time TOPTRG jitter bhabhas.
void analyseCDCTRGEventT0Distributions()
Analyse the CDCTRG EventT0 distributions.
int registerEpicsPV(const std::string &pvname, const std::string &keyname="")
EPICS related Functions.
static MonitoringObject * getMonitoringObject(const std::string &name)
Get MonitoringObject with given name (new object is created if non-existing)
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
DQMHistAnalysisModule()
Constructor / Destructor.
void setEpicsPV(const std::string &keyname, double value)
Write value to a EPICS PV.
void setDescription(const std::string &description)
Sets the description of the module.
Definition Module.cc:214
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition Module.h:559
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition Module.h:649
Abstract base class for different kinds of events.