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()));
125 histoName =
"nCDCExtraHits";
126 histoTitle =
"Number of CDC Extra Hits";
128 m_nCDCExtraHits[0] =
new TH1F(TString::Format(
"%s_%s", histoName.c_str(), tag[0].c_str()),
129 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
135 m_nCDCExtraHits[1]->SetName(TString::Format(
"%s_%s", histoName.c_str(), tag[1].c_str()));
136 m_nCDCExtraHits[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
139 histoName =
"svdL3VTime";
140 histoTitle =
"Layer3 v-side Cluster Time Distribution";
142 m_svdTime[0] =
new TH1F(TString::Format(
"%s_%s", histoName.c_str(), tag[0].c_str()),
143 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
145 m_svdTime[0]->GetXaxis()->SetTitle(
"cluster time (ns)");
146 m_svdTime[0]->GetYaxis()->SetTitle(
"Number of Events");
149 m_svdTime[1]->SetName(TString::Format(
"%s_%s", histoName.c_str(), tag[1].c_str()));
150 m_svdTime[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
153 histoName =
"averages";
154 histoTitle =
"Averages from SVD and CDC";
157 TString::Format(
"%s %s", histoTitle.c_str(), title[0].c_str()),
168 m_integratedAverages[1]->SetTitle(TString::Format(
"%s %s", histoTitle.c_str(), title[1].c_str()));
253 float nStripsL3UZS5 = 0;
254 float nStripsL3VZS5 = 0;
255 float nStripsL4UZS5 = 0;
256 float nStripsL4VZS5 = 0;
258 const VxdID& sensorID = hit.getSensorID();
261 const float cutMinSignal = std::round(5 * noise);
263 if (hit.passesZS(1, cutMinSignal)) {
265 if (hit.isUStrip()) nStripsL3UZS5++;
266 else nStripsL3VZS5++;
267 }
else if (hit.isUStrip()) nStripsL4UZS5++;
268 else nStripsL4VZS5++;
274 const VxdID& sensorID = hit.getSensorID();
276 if (hit.isUCluster())
continue;
278 m_svdTime[index]->Fill(hit.getClsTime());
289 int nCDCHitsInner = 0;
290 int nCDCHitsOuter = 0;
292 if (hit.getISuperLayer() == 0) nCDCHitsInner++;
293 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.
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.