9#include "tracking/modules/trackingDQM/TrackingAbortDQMModule.h"
11#include <framework/dataobjects/EventMetaData.h>
12#include <svd/dataobjects/SVDShaperDigit.h>
13#include <svd/dataobjects/SVDCluster.h>
14#include <cdc/dataobjects/CDCHit.h>
15#include <mdst/dataobjects/EventLevelTrackingInfo.h>
16#include <mdst/dataobjects/TRGSummary.h>
18#include <TDirectory.h>
39 setDescription(
"DQM Module to monitor Tracking Aborts and detector-related quantities.");
42 std::string(
"TrackingAbort"));
48TrackingAbortDQMModule::~TrackingAbortDQMModule()
60 TDirectory* oldDir = gDirectory;
68 std::string tag[2] = {
"OUT",
"IN"};
69 std::string title[2] = {
"[Outside Active Veto Window]",
"[Inside Active Veto Window]"};
74 std::string histoName =
"EventsWithAborts";
75 std::string histoTitle =
"Events With at Least one Abort";
76 m_nEventsWithAbort[0] =
new TH1F(TString::Format(
"%s_%s", histoName.c_str(), tag[0].c_str()),
77 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
86 m_nEventsWithAbort[1]->SetName(TString::Format(
"%s_%s", histoName.c_str(), tag[1].c_str()));
87 m_nEventsWithAbort[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
91 histoName =
"TrkAbortReason";
92 histoTitle =
"Tracking Abort Reason";
94 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
110 histoName =
"SVDL3UOcc";
111 histoTitle =
"SVD L3 u-side ZS5 Occupancy (%)";
114 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
115 90, 0, 100.0 / 1536.0 * 90);
121 m_svdL3uZS5Occupancy[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
124 histoName =
"SVDL3UOccVXDTF2aborts";
125 histoTitle =
"SVD L3 u-side ZS5 Occupancy (%) when VXDTF2 Aborts";
128 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
129 180, 0, 100.0 / 1536.0 * 180);
138 histoName =
"SVDL3UOccToSVDCKFaborts";
139 histoTitle =
"SVD L3 u-side ZS5 Occupancy (%) when toSVDCKF Aborts";
142 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
143 180, 0, 100.0 / 1536.0 * 180);
152 histoName =
"nCDCExtraHits";
153 histoTitle =
"Number of CDC Extra Hits";
155 m_nCDCExtraHits[0] =
new TH1F(TString::Format(
"%s_%s", histoName.c_str(), tag[0].c_str()),
156 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
162 m_nCDCExtraHits[1]->SetName(TString::Format(
"%s_%s", histoName.c_str(), tag[1].c_str()));
163 m_nCDCExtraHits[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
166 histoName =
"svdL3VTime";
167 histoTitle =
"Layer3 v-side Cluster Time Distribution";
169 m_svdTime[0] =
new TH1F(TString::Format(
"%s_%s", histoName.c_str(), tag[0].c_str()),
170 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
172 m_svdTime[0]->GetXaxis()->SetTitle(
"cluster time (ns)");
173 m_svdTime[0]->GetYaxis()->SetTitle(
"Number of Events");
176 m_svdTime[1]->SetName(TString::Format(
"%s_%s", histoName.c_str(), tag[1].c_str()));
177 m_svdTime[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
180 histoName =
"averages";
181 histoTitle =
"Averages from SVD and CDC";
184 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
195 m_integratedAverages[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
260 }
catch (
const std::exception&) {
286 float nStripsL3UZS5 = 0;
287 float nStripsL3VZS5 = 0;
288 float nStripsL4UZS5 = 0;
289 float nStripsL4VZS5 = 0;
291 const VxdID& sensorID = hit.getSensorID();
294 const float cutMinSignal = std::round(5 * noise);
296 if (hit.passesZS(1, cutMinSignal)) {
298 if (hit.isUStrip()) nStripsL3UZS5++;
299 else nStripsL3VZS5++;
300 }
else if (hit.isUStrip()) nStripsL4UZS5++;
301 else nStripsL4VZS5++;
307 const VxdID& sensorID = hit.getSensorID();
309 if (hit.isUCluster())
continue;
311 m_svdTime[index]->Fill(hit.getClsTime());
315 double tmp_L3uZS5occupancy = (double)nStripsL3UZS5 /
m_nStripsL3U * 100;
316 double L3uZS5occupancy = std::min(tmp_L3uZS5occupancy, (
double)100.0 / 1536.0 * 90);
318 double L3uZS5occupancy_abort = std::min(tmp_L3uZS5occupancy, (
double)100.0 / 1536.0 * 180);
329 int nCDCHitsInner = 0;
330 int nCDCHitsOuter = 0;
332 if (hit.getISuperLayer() == 0) nCDCHitsInner++;
333 else nCDCHitsOuter++;
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
The SVD Cluster class This class stores all information about reconstructed SVD clusters.
float getNoise(const VxdID &sensorID, const bool &isU, const unsigned short &strip) const
This is the method for getting the noise.
The SVD ShaperDigit class.
void initialize() override final
Module function initialize.
TH1F * m_svdTime[2]
L3 V-side time for all clusters.
TH1F * m_svdL3uZS5Occupancy_toSVDCKFaborts[2]
distribution of the SVD L3 V ZS5 occupancy when toSVDCKF aborts
TH1F * m_svdL3uZS5Occupancy_VXDTF2aborts[2]
distribution of the SVD L3 V ZS5 occupancy when VXDTF2 aborts
StoreObjPtr< EventLevelTrackingInfo > m_eventLevelTrackingInfo
tracking abort info
TH1D * m_integratedAverages[2]
integrated averages of additional SVD, CDC variables
SVDNoiseCalibrations m_NoiseCal
SVDNoise calibration db object.
TH1F * m_trackingErrorFlagsReasons[2]
stores the reason of the abort
void defineHisto() override final
Defines Histograms.
StoreObjPtr< TRGSummary > m_trgSummary
trg summary
TH1F * m_svdL3uZS5Occupancy[2]
distribution of the SVD L3 V ZS5 occupancy
StoreArray< SVDCluster > m_clusters
SVD clusters.
TH1F * m_nEventsWithAbort[2]
0: no abort; 1: at least one abort
TH1F * m_nCDCExtraHits[2]
distribution of the number of extra CDC hits
static constexpr int m_nStripsL3U
number of U-side L3 strips
StoreObjPtr< EventMetaData > m_eventMetaData
event meta data
void event() override final
Module function event.
StoreArray< SVDShaperDigit > m_strips
SVD strips.
void updateBinContent(int index, int bin, float valueToBeAdded)
function to update the bin content
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
StoreArray< CDCHit > m_cdcHits
CDCHits.
void beginRun() override final
Module function beginRun.
TrackingAbortDQMModule()
Constructor.
Class to uniquely identify a any structure of the PXD and SVD.
baseType getLayerNumber() const
Get the layer id.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.