9 #include <dqm/analysis/modules/DQMHistAnalysisTrackingER.h>
31 setDescription(
"DQM Analysis Module of the Tracking ER Plots.");
33 addParam(
"onTimeHalfWidth", m_onTimeHalfWidth,
"a cluster is on time if within ± onTimeHalfWidth [ns]",
float(m_onTimeHalfWidth));
37 void DQMHistAnalysisTrackingERModule::initialize()
43 m_monObj = getMonitoringObject(
"trackingER");
48 void DQMHistAnalysisTrackingERModule::event()
51 for (
const string& suffix : {
"_FromIP",
"_NotFromIP"}) {
53 TH1* hNoPXDHits = findHist(
"TrackingERDQM" + suffix +
"/NoOfHitsInTrack_PXD");
54 if (hNoPXDHits !=
nullptr) {
55 int nTracks = hNoPXDHits->GetEntries();
56 int nTracksNoPXD = hNoPXDHits->GetBinContent(1);
58 m_monObj->setVariable(
"tracksNoPXDHit" + suffix, (
double)nTracksNoPXD / nTracks);
62 TH1* hnTracks = findHist(
"TrackingERDQM" + suffix +
"/NoOfTracks");
63 if (hnTracks !=
nullptr) {
64 double averageNTracks = hnTracks->GetMean();
65 m_monObj->setVariable(
"nTracksPerEvent" + suffix, averageNTracks);
67 TH1* hnVXDTracks = findHist(
"TrackingERDQM" + suffix +
"/NoOfTracksInVXDOnly");
68 if (hnVXDTracks !=
nullptr) {
69 double averageNVXDTracks = hnVXDTracks->GetMean();
70 m_monObj->setVariable(
"nVXDTracksPerEvent" + suffix, averageNVXDTracks);
72 TH1* hnCDCTracks = findHist(
"TrackingERDQM" + suffix +
"/NoOfTracksInCDCOnly");
73 if (hnCDCTracks !=
nullptr) {
74 double averageNCDCTracks = hnCDCTracks->GetMean();
75 m_monObj->setVariable(
"nCDCTracksPerEvent" + suffix, averageNCDCTracks);
77 TH1* hnVXDCDCTracks = findHist(
"TrackingERDQM" + suffix +
"/NoOfTracksInVXDCDC");
78 if (hnVXDCDCTracks !=
nullptr) {
79 double averageNVXDCDCTracks = hnVXDCDCTracks->GetMean();
80 m_monObj->setVariable(
"nVXDCDCTracksPerEvent" + suffix, averageNVXDCDCTracks);
87 TH1* hSVDL3VTime = findHist(
"SVDClsTrk/SVDTRK_ClusterTimeV3");
88 if (hSVDL3VTime !=
nullptr) {
89 int all = hSVDL3VTime->GetEntries();
91 int bin_min = hSVDL3VTime->GetXaxis()->FindBin(-m_onTimeHalfWidth);
92 int bin_max = hSVDL3VTime->GetXaxis()->FindBin(+m_onTimeHalfWidth);
93 int offtime = all - hSVDL3VTime->Integral(bin_min, bin_max);
94 double offtimeL3Hits = (double)offtime / all;
95 m_monObj->setVariable(
"offtimeL3Hits", offtimeL3Hits);
99 TH1* hSVDL456VTime = findHist(
"SVDClsTrk/SVDTRK_ClusterTimeV456");
100 if (hSVDL456VTime !=
nullptr) {
101 int all = hSVDL456VTime->GetEntries();
103 int bin_min = hSVDL456VTime->GetXaxis()->FindBin(-m_onTimeHalfWidth);
104 int bin_max = hSVDL456VTime->GetXaxis()->FindBin(+m_onTimeHalfWidth);
105 int offtime = all - hSVDL456VTime->Integral(bin_min, bin_max);
106 double offtimeL456Hits = (double)offtime / all;
107 m_monObj->setVariable(
"offtimeL456Hits", offtimeL456Hits);
113 TH1* hAbort = findHist(
"TrackingERDQM_FromIP/NumberTrackingErrorFlags");
114 TH1* hAbortReasons = findHist(
"TrackingERDQM_FromIP/TrackingErrorFlagsReasons");
115 if (hAbort !=
nullptr) {
116 double nEvents = hAbort->GetEntries();
118 m_monObj->setVariable(
"abortRate", hAbort->GetMean());
119 if (hAbortReasons !=
nullptr) {
120 m_monObj->setVariable(
"abortRateUnspecifiedPR", hAbortReasons->GetBinContent(2) / nEvents);
121 m_monObj->setVariable(
"abortRateVXDTF2", hAbortReasons->GetBinContent(3) / nEvents);
122 m_monObj->setVariable(
"abortRateSVDCKF", hAbortReasons->GetBinContent(4) / nEvents);
123 m_monObj->setVariable(
"abortRatePXDCKF", hAbortReasons->GetBinContent(5) / nEvents);
124 m_monObj->setVariable(
"abortRateSpacePoint", hAbortReasons->GetBinContent(6) / nEvents);
The base class for the histogram analysis module.
Analysis of ER 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.