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
43
45
47{
48 gROOT->cd();
49
51
52 m_monObj = getMonitoringObject("eventT0");
53
54 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0");
55 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0");
56 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0");
57}
58
59
61{
63
68}
69
71{
76
80
82}
83
85{
86 // final calculation of the mean values for MiraBelle
90
91 if (m_printCanvas) {
93 }
94}
95
97{
99}
100
102{
103 double N = par[0];
104 double frac = par[1];
105 double mean = par[2];
106 double sigma = par[3];
107 double mean2 = par[4];
108 double sigma2 = par[5];
109
110 return N * frac * TMath::Gaus(x[0], mean, sigma) + N * (1 - frac) * TMath::Gaus(x[0], mean2, sigma2);
111}
112
113std::tuple<bool, std::optional<double>> DQMHistAnalysisEventT0TriggerJitterModule::processHistogram(TH1* h, TString tag,
114 bool retrieveMeanT0)
115{
116
117 if (h == nullptr) {
118 B2DEBUG(20, "h == nullptr");
119 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
120 return {false, {}};
121 }
122
123 // The default value for the EventT0 value is -1000, but bins start at -100, so we might mostly fill the underflow bin if
124 // EventT0 for a detector is not present. And also the nominal EventT0 might be too big or too small. Only use the content
125 // of the actually useful bins to decide whether or not to fit the histogram.
126 auto nValidEntries = h->GetEntries() - h->GetBinContent(0) - h->GetBinContent(h->GetNbinsX() + 1);
127 if (static_cast<uint>(nValidEntries) < m_nEntriesMin) {
128 B2DEBUG(20, "not enough entries");
129 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
130 return {false, {}};
131 }
132
133
134 //scale the histogram only with content of valid bins, ignore over and underflow bins
135 h->Scale(1. / nValidEntries);
136 h->GetXaxis()->SetRangeUser(-50, 50);
137
138 //define the fitting function
140 fitf.SetParNames("N", "f_{1}", "#mu_{1}", "#sigma_{1}", "#mu_{2}", "#sigma_{2}");
141 fitf.SetParameters(0.1, 0.8, 0, 5, 0, 15);
142 fitf.SetParLimits(1, 0, 1); //fraction
143 fitf.SetParLimits(3, 0, 100); //sigma1
144 fitf.SetParLimits(5, 0, 100); //sigma2
145
146 if (h->Fit(&fitf, "SR+") != 0) {
147 B2DEBUG(20, "failed fit");
148 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
149 return {false, {}};
150 }
151
152 Double_t par[6];
153 fitf.GetParameters(&par[0]);
154 Double_t parErr[6];
155 for (int i = 0; i < 6; i++)
156 parErr[i] = fitf.GetParError(i) ;
157
158
159 //define gaussian components
160 TF1 gauss1("gauss1", "gaus", -100, 100);
161 TF1 gauss2("gauss2", "gaus", -100, 100);
162
163 gauss1.SetLineColor(kBlue);
164 gauss1.SetLineStyle(kDashed);
165 gauss1.SetParameters(par[0]*par[1], par[2], par[3]);
166
167 gauss2.SetLineColor(kRed);
168 gauss2.SetLineStyle(kDashed);
169 gauss2.SetParameters(par[0] * (1 - par[1]), par[4], par[5]);
170
171 m_monObj->setVariable(Form("fit_%s", tag.Data()), 1);
172 m_monObj->setVariable(Form("N_%s", tag.Data()), nValidEntries, TMath::Sqrt(nValidEntries));
173 m_monObj->setVariable(Form("f_%s", tag.Data()), par[1], parErr[1]);
174 m_monObj->setVariable(Form("mean1_%s", tag.Data()), par[2], parErr[2]);
175 m_monObj->setVariable(Form("sigma1_%s", tag.Data()), par[3], parErr[3]);
176 m_monObj->setVariable(Form("mean2_%s", tag.Data()), par[4], parErr[4]);
177 m_monObj->setVariable(Form("sigma2_%s", tag.Data()), par[5], parErr[5]);
178
179 //SETUP gSTYLE - all plots
180 gStyle->SetOptFit(1111);
181
182 h->DrawClone();
183 fitf.DrawClone("same");
184 gauss1.DrawClone("same");
185 gauss2.DrawClone("same");
186
187 if (retrieveMeanT0) {
188 // return mean of the core Gaussian
189 return {true, par[2]};
190 }
191 return {true, {}};
192
193
194}
195
197{
198
199 const bool retrieveMeanT0 = retrieveDeltas;
200 bool processingSuccessful = false;
201 std::optional<double> currentT0;
202
203 // --- ECL EventT0 plots for ECLTRG ---
204
205 // find ECL EventT0 Hadrons ECLTRG histogram and process it
206 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_ECLTRG");
207 TString tag = "hadronECLTRG_ECLT0";
209 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
210 if (processingSuccessful) {
211 m_cECLTimeHadronsECLTRG->SetFillColor(0);
212 m_cECLTimeHadronsECLTRG->Modified();
213 m_cECLTimeHadronsECLTRG->Update();
214 if (*currentT0) {
215 m_ECLTRGHLThadronECLT0 = *currentT0;
216 }
217 } else {
218 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
219 if (h) h->Draw();
220 m_cECLTimeHadronsECLTRG->SetFillColor(kGray);
222 }
223
224 // find ECL EventT0 Bhabhas ECLTRG histogram and process it
225 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_ECLTRG");
226 tag = "bhabhaECLTRG_ECLT0";
228 if (std::get<0>(processHistogram(h, tag))) {
229 m_cECLTimeBhaBhaECLTRG->SetFillColor(0);
230 m_cECLTimeBhaBhaECLTRG->Modified();
231 m_cECLTimeBhaBhaECLTRG->Update();
232 } else {
233 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
234 if (h) h->Draw();
235 m_cECLTimeBhaBhaECLTRG->SetFillColor(kGray);
237 }
238
239 // find ECL EventT0 Mumus ECLTRG histogram and process it
240 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_ECLTRG");
241 tag = "mumuECLTRG_ECLT0";
243 if (std::get<0>(processHistogram(h, tag))) {
244 m_cECLTimeMuMuECLTRG->SetFillColor(0);
245 m_cECLTimeMuMuECLTRG->Modified();
246 m_cECLTimeMuMuECLTRG->Update();
247 } else {
248 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
249 if (h) h->Draw();
250 m_cECLTimeMuMuECLTRG->SetFillColor(kGray);
251 m_cECLTimeMuMuECLTRG->Draw();
252 }
253
254
255 // --- CDC EventT0 plots for ECLTRG ---
256
257 // find CDC EventT0 Hadrons ECLTRG histogram and process it
258 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_ECLTRG");
259 tag = "hadronECLTRG_CDCT0";
261 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
262 if (processingSuccessful) {
263 m_cCDCTimeHadronsECLTRG->SetFillColor(0);
264 m_cCDCTimeHadronsECLTRG->Modified();
265 m_cCDCTimeHadronsECLTRG->Update();
266 if (*currentT0) {
267 m_ECLTRGHLThadronCDCT0 = *currentT0;
268 }
269 } else {
270 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
271 if (h) h->Draw();
272 m_cCDCTimeHadronsECLTRG->SetFillColor(kGray);
274 }
275
276 // find CDC EventT0 Bhabhas ECLTRG histogram and process it
277 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_ECLTRG");
278 tag = "bhabhaECLTRG_CDCT0";
280 if (std::get<0>(processHistogram(h, tag))) {
281 m_cCDCTimeBhaBhaECLTRG->SetFillColor(0);
282 m_cCDCTimeBhaBhaECLTRG->Modified();
283 m_cCDCTimeBhaBhaECLTRG->Update();
284 } else {
285 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
286 if (h) h->Draw();
287 m_cCDCTimeBhaBhaECLTRG->SetFillColor(kGray);
289 }
290
291 // find CDC EventT0 Mumus ECLTRG histogram and process it
292 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_ECLTRG");
293 tag = "mumuECLTRG_CDCT0";
295 if (std::get<0>(processHistogram(h, tag))) {
296 m_cCDCTimeMuMuECLTRG->SetFillColor(0);
297 m_cCDCTimeMuMuECLTRG->Modified();
298 m_cCDCTimeMuMuECLTRG->Update();
299 } else {
300 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
301 if (h) h->Draw();
302 m_cCDCTimeMuMuECLTRG->SetFillColor(kGray);
303 m_cCDCTimeMuMuECLTRG->Draw();
304 }
305
306
307 // --- TOP EventT0 plots for ECLTRG ---
308
309 // find TOP EventT0 Hadrons ECLTRG histogram and process it
310 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_ECLTRG");
311 tag = "hadronECLTRG_TOPT0";
313 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
314 if (processingSuccessful) {
315 m_cTOPTimeHadronsECLTRG->SetFillColor(0);
316 m_cTOPTimeHadronsECLTRG->Modified();
317 m_cTOPTimeHadronsECLTRG->Update();
318 if (*currentT0) {
319 m_ECLTRGHLThadronTOPT0 = *currentT0;
320 }
321 } else {
322 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
323 if (h) h->Draw();
324 m_cTOPTimeHadronsECLTRG->SetFillColor(kGray);
326 }
327
328 // find TOP EventT0 Bhabhas ECLTRG histogram and process it
329 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_ECLTRG");
330 tag = "bhabhaECLTRG_TOPT0";
332 if (std::get<0>(processHistogram(h, tag))) {
333 m_cTOPTimeBhaBhaECLTRG->SetFillColor(0);
334 m_cTOPTimeBhaBhaECLTRG->Modified();
335 m_cTOPTimeBhaBhaECLTRG->Update();
336 } else {
337 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
338 if (h) h->Draw();
339 m_cTOPTimeBhaBhaECLTRG->SetFillColor(kGray);
341 }
342
343 // find TOP EventT0 Mumus ECLTRG histogram and process it
344 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_ECLTRG");
345 tag = "mumuECLTRG_TOPT0";
347 if (std::get<0>(processHistogram(h, tag))) {
348 m_cTOPTimeMuMuECLTRG->SetFillColor(0);
349 m_cTOPTimeMuMuECLTRG->Modified();
350 m_cTOPTimeMuMuECLTRG->Update();
351 } else {
352 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
353 if (h) h->Draw();
354 m_cTOPTimeMuMuECLTRG->SetFillColor(kGray);
355 m_cTOPTimeMuMuECLTRG->Draw();
356 }
357
358
359 // --- SVD EventT0 plots for ECLTRG ---
360
361 // find SVD EventT0 Hadrons ECLTRG histogram and process it
362 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_ECLTRG");
363 tag = "hadronECLTRG_SVDT0";
365 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
366 if (processingSuccessful) {
367 m_cSVDTimeHadronsECLTRG->SetFillColor(0);
368 m_cSVDTimeHadronsECLTRG->Modified();
369 m_cSVDTimeHadronsECLTRG->Update();
370 if (*currentT0) {
371 m_ECLTRGHLThadronSVDT0 = *currentT0;
372 }
373 } else {
374 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
375 if (h) h->Draw();
376 m_cSVDTimeHadronsECLTRG->SetFillColor(kGray);
378 }
379
380 // find SVD EventT0 Bhabhas ECLTRG histogram and process it
381 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_ECLTRG");
382 tag = "bhabhaECLTRG_SVDT0";
384 if (std::get<0>(processHistogram(h, tag))) {
385 m_cSVDTimeBhaBhaECLTRG->SetFillColor(0);
386 m_cSVDTimeBhaBhaECLTRG->Modified();
387 m_cSVDTimeBhaBhaECLTRG->Update();
388 } else {
389 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
390 if (h) h->Draw();
391 m_cSVDTimeBhaBhaECLTRG->SetFillColor(kGray);
393 }
394
395 // find SVD EventT0 Mumus ECLTRG histogram and process it
396 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_ECLTRG");
397 tag = "mumuECLTRG_SVDT0";
399 if (std::get<0>(processHistogram(h, tag))) {
400 m_cSVDTimeMuMuECLTRG->SetFillColor(0);
401 m_cSVDTimeMuMuECLTRG->Modified();
402 m_cSVDTimeMuMuECLTRG->Update();
403 } else {
404 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
405 if (h) h->Draw();
406 m_cSVDTimeMuMuECLTRG->SetFillColor(kGray);
407 m_cSVDTimeMuMuECLTRG->Draw();
408 }
409
410
411}
412
414{
415 // --- ECL EventT0 plots for CDCTRG ---
416
417 // find ECL EventT0 Hadrons CDCTRG histogram and process it
418 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_CDCTRG");
419 TString tag = "hadronCDCTRG_ECLT0";
421 if (std::get<0>(processHistogram(h, tag))) {
422 m_cECLTimeHadronsCDCTRG->SetFillColor(0);
423 m_cECLTimeHadronsCDCTRG->Modified();
424 m_cECLTimeHadronsCDCTRG->Update();
426 } else {
427 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
428 if (h) h->Draw();
429 m_cECLTimeHadronsCDCTRG->SetFillColor(kGray);
431 }
432
433 // find ECL EventT0 Bhabhas CDCTRG histogram and process it
434 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_CDCTRG");
435 tag = "bhabhaCDCTRG_ECLT0";
437 if (std::get<0>(processHistogram(h, tag))) {
438 m_cECLTimeBhaBhaCDCTRG->SetFillColor(0);
439 m_cECLTimeBhaBhaCDCTRG->Modified();
440 m_cECLTimeBhaBhaCDCTRG->Update();
442 } else {
443 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
444 if (h) h->Draw();
445 m_cECLTimeBhaBhaCDCTRG->SetFillColor(kGray);
447 }
448
449 // find ECL EventT0 Mumus CDCTRG histogram and process it
450 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_CDCTRG");
451 tag = "mumuCDCTRG_ECLT0";
453 if (std::get<0>(processHistogram(h, tag))) {
454 m_cECLTimeMuMuCDCTRG->SetFillColor(0);
455 m_cECLTimeMuMuCDCTRG->Modified();
456 m_cECLTimeMuMuCDCTRG->Update();
457 } else {
458 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
459 if (h) h->Draw();
460 m_cECLTimeMuMuCDCTRG->SetFillColor(kGray);
461 m_cECLTimeMuMuCDCTRG->Draw();
462 }
463
464
465 // --- CDC EventT0 plots for CDCTRG ---
466
467 // find CDC EventT0 Hadrons CDCTRG histogram and process it
468 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_CDCTRG");
469 tag = "hadronCDCTRG_CDCT0";
471 if (std::get<0>(processHistogram(h, tag))) {
472 m_cCDCTimeHadronsCDCTRG->SetFillColor(0);
473 m_cCDCTimeHadronsCDCTRG->Modified();
474 m_cCDCTimeHadronsCDCTRG->Update();
476 } else {
477 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
478 if (h) h->Draw();
479 m_cCDCTimeHadronsCDCTRG->SetFillColor(kGray);
481 }
482
483 // find CDC EventT0 Bhabhas CDCTRG histogram and process it
484 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_CDCTRG");
485 tag = "bhabhaCDCTRG_CDCT0";
487 if (std::get<0>(processHistogram(h, tag))) {
488 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(0);
489 m_cCDCTimeBhaBhaCDCTRG->Modified();
490 m_cCDCTimeBhaBhaCDCTRG->Update();
492 } else {
493 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
494 if (h) h->Draw();
495 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(kGray);
497 }
498
499 // find CDC EventT0 Mumus CDCTRG histogram and process it
500 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_CDCTRG");
501 tag = "mumuCDCTRG_CDCT0";
503 if (std::get<0>(processHistogram(h, tag))) {
504 m_cCDCTimeMuMuCDCTRG->SetFillColor(0);
505 m_cCDCTimeMuMuCDCTRG->Modified();
506 m_cCDCTimeMuMuCDCTRG->Update();
507 } else {
508 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
509 if (h) h->Draw();
510 m_cCDCTimeMuMuCDCTRG->SetFillColor(kGray);
511 m_cCDCTimeMuMuCDCTRG->Draw();
512 }
513
514
515 // --- TOP EventT0 plots for CDCTRG ---
516
517 // find TOP EventT0 Hadrons CDCTRG histogram and process it
518 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_CDCTRG");
519 tag = "hadronCDCTRG_TOPT0";
521 if (std::get<0>(processHistogram(h, tag))) {
522 m_cTOPTimeHadronsCDCTRG->SetFillColor(0);
523 m_cTOPTimeHadronsCDCTRG->Modified();
524 m_cTOPTimeHadronsCDCTRG->Update();
526 } else {
527 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
528 if (h) h->Draw();
529 m_cTOPTimeHadronsCDCTRG->SetFillColor(kGray);
531 }
532
533 // find TOP EventT0 Bhabhas CDCTRG histogram and process it
534 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_CDCTRG");
535 tag = "bhabhaCDCTRG_TOPT0";
537 if (std::get<0>(processHistogram(h, tag))) {
538 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(0);
539 m_cTOPTimeBhaBhaCDCTRG->Modified();
540 m_cTOPTimeBhaBhaCDCTRG->Update();
542 } else {
543 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
544 if (h) h->Draw();
545 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(kGray);
547 }
548
549 // find TOP EventT0 Mumus CDCTRG histogram and process it
550 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_CDCTRG");
551 tag = "mumuCDCTRG_TOPT0";
553 if (std::get<0>(processHistogram(h, tag))) {
554 m_cTOPTimeMuMuCDCTRG->SetFillColor(0);
555 m_cTOPTimeMuMuCDCTRG->Modified();
556 m_cTOPTimeMuMuCDCTRG->Update();
557 } else {
558 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
559 if (h) h->Draw();
560 m_cTOPTimeMuMuCDCTRG->SetFillColor(kGray);
561 m_cTOPTimeMuMuCDCTRG->Draw();
562 }
563
564
565 // --- SVD EventT0 plots for CDCTRG ---
566
567 // find SVD EventT0 Hadrons CDCTRG histogram and process it
568 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_CDCTRG");
569 tag = "hadronCDCTRG_SVDT0";
571 if (std::get<0>(processHistogram(h, tag))) {
572 m_cSVDTimeHadronsCDCTRG->SetFillColor(0);
573 m_cSVDTimeHadronsCDCTRG->Modified();
574 m_cSVDTimeHadronsCDCTRG->Update();
576 } else {
577 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
578 if (h) h->Draw();
579 m_cSVDTimeHadronsCDCTRG->SetFillColor(kGray);
581 }
582
583 // find SVD EventT0 Bhabhas CDCTRG histogram and process it
584 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_CDCTRG");
585 tag = "bhabhaCDCTRG_SVDT0";
587 if (std::get<0>(processHistogram(h, tag))) {
588 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(0);
589 m_cSVDTimeBhaBhaCDCTRG->Modified();
590 m_cSVDTimeBhaBhaCDCTRG->Update();
592 } else {
593 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
594 if (h) h->Draw();
595 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(kGray);
597 }
598
599 // find SVD EventT0 Mumus CDCTRG histogram and process it
600 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_CDCTRG");
601 tag = "mumuCDCTRG_SVDT0";
603 if (std::get<0>(processHistogram(h, tag))) {
604 m_cSVDTimeMuMuCDCTRG->SetFillColor(0);
605 m_cSVDTimeMuMuCDCTRG->Modified();
606 m_cSVDTimeMuMuCDCTRG->Update();
607 } else {
608 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
609 if (h) h->Draw();
610 m_cSVDTimeMuMuCDCTRG->SetFillColor(kGray);
611 m_cSVDTimeMuMuCDCTRG->Draw();
612 }
613}
614
616{
617 // --- ECL EventT0 plots for TOPTRG ---
618
619 // find ECL EventT0 Hadrons TOPTRG histogram and process it
620 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_TOPTRG");
621 TString tag = "hadronTOPTRG_ECLT0";
623 if (std::get<0>(processHistogram(h, tag))) {
624 m_cECLTimeHadronsTOPTRG->SetFillColor(0);
625 m_cECLTimeHadronsTOPTRG->Modified();
626 m_cECLTimeHadronsTOPTRG->Update();
628 } else {
629 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
630 if (h) h->Draw();
631 m_cECLTimeHadronsTOPTRG->SetFillColor(kGray);
633 }
634
635 // find ECL EventT0 Bhabhas TOPTRG histogram and process it
636 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_TOPTRG");
637 tag = "bhabhaTOPTRG_ECLT0";
639 if (std::get<0>(processHistogram(h, tag))) {
640 m_cECLTimeBhaBhaTOPTRG->SetFillColor(0);
641 m_cECLTimeBhaBhaTOPTRG->Modified();
642 m_cECLTimeBhaBhaTOPTRG->Update();
644 } else {
645 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
646 if (h) h->Draw();
647 m_cECLTimeBhaBhaTOPTRG->SetFillColor(kGray);
649 }
650
651 // find ECL EventT0 Mumus TOPTRG histogram and process it
652 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_TOPTRG");
653 tag = "mumuTOPTRG_ECLT0";
655 if (std::get<0>(processHistogram(h, tag))) {
656 m_cECLTimeMuMuTOPTRG->SetFillColor(0);
657 m_cECLTimeMuMuTOPTRG->Modified();
658 m_cECLTimeMuMuTOPTRG->Update();
659 } else {
660 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
661 if (h) h->Draw();
662 m_cECLTimeMuMuTOPTRG->SetFillColor(kGray);
663 m_cECLTimeMuMuTOPTRG->Draw();
664 }
665
666
667 // --- CDC EventT0 plots for TOPTRG ---
668
669 // find CDC EventT0 Hadrons TOPTRG histogram and process it
670 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_TOPTRG");
671 tag = "hadronTOPTRG_CDCT0";
673 if (std::get<0>(processHistogram(h, tag))) {
674 m_cCDCTimeHadronsTOPTRG->SetFillColor(0);
675 m_cCDCTimeHadronsTOPTRG->Modified();
676 m_cCDCTimeHadronsTOPTRG->Update();
678 } else {
679 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
680 if (h) h->Draw();
681 m_cCDCTimeHadronsTOPTRG->SetFillColor(kGray);
683 }
684
685 // find CDC EventT0 Bhabhas TOPTRG histogram and process it
686 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_TOPTRG");
687 tag = "bhabhaTOPTRG_CDCT0";
689 if (std::get<0>(processHistogram(h, tag))) {
690 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(0);
691 m_cCDCTimeBhaBhaTOPTRG->Modified();
692 m_cCDCTimeBhaBhaTOPTRG->Update();
694 } else {
695 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
696 if (h) h->Draw();
697 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(kGray);
699 }
700
701 // find CDC EventT0 Mumus TOPTRG histogram and process it
702 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_TOPTRG");
703 tag = "mumuTOPTRG_CDCT0";
705 if (std::get<0>(processHistogram(h, tag))) {
706 m_cCDCTimeMuMuTOPTRG->SetFillColor(0);
707 m_cCDCTimeMuMuTOPTRG->Modified();
708 m_cCDCTimeMuMuTOPTRG->Update();
709 } else {
710 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
711 if (h) h->Draw();
712 m_cCDCTimeMuMuTOPTRG->SetFillColor(kGray);
713 m_cCDCTimeMuMuTOPTRG->Draw();
714 }
715
716
717 // --- TOP EventT0 plots for TOPTRG ---
718
719 // find TOP EventT0 Hadrons TOPTRG histogram and process it
720 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_TOPTRG");
721 tag = "hadronTOPTRG_TOPT0";
723 if (std::get<0>(processHistogram(h, tag))) {
724 m_cTOPTimeHadronsTOPTRG->SetFillColor(0);
725 m_cTOPTimeHadronsTOPTRG->Modified();
726 m_cTOPTimeHadronsTOPTRG->Update();
728 } else {
729 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
730 if (h) h->Draw();
731 m_cTOPTimeHadronsTOPTRG->SetFillColor(kGray);
733 }
734
735 // find TOP EventT0 Bhabhas TOPTRG histogram and process it
736 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_TOPTRG");
737 tag = "bhabhaTOPTRG_TOPT0";
739 if (std::get<0>(processHistogram(h, tag))) {
740 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(0);
741 m_cTOPTimeBhaBhaTOPTRG->Modified();
742 m_cTOPTimeBhaBhaTOPTRG->Update();
744 } else {
745 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
746 if (h) h->Draw();
747 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(kGray);
749 }
750
751 // find TOP EventT0 Mumus TOPTRG histogram and process it
752 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_TOPTRG");
753 tag = "mumuTOPTRG_TOPT0";
755 if (std::get<0>(processHistogram(h, tag))) {
756 m_cTOPTimeMuMuTOPTRG->SetFillColor(0);
757 m_cTOPTimeMuMuTOPTRG->Modified();
758 m_cTOPTimeMuMuTOPTRG->Update();
759 } else {
760 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
761 if (h) h->Draw();
762 m_cTOPTimeMuMuTOPTRG->SetFillColor(kGray);
763 m_cTOPTimeMuMuTOPTRG->Draw();
764 }
765
766
767 // --- SVD EventT0 plots for TOPTRG ---
768
769 // find SVD EventT0 Hadrons TOPTRG histogram and process it
770 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_TOPTRG");
771 tag = "hadronTOPTRG_SVDT0";
773 if (std::get<0>(processHistogram(h, tag))) {
774 m_cSVDTimeHadronsTOPTRG->SetFillColor(0);
775 m_cSVDTimeHadronsTOPTRG->Modified();
776 m_cSVDTimeHadronsTOPTRG->Update();
778 } else {
779 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
780 if (h) h->Draw();
781 m_cSVDTimeHadronsTOPTRG->SetFillColor(kGray);
783 }
784
785 // find SVD EventT0 Bhabhas TOPTRG histogram and process it
786 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_TOPTRG");
787 tag = "bhabhaTOPTRG_SVDT0";
789 if (std::get<0>(processHistogram(h, tag))) {
790 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(0);
791 m_cSVDTimeBhaBhaTOPTRG->Modified();
792 m_cSVDTimeBhaBhaTOPTRG->Update();
794 } else {
795 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
796 if (h) h->Draw();
797 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(kGray);
799 }
800
801 // find SVD EventT0 Mumus TOPTRG histogram and process it
802 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_TOPTRG");
803 tag = "mumuTOPTRG_SVDT0";
805 if (std::get<0>(processHistogram(h, tag))) {
806 m_cSVDTimeMuMuTOPTRG->SetFillColor(0);
807 m_cSVDTimeMuMuTOPTRG->Modified();
808 m_cSVDTimeMuMuTOPTRG->Update();
809 } else {
810 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
811 if (h) h->Draw();
812 m_cSVDTimeMuMuTOPTRG->SetFillColor(kGray);
813 m_cSVDTimeMuMuTOPTRG->Draw();
814 }
815}
816
818{
819 //ECLTRG canvas
820 m_cECLTimeHadronsECLTRG = new TCanvas("ECLTimeHadronsECLTRG", "ECL time hadrons ECLTRG jitter");
821 m_cECLTimeBhaBhaECLTRG = new TCanvas("ECLTimeBhaBhaECLTRG", "ECL time BhaBha ECLTRG jitter");
822 m_cECLTimeMuMuECLTRG = new TCanvas("ECLTimeMuMuECLTRG", "ECL time #mu#mu ECLTRG jitter");
823 m_cCDCTimeHadronsECLTRG = new TCanvas("CDCTimeHadronsECLTRG", "CDC time hadrons ECLTRG jitter");
824 m_cCDCTimeBhaBhaECLTRG = new TCanvas("CDCTimeBhaBhaECLTRG", "CDC time BhaBha ECLTRG jitter");
825 m_cCDCTimeMuMuECLTRG = new TCanvas("CDCTimeMuMuECLTRG", "CDC time #mu#mu ECLTRG jitter");
826 m_cTOPTimeHadronsECLTRG = new TCanvas("TOPTimeHadronsECLTRG", "TOP time hadrons ECLTRG jitter");
827 m_cTOPTimeBhaBhaECLTRG = new TCanvas("TOPTimeBhaBhaECLTRG", "TOP time BhaBha ECLTRG jitter");
828 m_cTOPTimeMuMuECLTRG = new TCanvas("TOPTimeMuMuECLTRG", "TOP time #mu#mu ECLTRG jitter");
829 m_cSVDTimeHadronsECLTRG = new TCanvas("SVDTimeHadronsECLTRG", "SVD time hadrons ECLTRG jitter");
830 m_cSVDTimeBhaBhaECLTRG = new TCanvas("SVDTimeBhaBhaECLTRG", "SVD time BhaBha ECLTRG jitter");
831 m_cSVDTimeMuMuECLTRG = new TCanvas("SVDTimeMuMuECLTRG", "SVD time #mu#mu ECLTRG jitter");
832
833 //CDCTRG canvas
834 m_cECLTimeHadronsCDCTRG = new TCanvas("ECLTimeHadronsCDCTRG", "ECL time hadrons CDCTRG jitter");
835 m_cECLTimeBhaBhaCDCTRG = new TCanvas("ECLTimeBhaBhaCDCTRG", "ECL time BhaBha CDCTRG jitter");
836 m_cECLTimeMuMuCDCTRG = new TCanvas("ECLTimeMuMuCDCTRG", "ECL time #mu#mu CDCTRG jitter");
837 m_cCDCTimeHadronsCDCTRG = new TCanvas("CDCTimeHadronsCDCTRG", "CDC time hadrons CDCTRG jitter");
838 m_cCDCTimeBhaBhaCDCTRG = new TCanvas("CDCTimeBhaBhaCDCTRG", "CDC time BhaBha CDCTRG jitter");
839 m_cCDCTimeMuMuCDCTRG = new TCanvas("CDCTimeMuMuCDCTRG", "CDC time #mu#mu CDCTRG jitter");
840 m_cTOPTimeHadronsCDCTRG = new TCanvas("TOPTimeHadronsCDCTRG", "TOP time hadrons CDCTRG jitter");
841 m_cTOPTimeBhaBhaCDCTRG = new TCanvas("TOPTimeBhaBhaCDCTRG", "TOP time BhaBha CDCTRG jitter");
842 m_cTOPTimeMuMuCDCTRG = new TCanvas("TOPTimeMuMuCDCTRG", "TOP time #mu#mu CDCTRG jitter");
843 m_cSVDTimeHadronsCDCTRG = new TCanvas("SVDTimeHadronsCDCTRG", "SVD time hadrons CDCTRG jitter");
844 m_cSVDTimeBhaBhaCDCTRG = new TCanvas("SVDTimeBhaBhaCDCTRG", "SVD time BhaBha CDCTRG jitter");
845 m_cSVDTimeMuMuCDCTRG = new TCanvas("SVDTimeMuMuCDCTRG", "SVD time #mu#mu CDCTRG jitter");
846
847 //TOPTRG canvas
848 m_cECLTimeHadronsTOPTRG = new TCanvas("ECLTimeHadronsTOPTRG", "ECL time hadrons TOPTRG jitter");
849 m_cECLTimeBhaBhaTOPTRG = new TCanvas("ECLTimeBhaBhaTOPTRG", "ECL time BhaBha TOPTRG jitter");
850 m_cECLTimeMuMuTOPTRG = new TCanvas("ECLTimeMuMuTOPTRG", "ECL time #mu#mu TOPTRG jitter");
851 m_cCDCTimeHadronsTOPTRG = new TCanvas("CDCTimeHadronsTOPTRG", "CDC time hadrons TOPTRG jitter");
852 m_cCDCTimeBhaBhaTOPTRG = new TCanvas("CDCTimeBhaBhaTOPTRG", "CDC time BhaBha TOPTRG jitter");
853 m_cCDCTimeMuMuTOPTRG = new TCanvas("CDCTimeMuMuTOPTRG", "CDC time #mu#mu TOPTRG jitter");
854 m_cTOPTimeHadronsTOPTRG = new TCanvas("TOPTimeHadronsTOPTRG", "TOP time hadrons TOPTRG jitter");
855 m_cTOPTimeBhaBhaTOPTRG = new TCanvas("TOPTimeBhaBhaTOPTRG", "TOP time BhaBha TOPTRG jitter");
856 m_cTOPTimeMuMuTOPTRG = new TCanvas("TOPTimeMuMuTOPTRG", "TOP time #mu#mu TOPTRG jitter");
857 m_cSVDTimeHadronsTOPTRG = new TCanvas("SVDTimeHadronsTOPTRG", "SVD time hadrons TOPTRG jitter");
858 m_cSVDTimeBhaBhaTOPTRG = new TCanvas("SVDTimeBhaBhaTOPTRG", "SVD time BhaBha TOPTRG jitter");
859 m_cSVDTimeMuMuTOPTRG = new TCanvas("SVDTimeMuMuTOPTRG", "SVD time #mu#mu TOPTRG jitter");
860}
861
863{
865 m_cECLTimeBhaBhaECLTRG->Clear();
866 m_cECLTimeMuMuECLTRG->Clear();
868 m_cCDCTimeBhaBhaECLTRG->Clear();
869 m_cCDCTimeMuMuECLTRG->Clear();
871 m_cTOPTimeBhaBhaECLTRG->Clear();
872 m_cTOPTimeMuMuECLTRG->Clear();
874 m_cSVDTimeBhaBhaECLTRG->Clear();
875 m_cSVDTimeMuMuECLTRG->Clear();
876
878 m_cECLTimeBhaBhaCDCTRG->Clear();
879 m_cECLTimeMuMuCDCTRG->Clear();
881 m_cCDCTimeBhaBhaCDCTRG->Clear();
882 m_cCDCTimeMuMuCDCTRG->Clear();
884 m_cTOPTimeBhaBhaCDCTRG->Clear();
885 m_cTOPTimeMuMuCDCTRG->Clear();
887 m_cSVDTimeBhaBhaCDCTRG->Clear();
888 m_cSVDTimeMuMuCDCTRG->Clear();
889
891 m_cECLTimeBhaBhaTOPTRG->Clear();
892 m_cECLTimeMuMuTOPTRG->Clear();
894 m_cCDCTimeBhaBhaTOPTRG->Clear();
895 m_cCDCTimeMuMuTOPTRG->Clear();
897 m_cTOPTimeBhaBhaTOPTRG->Clear();
898 m_cTOPTimeMuMuTOPTRG->Clear();
900 m_cSVDTimeBhaBhaTOPTRG->Clear();
901 m_cSVDTimeMuMuTOPTRG->Clear();
902}
903
905{
906 m_cECLTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf(");
907 m_cECLTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
908 m_cECLTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
909 m_cCDCTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
910 m_cCDCTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
911 m_cCDCTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
912 m_cTOPTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
913 m_cTOPTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
914 m_cTOPTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
915 m_cSVDTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
916 m_cSVDTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
917 m_cSVDTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
918
919 m_cECLTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
920 m_cECLTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
921 m_cECLTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
922 m_cCDCTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
923 m_cCDCTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
924 m_cCDCTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
925 m_cTOPTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
926 m_cTOPTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
927 m_cTOPTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
928 m_cSVDTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
929 m_cSVDTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
930 m_cSVDTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
931
932 m_cECLTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
933 m_cECLTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
934 m_cECLTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
935 m_cCDCTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
936 m_cCDCTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
937 m_cCDCTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
938 m_cTOPTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
939 m_cTOPTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
940 m_cTOPTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
941 m_cSVDTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
942 m_cSVDTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
943 m_cSVDTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf)");
944}
945
946
948{
961
974
987}
988
989
991{
992 // Set the deltaT0 values to be accissble on the DQM web page for the shifters, with SVD EventT0 being the reference
993 // As we are only interested in trends, just the raw difference is used, no (error) weighted values
994 // However, not all values might exist, so make the algorithm fault tolerant
995 if (m_ECLTRGHLThadronSVDT0 > -998) {
996 if (m_ECLTRGHLThadronCDCT0 > -998) {
997 setEpicsPV("ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", m_ECLTRGHLThadronCDCT0 - m_ECLTRGHLThadronSVDT0);
998 }
999 if (m_ECLTRGHLThadronECLT0 > -998) {
1000 setEpicsPV("ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", m_ECLTRGHLThadronECLT0 - m_ECLTRGHLThadronSVDT0);
1001 }
1002 if (m_ECLTRGHLThadronTOPT0 > -998) {
1003 setEpicsPV("ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", m_ECLTRGHLThadronTOPT0 - m_ECLTRGHLThadronSVDT0);
1004 }
1005 }
1006}
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.
The base class for the histogram analysis module.
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).
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
int registerEpicsPV(std::string pvname, std::string keyname="")
EPICS related Functions.
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setVariable(const std::string &var, float val, float upErr=-1., float dwErr=-1)
set value to float variable (new variable is made if not yet existing)
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.