9 #include <dqm/analysis/modules/DQMHistAnalysisTrackingHLT.h>
35 setDescription(
"DQM Analysis Module of the Tracking HLT Plots.");
37 addParam(
"failureRateThreshold", m_failureRateThreshold,
38 "Maximum Fraction of Events in which Tracking Aborts before turning Canvas to Red",
double(0.5));
39 addParam(
"minNoEvents", m_statThreshold,
"Minimum Number of Events before scaring CR shifters",
int(1000));
40 addParam(
"printCanvas", m_printCanvas,
"if True prints pdf of the analysis canvas",
bool(
false));
44 void DQMHistAnalysisTrackingHLTModule::initialize()
48 m_cAbortRate =
new TCanvas(
"TrackingAnalysis/c_AbortRate");
49 m_cAbortRateHER =
new TCanvas(
"TrackingAnalysis/c_AbortRateHER");
50 m_cAbortRateLER =
new TCanvas(
"TrackingAnalysis/c_AbortRateLER");
53 m_monObj = getMonitoringObject(
"trackingHLT");
57 void DQMHistAnalysisTrackingHLTModule::event()
62 TH1* hAbort = findHist(
"TrackingHLTDQM/NumberTrackingErrorFlags");
63 if (hAbort !=
nullptr) {
65 bool hasError =
false;
66 int nEvents = hAbort->GetEntries();
67 double abortRate = hAbort->GetMean();
68 hAbort->SetTitle(Form(
"Fraction of Events in which Tracking aborts = %.4f %%", abortRate * 100));
69 m_monObj->setVariable(
"abortRate", abortRate);
71 if (abortRate > m_failureRateThreshold)
74 if (nEvents < m_statThreshold) m_cAbortRate->SetFillColor(kGray);
75 else if (hasError) m_cAbortRate->SetFillColor(kRed);
76 else m_cAbortRate->SetFillColor(kGreen);
77 m_cAbortRate->SetFrameFillColor(10);
83 B2WARNING(
"Histogram TrackingHLTDQM/NumberTrackingErrorFlags from Tracking DQM not found!");
84 m_cAbortRate->SetFillColor(kGray);
87 m_cAbortRate->Modified();
88 m_cAbortRate->Update();
92 m_cAbortRate->Print(
"c_AbortRate.pdf");
96 TH2F* hAbortHER =
dynamic_cast<TH2F*
>(findHist(
"TrackingHLTDQM/TrkAbortVsTimeHER"));
97 TH2F* hAllHER =
dynamic_cast<TH2F*
>(findHist(
"TrackingHLTDQM/allEvtsVsTimeHER"));
98 if (hAbortHER !=
nullptr && hAllHER !=
nullptr) {
100 TH2F* hAbortRateHER =
new TH2F(*hAbortHER);
102 for (
int i = 0; i < hAbortRateHER->GetXaxis()->GetNbins(); i++)
103 for (
int j = 0; j < hAbortRateHER->GetYaxis()->GetNbins(); j++) {
104 int den = hAllHER->GetBinContent(i + 1, j + 1);
105 int num = hAbortHER->GetBinContent(i + 1, j + 1);
107 if (den > 0) hAbortRateHER->SetBinContent(i + 1, j + 1, num * 1. / den);
108 else hAbortRateHER->SetBinContent(i + 1, j + 1, 0);
111 m_cAbortRateHER->cd();
112 hAbortRateHER->Draw(
"colz");
116 B2WARNING(
"Histograms TrackingHLTDQM/TrkAbortVsTimeHER or allEvtsVsTimeHER from Tracking DQM not found!");
117 m_cAbortRateHER->SetFillColor(kGray);
120 m_cAbortRateHER->Print(
"c_AbortRateHER.pdf");
124 TH2F* hAbortLER =
dynamic_cast<TH2F*
>(findHist(
"TrackingHLTDQM/TrkAbortVsTimeLER"));
125 TH2F* hAllLER =
dynamic_cast<TH2F*
>(findHist(
"TrackingHLTDQM/allEvtsVsTimeLER"));
126 if (hAbortLER !=
nullptr && hAllLER !=
nullptr) {
128 TH2F* hAbortRateLER =
new TH2F(*hAbortLER);
130 for (
int i = 0; i < hAbortRateLER->GetXaxis()->GetNbins(); i++)
131 for (
int j = 0; j < hAbortRateLER->GetYaxis()->GetNbins(); j++) {
132 int den = hAllLER->GetBinContent(i + 1, j + 1);
133 int num = hAbortLER->GetBinContent(i + 1, j + 1);
135 if (den > 0) hAbortRateLER->SetBinContent(i + 1, j + 1, num * 1. / den);
136 else hAbortRateLER->SetBinContent(i + 1, j + 1, 0);
139 m_cAbortRateLER->cd();
140 hAbortRateLER->Draw(
"colz");
143 B2WARNING(
"Histograms TrackingHLTDQM/TrkAbortVsTimeLER or allEvtsVsTimeLER from Tracking DQM not found!");
144 m_cAbortRateLER->SetFillColor(kGray);
147 m_cAbortRateLER->Print(
"c_AbortRateLER.pdf");
150 TH1* hnTracks = findHist(
"TrackingHLTDQM/NoOfTracks");
151 if (hnTracks !=
nullptr) {
152 double averageNTracks = hnTracks->GetMean();
153 m_monObj->setVariable(
"nTracksPerEvent", averageNTracks);
156 TH1* hnVXDTracks = findHist(
"TrackingHLTDQM/NoOfTracksInVXDOnly");
157 if (hnVXDTracks !=
nullptr) {
158 double averageNVXDTracks = hnVXDTracks->GetMean();
159 m_monObj->setVariable(
"nVXDTracksPerEvent", averageNVXDTracks);
162 TH1* hnCDCTracks = findHist(
"TrackingHLTDQM/NoOfTracksInCDCOnly");
163 if (hnCDCTracks !=
nullptr) {
164 double averageNCDCTracks = hnCDCTracks->GetMean();
165 m_monObj->setVariable(
"nCDCTracksPerEvent", averageNCDCTracks);
168 TH1* hnVXDCDCTracks = findHist(
"TrackingHLTDQM/NoOfTracksInVXDCDC");
169 if (hnVXDCDCTracks !=
nullptr) {
170 double averageNVXDCDCTracks = hnVXDCDCTracks->GetMean();
171 m_monObj->setVariable(
"nVXDCDCTracksPerEvent", averageNVXDCDCTracks);
The base class for the histogram analysis module.
Analysis of HLT Tracking DQM plots.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.