Belle II Software  release-08-02-06
SVDDQMExpressRecoModule Class Reference

SVD DQM Module for Express Reco. More...

#include <SVDDQMExpressRecoModule.h>

Inheritance diagram for SVDDQMExpressRecoModule:
Collaboration diagram for SVDDQMExpressRecoModule:

Public Types

enum  EModulePropFlags {
  c_Input = 1 ,
  c_Output = 2 ,
  c_ParallelProcessingCertified = 4 ,
  c_HistogramManager = 8 ,
  c_InternalSerializer = 16 ,
  c_TerminateInAllProcesses = 32 ,
  c_DontCollectStatistics = 64
}
 Each module can be tagged with property flags, which indicate certain features of the module. More...
 
typedef ModuleCondition::EAfterConditionPath EAfterConditionPath
 Forward the EAfterConditionPath definition from the ModuleCondition.
 

Public Member Functions

 SVDDQMExpressRecoModule ()
 Constructor.
 
 SVDDQMExpressRecoModule (const SVDDQMExpressRecoModule &)=delete
 Copy constructor (disabled)
 
SVDDQMExpressRecoModuleoperator= (const SVDDQMExpressRecoModule &)=delete
 Operator = (disabled)
 
void initialize () override final
 Module function initialize.
 
void terminate () override final
 Module function terminate.
 
void beginRun () override final
 Module function beginRun.
 
void event () override final
 Module function event.
 
void defineHisto () override final
 Histogram definitions such as TH1(), TH2(), TNtuple(), TTree().... More...
 
virtual void endRun () override
 Function to process end_run record.
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules. More...
 
const std::string & getName () const
 Returns the name of the module. More...
 
const std::string & getType () const
 Returns the type of the module (i.e. More...
 
const std::string & getPackage () const
 Returns the package this module is in.
 
const std::string & getDescription () const
 Returns the description of the module.
 
void setName (const std::string &name)
 Set the name of the module. More...
 
void setPropertyFlags (unsigned int propertyFlags)
 Sets the flags for the module properties. More...
 
LogConfiggetLogConfig ()
 Returns the log system configuration.
 
void setLogConfig (const LogConfig &logConfig)
 Set the log system configuration.
 
void setLogLevel (int logLevel)
 Configure the log level.
 
void setDebugLevel (int debugLevel)
 Configure the debug messaging level.
 
void setAbortLevel (int abortLevel)
 Configure the abort log level.
 
void setLogInfo (int logLevel, unsigned int logInfo)
 Configure the printed log information for the given level. More...
 
void if_value (const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 Add a condition to the module. More...
 
void if_false (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to add a condition to the module. More...
 
void if_true (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to set the condition of the module. More...
 
bool hasCondition () const
 Returns true if at least one condition was set for the module.
 
const ModuleConditiongetCondition () const
 Return a pointer to the first condition (or nullptr, if none was set)
 
const std::vector< ModuleCondition > & getAllConditions () const
 Return all set conditions for this module.
 
bool evalCondition () const
 If at least one condition was set, it is evaluated and true returned if at least one condition returns true. More...
 
std::shared_ptr< PathgetConditionPath () const
 Returns the path of the last true condition (if there is at least one, else reaturn a null pointer). More...
 
Module::EAfterConditionPath getAfterConditionPath () const
 What to do after the conditional path is finished. More...
 
std::vector< std::shared_ptr< Path > > getAllConditionPaths () const
 Return all condition paths currently set (no matter if the condition is true or not).
 
bool hasProperties (unsigned int propertyFlags) const
 Returns true if all specified property flags are available in this module. More...
 
bool hasUnsetForcedParams () const
 Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.
 
const ModuleParamListgetParamList () const
 Return module param list.
 
template<typename T >
ModuleParam< T > & getParam (const std::string &name) const
 Returns a reference to a parameter. More...
 
bool hasReturnValue () const
 Return true if this module has a valid return value set.
 
int getReturnValue () const
 Return the return value set by this module. More...
 
std::shared_ptr< PathElementclone () const override
 Create an independent copy of this module. More...
 
std::shared_ptr< boost::python::list > getParamInfoListPython () const
 Returns a python list of all parameters. More...
 

Static Public Member Functions

static void exposePythonAPI ()
 Exposes methods of the Module class to Python.
 

Protected Member Functions

virtual void def_initialize ()
 Wrappers to make the methods without "def_" prefix callable from Python. More...
 
virtual void def_beginRun ()
 Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.
 
virtual void def_event ()
 Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.
 
virtual void def_endRun ()
 This method can receive that the current run ends as a call from the Python side. More...
 
virtual void def_terminate ()
 Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.
 
void setDescription (const std::string &description)
 Sets the description of the module. More...
 
void setType (const std::string &type)
 Set the module type. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
 Adds a new parameter to the module. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description)
 Adds a new enforced parameter to the module. More...
 
void setReturnValue (int value)
 Sets the return value for this module as integer. More...
 
void setReturnValue (bool value)
 Sets the return value for this module as bool. More...
 
void setParamList (const ModuleParamList &params)
 Replace existing parameter list.
 

Private Member Functions

std::list< ModulePtrgetModules () const override
 no submodules, return empty list
 
std::string getPathString () const override
 return the module name.
 
void setParamPython (const std::string &name, const boost::python::object &pyObj)
 Implements a method for setting boost::python objects. More...
 
void setParamPythonDict (const boost::python::dict &dictionary)
 Implements a method for reading the parameter values from a boost::python dictionary. More...
 

Private Attributes

StoreObjPtr< TRGSummarym_objTrgSummary
 Trigger Summary data object.
 
StoreObjPtr< SVDEventInfom_svdEventInfo
 SVDEventInfo data object.
 
bool m_desynchSVDTime = false
 if TRUE: svdTime back in SVD time reference
 
StoreObjPtr< SoftwareTriggerResultm_resultStoreObjectPointer
 Store Object for reading the trigger decision.
 
bool m_skipRejectedEvents = true
 if true skip events rejected by HLT (default)
 
bool m_additionalPlots = false
 additional plots flag
 
bool m_3Samples = false
 if true enable 3 samples histograms analysis
 
TList * m_histoList = nullptr
 list of cumulative histograms
 
int m_expNumber = 0
 experiment number
 
int m_runNumber = 0
 run number
 
int m_ShowAllHistos = 0
 Flag to show all histos in DQM, default = 0 (do not show)
 
float m_CutSVDCharge = 0.0
 cut for accepting strips to hitmap histogram default = 0 ADU
 
float m_CutSVDClusterCharge = 0.0
 cut for accepting clusters to hitmap histogram, default = 0 ke-
 
std::string m_histogramDirectoryName
 Name of the histogram directory in ROOT file.
 
std::string m_storeNoZSSVDShaperDigitsName
 not zero-suppressed SVDShaperDigits StoreArray name
 
std::string m_storeSVDShaperDigitsName
 SVDShaperDigits StoreArray name.
 
std::string m_storeSVDClustersName
 SVDClusters StoreArray name.
 
TH1F * m_nEvents = nullptr
 number of events
 
TH1F * m_hitMapCountsU = nullptr
 Hitmaps u of Digits.
 
TH1F * m_hitMapCountsV = nullptr
 Hitmaps v of Digits.
 
TH1F * m_hitMapClCountsU = nullptr
 Hitmaps u of Clusters.
 
TH1F * m_hitMapClCountsV = nullptr
 Hitmaps v of Clusters.
 
TH1F * m_hitMapCountsChip = nullptr
 Hitmaps of digits on chips.
 
TH1F * m_hitMapClCountsChip = nullptr
 Hitmaps of clusters on chips.
 
TH1F ** m_firedU = nullptr
 Fired u strips per event.
 
TH1F ** m_firedV = nullptr
 Fired v strips per event.
 
TH1F ** m_clustersU = nullptr
 number of u clusters per event
 
TH1F ** m_clustersV = nullptr
 number of v clusters per event
 
TH1F ** m_clusterChargeU = nullptr
 u charge of clusters
 
TH1F ** m_clusterChargeV = nullptr
 v charge of clusters
 
TH1F * m_clusterChargeUAll = nullptr
 u charge of clusters for all sensors
 
TH1F * m_clusterChargeVAll = nullptr
 v charge of clusters for all sensors
 
TH1F * m_clusterChargeU3 = nullptr
 u charge of clusters for layer 3 sensors
 
TH1F * m_clusterChargeV3 = nullptr
 v charge of clusters for layer 3 sensors
 
TH1F * m_clusterChargeU456 = nullptr
 u charge of clusters for layer 4,5,6 sensors
 
TH1F * m_clusterChargeV456 = nullptr
 v charge of clusters for layer 4,5,6 sensors
 
TH1F ** m_clusterSNRU = nullptr
 u SNR of clusters per sensor
 
TH1F ** m_clusterSNRV = nullptr
 v SNR of clusters per sensor
 
TH1F * m_clusterSNRUAll = nullptr
 u SNR of clusters for all sensors
 
TH1F * m_clusterSNRVAll = nullptr
 v SNR of clusters for all sensors
 
TH1F * m_clusterSNRU3 = nullptr
 u SNR of clusters for layer 3 sensors
 
TH1F * m_clusterSNRV3 = nullptr
 v SNR of clusters for layer 3 sensors
 
TH1F * m_clusterSNRU456 = nullptr
 u SNR of clusters for layer 4,5,6 sensors
 
TH1F * m_clusterSNRV456 = nullptr
 v SNR of clusters for layer 4,5,6 sensors
 
TH1F * m_stripMaxBinUAll = nullptr
 u MaxBin of strips for all sensors (offline Zero Suppression)
 
TH1F * m_stripMaxBinVAll = nullptr
 v MaxBin of strips for all sensors (offline Zero Suppression)
 
TH1F * m_stripMaxBinU3 = nullptr
 u MaxBin of strips for layer 3 sensors (offline Zero Suppression)
 
TH1F * m_stripMaxBinV3 = nullptr
 v MaxBin of strips for layer 3 sensors (offline Zero Suppression)
 
TH1F * m_stripMaxBinU6 = nullptr
 u MaxBin of strips for layer 6 sensors (offline Zero Suppression)
 
TH1F * m_stripMaxBinV6 = nullptr
 v MaxBin of strips for layer 6 sensors (offline Zero Suppression)
 
TH1F ** m_stripSignalU = nullptr
 u charge of strips
 
TH1F ** m_stripSignalV = nullptr
 v charge of strips
 
TH1F ** m_stripCountU = nullptr
 u strip count
 
TH1F ** m_stripCountV = nullptr
 v strip count
 
TH1F ** m_onlineZSstripCountU = nullptr
 u strip count (online Zero Suppression)
 
TH1F ** m_onlineZSstripCountV = nullptr
 v strip count (online Zero Suppression
 
TH1F ** m_stripCountGroupId0U = nullptr
 U strip count for cluster time group Id = 0.
 
TH1F ** m_stripCountGroupId0V = nullptr
 V strip count for cluster time group Id = 0.
 
TH1F ** m_strip3SampleCountU = nullptr
 u strip count for 3 samples
 
TH1F ** m_strip3SampleCountV = nullptr
 v strip count for 3 samples
 
TH1F ** m_onlineZSstrip3SampleCountU = nullptr
 u strip count (online Zero Suppression) for 3 samples
 
TH1F ** m_onlineZSstrip3SampleCountV = nullptr
 v strip count (online Zero Suppression for 3 samples
 
TH1F ** m_strip6SampleCountU = nullptr
 u strip count for 6 samples
 
TH1F ** m_strip6SampleCountV = nullptr
 v strip count for 3 samples
 
TH1F ** m_onlineZSstrip6sampleCountU = nullptr
 u strip count (online Zero Suppression) for 6 samples
 
TH1F ** m_onlineZSstrip6sampleCountV = nullptr
 v strip count (online Zero Suppression for 6 samples
 
TH1F ** m_clusterSizeU = nullptr
 u size
 
TH1F ** m_clusterSizeV = nullptr
 v size
 
TH2F * m_clusterTimeGroupIdU = nullptr
 time group id for U side
 
TH2F * m_clusterTimeGroupIdV = nullptr
 time group id for V side
 
TH2F * m_clusterTimeFineGroupIdU = nullptr
 time group id for U side for fine trigger
 
TH2F * m_clusterTimeFineGroupIdV = nullptr
 time group id for V side for fine trigger
 
TH2F * m_clusterTimeCoarseGroupIdU = nullptr
 time group id for U side for coarse trigger
 
TH2F * m_clusterTimeCoarseGroupIdV = nullptr
 time group id for V side for coarse trigger
 
TH1F ** m_clusterTimeU = nullptr
 u time
 
TH1F ** m_clusterTimeV = nullptr
 v time
 
TH1F * m_clusterTimeUAll = nullptr
 u time of clusters for all sensors
 
TH1F * m_clusterTimeVAll = nullptr
 v time of clusters for all sensors
 
TH1F * m_clusterTimeU3 = nullptr
 u Time of clusters for layer 3 sensors
 
TH1F * m_clusterTimeV3 = nullptr
 v Time of clusters for layer 3 sensors
 
TH1F * m_clusterTimeU456 = nullptr
 u Time of clusters for layer 4,5,6 sensors
 
TH1F * m_clusterTimeV456 = nullptr
 v Time of clusters for layer 4,5,6 sensors
 
TH1F * m_cluster3SampleTimeU3 = nullptr
 u Time of clusters for layer 3 sensors for 3 samples
 
TH1F * m_cluster3SampleTimeV3 = nullptr
 v Time of clusters for layer 3 sensors for 3 samples
 
TH1F * m_cluster3SampleTimeU456 = nullptr
 u Time of clusters for layer 4,5,6 sensors for 3 samples
 
TH1F * m_cluster3SampleTimeV456 = nullptr
 v Time of clusters for layer 4,5,6 sensors for 3 samples
 
TH1F * m_cluster6SampleTimeU3 = nullptr
 u Time of clusters for layer 3 sensors for 6 samples
 
TH1F * m_cluster6SampleTimeV3 = nullptr
 v Time of clusters for layer 3 sensors for 6 samples
 
TH1F * m_cluster6SampleTimeU456 = nullptr
 u Time of clusters for layer 4,5,6 sensors for 6 samples
 
TH1F * m_cluster6SampleTimeV456 = nullptr
 v Time of clusters for layer 4,5,6 sensors for 6 samples
 
TH2F ** m_hitMapU = nullptr
 Hitmaps pixels for u.
 
TH2F ** m_hitMapV = nullptr
 Hitmaps pixels for v.
 
TH1F ** m_hitMapUCl = nullptr
 Hitmaps clusters for u.
 
TH1F ** m_hitMapVCl = nullptr
 Hitmaps clusters for v.
 
std::string m_name
 The name of the module, saved as a string (user-modifiable)
 
std::string m_type
 The type of the module, saved as a string.
 
std::string m_package
 Package this module is found in (may be empty).
 
std::string m_description
 The description of the module.
 
unsigned int m_propertyFlags
 The properties of the module as bitwise or (with |) of EModulePropFlags.
 
LogConfig m_logConfig
 The log system configuration of the module.
 
ModuleParamList m_moduleParamList
 List storing and managing all parameter of the module.
 
bool m_hasReturnValue
 True, if the return value is set.
 
int m_returnValue
 The return value.
 
std::vector< ModuleConditionm_conditions
 Module condition, only non-null if set.
 

Detailed Description

SVD DQM Module for Express Reco.

Definition at line 34 of file SVDDQMExpressRecoModule.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

Each module can be tagged with property flags, which indicate certain features of the module.

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)

c_HistogramManager 

This module is used to manage histograms accumulated by other modules.

c_InternalSerializer 

This module is an internal serializer/deserializer for parallel processing.

c_TerminateInAllProcesses 

When using parallel processing, call this module's terminate() function in all processes().

This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

Member Function Documentation

◆ clone()

std::shared_ptr< PathElement > clone ( ) const
overridevirtualinherited

Create an independent copy of this module.

Note that parameters are shared, so changing them on a cloned module will also affect the original module.

Implements PathElement.

Definition at line 179 of file Module.cc.

◆ def_endRun()

virtual void def_endRun ( )
inlineprotectedvirtualinherited

This method can receive that the current run ends as a call from the Python side.

For regular C++-Modules that forwards the call to the regular endRun() method.

Reimplemented in PyModule.

Definition at line 439 of file Module.h.

◆ def_initialize()

virtual void def_initialize ( )
inlineprotectedvirtualinherited

Wrappers to make the methods without "def_" prefix callable from Python.

Overridden in PyModule. Wrapper method for the virtual function initialize() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 420 of file Module.h.

◆ defineHisto()

void defineHisto ( )
finaloverridevirtual

Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....

are supposed to be placed in this function.

Reimplemented from HistoModule.

Definition at line 80 of file SVDDQMExpressRecoModule.cc.

81 {
82  auto gTools = VXD::GeoCache::getInstance().getGeoTools();
83  if (gTools->getNumberOfLayers() == 0) {
84  B2FATAL("Missing geometry for VXD, check steering file.");
85  }
86  if (gTools->getNumberOfSVDLayers() == 0) {
87  B2WARNING("Missing geometry for SVD, SVD-DQM is skipped.");
88  return;
89  }
90 
91  // Create a separate histogram directories and cd into it.
92  TDirectory* oldDir = gDirectory;
93  if (m_histogramDirectoryName != "") {
94  oldDir->mkdir(m_histogramDirectoryName.c_str());// do not use return value with ->cd(), its ZERO if dir already exists
95  oldDir->cd(m_histogramDirectoryName.c_str());
96  }
97 
98  // basic constants presets:
99  int nSVDSensors = gTools->getNumberOfSVDSensors();
100  int nSVDChips = gTools->getTotalSVDChips();
101 
102  // number of events counter
103  m_nEvents = new TH1F("SVDDQM_nEvents", "SVD Number of Events", 1, -0.5, 0.5);
104  m_nEvents->GetYaxis()->SetTitle("N events");
105  m_histoList->Add(m_nEvents);
106 
107  // Create basic histograms:
108  // basic counters per sensor:
109  m_hitMapCountsU = new TH1F("SVDDQM_StripCountsU", "SVD Integrated Number of ZS5 Fired U-Strips per sensor",
110  nSVDSensors, 0, nSVDSensors);
111  m_hitMapCountsU->GetXaxis()->SetTitle("Sensor ID");
112  m_hitMapCountsU->GetYaxis()->SetTitle("counts");
114  m_hitMapCountsV = new TH1F("SVDDQM_StripCountsV", "SVD Integrated Number of ZS5 Fired V-Strips per sensor",
115  nSVDSensors, 0, nSVDSensors);
116  m_hitMapCountsV->GetXaxis()->SetTitle("Sensor ID");
117  m_hitMapCountsV->GetYaxis()->SetTitle("counts");
119  m_hitMapClCountsU = new TH1F("SVDDQM_ClusterCountsU", "SVD Integrated Number of U-Clusters per sensor",
120  nSVDSensors, 0, nSVDSensors);
121  m_hitMapClCountsU->GetXaxis()->SetTitle("Sensor ID");
122  m_hitMapClCountsU->GetYaxis()->SetTitle("counts");
124  m_hitMapClCountsV = new TH1F("SVDDQM_ClusterCountsV", "SVD Integrated Number of V-Clusters per sensor",
125  nSVDSensors, 0, nSVDSensors);
126  m_hitMapClCountsV->GetXaxis()->SetTitle("Sensor ID");
127  m_hitMapClCountsV->GetYaxis()->SetTitle("counts");
129  for (int i = 0; i < nSVDSensors; i++) {
130  VxdID id = gTools->getSensorIDFromSVDIndex(i);
131  int iLayer = id.getLayerNumber();
132  int iLadder = id.getLadderNumber();
133  int iSensor = id.getSensorNumber();
134  TString AxisTicks = Form("%i_%i_%i", iLayer, iLadder, iSensor);
135  m_hitMapCountsU->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
136  m_hitMapCountsV->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
137  m_hitMapClCountsU->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
138  m_hitMapClCountsV->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
139  }
140 
141  // basic counters per chip:
142  m_hitMapCountsChip = new TH1F("SVDDQM_StripCountsChip", "SVD Integrated Number of ZS5 Fired Strips per chip",
143  nSVDChips, 0, nSVDChips);
144  m_hitMapCountsChip->GetXaxis()->SetTitle("Chip ID");
145  m_hitMapCountsChip->GetYaxis()->SetTitle("counts");
147  m_hitMapClCountsChip = new TH1F("SVDDQM_ClusterCountsChip", "SVD Integrated Number of Clusters per chip",
148  nSVDChips, 0, nSVDChips);
149  m_hitMapClCountsChip->GetXaxis()->SetTitle("Chip ID");
150  m_hitMapClCountsChip->GetYaxis()->SetTitle("counts");
152 
153  if (m_additionalPlots) {
154  m_firedU = new TH1F*[nSVDSensors];
155  m_firedV = new TH1F*[nSVDSensors];
156  m_clustersU = new TH1F*[nSVDSensors];
157  m_clustersV = new TH1F*[nSVDSensors];
158  m_stripSignalU = new TH1F*[nSVDSensors];
159  m_stripSignalV = new TH1F*[nSVDSensors];
160  }
161 
162  m_clusterChargeU = new TH1F*[nSVDSensors];
163  m_clusterChargeV = new TH1F*[nSVDSensors];
164  m_clusterSNRU = new TH1F*[nSVDSensors];
165  m_clusterSNRV = new TH1F*[nSVDSensors];
166 
167  m_stripCountU = new TH1F*[nSVDSensors];
168  m_stripCountV = new TH1F*[nSVDSensors];
169  m_strip3SampleCountU = new TH1F*[nSVDSensors];
170  m_strip3SampleCountV = new TH1F*[nSVDSensors];
171  m_strip6SampleCountU = new TH1F*[nSVDSensors];
172  m_strip6SampleCountV = new TH1F*[nSVDSensors];
173 
174  m_stripCountGroupId0U = new TH1F*[nSVDSensors];
175  m_stripCountGroupId0V = new TH1F*[nSVDSensors];
176 
177  m_onlineZSstripCountU = new TH1F*[nSVDSensors];
178  m_onlineZSstripCountV = new TH1F*[nSVDSensors];
179 
180  if (m_3Samples) {
181  m_onlineZSstrip3SampleCountU = new TH1F*[nSVDSensors];
182  m_onlineZSstrip3SampleCountV = new TH1F*[nSVDSensors];
183  m_onlineZSstrip6sampleCountU = new TH1F*[nSVDSensors];
184  m_onlineZSstrip6sampleCountV = new TH1F*[nSVDSensors];
185  }
186 
187  m_clusterSizeU = new TH1F*[nSVDSensors];
188  m_clusterSizeV = new TH1F*[nSVDSensors];
189  m_clusterTimeU = new TH1F*[nSVDSensors];
190  m_clusterTimeV = new TH1F*[nSVDSensors];
191 
192  int ChargeBins = 80;
193  float ChargeMax = 80;
194  int SNRBins = 50;
195  float SNRMax = 100;
196  int TimeBins = 300;
197  float TimeMin = -150;
198  float TimeMax = 150;
199 
200  int GroupIdBins = 21;
201  float GroupIdMin = -1.5;
202  float GroupIdMax = 19.5;
203 
204  int MaxBinBins = 6;
205  int MaxBinMax = 6;
206 
207  TString refFrame = "in FTSW reference";
208  if (m_desynchSVDTime)
209  refFrame = "in SVD reference";
210 
211 
212  //----------------------------------------------------------------
213  // Charge of clusters for all sensors
214  //----------------------------------------------------------------
215  string name = str(format("SVDDQM_ClusterChargeUAll"));
216  string title = str(format("SVD U-Cluster Charge for all sensors"));
217  m_clusterChargeUAll = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
218  m_clusterChargeUAll->GetXaxis()->SetTitle("cluster charge [ke-]");
219  m_clusterChargeUAll->GetYaxis()->SetTitle("count");
221  name = str(format("SVDDQM_ClusterChargeVAll"));
222  title = str(format("SVD V-Cluster Charge for all sensors"));
223  m_clusterChargeVAll = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
224  m_clusterChargeVAll->GetXaxis()->SetTitle("cluster charge [ke-]");
225  m_clusterChargeVAll->GetYaxis()->SetTitle("count");
227  //----------------------------------------------------------------
228  // Charge of clusters for L3/L456 sensors
229  //----------------------------------------------------------------
230  name = str(format("SVDDQM_ClusterChargeU3"));
231  title = str(format("SVD U-Cluster Charge for layer 3 sensors"));
232  m_clusterChargeU3 = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
233  m_clusterChargeU3->GetXaxis()->SetTitle("cluster charge [ke-]");
234  m_clusterChargeU3->GetYaxis()->SetTitle("count");
236  name = str(format("SVDDQM_ClusterChargeV3"));
237  title = str(format("SVD V-Cluster Charge for layer 3 sensors"));
238  m_clusterChargeV3 = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
239  m_clusterChargeV3->GetXaxis()->SetTitle("cluster charge [ke-]");
240  m_clusterChargeV3->GetYaxis()->SetTitle("count");
242 
243  name = str(format("SVDDQM_ClusterChargeU456"));
244  title = str(format("SVD U-Cluster Charge for layers 4,5,6 sensors"));
245  m_clusterChargeU456 = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
246  m_clusterChargeU456->GetXaxis()->SetTitle("cluster charge [ke-]");
247  m_clusterChargeU456->GetYaxis()->SetTitle("count");
249 
250  name = str(format("SVDDQM_ClusterChargeV456"));
251  title = str(format("SVD V-Cluster Charge for layers 4,5,6 sensors"));
252  m_clusterChargeV456 = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
253  m_clusterChargeV456->GetXaxis()->SetTitle("cluster charge [ke-]");
254  m_clusterChargeV456->GetYaxis()->SetTitle("count");
256 
257  //----------------------------------------------------------------
258  // SNR of clusters for all sensors
259  //----------------------------------------------------------------
260  name = str(format("SVDDQM_ClusterSNRUAll"));
261  title = str(format("SVD U-Cluster SNR for all sensors"));
262  m_clusterSNRUAll = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax); // max = ~ 60
263  m_clusterSNRUAll->GetXaxis()->SetTitle("cluster SNR");
264  m_clusterSNRUAll->GetYaxis()->SetTitle("count");
266  name = str(format("SVDDQM_ClusterSNRVAll"));
267  title = str(format("SVD V-Cluster SNR for all sensors"));
268  m_clusterSNRVAll = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
269  m_clusterSNRVAll->GetXaxis()->SetTitle("cluster SNR");
270  m_clusterSNRVAll->GetYaxis()->SetTitle("count");
272  //----------------------------------------------------------------
273  // SNR of clusters for L3/L456 sensors
274  //----------------------------------------------------------------
275  name = str(format("SVDDQM_ClusterSNRU3"));
276  title = str(format("SVD U-Cluster SNR for layer 3 sensors"));
277  m_clusterSNRU3 = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
278  m_clusterSNRU3->GetXaxis()->SetTitle("cluster SNR");
279  m_clusterSNRU3->GetYaxis()->SetTitle("count");
281  name = str(format("SVDDQM_ClusterSNRV3"));
282  title = str(format("SVD V-Cluster SNR for layer 3 sensors"));
283  m_clusterSNRV3 = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
284  m_clusterSNRV3->GetXaxis()->SetTitle("cluster SNR");
285  m_clusterSNRV3->GetYaxis()->SetTitle("count");
287 
288  name = str(format("SVDDQM_ClusterSNRU456"));
289  title = str(format("SVD U-Cluster SNR for layers 4,5,6 sensors"));
290  m_clusterSNRU456 = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
291  m_clusterSNRU456->GetXaxis()->SetTitle("cluster SNR");
292  m_clusterSNRU456->GetYaxis()->SetTitle("count");
294  name = str(format("SVDDQM_ClusterSNRV456"));
295  title = str(format("SVD V-Cluster SNR for layers 4,5,6 sensors"));
296  m_clusterSNRV456 = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
297  m_clusterSNRV456->GetXaxis()->SetTitle("cluster SNR");
298  m_clusterSNRV456->GetYaxis()->SetTitle("count");
300  //----------------------------------------------------------------
301  // Cluster time distribution for all sensors
302  //----------------------------------------------------------------
303  TString Name = "SVDDQM_ClusterTimeUAll";
304  TString Title = Form("SVD U-Cluster Time %s for all sensors", refFrame.Data());
305  m_clusterTimeUAll = new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
306  m_clusterTimeUAll->GetXaxis()->SetTitle("cluster time (ns)");
307  m_clusterTimeUAll->GetYaxis()->SetTitle("count");
309  Name = "SVDDQM_ClusterTimeVAll";
310  Title = Form("SVD V-Cluster Time %s for all sensors", refFrame.Data());
311  m_clusterTimeVAll = new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
312  m_clusterTimeVAll->GetXaxis()->SetTitle("cluster time (ns)");
313  m_clusterTimeVAll->GetYaxis()->SetTitle("count");
315  //----------------------------------------------------------------
316  // Time of clusters for L3/L456 sensors
317  //----------------------------------------------------------------
318  Name = "SVDDQM_ClusterTimeU3";
319  Title = Form("SVD U-Cluster Time %s for layer 3 sensors", refFrame.Data());
320  m_clusterTimeU3 = new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
321  m_clusterTimeU3->GetXaxis()->SetTitle("cluster time (ns)");
322  m_clusterTimeU3->GetYaxis()->SetTitle("count");
324  name = str(format("SVDDQM_ClusterTimeV3"));
325  Title = Form("SVD V-Cluster Time %s for layer 3 sensors", refFrame.Data());
326  m_clusterTimeV3 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
327  m_clusterTimeV3->GetXaxis()->SetTitle("cluster time (ns)");
328  m_clusterTimeV3->GetYaxis()->SetTitle("count");
330 
331  name = str(format("SVDDQM_ClusterTimeU456"));
332  Title = Form("SVD U-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
333  m_clusterTimeU456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
334  m_clusterTimeU456->GetXaxis()->SetTitle("cluster time (ns)");
335  m_clusterTimeU456->GetYaxis()->SetTitle("count");
337  name = str(format("SVDDQM_ClusterTimeV456"));
338  Title = Form("SVD V-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
339  m_clusterTimeV456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
340  m_clusterTimeV456->GetXaxis()->SetTitle("cluster time (ns)");
341  m_clusterTimeV456->GetYaxis()->SetTitle("count");
343 
344  //----------------------------------------------------------------
345  // Time of clusters for L3/L456 sensors for 3 samples
346  //----------------------------------------------------------------
347  if (m_3Samples) {
348  Name = "SVDDQM_Cluster3TimeU3";
349  Title = Form("SVD U-Cluster Time %s for layer 3 sensors for 3 samples", refFrame.Data());
350  m_cluster3SampleTimeU3 = new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
351  m_cluster3SampleTimeU3->GetXaxis()->SetTitle("cluster time (ns)");
352  m_cluster3SampleTimeU3->GetYaxis()->SetTitle("count");
354  name = str(format("SVDDQM_Cluster3TimeV3"));
355  Title = Form("SVD V-Cluster Time %s for layer 3 sensors for 3 samples", refFrame.Data());
356  m_cluster3SampleTimeV3 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
357  m_cluster3SampleTimeV3->GetXaxis()->SetTitle("cluster time (ns)");
358  m_cluster3SampleTimeV3->GetYaxis()->SetTitle("count");
360  name = str(format("SVDDQM_Cluster3TimeU456"));
361  Title = Form("SVD U-Cluster Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
362  m_cluster3SampleTimeU456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
363  m_cluster3SampleTimeU456->GetXaxis()->SetTitle("cluster time (ns)");
364  m_cluster3SampleTimeU456->GetYaxis()->SetTitle("count");
366  name = str(format("SVDDQM_Cluster3TimeV456"));
367  Title = Form("SVD V-Cluster Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
368  m_cluster3SampleTimeV456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
369  m_cluster3SampleTimeV456->GetXaxis()->SetTitle("cluster time (ns)");
370  m_cluster3SampleTimeV456->GetYaxis()->SetTitle("count");
372 
373  //----------------------------------------------------------------
374  // Time of clusters for L3/L456 sensors for 6 samples
375  //----------------------------------------------------------------
376  Name = "SVDDQM_Cluster6TimeU3";
377  Title = Form("SVD U-Cluster Time %s for layer 3 sensors for 6 samples", refFrame.Data());
378  m_cluster6SampleTimeU3 = new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
379  m_cluster6SampleTimeU3->GetXaxis()->SetTitle("cluster time (ns)");
380  m_cluster6SampleTimeU3->GetYaxis()->SetTitle("count");
382  name = str(format("SVDDQM_Cluster6TimeV3"));
383  Title = Form("SVD V-Cluster Time %s for layer 3 sensors for 6 samples", refFrame.Data());
384  m_cluster6SampleTimeV3 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
385  m_cluster6SampleTimeV3->GetXaxis()->SetTitle("cluster time (ns)");
386  m_cluster6SampleTimeV3->GetYaxis()->SetTitle("count");
388 
389  name = str(format("SVDDQM_Cluster6TimeU456"));
390  Title = Form("SVD U-Cluster Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
391  m_cluster6SampleTimeU456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
392  m_cluster6SampleTimeU456->GetXaxis()->SetTitle("cluster time (ns)");
393  m_cluster6SampleTimeU456->GetYaxis()->SetTitle("count");
395  name = str(format("SVDDQM_Cluster6TimeV456"));
396  Title = Form("SVD V-Cluster Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
397  m_cluster6SampleTimeV456 = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
398  m_cluster6SampleTimeV456->GetXaxis()->SetTitle("cluster time (ns)");
399  m_cluster6SampleTimeV456->GetYaxis()->SetTitle("count");
401  }
402 
403  //----------------------------------------------------------------
404  // Cluster time group Id vs cluster time for U/V sensors
405  //----------------------------------------------------------------
406  Name = "SVDDQM_ClusterTimeGroupIdU";
407  Title = Form("SVD cluster Time Group Id %s vs cluster time for U/P Side", refFrame.Data());
408  m_clusterTimeGroupIdU = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin, GroupIdMax);
409  m_clusterTimeGroupIdU->GetXaxis()->SetTitle("cluster time (ns)");
410  m_clusterTimeGroupIdU->GetYaxis()->SetTitle("cluster group id");
412  Name = "SVDDQM_ClusterTimeGroupIdV";
413  Title = Form("SVD cluster Time Group Id %s vs cluster time for V/N Side", refFrame.Data());
414  m_clusterTimeGroupIdV = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin, GroupIdMax);
415  m_clusterTimeGroupIdV->GetXaxis()->SetTitle("cluster time (ns)");
416  m_clusterTimeGroupIdV->GetYaxis()->SetTitle("cluster group id");
418 
419  //----------------------------------------------------------------
420  // Cluster time group Id vs cluster time for U/V sensors for coarse and fine trigger
421  //----------------------------------------------------------------
422  Name = "SVDDQM_cluster6TimeGroupIdU";
423  Title = Form("SVD cluster Time Group Id %s vs cluster time for U/P Side for coarse trigger", refFrame.Data());
424  m_clusterTimeCoarseGroupIdU = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin,
425  GroupIdMax);
426  m_clusterTimeCoarseGroupIdU->GetXaxis()->SetTitle("cluster time (ns)");
427  m_clusterTimeCoarseGroupIdU->GetYaxis()->SetTitle("cluster group id");
429  Name = "SVDDQM_cluster6TimeGroupIdV";
430  Title = Form("SVD cluster Time Group Id %s vs cluster time for V/N Side for coarse trigger", refFrame.Data());
431  m_clusterTimeCoarseGroupIdV = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin,
432  GroupIdMax);
433  m_clusterTimeCoarseGroupIdV->GetXaxis()->SetTitle("cluster time (ns)");
434  m_clusterTimeCoarseGroupIdV->GetYaxis()->SetTitle("cluster group id");
436 
437  Name = "SVDDQM_cluster3TimeGroupIdU";
438  Title = Form("SVD cluster Time Group Id %s vs cluster time for U/P Side for fine trigger", refFrame.Data());
439  m_clusterTimeFineGroupIdU = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin,
440  GroupIdMax);
441  m_clusterTimeFineGroupIdU->GetXaxis()->SetTitle("cluster time (ns)");
442  m_clusterTimeFineGroupIdU->GetYaxis()->SetTitle("cluster group id");
444  Name = "SVDDQM_cluster3TimeGroupIdV";
445  Title = Form("SVD cluster Time Group Id %s vs cluster time for V/N Side for fine trigger", refFrame.Data());
446  m_clusterTimeFineGroupIdV = new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin,
447  GroupIdMax);
448  m_clusterTimeFineGroupIdV->GetXaxis()->SetTitle("cluster time (ns)");
449  m_clusterTimeFineGroupIdV->GetYaxis()->SetTitle("cluster group id");
451 
452  //----------------------------------------------------------------
453  // MaxBin of strips for all sensors (offline ZS)
454  //----------------------------------------------------------------
455  name = str(format("SVDDQM_StripMaxBinUAll"));
456  title = str(format("SVD U-Strip MaxBin for all sensors"));
457  m_stripMaxBinUAll = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
458  m_stripMaxBinUAll->GetXaxis()->SetTitle("max bin");
459  m_stripMaxBinUAll->GetYaxis()->SetTitle("count");
461  name = str(format("SVDDQM_StripMaxBinVAll"));
462  title = str(format("SVD V-Strip MaxBin for all sensors"));
463  m_stripMaxBinVAll = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
464  m_stripMaxBinVAll->GetXaxis()->SetTitle("max bin");
465  m_stripMaxBinVAll->GetYaxis()->SetTitle("count");
467 
468  name = str(format("SVDDQM_StripMaxBinU3"));
469  title = str(format("SVD U-Strip MaxBin for layer 3 sensors"));
470  m_stripMaxBinU3 = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
471  m_stripMaxBinU3->GetXaxis()->SetTitle("max bin");
472  m_stripMaxBinU3->GetYaxis()->SetTitle("count");
474  name = str(format("SVDDQM_StripMaxBinV3"));
475  title = str(format("SVD V-Strip MaxBin for layer 3 sensors"));
476  m_stripMaxBinV3 = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
477  m_stripMaxBinV3->GetXaxis()->SetTitle("max bin");
478  m_stripMaxBinV3->GetYaxis()->SetTitle("count");
480 
481  name = str(format("SVDDQM_StripMaxBinU6"));
482  title = str(format("SVD U-Strip MaxBin for layer 6 sensors"));
483  m_stripMaxBinU6 = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
484  m_stripMaxBinU6->GetXaxis()->SetTitle("max bin");
485  m_stripMaxBinU6->GetYaxis()->SetTitle("count");
487  name = str(format("SVDDQM_StripMaxBinV6"));
488  title = str(format("SVD V-Strip MaxBin for layer 6 sensors"));
489  m_stripMaxBinV6 = new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
490  m_stripMaxBinV6->GetXaxis()->SetTitle("max bin");
491  m_stripMaxBinV6->GetYaxis()->SetTitle("count");
493 
494  for (int i = 0; i < nSVDSensors; i++) {
495  VxdID id = gTools->getSensorIDFromSVDIndex(i);
496  int iLayer = id.getLayerNumber();
497  int iLadder = id.getLadderNumber();
498  int iSensor = id.getSensorNumber();
499  VxdID sensorID(iLayer, iLadder, iSensor);
500  SVD::SensorInfo SensorInfo = dynamic_cast<const SVD::SensorInfo&>(VXD::GeoCache::getInstance().getSensorInfo(sensorID));
501  string sensorDescr = str(format("%1%_%2%_%3%") % iLayer % iLadder % iSensor);
502 
503  if (m_additionalPlots) {
504  //----------------------------------------------------------------
505  // Number of fired strips per sensor
506  //----------------------------------------------------------------
507  name = str(format("SVDDQM_%1%_FiredU") % sensorDescr);
508  title = str(format("SVD Sensor %1% Number of Fired U-Strips") % sensorDescr);
509  m_firedU[i] = new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
510  m_firedU[i]->GetXaxis()->SetTitle("# fired strips");
511  m_firedU[i]->GetYaxis()->SetTitle("count");
512  m_histoList->Add(m_firedU[i]);
513  name = str(format("SVDDQM_%1%_FiredV") % sensorDescr);
514  title = str(format("SVD Sensor %1% Number of Fired V-Strips") % sensorDescr);
515  m_firedV[i] = new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
516  m_firedV[i]->GetXaxis()->SetTitle("# fired strips");
517  m_firedV[i]->GetYaxis()->SetTitle("count");
518  m_histoList->Add(m_firedV[i]);
519  //----------------------------------------------------------------
520  // Number of clusters per sensor
521  //----------------------------------------------------------------
522  name = str(format("SVDDQM_%1%_ClustersU") % sensorDescr);
523  title = str(format("SVD Sensor %1% Number of U-Clusters") % sensorDescr);
524  m_clustersU[i] = new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
525  m_clustersU[i]->GetXaxis()->SetTitle("# clusters");
526  m_clustersU[i]->GetYaxis()->SetTitle("count");
527  m_histoList->Add(m_clustersU[i]);
528  name = str(format("SVDDQM_%1%_ClustersV") % sensorDescr);
529  title = str(format("SVD Sensor %1% Number of V-Clusters") % sensorDescr);
530  m_clustersV[i] = new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
531  m_clustersV[i]->GetXaxis()->SetTitle("# clusters");
532  m_clustersV[i]->GetYaxis()->SetTitle("count");
533  m_histoList->Add(m_clustersV[i]);
534  //----------------------------------------------------------------
535  // Charge of strips
536  //----------------------------------------------------------------
537  name = str(format("SVDDQM_%1%_ADCStripU") % sensorDescr);
538  title = str(format("SVD Sensor %1% U-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
539  m_stripSignalU[i] = new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
540  m_stripSignalU[i]->GetXaxis()->SetTitle("signal ADC");
541  m_stripSignalU[i]->GetYaxis()->SetTitle("count");
542  m_histoList->Add(m_stripSignalU[i]);
543  name = str(format("SVDDQM_%1%_ADCStripV") % sensorDescr);
544  title = str(format("SVD Sensor %1% V-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
545  m_stripSignalV[i] = new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
546  m_stripSignalV[i]->GetXaxis()->SetTitle("signal ADC");
547  m_stripSignalV[i]->GetYaxis()->SetTitle("count");
548  m_histoList->Add(m_stripSignalV[i]);
549  }
550 
551  //----------------------------------------------------------------
552  // Charge of clusters
553  //----------------------------------------------------------------
554  name = str(format("SVDDQM_%1%_ClusterChargeU") % sensorDescr);
555  title = str(format("SVD Sensor %1% U-Cluster Charge") % sensorDescr);
556  m_clusterChargeU[i] = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
557  m_clusterChargeU[i]->GetXaxis()->SetTitle("cluster charge [ke-]");
558  m_clusterChargeU[i]->GetYaxis()->SetTitle("count");
559  m_histoList->Add(m_clusterChargeU[i]);
560  name = str(format("SVDDQM_%1%_ClusterChargeV") % sensorDescr);
561  title = str(format("SVD Sensor %1% V-Cluster Charge") % sensorDescr);
562  m_clusterChargeV[i] = new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
563  m_clusterChargeV[i]->GetXaxis()->SetTitle("cluster charge [ke-]");
564  m_clusterChargeV[i]->GetYaxis()->SetTitle("count");
565  m_histoList->Add(m_clusterChargeV[i]);
566  //----------------------------------------------------------------
567  // SNR of clusters
568  //----------------------------------------------------------------
569  name = str(format("SVDDQM_%1%_ClusterSNRU") % sensorDescr);
570  title = str(format("SVD Sensor %1% U-Cluster SNR") % sensorDescr);
571  m_clusterSNRU[i] = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
572  m_clusterSNRU[i]->GetXaxis()->SetTitle("cluster SNR");
573  m_clusterSNRU[i]->GetYaxis()->SetTitle("count");
574  m_histoList->Add(m_clusterSNRU[i]);
575  name = str(format("SVDDQM_%1%_ClusterSNRV") % sensorDescr);
576  title = str(format("SVD Sensor %1% V-Cluster SNR") % sensorDescr);
577  m_clusterSNRV[i] = new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
578  m_clusterSNRV[i]->GetXaxis()->SetTitle("cluster SNR");
579  m_clusterSNRV[i]->GetYaxis()->SetTitle("count");
580  m_histoList->Add(m_clusterSNRV[i]);
581 
582  //----------------------------------------------------------------
583  // Strips Counts
584  //----------------------------------------------------------------
585  name = str(format("SVDDQM_%1%_StripCountU") % sensorDescr);
586  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number") % sensorDescr);
587  m_stripCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
588  m_stripCountU[i]->GetXaxis()->SetTitle("cellID");
589  m_stripCountU[i]->GetYaxis()->SetTitle("count");
590  m_histoList->Add(m_stripCountU[i]);
591  name = str(format("SVDDQM_%1%_StripCountV") % sensorDescr);
592  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number") % sensorDescr);
593  m_stripCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
594  m_stripCountV[i]->GetXaxis()->SetTitle("cellID");
595  m_stripCountV[i]->GetYaxis()->SetTitle("count");
596  m_histoList->Add(m_stripCountV[i]);
597  //----------------------------------------------------------------
598  // Strips Counts with online ZS
599  //----------------------------------------------------------------
600  name = str(format("SVDDQM_%1%_OnlineZSStripCountU") % sensorDescr);
601  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number") % sensorDescr);
602  m_onlineZSstripCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
603  m_onlineZSstripCountU[i]->GetXaxis()->SetTitle("cellID");
604  m_onlineZSstripCountU[i]->GetYaxis()->SetTitle("count");
606  name = str(format("SVDDQM_%1%_OnlineZSStripCountV") % sensorDescr);
607  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number") % sensorDescr);
608  m_onlineZSstripCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
609  m_onlineZSstripCountV[i]->GetXaxis()->SetTitle("cellID");
610  m_onlineZSstripCountV[i]->GetYaxis()->SetTitle("count");
612 
613  //----------------------------------------------------------------
614  // Strips Counts for 3 samples
615  //----------------------------------------------------------------
616  if (m_3Samples) {
617  name = str(format("SVDDQM_%1%_Strip3CountU") % sensorDescr);
618  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number for 3 samples") % sensorDescr);
619  m_strip3SampleCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
620  m_strip3SampleCountU[i]->GetXaxis()->SetTitle("cellID");
621  m_strip3SampleCountU[i]->GetYaxis()->SetTitle("count");
623  name = str(format("SVDDQM_%1%_Strip3CountV") % sensorDescr);
624  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number for 3 samples") % sensorDescr);
625  m_strip3SampleCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
626  m_strip3SampleCountV[i]->GetXaxis()->SetTitle("cellID");
627  m_strip3SampleCountV[i]->GetYaxis()->SetTitle("count");
629 
630  //----------------------------------------------------------------
631  // Strips Counts with online ZS for 3 samples
632  //----------------------------------------------------------------
633  name = str(format("SVDDQM_%1%_OnlineZSStrip3CountU") % sensorDescr);
634  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number for 3 samples") % sensorDescr);
635  m_onlineZSstrip3SampleCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
636  m_onlineZSstrip3SampleCountU[i]->GetXaxis()->SetTitle("cellID");
637  m_onlineZSstrip3SampleCountU[i]->GetYaxis()->SetTitle("count");
639  name = str(format("SVDDQM_%1%_OnlineZSStrip3CountV") % sensorDescr);
640  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number for 3 samples") % sensorDescr);
641  m_onlineZSstrip3SampleCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
642  m_onlineZSstrip3SampleCountV[i]->GetXaxis()->SetTitle("cellID");
643  m_onlineZSstrip3SampleCountV[i]->GetYaxis()->SetTitle("count");
645 
646  //----------------------------------------------------------------
647  // Strips Counts for 6 samples
648  //----------------------------------------------------------------
649  name = str(format("SVDDQM_%1%_Strip6CountU") % sensorDescr);
650  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number for 6 samples") % sensorDescr);
651  m_strip6SampleCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
652  m_strip6SampleCountU[i]->GetXaxis()->SetTitle("cellID");
653  m_strip6SampleCountU[i]->GetYaxis()->SetTitle("count");
655  name = str(format("SVDDQM_%1%_strip6CountV") % sensorDescr);
656  title = str(format("SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number for 6 samples") % sensorDescr);
657  m_strip6SampleCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
658  m_strip6SampleCountV[i]->GetXaxis()->SetTitle("cellID");
659  m_strip6SampleCountV[i]->GetYaxis()->SetTitle("count");
661  //----------------------------------------------------------------
662  // Strips Counts with online ZS for 6 samples
663  //----------------------------------------------------------------
664  name = str(format("SVDDQM_%1%_OnlineZSStrip6CountU") % sensorDescr);
665  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number for 6 samples") % sensorDescr);
666  m_onlineZSstrip6sampleCountU[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
667  m_onlineZSstrip6sampleCountU[i]->GetXaxis()->SetTitle("cellID");
668  m_onlineZSstrip6sampleCountU[i]->GetYaxis()->SetTitle("count");
670  name = str(format("SVDDQM_%1%_OnlineZSStrip6CountV") % sensorDescr);
671  title = str(format("SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number for 6 samples") % sensorDescr);
672  m_onlineZSstrip6sampleCountV[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
673  m_onlineZSstrip6sampleCountV[i]->GetXaxis()->SetTitle("cellID");
674  m_onlineZSstrip6sampleCountV[i]->GetYaxis()->SetTitle("count");
676  }
677 
678  //----------------------------------------------------------------
679  // Strips Counts for cluster time group id = 0
680  //----------------------------------------------------------------
681  name = str(format("SVDDQM_%1%_StripCountGroupId0U") % sensorDescr);
682  title = str(format("SVD Sensor %1% Integrated NumberFired U-Strip for group Id = 0 vs Strip Number") % sensorDescr);
683  m_stripCountGroupId0U[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
684  m_stripCountGroupId0U[i]->GetXaxis()->SetTitle("cellID");
685  m_stripCountGroupId0U[i]->GetYaxis()->SetTitle("count");
687  name = str(format("SVDDQM_%1%_StripCountGroupId0V") % sensorDescr);
688  title = str(format("SVD Sensor %1% Integrated Number of Fired V-Strip for group Id = 0 vs Strip Number") % sensorDescr);
689  m_stripCountGroupId0V[i] = new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
690  m_stripCountGroupId0V[i]->GetXaxis()->SetTitle("cellID");
691  m_stripCountGroupId0V[i]->GetYaxis()->SetTitle("count");
693 
694  //----------------------------------------------------------------
695  // Cluster size distribution
696  //----------------------------------------------------------------
697  name = str(format("SVDDQM_%1%_ClusterSizeU") % sensorDescr);
698  title = str(format("SVD Sensor %1% U-Cluster Size") % sensorDescr);
699  m_clusterSizeU[i] = new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
700  m_clusterSizeU[i]->GetXaxis()->SetTitle("cluster size");
701  m_clusterSizeU[i]->GetYaxis()->SetTitle("count");
702  m_histoList->Add(m_clusterSizeU[i]);
703  name = str(format("SVDDQM_%1%_ClusterSizeV") % sensorDescr);
704  title = str(format("SVD Sensor %1% V-Cluster Size") % sensorDescr);
705  m_clusterSizeV[i] = new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
706  m_clusterSizeV[i]->GetXaxis()->SetTitle("cluster size");
707  m_clusterSizeV[i]->GetYaxis()->SetTitle("count");
708  m_histoList->Add(m_clusterSizeV[i]);
709  //----------------------------------------------------------------
710  // Cluster time distribution
711  //----------------------------------------------------------------
712  name = str(format("SVDDQM_%1%_ClusterTimeU") % sensorDescr);
713  Title = Form("SVD Sensor %s U-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
714  m_clusterTimeU[i] = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
715  m_clusterTimeU[i]->GetXaxis()->SetTitle("cluster time (ns)");
716  m_clusterTimeU[i]->GetYaxis()->SetTitle("count");
717  m_histoList->Add(m_clusterTimeU[i]);
718  name = str(format("SVDDQM_%1%_ClusterTimeV") % sensorDescr);
719  Title = Form("SVD Sensor %s V-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
720  m_clusterTimeV[i] = new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
721  m_clusterTimeV[i]->GetXaxis()->SetTitle("cluster time (ns)");
722  m_clusterTimeV[i]->GetYaxis()->SetTitle("count");
723  m_histoList->Add(m_clusterTimeV[i]);
724  }
725 
726  for (int i = 0; i < nSVDChips; i++) {
727  VxdID id = gTools->getChipIDFromSVDIndex(i);
728  int iLayer = id.getLayerNumber();
729  int iLadder = id.getLadderNumber();
730  int iSensor = id.getSensorNumber();
731  int iChip = gTools->getSVDChipNumber(id);
732  int IsU = gTools->isSVDSideU(id);
733  TString AxisTicks = Form("%i_%i_%i_u%i", iLayer, iLadder, iSensor, iChip);
734  if (!IsU)
735  AxisTicks = Form("%i_%i_%i_v%i", iLayer, iLadder, iSensor, iChip);
736  m_hitMapCountsChip->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
737  m_hitMapClCountsChip->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
738  }
739 
740 
741 
742  //----------------------------------------------------------------
743  // Additional histograms for out of ExpressReco
744  //----------------------------------------------------------------
745 
746  if (m_ShowAllHistos == 1) {
747  TDirectory* dirShowAll = nullptr;
748  dirShowAll = oldDir->mkdir("SVDDQMAll");
749  dirShowAll->cd();
750 
751  m_hitMapU = new TH2F*[nSVDSensors];
752  m_hitMapV = new TH2F*[nSVDSensors];
753  m_hitMapUCl = new TH1F*[nSVDSensors];
754  m_hitMapVCl = new TH1F*[nSVDSensors];
755  for (int i = 0; i < nSVDSensors; i++) {
756  VxdID id = gTools->getSensorIDFromSVDIndex(i);
757  int iLayer = id.getLayerNumber();
758  int iLadder = id.getLadderNumber();
759  int iSensor = id.getSensorNumber();
760  VxdID sensorID(iLayer, iLadder, iSensor);
761  SVD::SensorInfo SensorInfo = dynamic_cast<const SVD::SensorInfo&>(VXD::GeoCache::getInstance().getSensorInfo(sensorID));
762  string sensorDescr = str(format("%1%_%2%_%3%") % iLayer % iLadder % iSensor);
763  //----------------------------------------------------------------
764  // Hitmaps: Number of strips by coordinate
765  //----------------------------------------------------------------
766  name = str(format("SVD_%1%_StripHitmapU") % sensorDescr);
767  title = str(format("SVD Sensor %1% Strip Hitmap in U") % sensorDescr);
768  int nStrips = SensorInfo.getUCells();
769  m_hitMapU[i] = new TH2F(name.c_str(), title.c_str(), nStrips, 0, nStrips, SVDShaperDigit::c_nAPVSamples, 0,
771  m_hitMapU[i]->GetXaxis()->SetTitle("u position [pitch units]");
772  m_hitMapU[i]->GetYaxis()->SetTitle("timebin [time units]");
773  m_hitMapU[i]->GetZaxis()->SetTitle("hits");
774  m_histoList->Add(m_hitMapU[i]);
775  name = str(format("SVD_%1%_StripHitmapV") % sensorDescr);
776  title = str(format("SVD Sensor %1% Strip Hitmap in V") % sensorDescr);
777  nStrips = SensorInfo.getVCells();
778  m_hitMapV[i] = new TH2F(name.c_str(), title.c_str(), nStrips, 0, nStrips, SVDShaperDigit::c_nAPVSamples, 0,
780  m_hitMapV[i]->GetXaxis()->SetTitle("v position [pitch units]");
781  m_hitMapV[i]->GetYaxis()->SetTitle("timebin [time units]");
782  m_hitMapV[i]->GetZaxis()->SetTitle("hits");
783  m_histoList->Add(m_hitMapV[i]);
784  //----------------------------------------------------------------
785  // Hitmaps: Number of clusters by coordinate
786  //----------------------------------------------------------------
787  name = str(format("SVD_%1%_HitmapClstU") % sensorDescr);
788  title = str(format("SVD Sensor %1% Hitmap Clusters in U") % sensorDescr);
789  nStrips = SensorInfo.getUCells();
790  m_hitMapUCl[i] = new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
791  m_hitMapUCl[i]->GetXaxis()->SetTitle("u position [pitch units]");
792  m_hitMapUCl[i]->GetYaxis()->SetTitle("hits");
793  m_histoList->Add(m_hitMapUCl[i]);
794  name = str(format("SVD_%1%_HitmapClstV") % sensorDescr);
795  title = str(format("SVD Sensor %1% Hitmap Clusters in V") % sensorDescr);
796  nStrips = SensorInfo.getVCells();
797  m_hitMapVCl[i] = new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
798  m_hitMapVCl[i]->GetXaxis()->SetTitle("v position [pitch units]");
799  m_hitMapVCl[i]->GetYaxis()->SetTitle("hits");
800  m_histoList->Add(m_hitMapVCl[i]);
801  }
802  }
803 
804  oldDir->cd();
805 }
TH1F ** m_hitMapUCl
Hitmaps clusters for u.
TH1F ** m_clustersV
number of v clusters per event
TH1F * m_clusterSNRVAll
v SNR of clusters for all sensors
TH1F ** m_strip3SampleCountV
v strip count for 3 samples
TH1F * m_clusterTimeV456
v Time of clusters for layer 4,5,6 sensors
TH1F * m_clusterSNRUAll
u SNR of clusters for all sensors
TH1F * m_clusterChargeU3
u charge of clusters for layer 3 sensors
TH2F * m_clusterTimeGroupIdV
time group id for V side
TH1F * m_clusterSNRV3
v SNR of clusters for layer 3 sensors
TH1F * m_hitMapCountsV
Hitmaps v of Digits.
TH2F ** m_hitMapU
Hitmaps pixels for u.
TH1F ** m_onlineZSstrip6sampleCountU
u strip count (online Zero Suppression) for 6 samples
TH1F * m_stripMaxBinU6
u MaxBin of strips for layer 6 sensors (offline Zero Suppression)
TH1F * m_clusterTimeUAll
u time of clusters for all sensors
TH1F ** m_onlineZSstrip3SampleCountV
v strip count (online Zero Suppression for 3 samples
TH1F * m_hitMapClCountsU
Hitmaps u of Clusters.
TH2F * m_clusterTimeFineGroupIdV
time group id for V side for fine trigger
TH1F * m_cluster6SampleTimeU3
u Time of clusters for layer 3 sensors for 6 samples
TH1F * m_hitMapCountsU
Hitmaps u of Digits.
TH1F ** m_clusterSNRV
v SNR of clusters per sensor
TH1F ** m_clusterChargeV
v charge of clusters
TH1F * m_cluster3SampleTimeU3
u Time of clusters for layer 3 sensors for 3 samples
TH1F ** m_stripSignalU
u charge of strips
TH1F * m_clusterChargeUAll
u charge of clusters for all sensors
TH1F * m_cluster3SampleTimeU456
u Time of clusters for layer 4,5,6 sensors for 3 samples
TH1F * m_clusterChargeU456
u charge of clusters for layer 4,5,6 sensors
TH1F * m_cluster3SampleTimeV456
v Time of clusters for layer 4,5,6 sensors for 3 samples
TH1F * m_clusterTimeV3
v Time of clusters for layer 3 sensors
TH1F ** m_clusterSNRU
u SNR of clusters per sensor
TH1F ** m_hitMapVCl
Hitmaps clusters for v.
TH1F ** m_strip3SampleCountU
u strip count for 3 samples
TH1F * m_stripMaxBinV3
v MaxBin of strips for layer 3 sensors (offline Zero Suppression)
TH1F * m_clusterTimeVAll
v time of clusters for all sensors
TH2F * m_clusterTimeCoarseGroupIdU
time group id for U side for coarse trigger
TH1F ** m_onlineZSstripCountV
v strip count (online Zero Suppression
TH1F ** m_stripSignalV
v charge of strips
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
TH1F * m_clusterChargeVAll
v charge of clusters for all sensors
TH1F * m_clusterSNRU3
u SNR of clusters for layer 3 sensors
TH1F * m_clusterSNRV456
v SNR of clusters for layer 4,5,6 sensors
TH1F * m_stripMaxBinUAll
u MaxBin of strips for all sensors (offline Zero Suppression)
bool m_3Samples
if true enable 3 samples histograms analysis
TList * m_histoList
list of cumulative histograms
TH1F ** m_clusterChargeU
u charge of clusters
TH1F * m_hitMapCountsChip
Hitmaps of digits on chips.
TH1F * m_cluster3SampleTimeV3
v Time of clusters for layer 3 sensors for 3 samples
TH1F * m_clusterChargeV3
v charge of clusters for layer 3 sensors
TH2F ** m_hitMapV
Hitmaps pixels for v.
TH1F * m_stripMaxBinV6
v MaxBin of strips for layer 6 sensors (offline Zero Suppression)
TH1F ** m_stripCountGroupId0V
V strip count for cluster time group Id = 0.
TH1F ** m_strip6SampleCountV
v strip count for 3 samples
TH1F * m_cluster6SampleTimeV456
v Time of clusters for layer 4,5,6 sensors for 6 samples
TH1F ** m_firedU
Fired u strips per event.
TH1F * m_clusterTimeU3
u Time of clusters for layer 3 sensors
TH1F * m_cluster6SampleTimeV3
v Time of clusters for layer 3 sensors for 6 samples
TH1F * m_clusterSNRU456
u SNR of clusters for layer 4,5,6 sensors
TH1F ** m_onlineZSstripCountU
u strip count (online Zero Suppression)
int m_ShowAllHistos
Flag to show all histos in DQM, default = 0 (do not show)
bool m_additionalPlots
additional plots flag
TH1F * m_stripMaxBinU3
u MaxBin of strips for layer 3 sensors (offline Zero Suppression)
bool m_desynchSVDTime
if TRUE: svdTime back in SVD time reference
TH1F * m_stripMaxBinVAll
v MaxBin of strips for all sensors (offline Zero Suppression)
TH1F * m_hitMapClCountsChip
Hitmaps of clusters on chips.
TH1F ** m_strip6SampleCountU
u strip count for 6 samples
TH1F ** m_onlineZSstrip3SampleCountU
u strip count (online Zero Suppression) for 3 samples
TH1F ** m_onlineZSstrip6sampleCountV
v strip count (online Zero Suppression for 6 samples
TH2F * m_clusterTimeGroupIdU
time group id for U side
TH1F * m_clusterTimeU456
u Time of clusters for layer 4,5,6 sensors
TH2F * m_clusterTimeCoarseGroupIdV
time group id for V side for coarse trigger
TH1F ** m_firedV
Fired v strips per event.
TH1F * m_clusterChargeV456
v charge of clusters for layer 4,5,6 sensors
TH1F ** m_stripCountGroupId0U
U strip count for cluster time group Id = 0.
TH1F * m_hitMapClCountsV
Hitmaps v of Clusters.
TH1F ** m_clustersU
number of u clusters per event
TH2F * m_clusterTimeFineGroupIdU
time group id for U side for fine trigger
TH1F * m_cluster6SampleTimeU456
u Time of clusters for layer 4,5,6 sensors for 6 samples
static const std::size_t c_nAPVSamples
Number of APV samples stored.
Specific implementation of SensorInfo for SVD Sensors which provides additional sensor specific infor...
Definition: SensorInfo.h:25
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a referecne to the SensorInfo of a given SensorID.
Definition: GeoCache.cc:67
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition: GeoCache.cc:214
const GeoTools * getGeoTools()
Return a raw pointer to a GeoTools object.
Definition: GeoCache.h:147
int getVCells() const
Return number of pixel/strips in v direction.
int getUCells() const
Return number of pixel/strips in u direction.
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:96

◆ evalCondition()

bool evalCondition ( ) const
inherited

If at least one condition was set, it is evaluated and true returned if at least one condition returns true.

If no condition or result value was defined, the method returns false. Otherwise, the condition is evaluated and true returned, if at least one condition returns true. To speed up the evaluation, the condition strings were already parsed in the method if_value().

Returns
True if at least one condition and return value exists and at least one condition expression was evaluated to true.

Definition at line 96 of file Module.cc.

◆ getAfterConditionPath()

Module::EAfterConditionPath getAfterConditionPath ( ) const
inherited

What to do after the conditional path is finished.

(defaults to c_End if no condition is set)

Definition at line 133 of file Module.cc.

◆ getConditionPath()

std::shared_ptr< Path > getConditionPath ( ) const
inherited

Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).


Definition at line 113 of file Module.cc.

◆ getFileNames()

virtual std::vector<std::string> getFileNames ( bool  outputFiles)
inlinevirtualinherited

Return a list of output filenames for this modules.

This will be called when basf2 is run with "--dry-run" if the module has set either the c_Input or c_Output properties.

If the parameter outputFiles is false (for modules with c_Input) the list of input filenames should be returned (if any). If outputFiles is true (for modules with c_Output) the list of output files should be returned (if any).

If a module has sat both properties this member is called twice, once for each property.

The module should return the actual list of requested input or produced output filenames (including handling of input/output overrides) so that the grid system can handle input/output files correctly.

This function should return the same value when called multiple times. This is especially important when taking the input/output overrides from Environment as they get consumed when obtained so the finalized list of output files should be stored for subsequent calls.

Reimplemented in RootOutputModule, StorageRootOutputModule, and RootInputModule.

Definition at line 134 of file Module.h.

◆ getName()

const std::string& getName ( ) const
inlineinherited

Returns the name of the module.

This can be changed via e.g. set_name() in the steering file to give more useful names if there is more than one module of the same type.

For identifying the type of a module, using getType() (or type() in Python) is recommended.

Definition at line 187 of file Module.h.

◆ getParamInfoListPython()

std::shared_ptr< boost::python::list > getParamInfoListPython ( ) const
inherited

Returns a python list of all parameters.

Each item in the list consists of the name of the parameter, a string describing its type, a python list of all default values and the description of the parameter.

Returns
A python list containing the parameters of this parameter list.

Definition at line 279 of file Module.cc.

◆ getReturnValue()

int getReturnValue ( ) const
inlineinherited

Return the return value set by this module.

This value is only meaningful if hasReturnValue() is true

Definition at line 381 of file Module.h.

◆ getType()

const std::string & getType ( ) const
inherited

Returns the type of the module (i.e.

class name minus 'Module')

Definition at line 41 of file Module.cc.

◆ hasProperties()

bool hasProperties ( unsigned int  propertyFlags) const
inherited

Returns true if all specified property flags are available in this module.

Parameters
propertyFlagsOred EModulePropFlags which should be compared with the module flags.

Definition at line 160 of file Module.cc.

◆ if_false()

void if_false ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression "<1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is false.
afterConditionPathWhat to do after executing 'path'.

Definition at line 85 of file Module.cc.

◆ if_true()

void if_true ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to set the condition of the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression ">=1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 90 of file Module.cc.

◆ if_value()

void if_value ( const std::string &  expression,
const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

Add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

See https://confluence.desy.de/display/BI/Software+ModCondTut or ModuleCondition for a description of the syntax.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

Parameters
expressionThe expression of the condition.
pathShared pointer to the Path which will be executed if the condition is evaluated to true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 79 of file Module.cc.

◆ setDescription()

void setDescription ( const std::string &  description)
protectedinherited

Sets the description of the module.

Parameters
descriptionA description of the module.

Definition at line 214 of file Module.cc.

◆ setLogInfo()

void setLogInfo ( int  logLevel,
unsigned int  logInfo 
)
inherited

Configure the printed log information for the given level.

Parameters
logLevelThe log level (one of LogConfig::ELogLevel)
logInfoWhat kind of info should be printed? ORed combination of LogConfig::ELogInfo flags.

Definition at line 73 of file Module.cc.

◆ setName()

void setName ( const std::string &  name)
inlineinherited

Set the name of the module.

Note
The module name is set when using the REG_MODULE macro, but the module can be renamed before calling process() using the set_name() function in your steering file.
Parameters
nameThe name of the module

Definition at line 214 of file Module.h.

◆ setParamPython()

void setParamPython ( const std::string &  name,
const boost::python::object &  pyObj 
)
privateinherited

Implements a method for setting boost::python objects.

The method supports the following types: list, dict, int, double, string, bool The conversion of the python object to the C++ type and the final storage of the parameter value is done in the ModuleParam class.

Parameters
nameThe unique name of the parameter.
pyObjThe object which should be converted and stored as the parameter value.

Definition at line 234 of file Module.cc.

◆ setParamPythonDict()

void setParamPythonDict ( const boost::python::dict &  dictionary)
privateinherited

Implements a method for reading the parameter values from a boost::python dictionary.

The key of the dictionary has to be the name of the parameter and the value has to be of one of the supported parameter types.

Parameters
dictionaryThe python dictionary from which the parameter values are read.

Definition at line 249 of file Module.cc.

◆ setPropertyFlags()

void setPropertyFlags ( unsigned int  propertyFlags)
inherited

Sets the flags for the module properties.

Parameters
propertyFlagsbitwise OR of EModulePropFlags

Definition at line 208 of file Module.cc.

◆ setReturnValue() [1/2]

void setReturnValue ( bool  value)
protectedinherited

Sets the return value for this module as bool.

The bool value is saved as an integer with the convention 1 meaning true and 0 meaning false. The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 227 of file Module.cc.

◆ setReturnValue() [2/2]

void setReturnValue ( int  value)
protectedinherited

Sets the return value for this module as integer.

The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 220 of file Module.cc.

◆ setType()

void setType ( const std::string &  type)
protectedinherited

Set the module type.

Only for use by internal modules (which don't use the normal REG_MODULE mechanism).

Definition at line 48 of file Module.cc.


The documentation for this class was generated from the following files: