Belle II Software  release-08-00-10
DQMHistAnalysisSVDEfficiencyModule Class Referencefinal

Class definition for the output module of Sequential ROOT I/O. More...

#include <DQMHistAnalysisSVDEfficiency.h>

Inheritance diagram for DQMHistAnalysisSVDEfficiencyModule:
Collaboration diagram for DQMHistAnalysisSVDEfficiencyModule:

Public Types

typedef std::map< std::string, HistObjectHistList
 The type of list of histograms.
 
typedef std::map< std::string, MonitoringObject * > MonObjList
 The type of list of MonitoringObjects.
 
typedef std::map< std::string, HistDelta * > DeltaList
 The type of list of delta settings and histograms.
 
typedef std::map< std::string, bool > CanvasUpdatedList
 The type of list of canvas updated status.
 
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

 DQMHistAnalysisSVDEfficiencyModule ()
 Constructor.
 
 ~DQMHistAnalysisSVDEfficiencyModule ()
 Destructor.
 
void initialize () override final
 Initializer.
 
void beginRun () override final
 Called when entering a new run.
 
void event () override final
 This method is called for each event. More...
 
void endRun () override final
 This method is called if the current run ends.
 
void terminate () override final
 This method is called at the end of the event processing.
 
void setRunType (std::string &t)
 Set the Run Type. More...
 
void setEventProcessed (int e)
 Set the number of processed events. More...
 
TCanvas * findCanvas (TString cname)
 Find canvas by name. More...
 
TH1 * findHistInCanvas (const std::string &hname)
 Find histogram in corresponding canvas. More...
 
double getSigma68 (TH1 *h) const
 Helper function to compute half of the central interval covering 68% of a distribution. More...
 
TH1 * getDelta (const std::string &fullname, int n=0, bool onlyIfUpdated=true)
 Get Delta histogram. More...
 
TH1 * getDelta (const std::string &dirname, const std::string &histname, int n=0, bool onlyIfUpdated=true)
 Get Delta histogram. More...
 
void addDeltaPar (const std::string &dirname, const std::string &histname, HistDelta::EDeltaType t, int p, unsigned int a=1)
 Add Delta histogram parameters. More...
 
bool hasDeltaPar (const std::string &dirname, const std::string &histname)
 Check if Delta histogram parameters exist for histogram. More...
 
void UpdateCanvas (std::string name, bool updated=true)
 Mark canvas as updated (or not) More...
 
void UpdateCanvas (TCanvas *canvas, bool updated=true)
 Mark canvas as updated (or not) More...
 
void ExtractRunType (std::vector< TH1 * > &hs)
 Extract Run Type from histogram title, called from input module.
 
void ExtractEvent (std::vector< TH1 * > &hs)
 Extract event processed from daq histogram, called from input module.
 
int registerEpicsPV (std::string pvname, std::string keyname="", bool update_pvs=true)
 EPICS related Functions. More...
 
void setEpicsPV (std::string keyname, double value)
 Write value to a EPICS PV. More...
 
void setEpicsPV (std::string keyname, int value)
 Write value to a EPICS PV. More...
 
void setEpicsPV (int index, double value)
 Write value to a EPICS PV. More...
 
void setEpicsPV (int index, int value)
 Write value to a EPICS PV. More...
 
void setEpicsStringPV (std::string keyname, std::string value)
 Write string to a EPICS PV. More...
 
void setEpicsStringPV (int index, std::string value)
 Write string to a EPICS PV. More...
 
double getEpicsPV (std::string keyname)
 Read value from a EPICS PV. More...
 
double getEpicsPV (int index)
 Read value from a EPICS PV. More...
 
std::string getEpicsStringPV (std::string keyname, bool &status)
 Read value from a EPICS PV. More...
 
std::string getEpicsStringPV (int index, bool &status)
 Read value from a EPICS PV. More...
 
void updateEpicsPVs (float timeout)
 Update all EPICS PV (flush to network) More...
 
chid getEpicsPVChID (std::string keyname)
 Get EPICS PV Channel Id. More...
 
chid getEpicsPVChID (int index)
 Get EPICS PV Channel Id. More...
 
bool requestLimitsFromEpicsPVs (chid id, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
 Get Alarm Limits from EPICS PV. More...
 
bool requestLimitsFromEpicsPVs (std::string keyname, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
 Get Alarm Limits from EPICS PV. More...
 
bool requestLimitsFromEpicsPVs (int index, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
 Get Alarm Limits from EPICS PV. More...
 
void setUseEpics (bool flag)
 Setter for EPICS usage. More...
 
void setUseEpicsReadOnly (bool flag)
 Setter EPICS flag in read only mode. More...
 
bool getUseEpics (void)
 Getter for EPICS usage. More...
 
bool getUseEpicsReadOnly (void)
 Getter EPICS flag in read only mode. More...
 
void cleanupEpicsPVs (void)
 Unsubscribe from EPICS PVs on terminate.
 
std::string & getPVPrefix (void)
 get global Prefix for EPICS PVs More...
 
void setPVPrefix (std::string &prefix)
 set global Prefix for EPICS PVs More...
 
std::vector< std::string > StringSplit (const std::string &s, const char delim)
 Helper function for string token split. More...
 
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 HistListgetHistList ()
 Get the list of the histograms. More...
 
static const MonObjListgetMonObjList ()
 Get the list of MonitoringObjects. More...
 
static const DeltaListgetDeltaList ()
 Get the list of the delta histograms. More...
 
static const CanvasUpdatedListgetCanvasUpdatedList ()
 Get the list of the canvas update status. More...
 
static const std::string & getRunType (void)
 Get the Run Type. More...
 
static int getEventProcessed (void)
 Get the number of processed events. More...
 
static TH1 * findHist (const std::string &histname, bool onlyIfUpdated=false)
 Get histogram from list (no other search). More...
 
static TH1 * findHist (const std::string &dirname, const std::string &histname, bool onlyIfUpdated=false)
 Find histogram. More...
 
static TH1 * findHistInFile (TFile *file, const std::string &histname)
 Find histogram in specific TFile (e.g. More...
 
static MonitoringObjectfindMonitoringObject (const std::string &objName)
 Find MonitoringObject. More...
 
static bool addHist (const std::string &dirname, const std::string &histname, TH1 *h)
 Add histogram. More...
 
static MonitoringObjectgetMonitoringObject (const std::string &histname)
 Get MonitoringObject with given name (new object is created if non-existing) More...
 
static void initHistListBeforeEvent (void)
 Reset the list of histograms.
 
static void clearHistList (void)
 Clears the list of histograms.
 
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 Types

enum  effStatus {
  good = 0 ,
  warning = 1 ,
  error = 2 ,
  lowStat = 3
}
 efficiency status flags More...
 

Private Member Functions

Int_t findBinY (Int_t layer, Int_t sensor)
 find Y bin corresponding to sensor, efficiency plot
 
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

double m_effError
 error level of the efficiency
 
double m_effWarning
 warning level of the efficiency
 
double m_statThreshold
 minimal number of tracks per sensor to set green or red frame
 
bool m_3Samples
 if true enable 3 samples histograms analysis
 
std::string m_refFileName
 Data members. More...
 
TFile * m_refFile = nullptr
 The pointer to the reference file.
 
TCanvas * m_cEfficiencyU = nullptr
 efficiency U plot canvas
 
TCanvas * m_cEfficiencyV = nullptr
 efficiency V plot canvas
 
SVDSummaryPlotsm_hEfficiency = nullptr
 efficiency histo
 
TCanvas * m_cEfficiencyErrU = nullptr
 efficiency U error plot canvas
 
TCanvas * m_cEfficiencyErrV = nullptr
 efficiency V error plot canvas
 
SVDSummaryPlotsm_hEfficiencyErr = nullptr
 efficiency error histo
 
TCanvas * m_cEfficiencyU3Samples = nullptr
 efficiency U plot canvas for 3 samples
 
TCanvas * m_cEfficiencyV3Samples = nullptr
 efficiency V plot canvas for 3 samples
 
SVDSummaryPlotsm_hEfficiency3Samples = nullptr
 efficiency histo for 3 samples
 
TCanvas * m_cEfficiencyErrU3Samples = nullptr
 efficiency U error plot canvas for 3 samples
 
TCanvas * m_cEfficiencyErrV3Samples = nullptr
 efficiency V error plot canvas for 3 samples
 
SVDSummaryPlotsm_hEfficiencyErr3Samples = nullptr
 efficiency error histo for 3 samples
 
TPaveText * m_legProblem = nullptr
 efficiency plot legend, problem
 
TPaveText * m_legWarning = nullptr
 efficiency plot legend, warning
 
TPaveText * m_legNormal = nullptr
 efficiency plot legend, normal
 
TPaveText * m_legEmpty = nullptr
 efficiency plot legend, empty
 
effStatus m_effUstatus
 number representing the status of the efficiency U side
 
effStatus m_effVstatus
 number representing the status of the efficiency V side
 
std::vector< VxdIDm_SVDModules
 IDs of all SVD Modules to iterate over.
 
std::string m_pvPrefix
 string prefix for EPICS PVs
 
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.
 

Static Private Attributes

static HistList s_histList
 The list of Histograms.
 
static MonObjList s_monObjList
 The list of MonitoringObjects.
 
static DeltaList s_deltaList
 The list of Delta Histograms and settings.
 
static CanvasUpdatedList s_canvasUpdatedList
 The list of canvas updated status.
 
static int s_eventProcessed = 0
 Number of Events processed to fill histograms. More...
 
static std::string s_runType = ""
 The Run type.
 
static bool m_useEpics = false
 Flag if to use EPICS do not set by yourself, use EpicsEnable module to set.
 
static bool m_epicsReadOnly
 Flag if to use EPICS in ReadOnly mode (for reading limits) do not set by yourself, use EpicsEnable module to set. More...
 
static std::string m_PVPrefix = "TEST:"
 The Prefix for EPICS PVs.
 

Detailed Description

Class definition for the output module of Sequential ROOT I/O.

Definition at line 29 of file DQMHistAnalysisSVDEfficiency.h.

Member Enumeration Documentation

◆ effStatus

enum effStatus
private

efficiency status flags

Enumerator
good 

green frame

warning 

orange frame

error 

red frame

lowStat 

gray frame

Definition at line 106 of file DQMHistAnalysisSVDEfficiency.h.

◆ 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

◆ addDeltaPar()

void addDeltaPar ( const std::string &  dirname,
const std::string &  histname,
HistDelta::EDeltaType  t,
int  p,
unsigned int  a = 1 
)
inherited

Add Delta histogram parameters.

Parameters
dirnamedirectory
histnamename of histogram
ttype of delta histogramming
pnumerical parameter depnding on type, e.g. number of entries
aamount of histograms in the past

Definition at line 68 of file DQMHistAnalysis.cc.

◆ addHist()

bool addHist ( const std::string &  dirname,
const std::string &  histname,
TH1 *  h 
)
staticinherited

Add histogram.

Parameters
dirnameThe name of the directory.
histnameThe name of the histogram.
hThe TH1 pointer for the histogram.
Returns
histogram was updated flag

Definition at line 46 of file DQMHistAnalysis.cc.

◆ 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.

◆ 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.

◆ event()

void event ( void  )
finaloverridevirtual

This method is called for each event.

---— 3 samples ---—

Reimplemented from Module.

Definition at line 169 of file DQMHistAnalysisSVDEfficiency.cc.

170 {
171  B2DEBUG(10, "DQMHistAnalysisSVDEfficiency: event called.");
172 
173  //find nEvents
174  TH1* hnEvnts = findHist("SVDExpReco/SVDDQM_nEvents", true);
175  if (hnEvnts == NULL) {
176  B2INFO("no events, nothing to do here");
177  return;
178  } else {
179  B2DEBUG(10, "SVDExpReco/SVDDQM_nEvents found");
180  }
181 
182  gStyle->SetOptStat(0);
183  gStyle->SetPaintTextFormat("2.1f");
184 
185  m_hEfficiency->getHistogram(0)->Reset();
186  m_hEfficiency->getHistogram(1)->Reset();
187  m_hEfficiency->getHistogram(0)->SetStats(0);
188  m_hEfficiency->getHistogram(1)->SetStats(0);
189  m_hEfficiencyErr->getHistogram(0)->Reset();
190  m_hEfficiencyErr->getHistogram(1)->Reset();
191  m_hEfficiencyErr->getHistogram(0)->SetStats(0);
192  m_hEfficiencyErr->getHistogram(1)->SetStats(0);
193 
194 
195  Float_t effU = -1;
196  Float_t effV = -1;
197  Float_t erreffU = -1;
198  Float_t erreffV = -1;
199 
200  // Efficiency for the U side
201  TH2F* found_tracksU = (TH2F*)findHist("SVDEfficiency/TrackHitsU");
202  TH2F* matched_clusU = (TH2F*)findHist("SVDEfficiency/MatchedHitsU");
203 
204  if (matched_clusU == NULL || found_tracksU == NULL) {
205  B2INFO("Histograms needed for Efficiency computation are not found");
206  m_cEfficiencyU->SetFillColor(kRed);
207  } else {
208  B2DEBUG(10, "U-side Before loop on sensors, size :" << m_SVDModules.size());
209  m_effUstatus = good;
210  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
211  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
212  int bin = found_tracksU->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
213  m_SVDModules[i].getSensorNumber()));
214  float numU = matched_clusU->GetBinContent(bin);
215  float denU = found_tracksU->GetBinContent(bin);
216  if (denU > 0)
217  effU = numU / denU;
218  else
219  effU = -1;
220  B2DEBUG(10, "effU = " << numU << "/" << denU << " = " << effU);
221  m_hEfficiency->fill(m_SVDModules[i], 1, effU * 100);
222  if (effU == -1)
223  erreffU = -1;
224  else
225  erreffU = std::sqrt(effU * (1 - effU) / denU);
226  m_hEfficiencyErr->fill(m_SVDModules[i], 1, erreffU * 100);
227 
228  if (denU < m_statThreshold) {
229  m_effUstatus = std::max(lowStat, m_effUstatus);
230  } else if (effU > m_effWarning) {
231  m_effUstatus = std::max(good, m_effUstatus);
232  } else if ((effU <= m_effWarning) && (effU > m_effError)) {
233  m_effUstatus = std::max(warning, m_effUstatus);
234  } else if ((effU <= m_effError)) {
235  m_effUstatus = std::max(error, m_effUstatus);
236  }
237  B2DEBUG(10, "Status is " << m_effUstatus);
238  }
239  }
240 
241  //Efficiency for the V side
242  TH2F* found_tracksV = (TH2F*)findHist("SVDEfficiency/TrackHitsV");
243  TH2F* matched_clusV = (TH2F*)findHist("SVDEfficiency/MatchedHitsV");
244 
245  if (matched_clusV == NULL || found_tracksV == NULL) {
246  B2INFO("Histograms needed for Efficiency computation are not found");
247  m_cEfficiencyV->SetFillColor(kRed);
248  } else {
249  B2DEBUG(10, "V-side Before loop on sensors, size :" << m_SVDModules.size());
250  m_effVstatus = good;
251  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
252  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
253  int bin = found_tracksV->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
254  m_SVDModules[i].getSensorNumber()));
255  float numV = matched_clusV->GetBinContent(bin);
256  float denV = found_tracksV->GetBinContent(bin);
257  if (denV > 0)
258  effV = numV / denV;
259  else
260  effV = -1;
261 
262  B2DEBUG(10, "effV = " << numV << "/" << denV << " = " << effV);
263  m_hEfficiency->fill(m_SVDModules[i], 0, effV * 100);
264  if (effV == -1)
265  erreffV = -1;
266  else
267  erreffV = std::sqrt(effV * (1 - effV) / denV);
268 
269  m_hEfficiencyErr->fill(m_SVDModules[i], 0, erreffV * 100);
270 
271  if (denV < m_statThreshold) {
272  m_effVstatus = std::max(lowStat, m_effVstatus);
273  } else if (effV > m_effWarning) {
274  m_effVstatus = std::max(good, m_effVstatus);
275  } else if ((effV <= m_effWarning) && (effV > m_effError)) {
276  m_effVstatus = std::max(warning, m_effVstatus);
277  } else if ((effV <= m_effError)) {
278  m_effVstatus = std::max(error, m_effVstatus);
279  }
280  B2DEBUG(10, "Status is " << m_effVstatus);
281  }
282  }
283 
284  // update summary for U side
285  m_cEfficiencyU->cd();
286  m_hEfficiency->getHistogram(1)->Draw("text");
287 
288  switch (m_effUstatus) {
289  case good: {
290  m_cEfficiencyU->SetFillColor(kGreen);
291  m_cEfficiencyU->SetFrameFillColor(10);
292  m_legNormal->Draw("same");
293  break;
294  }
295  case error: {
296  m_cEfficiencyU->SetFillColor(kRed);
297  m_cEfficiencyU->SetFrameFillColor(10);
298  m_legProblem->Draw("same");
299  break;
300  }
301  case warning: {
302  m_cEfficiencyU->SetFillColor(kYellow);
303  m_cEfficiencyU->SetFrameFillColor(10);
304  m_legWarning->Draw("same");
305  break;
306  }
307  case lowStat: {
308  m_cEfficiencyU->SetFillColor(kGray);
309  m_cEfficiencyU->SetFrameFillColor(10);
310  m_legEmpty->Draw("same");
311  break;
312  }
313  default: {
314  B2INFO("effUstatus not set properly: " << m_effUstatus);
315  break;
316  }
317  }
318 // setEpicsPV("EfficiencyUAlarm", alarm);
319 
320  m_cEfficiencyU->Draw("text");
321  m_cEfficiencyU->Update();
322  m_cEfficiencyU->Modified();
323  m_cEfficiencyU->Update();
324 
325  // update summary for V side
326  m_cEfficiencyV->cd();
327  m_hEfficiency->getHistogram(0)->Draw("text");
328 
329  switch (m_effVstatus) {
330  case good: {
331  m_cEfficiencyV->SetFillColor(kGreen);
332  m_cEfficiencyV->SetFrameFillColor(10);
333  m_legNormal->Draw("same");
334  break;
335  }
336  case error: {
337  m_cEfficiencyV->SetFillColor(kRed);
338  m_cEfficiencyV->SetFrameFillColor(10);
339  m_legProblem->Draw("same");
340  break;
341  }
342  case warning: {
343  m_cEfficiencyV->SetFillColor(kYellow);
344  m_cEfficiencyV->SetFrameFillColor(10);
345  m_legWarning->Draw("same");
346  break;
347  }
348  case lowStat: {
349  m_cEfficiencyV->SetFillColor(kGray);
350  m_cEfficiencyV->SetFrameFillColor(10);
351  m_legEmpty->Draw("same");
352  break;
353  }
354  default: {
355  B2INFO("effVstatus not set properly: " << m_effVstatus);
356  break;
357  }
358  }
359 
360  m_cEfficiencyV->Draw();
361  m_cEfficiencyV->Update();
362  m_cEfficiencyV->Modified();
363  m_cEfficiencyV->Update();
364 
365  m_cEfficiencyErrU->cd();
366  m_hEfficiencyErr->getHistogram(1)->Draw("colztext");
367  m_cEfficiencyErrU->Draw();
368  m_cEfficiencyErrU->Update();
369  m_cEfficiencyErrU->Modified();
370  m_cEfficiencyErrU->Update();
371 
372  m_cEfficiencyErrV->cd();
373  m_hEfficiencyErr->getHistogram(0)->Draw("colztext");
374  m_cEfficiencyErrV->Draw();
375  m_cEfficiencyErrV->Update();
376  m_cEfficiencyErrV->Modified();
377  m_cEfficiencyErrV->Update();
378 
379  if (m_3Samples) {
381  m_hEfficiency3Samples->getHistogram(0)->Reset();
382  m_hEfficiency3Samples->getHistogram(1)->Reset();
385 
386  // Efficiency for the U side - 3 samples
387  TH2F* found3_tracksU = (TH2F*)findHist("SVDEfficiency/TrackHits3U");
388  TH2F* matched3_clusU = (TH2F*)findHist("SVDEfficiency/MatchedHits3U");
389 
390  if (matched3_clusU == NULL || found3_tracksU == NULL) {
391  B2INFO("Histograms needed for Efficiency computation are not found");
392  m_cEfficiencyU3Samples->SetFillColor(kRed);
393  } else {
394  B2DEBUG(10, "U-side Before loop on sensors, size :" << m_SVDModules.size());
395  m_effUstatus = good;
396  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
397  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
398  int bin = found3_tracksU->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
399  m_SVDModules[i].getSensorNumber()));
400  float numU = matched3_clusU->GetBinContent(bin);
401  float denU = found3_tracksU->GetBinContent(bin);
402  if (denU > 0)
403  effU = numU / denU;
404  else
405  effU = -1;
406  B2DEBUG(10, "effU = " << numU << "/" << denU << " = " << effU);
407 
408  m_hEfficiency3Samples->fill(m_SVDModules[i], 1, effU * 100);
409  if (effU == -1)
410  erreffU = -1;
411  else
412  erreffU = std::sqrt(effU * (1 - effU) / denU);
413  m_hEfficiencyErr3Samples->fill(m_SVDModules[i], 1, erreffU * 100);
414 
415  if (denU < m_statThreshold) {
416  m_effUstatus = std::max(lowStat, m_effUstatus);
417  } else if (effU > m_effWarning) {
418  m_effUstatus = std::max(good, m_effUstatus);
419  } else if ((effU <= m_effWarning) && (effU > m_effError)) {
420  m_effUstatus = std::max(warning, m_effUstatus);
421  } else if ((effU <= m_effError)) {
422  m_effUstatus = std::max(error, m_effUstatus);
423  }
424  B2DEBUG(10, "Status is " << m_effUstatus);
425  }
426  }
427 
428  //Efficiency for the V side - 3 samples
429  TH2F* found3_tracksV = (TH2F*)findHist("SVDEfficiency/TrackHits3V");
430  TH2F* matched3_clusV = (TH2F*)findHist("SVDEfficiency/MatchedHits3V");
431 
432  if (matched3_clusV == NULL || found3_tracksV == NULL) {
433  B2INFO("Histograms needed for Efficiency computation are not found");
434  m_cEfficiencyV3Samples->SetFillColor(kRed);
435  } else {
436  B2DEBUG(10, "V-side Before loop on sensors, size :" << m_SVDModules.size());
437  m_effVstatus = good;
438  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
439  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
440  int bin = found3_tracksV->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
441  m_SVDModules[i].getSensorNumber()));
442  float numV = matched3_clusV->GetBinContent(bin);
443  float denV = found3_tracksV->GetBinContent(bin);
444  if (denV > 0)
445  effV = numV / denV;
446  else
447  effV = -1;
448 
449  B2DEBUG(10, "effV = " << numV << "/" << denV << " = " << effV);
450  m_hEfficiency3Samples->fill(m_SVDModules[i], 0, effV * 100);
451  if (effV == -1)
452  erreffV = -1;
453  else
454  erreffV = std::sqrt(effV * (1 - effV) / denV);
455 
456  m_hEfficiencyErr3Samples->fill(m_SVDModules[i], 0, erreffV * 100);
457 
458  if (denV < m_statThreshold) {
459  m_effVstatus = std::max(lowStat, m_effVstatus);
460  } else if (effV > m_effWarning) {
461  m_effVstatus = std::max(good, m_effVstatus);
462  } else if ((effV <= m_effWarning) && (effV > m_effError)) {
463  m_effVstatus = std::max(warning, m_effVstatus);
464  } else if ((effV <= m_effError)) {
465  m_effVstatus = std::max(error, m_effVstatus);
466  }
467  B2DEBUG(10, "Status is " << m_effVstatus);
468  }
469  }
470 
471  // update summary for U side
473  m_hEfficiency3Samples->getHistogram(1)->Draw("text");
474 
475  switch (m_effUstatus) {
476  case good: {
477  m_cEfficiencyU3Samples->SetFillColor(kGreen);
478  m_cEfficiencyU3Samples->SetFrameFillColor(10);
479  m_legNormal->Draw("same");
480  break;
481  }
482  case error: {
483  m_cEfficiencyU3Samples->SetFillColor(kRed);
484  m_cEfficiencyU3Samples->SetFrameFillColor(10);
485  m_legProblem->Draw("same");
486  break;
487  }
488  case warning: {
489  m_cEfficiencyU3Samples->SetFillColor(kYellow);
490  m_cEfficiencyU3Samples->SetFrameFillColor(10);
491  m_legWarning->Draw("same");
492  break;
493  }
494  case lowStat: {
495  m_cEfficiencyU3Samples->SetFillColor(kGray);
496  m_cEfficiencyU3Samples->SetFrameFillColor(10);
497  m_legEmpty->Draw("same");
498  break;
499  }
500  default: {
501  B2INFO("effUstatus not set properly: " << m_effUstatus);
502  break;
503  }
504  }
505 
506  m_cEfficiencyU3Samples->Draw("text");
507  m_cEfficiencyU3Samples->Update();
508  m_cEfficiencyU3Samples->Modified();
509  m_cEfficiencyU3Samples->Update();
510 
511  // update summary for V side
513  m_hEfficiency3Samples->getHistogram(0)->Draw("text");
514 
515  switch (m_effVstatus) {
516  case good: {
517  m_cEfficiencyV3Samples->SetFillColor(kGreen);
518  m_cEfficiencyV3Samples->SetFrameFillColor(10);
519  m_legNormal->Draw("same");
520  break;
521  }
522  case error: {
523  m_cEfficiencyV3Samples->SetFillColor(kRed);
524  m_cEfficiencyV3Samples->SetFrameFillColor(10);
525  m_legProblem->Draw("same");
526  break;
527  }
528  case warning: {
529  m_cEfficiencyV3Samples->SetFillColor(kYellow);
530  m_cEfficiencyV3Samples->SetFrameFillColor(10);
531  m_legWarning->Draw("same");
532  break;
533  }
534  case lowStat: {
535  m_cEfficiencyV3Samples->SetFillColor(kGray);
536  m_cEfficiencyV3Samples->SetFrameFillColor(10);
537  m_legEmpty->Draw("same");
538  break;
539  }
540  default: {
541  B2INFO("effVstatus not set properly: " << m_effVstatus);
542  break;
543  }
544  }
545 
546  m_cEfficiencyV3Samples->Draw();
547  m_cEfficiencyV3Samples->Update();
548  m_cEfficiencyV3Samples->Modified();
549  m_cEfficiencyV3Samples->Update();
550 
552  m_hEfficiencyErr3Samples->getHistogram(1)->Draw("colztext");
554  m_cEfficiencyErrU3Samples->Update();
555  m_cEfficiencyErrU3Samples->Modified();
556  m_cEfficiencyErrU3Samples->Update();
557 
559  m_hEfficiencyErr3Samples->getHistogram(0)->Draw("colztext");
561  m_cEfficiencyErrV3Samples->Update();
562  m_cEfficiencyErrV3Samples->Modified();
563  m_cEfficiencyErrV3Samples->Update();
564  }
565 }
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
SVDSummaryPlots * m_hEfficiency3Samples
efficiency histo for 3 samples
TCanvas * m_cEfficiencyErrV3Samples
efficiency V error plot canvas for 3 samples
TPaveText * m_legEmpty
efficiency plot legend, empty
double m_statThreshold
minimal number of tracks per sensor to set green or red frame
TCanvas * m_cEfficiencyErrU
efficiency U error plot canvas
Int_t findBinY(Int_t layer, Int_t sensor)
find Y bin corresponding to sensor, efficiency plot
std::vector< VxdID > m_SVDModules
IDs of all SVD Modules to iterate over.
effStatus m_effUstatus
number representing the status of the efficiency U side
SVDSummaryPlots * m_hEfficiencyErr3Samples
efficiency error histo for 3 samples
double m_effWarning
warning level of the efficiency
double m_effError
error level of the efficiency
TPaveText * m_legWarning
efficiency plot legend, warning
bool m_3Samples
if true enable 3 samples histograms analysis
TCanvas * m_cEfficiencyU3Samples
efficiency U plot canvas for 3 samples
TCanvas * m_cEfficiencyErrU3Samples
efficiency U error plot canvas for 3 samples
effStatus m_effVstatus
number representing the status of the efficiency V side
TPaveText * m_legNormal
efficiency plot legend, normal
TCanvas * m_cEfficiencyV3Samples
efficiency V plot canvas for 3 samples
TCanvas * m_cEfficiencyErrV
efficiency V error plot canvas
TPaveText * m_legProblem
efficiency plot legend, problem
SVDSummaryPlots * m_hEfficiencyErr
efficiency error histo
void fill(int layer, int ladder, int sensor, int view, float value)
fill the histogram for
TH2F * getHistogram(int view)
get a reference to the histogram for
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28

◆ findCanvas()

TCanvas * findCanvas ( TString  cname)
inherited

Find canvas by name.

Parameters
cnameName of the canvas
Returns
The pointer to the canvas, or nullptr if not found.

Definition at line 128 of file DQMHistAnalysis.cc.

◆ findHist() [1/2]

TH1 * findHist ( const std::string &  dirname,
const std::string &  histname,
bool  onlyIfUpdated = false 
)
staticinherited

Find histogram.

Parameters
dirnameThe name of the directory.
histnameThe name of the histogram.
onlyIfUpdatedreq only updated hists, return nullptr otherwise
Returns
The found histogram, or nullptr if not found.

Definition at line 156 of file DQMHistAnalysis.cc.

◆ findHist() [2/2]

TH1 * findHist ( const std::string &  histname,
bool  onlyIfUpdated = false 
)
staticinherited

Get histogram from list (no other search).

Parameters
histnameThe name of the histogram (incl dir).
onlyIfUpdatedreq only updated hists, return nullptr otherwise
Returns
The found histogram, or nullptr if not found.

Definition at line 142 of file DQMHistAnalysis.cc.

◆ findHistInCanvas()

TH1 * findHistInCanvas ( const std::string &  hname)
inherited

Find histogram in corresponding canvas.

Parameters
hnameName of the histogram (dir+name)
Returns
The pointer to the histogram, or nullptr if not found.

Definition at line 164 of file DQMHistAnalysis.cc.

◆ findHistInFile()

TH1 * findHistInFile ( TFile *  file,
const std::string &  histname 
)
staticinherited

Find histogram in specific TFile (e.g.

ref file).

Parameters
fileThe TFile to search.
histnameThe name of the histogram, can incl directory
Returns
The found histogram, or nullptr if not found.

Definition at line 190 of file DQMHistAnalysis.cc.

◆ findMonitoringObject()

MonitoringObject * findMonitoringObject ( const std::string &  objName)
staticinherited

Find MonitoringObject.

Parameters
objNameThe name of the MonitoringObject.
Returns
The found MonitoringObject, or nullptr if not found.

Definition at line 211 of file DQMHistAnalysis.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.

◆ getCanvasUpdatedList()

static const CanvasUpdatedList& getCanvasUpdatedList ( )
inlinestaticinherited

Get the list of the canvas update status.

Returns
The list of the canvases.

Definition at line 143 of file DQMHistAnalysis.h.

◆ 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.

◆ getDelta() [1/2]

TH1 * getDelta ( const std::string &  dirname,
const std::string &  histname,
int  n = 0,
bool  onlyIfUpdated = true 
)
inherited

Get Delta histogram.

Parameters
dirnamedirectory
histnamename of histogram
nindex of delta histogram, 0 is most recent one
onlyIfUpdatedreq only updated deltas, return nullptr otherwise
Returns
delta histogram or nullptr

Definition at line 91 of file DQMHistAnalysis.cc.

◆ getDelta() [2/2]

TH1 * getDelta ( const std::string &  fullname,
int  n = 0,
bool  onlyIfUpdated = true 
)
inherited

Get Delta histogram.

Parameters
fullnamedirectory+name of histogram
nindex of delta histogram, 0 is most recent one
onlyIfUpdatedreq only updated deltas, return nullptr otherwise
Returns
delta histogram or nullptr

Definition at line 102 of file DQMHistAnalysis.cc.

◆ getDeltaList()

static const DeltaList& getDeltaList ( )
inlinestaticinherited

Get the list of the delta histograms.

Returns
The list of the delta histograms.

Definition at line 137 of file DQMHistAnalysis.h.

◆ getEpicsPV() [1/2]

double getEpicsPV ( int  index)
inherited

Read value from a EPICS PV.

Parameters
indexindex of PV
Returns
value or NAN if not existing

Definition at line 426 of file DQMHistAnalysis.cc.

◆ getEpicsPV() [2/2]

double getEpicsPV ( std::string  keyname)
inherited

Read value from a EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
Returns
value or NAN if not existing

Definition at line 403 of file DQMHistAnalysis.cc.

◆ getEpicsPVChID() [1/2]

chid getEpicsPVChID ( int  index)
inherited

Get EPICS PV Channel Id.

Parameters
indexindex of PV
Returns
Channel ID is written on success, otherwise nullptr

Definition at line 513 of file DQMHistAnalysis.cc.

◆ getEpicsPVChID() [2/2]

chid getEpicsPVChID ( std::string  keyname)
inherited

Get EPICS PV Channel Id.

Parameters
keynamekey name (or full PV name) of PV
Returns
Channel ID is written on success, otherwise nullptr

Definition at line 499 of file DQMHistAnalysis.cc.

◆ getEpicsStringPV() [1/2]

std::string getEpicsStringPV ( int  index,
bool &  status 
)
inherited

Read value from a EPICS PV.

Parameters
indexindex of PV
statusreturn status (true on success)
Returns
string value (empty string if non existing)

Definition at line 474 of file DQMHistAnalysis.cc.

◆ getEpicsStringPV() [2/2]

std::string getEpicsStringPV ( std::string  keyname,
bool &  status 
)
inherited

Read value from a EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
statusreturn status (true on success)
Returns
string value (empty string if non existing)

Definition at line 449 of file DQMHistAnalysis.cc.

◆ getEventProcessed()

static int getEventProcessed ( void  )
inlinestaticinherited

Get the number of processed events.

(Attention, asynch histogram updates!)

Returns
Processed events.

Definition at line 155 of file DQMHistAnalysis.h.

◆ 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.

◆ getHistList()

static HistList& getHistList ( )
inlinestaticinherited

Get the list of the histograms.

Returns
The list of the histograms.

Definition at line 125 of file DQMHistAnalysis.h.

◆ getMonitoringObject()

MonitoringObject * getMonitoringObject ( const std::string &  histname)
staticinherited

Get MonitoringObject with given name (new object is created if non-existing)

Parameters
histnamename of MonitoringObject to get
Returns
The MonitoringObject

Definition at line 112 of file DQMHistAnalysis.cc.

◆ getMonObjList()

static const MonObjList& getMonObjList ( )
inlinestaticinherited

Get the list of MonitoringObjects.

Returns
The list of the MonitoringObjects.

Definition at line 131 of file DQMHistAnalysis.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.

◆ getPVPrefix()

std::string& getPVPrefix ( void  )
inlineinherited

get global Prefix for EPICS PVs

Returns
prefix in use

Definition at line 486 of file DQMHistAnalysis.h.

◆ 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.

◆ getRunType()

static const std::string& getRunType ( void  )
inlinestaticinherited

Get the Run Type.

Returns
Run type string.

Definition at line 149 of file DQMHistAnalysis.h.

◆ getSigma68()

double getSigma68 ( TH1 *  h) const
inherited

Helper function to compute half of the central interval covering 68% of a distribution.

This quantity is an alternative to the standard deviation.

Parameters
hhistogram
Returns
Half of the central interval covering 68% of a distribution.

Definition at line 225 of file DQMHistAnalysis.cc.

◆ 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.

◆ getUseEpics()

bool getUseEpics ( void  )
inlineinherited

Getter for EPICS usage.

Returns
flag is in use

Definition at line 469 of file DQMHistAnalysis.h.

◆ getUseEpicsReadOnly()

bool getUseEpicsReadOnly ( void  )
inlineinherited

Getter EPICS flag in read only mode.

Returns
flag if read only

Definition at line 475 of file DQMHistAnalysis.h.

◆ hasDeltaPar()

bool hasDeltaPar ( const std::string &  dirname,
const std::string &  histname 
)
inherited

Check if Delta histogram parameters exist for histogram.

Parameters
dirnamedirectory
histnamename of histogram
Returns
true if parameters have been set already

Definition at line 80 of file DQMHistAnalysis.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.

◆ registerEpicsPV()

int registerEpicsPV ( std::string  pvname,
std::string  keyname = "",
bool  update_pvs = true 
)
inherited

EPICS related Functions.

Register a PV with its name and a key name

If you register large number of PVs at once, consider setting update_pvs = false and explicitly running updateEpicsPVs()

Parameters
pvnamefull PV name
keynamekey name for easier access
update_pvsif true, update all PVs (flush network) after new PV is registered
Returns
an index which can be used to access the PV instead of key name, -1 if failure

Definition at line 294 of file DQMHistAnalysis.cc.

◆ requestLimitsFromEpicsPVs() [1/3]

bool requestLimitsFromEpicsPVs ( chid  id,
double &  lowerAlarm,
double &  lowerWarn,
double &  upperWarn,
double &  upperAlarm 
)
inherited

Get Alarm Limits from EPICS PV.

Parameters
idChannel ID
&lowerAlarmreturn low Alarm limit (lolo) if set, not changed otherwise
&lowerWarnreturn low Warning limit (low) if set, not changed otherwise
&upperWarnreturn upper Warning limit (high) if set, not changed otherwise
&upperAlarmreturn upper Alarm limit (hihi) if set, not changed otherwise
Returns
true if limits could be read (even if there are none set)

Definition at line 561 of file DQMHistAnalysis.cc.

◆ requestLimitsFromEpicsPVs() [2/3]

bool requestLimitsFromEpicsPVs ( int  index,
double &  lowerAlarm,
double &  lowerWarn,
double &  upperWarn,
double &  upperAlarm 
)
inherited

Get Alarm Limits from EPICS PV.

Parameters
indexindex of PV
&lowerAlarmreturn low Alarm limit (lolo) if set, not changed otherwise
&lowerWarnreturn low Warning limit (low) if set, not changed otherwise
&upperWarnreturn upper Warning limit (high) if set, not changed otherwise
&upperAlarmreturn upper Alarm limit (hihi) if set, not changed otherwise
Returns
true if limits could be read (even if there are none set)

Definition at line 555 of file DQMHistAnalysis.cc.

◆ requestLimitsFromEpicsPVs() [3/3]

bool requestLimitsFromEpicsPVs ( std::string  keyname,
double &  lowerAlarm,
double &  lowerWarn,
double &  upperWarn,
double &  upperAlarm 
)
inherited

Get Alarm Limits from EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
&lowerAlarmreturn low Alarm limit (lolo) if set, not changed otherwise
&lowerWarnreturn low Warning limit (low) if set, not changed otherwise
&upperWarnreturn upper Warning limit (high) if set, not changed otherwise
&upperAlarmreturn upper Alarm limit (hihi) if set, not changed otherwise
Returns
true if limits could be read (even if there are none set)

Definition at line 549 of file DQMHistAnalysis.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.

◆ setEpicsPV() [1/4]

void setEpicsPV ( int  index,
double  value 
)
inherited

Write value to a EPICS PV.

Parameters
indexindex of PV
valuevalue to write

Definition at line 365 of file DQMHistAnalysis.cc.

◆ setEpicsPV() [2/4]

void setEpicsPV ( int  index,
int  value 
)
inherited

Write value to a EPICS PV.

Parameters
indexindex of PV
valuevalue to write

Definition at line 377 of file DQMHistAnalysis.cc.

◆ setEpicsPV() [3/4]

void setEpicsPV ( std::string  keyname,
double  value 
)
inherited

Write value to a EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
valuevalue to write

Definition at line 323 of file DQMHistAnalysis.cc.

◆ setEpicsPV() [4/4]

void setEpicsPV ( std::string  keyname,
int  value 
)
inherited

Write value to a EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
valuevalue to write

Definition at line 335 of file DQMHistAnalysis.cc.

◆ setEpicsStringPV() [1/2]

void setEpicsStringPV ( int  index,
std::string  value 
)
inherited

Write string to a EPICS PV.

Parameters
indexindex of PV
valuestring to write

Definition at line 389 of file DQMHistAnalysis.cc.

◆ setEpicsStringPV() [2/2]

void setEpicsStringPV ( std::string  keyname,
std::string  value 
)
inherited

Write string to a EPICS PV.

Parameters
keynamekey name (or full PV name) of PV
valuestring to write

Definition at line 347 of file DQMHistAnalysis.cc.

◆ setEventProcessed()

void setEventProcessed ( int  e)
inlineinherited

Set the number of processed events.

(Attention, asynch histogram updates!)

e Processed events.

Definition at line 167 of file DQMHistAnalysis.h.

◆ 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.

◆ setPVPrefix()

void setPVPrefix ( std::string &  prefix)
inlineinherited

set global Prefix for EPICS PVs

Parameters
prefixPrefix to set

Definition at line 492 of file DQMHistAnalysis.h.

◆ 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.

◆ setRunType()

void setRunType ( std::string &  t)
inlineinherited

Set the Run Type.

t Run type string.

Definition at line 161 of file DQMHistAnalysis.h.

◆ 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.

◆ setUseEpics()

void setUseEpics ( bool  flag)
inlineinherited

Setter for EPICS usage.

Parameters
flagset in use

Definition at line 457 of file DQMHistAnalysis.h.

◆ setUseEpicsReadOnly()

void setUseEpicsReadOnly ( bool  flag)
inlineinherited

Setter EPICS flag in read only mode.

Parameters
flagset read only

Definition at line 463 of file DQMHistAnalysis.h.

◆ StringSplit()

std::vector< std::string > StringSplit ( const std::string &  s,
const char  delim 
)
inherited

Helper function for string token split.

Parameters
sString to split
delimdelimiter
Returns
vector of strings

Definition at line 234 of file DQMHistAnalysis.cc.

◆ UpdateCanvas() [1/2]

void UpdateCanvas ( std::string  name,
bool  updated = true 
)
inherited

Mark canvas as updated (or not)

Parameters
namename of Canvas
updatedwas updated

Definition at line 259 of file DQMHistAnalysis.cc.

◆ UpdateCanvas() [2/2]

void UpdateCanvas ( TCanvas *  canvas,
bool  updated = true 
)
inherited

Mark canvas as updated (or not)

Parameters
canvasCanvas from which to take the name for update
updatedwas updated

Definition at line 264 of file DQMHistAnalysis.cc.

◆ updateEpicsPVs()

void updateEpicsPVs ( float  timeout)
inherited

Update all EPICS PV (flush to network)

Parameters
timeoutmaximum time until timeout in s

Definition at line 527 of file DQMHistAnalysis.cc.

Member Data Documentation

◆ m_epicsReadOnly

bool m_epicsReadOnly
staticprivateinherited
Initial value:
=
false

Flag if to use EPICS in ReadOnly mode (for reading limits) do not set by yourself, use EpicsEnable module to set.

Definition at line 105 of file DQMHistAnalysis.h.

◆ m_refFileName

std::string m_refFileName
private

Data members.

Reference Histogram Root file name

Definition at line 80 of file DQMHistAnalysisSVDEfficiency.h.

◆ s_eventProcessed

int s_eventProcessed = 0
inlinestaticprivateinherited

Number of Events processed to fill histograms.

Attention: histograms are updates asynchronously Thus the number for a specific histogram may be lower or higher. If you need precise number, you must fill it in the histogram itself (e.g. underflow bin)

Definition at line 88 of file DQMHistAnalysis.h.


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