Belle II Software  release-08-01-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

enum  EStatus {
  c_StatusTooFew = 0 ,
  c_StatusDefault = 1 ,
  c_StatusGood = 2 ,
  c_StatusWarning = 3 ,
  c_StatusError = 4
}
 Status flag of histogram/canvas. More...
 
enum  EStatusColor {
  c_ColorTooFew = kGray ,
  c_ColorDefault = kWhite ,
  c_ColorGood = kGreen ,
  c_ColorWarning = kYellow ,
  c_ColorError = kRed
}
 Status colors of histogram/canvas (corresponding to status) More...
 
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...
 
void clearCanvases (void)
 Clear content of all Canvases.
 
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...
 
int 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...
 
EStatus makeStatus (bool enough, bool warn_flag, bool error_flag)
 Helper function to judge the status for coloring and EPICS. More...
 
void colorizeCanvas (TCanvas *canvas, EStatus status)
 Helper function for Canvas colorization. More...
 
EStatusColor getStatusColor (EStatus status)
 Return color for canvas state. More...
 
void checkPVStatus (void)
 Check the status of all PVs and report if disconnected or not found.
 
void printPVStatus (chid pv, bool onlyError=true)
 check the status of a PVs and report if disconnected or not found 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.

◆ EStatus

enum EStatus
inherited

Status flag of histogram/canvas.

Enumerator
c_StatusTooFew 

Not enough entries/event to judge.

c_StatusDefault 

default for non-coloring

c_StatusGood 

Analysis result: Good.

c_StatusWarning 

Analysis result: Warning, there may be minor issues.

c_StatusError 

Analysis result: Severe issue found.

Definition at line 45 of file DQMHistAnalysis.h.

◆ EStatusColor

enum EStatusColor
inherited

Status colors of histogram/canvas (corresponding to status)

Enumerator
c_ColorTooFew 

Not enough entries/event to judge.

c_ColorDefault 

default for non-coloring

c_ColorGood 

Analysis result: Good.

c_ColorWarning 

Analysis result: Warning, there may be minor issues.

c_ColorError 

Analysis result: Severe issue found.

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

◆ colorizeCanvas()

void colorizeCanvas ( TCanvas *  canvas,
EStatus  status 
)
inherited

Helper function for Canvas colorization.

Parameters
canvasCanvas to change
statusstatus to color

Definition at line 668 of file DQMHistAnalysis.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 174 of file DQMHistAnalysisSVDEfficiency.cc.

175 {
176  B2DEBUG(10, "DQMHistAnalysisSVDEfficiency: event called.");
177 
178  //find nEvents
179  TH1* hnEvnts = findHist("SVDExpReco/SVDDQM_nEvents", true);
180  if (hnEvnts == NULL) {
181  B2INFO("no events, nothing to do here");
182  return;
183  } else {
184  B2DEBUG(10, "SVDExpReco/SVDDQM_nEvents found");
185  }
186 
187  TString tmp = hnEvnts->GetTitle();
188  Int_t pos = tmp.Last('~');
189  if (pos == -1) pos = 0;
190 
191  TString runID = tmp(pos, tmp.Length() - pos);
192  B2INFO("DQMHistAnalysisSVDEfficiencyModule::runID = " << runID);
193 
194  gStyle->SetOptStat(0);
195  gStyle->SetPaintTextFormat("2.1f");
196 
197  // do it by nhand, the interface of the SVDSummaryPlots does not allow to change the title after cstr
198  if (m_hEfficiency) {
199  m_hEfficiency->reset();
200  m_hEfficiency->setRunID(runID);
201  }
202 
203  if (m_hEfficiencyErr) {
205  m_hEfficiencyErr->setRunID(runID);
206  }
207 
208  if (m_3Samples) {
209  if (m_hEfficiency3Samples) {
212  }
213 
217  }
218  }
219 
220  Float_t effU = -1;
221  Float_t effV = -1;
222  Float_t erreffU = -1;
223  Float_t erreffV = -1;
224 
225  // Efficiency for the U side
226  TH2F* found_tracksU = (TH2F*)findHist("SVDEfficiency/TrackHitsU");
227  TH2F* matched_clusU = (TH2F*)findHist("SVDEfficiency/MatchedHitsU");
228 
229  if (matched_clusU == NULL || found_tracksU == NULL) {
230  B2INFO("Histograms needed for Efficiency computation are not found");
231  m_cEfficiencyU->Draw();
232  m_cEfficiencyU->cd();
233  m_hEfficiency->getHistogram(1)->Draw("text");
235  } else {
236  B2DEBUG(10, "U-side Before loop on sensors, size :" << m_SVDModules.size());
237  m_effUstatus = good;
238  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
239  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
240  int bin = found_tracksU->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
241  m_SVDModules[i].getSensorNumber()));
242  float numU = matched_clusU->GetBinContent(bin);
243  float denU = found_tracksU->GetBinContent(bin);
244  if (denU > 0)
245  effU = numU / denU;
246  else
247  effU = -1;
248  B2DEBUG(10, "effU = " << numU << "/" << denU << " = " << effU);
249  m_hEfficiency->fill(m_SVDModules[i], 1, effU * 100);
250  if (effU == -1)
251  erreffU = -1;
252  else
253  erreffU = std::sqrt(effU * (1 - effU) / denU);
254  m_hEfficiencyErr->fill(m_SVDModules[i], 1, erreffU * 100);
255 
256  if (denU < m_statThreshold) {
257  m_effUstatus = std::max(lowStat, m_effUstatus);
258  } else if (effU > m_effWarning) {
259  m_effUstatus = std::max(good, m_effUstatus);
260  } else if ((effU <= m_effWarning) && (effU > m_effError)) {
261  m_effUstatus = std::max(warning, m_effUstatus);
262  } else if ((effU <= m_effError)) {
263  m_effUstatus = std::max(error, m_effUstatus);
264  }
265  B2DEBUG(10, "Status is " << m_effUstatus);
266  }
267  }
268 
269  //Efficiency for the V side
270  TH2F* found_tracksV = (TH2F*)findHist("SVDEfficiency/TrackHitsV");
271  TH2F* matched_clusV = (TH2F*)findHist("SVDEfficiency/MatchedHitsV");
272 
273  if (matched_clusV == NULL || found_tracksV == NULL) {
274  B2INFO("Histograms needed for Efficiency computation are not found");
275  m_cEfficiencyV->cd();
276  m_cEfficiencyV->Draw();
277  m_hEfficiency->getHistogram(0)->Draw("text");
279  } else {
280  B2DEBUG(10, "V-side Before loop on sensors, size :" << m_SVDModules.size());
281  m_effVstatus = good;
282  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
283  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
284  int bin = found_tracksV->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
285  m_SVDModules[i].getSensorNumber()));
286  float numV = matched_clusV->GetBinContent(bin);
287  float denV = found_tracksV->GetBinContent(bin);
288  if (denV > 0)
289  effV = numV / denV;
290  else
291  effV = -1;
292 
293  B2DEBUG(10, "effV = " << numV << "/" << denV << " = " << effV);
294  m_hEfficiency->fill(m_SVDModules[i], 0, effV * 100);
295  if (effV == -1)
296  erreffV = -1;
297  else
298  erreffV = std::sqrt(effV * (1 - effV) / denV);
299 
300  m_hEfficiencyErr->fill(m_SVDModules[i], 0, erreffV * 100);
301 
302  if (denV < m_statThreshold) {
303  m_effVstatus = std::max(lowStat, m_effVstatus);
304  } else if (effV > m_effWarning) {
305  m_effVstatus = std::max(good, m_effVstatus);
306  } else if ((effV <= m_effWarning) && (effV > m_effError)) {
307  m_effVstatus = std::max(warning, m_effVstatus);
308  } else if ((effV <= m_effError)) {
309  m_effVstatus = std::max(error, m_effVstatus);
310  }
311  B2DEBUG(10, "Status is " << m_effVstatus);
312  }
313  }
314 
315  // update summary for U side
316  m_cEfficiencyU->Draw();
317  m_cEfficiencyU->cd();
318  if (m_hEfficiency)
319  m_hEfficiency->getHistogram(1)->Draw("text");
320 
321  switch (m_effUstatus) {
322  case good: {
324  m_legNormal->Draw();
325  break;
326  }
327  case error: {
329  m_legProblem->Draw();
330  break;
331  }
332  case warning: {
334  m_legWarning->Draw();
335  break;
336  }
337  case lowStat: {
339  m_legEmpty->Draw();
340  break;
341  }
342  default: {
343  B2INFO("effUstatus not set properly: " << m_effUstatus);
344  break;
345  }
346  }
347 // setEpicsPV("EfficiencyUAlarm", alarm);
348 
349  m_cEfficiencyU->Update();
350  m_cEfficiencyU->Modified();
351  m_cEfficiencyU->Update();
352 
353  // update summary for V side
354  m_cEfficiencyV->cd();
355  m_cEfficiencyV->Draw();
356  if (m_hEfficiency)
357  m_hEfficiency->getHistogram(0)->Draw("text");
358 
359  switch (m_effVstatus) {
360  case good: {
362  m_legNormal->Draw();
363  break;
364  }
365  case error: {
367  m_legProblem->Draw();
368  break;
369  }
370  case warning: {
372  m_legWarning->Draw();
373  break;
374  }
375  case lowStat: {
377  m_legEmpty->Draw();
378  break;
379  }
380  default: {
381  B2INFO("effVstatus not set properly: " << m_effVstatus);
382  break;
383  }
384  }
385 
386  m_cEfficiencyV->Update();
387  m_cEfficiencyV->Modified();
388  m_cEfficiencyV->Update();
389 
390  m_cEfficiencyErrU->cd();
391  if (m_hEfficiencyErr)
392  m_hEfficiencyErr->getHistogram(1)->Draw("colztext");
393  m_cEfficiencyErrU->Draw();
394  m_cEfficiencyErrU->Update();
395  m_cEfficiencyErrU->Modified();
396  m_cEfficiencyErrU->Update();
397 
398  m_cEfficiencyErrV->cd();
399  if (m_hEfficiencyErr)
400  m_hEfficiencyErr->getHistogram(0)->Draw("colztext");
401  m_cEfficiencyErrV->Draw();
402  m_cEfficiencyErrV->Update();
403  m_cEfficiencyErrV->Modified();
404  m_cEfficiencyErrV->Update();
405 
406  if (m_3Samples) {
408  m_hEfficiency3Samples->getHistogram(0)->Reset();
409  m_hEfficiency3Samples->getHistogram(1)->Reset();
412 
413  // Efficiency for the U side - 3 samples
414  TH2F* found3_tracksU = (TH2F*)findHist("SVDEfficiency/TrackHits3U");
415  TH2F* matched3_clusU = (TH2F*)findHist("SVDEfficiency/MatchedHits3U");
416 
417  if (matched3_clusU == NULL || found3_tracksU == NULL) {
418  B2INFO("Histograms needed for Efficiency computation are not found");
419  m_cEfficiencyU3Samples->Draw();
421  m_hEfficiency3Samples->getHistogram(1)->Draw("text");
423  } else {
424  B2DEBUG(10, "U-side Before loop on sensors, size :" << m_SVDModules.size());
425  m_effUstatus = good;
426  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
427  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
428  int bin = found3_tracksU->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
429  m_SVDModules[i].getSensorNumber()));
430  float numU = matched3_clusU->GetBinContent(bin);
431  float denU = found3_tracksU->GetBinContent(bin);
432  if (denU > 0)
433  effU = numU / denU;
434  else
435  effU = -1;
436  B2DEBUG(10, "effU = " << numU << "/" << denU << " = " << effU);
437 
438  m_hEfficiency3Samples->fill(m_SVDModules[i], 1, effU * 100);
439  if (effU == -1)
440  erreffU = -1;
441  else
442  erreffU = std::sqrt(effU * (1 - effU) / denU);
443  m_hEfficiencyErr3Samples->fill(m_SVDModules[i], 1, erreffU * 100);
444 
445  if (denU < m_statThreshold) {
446  m_effUstatus = std::max(lowStat, m_effUstatus);
447  } else if (effU > m_effWarning) {
448  m_effUstatus = std::max(good, m_effUstatus);
449  } else if ((effU <= m_effWarning) && (effU > m_effError)) {
450  m_effUstatus = std::max(warning, m_effUstatus);
451  } else if ((effU <= m_effError)) {
452  m_effUstatus = std::max(error, m_effUstatus);
453  }
454  B2DEBUG(10, "Status is " << m_effUstatus);
455  }
456  }
457 
458  //Efficiency for the V side - 3 samples
459  TH2F* found3_tracksV = (TH2F*)findHist("SVDEfficiency/TrackHits3V");
460  TH2F* matched3_clusV = (TH2F*)findHist("SVDEfficiency/MatchedHits3V");
461 
462  if (matched3_clusV == NULL || found3_tracksV == NULL) {
463  B2INFO("Histograms needed for Efficiency computation are not found");
464  m_cEfficiencyV3Samples->Draw();
466  m_hEfficiency3Samples->getHistogram(1)->Draw("text");
468  } else {
469  B2DEBUG(10, "V-side Before loop on sensors, size :" << m_SVDModules.size());
470  m_effVstatus = good;
471  for (unsigned int i = 0; i < m_SVDModules.size(); i++) {
472  B2DEBUG(10, "module " << i << "," << m_SVDModules[i]);
473  int bin = found3_tracksV->FindBin(m_SVDModules[i].getLadderNumber(), findBinY(m_SVDModules[i].getLayerNumber(),
474  m_SVDModules[i].getSensorNumber()));
475  float numV = matched3_clusV->GetBinContent(bin);
476  float denV = found3_tracksV->GetBinContent(bin);
477  if (denV > 0)
478  effV = numV / denV;
479  else
480  effV = -1;
481 
482  B2DEBUG(10, "effV = " << numV << "/" << denV << " = " << effV);
483  m_hEfficiency3Samples->fill(m_SVDModules[i], 0, effV * 100);
484  if (effV == -1)
485  erreffV = -1;
486  else
487  erreffV = std::sqrt(effV * (1 - effV) / denV);
488 
489  m_hEfficiencyErr3Samples->fill(m_SVDModules[i], 0, erreffV * 100);
490 
491  if (denV < m_statThreshold) {
492  m_effVstatus = std::max(lowStat, m_effVstatus);
493  } else if (effV > m_effWarning) {
494  m_effVstatus = std::max(good, m_effVstatus);
495  } else if ((effV <= m_effWarning) && (effV > m_effError)) {
496  m_effVstatus = std::max(warning, m_effVstatus);
497  } else if ((effV <= m_effError)) {
498  m_effVstatus = std::max(error, m_effVstatus);
499  }
500  B2DEBUG(10, "Status is " << m_effVstatus);
501  }
502  }
503 
504  // update summary for U side
505  m_cEfficiencyU3Samples->Draw();
508  m_hEfficiency3Samples->getHistogram(1)->Draw("text");
509 
510  switch (m_effUstatus) {
511  case good: {
513  m_legNormal->Draw();
514  break;
515  }
516  case error: {
518  m_legProblem->Draw();
519  break;
520  }
521  case warning: {
523  m_legWarning->Draw();
524  break;
525  }
526  case lowStat: {
528  m_legEmpty->Draw();
529  break;
530  }
531  default: {
532  B2INFO("effUstatus not set properly: " << m_effUstatus);
533  break;
534  }
535  }
536 
537  m_cEfficiencyU3Samples->Update();
538  m_cEfficiencyU3Samples->Modified();
539  m_cEfficiencyU3Samples->Update();
540 
541  // update summary for V side
542  m_cEfficiencyV3Samples->Draw();
545  m_hEfficiency3Samples->getHistogram(0)->Draw("text");
546 
547  switch (m_effVstatus) {
548  case good: {
550  m_legNormal->Draw();
551  break;
552  }
553  case error: {
555  m_legProblem->Draw();
556  break;
557  }
558  case warning: {
560  m_legWarning->Draw();
561  break;
562  }
563  case lowStat: {
565  m_legEmpty->Draw();
566  break;
567  }
568  default: {
569  B2INFO("effVstatus not set properly: " << m_effVstatus);
570  break;
571  }
572  }
573 
574  m_cEfficiencyV3Samples->Update();
575  m_cEfficiencyV3Samples->Modified();
576  m_cEfficiencyV3Samples->Update();
577 
580  m_hEfficiencyErr3Samples->getHistogram(1)->Draw("colztext");
582  m_cEfficiencyErrU3Samples->Update();
583  m_cEfficiencyErrU3Samples->Modified();
584  m_cEfficiencyErrU3Samples->Update();
585 
588  m_hEfficiencyErr3Samples->getHistogram(0)->Draw("colztext");
590  m_cEfficiencyErrV3Samples->Update();
591  m_cEfficiencyErrV3Samples->Modified();
592  m_cEfficiencyErrV3Samples->Update();
593  }
594 }
void colorizeCanvas(TCanvas *canvas, EStatus status)
Helper function for Canvas colorization.
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
@ c_StatusDefault
default for non-coloring
@ c_StatusTooFew
Not enough entries/event to judge.
@ c_StatusError
Analysis result: Severe issue found.
@ c_StatusWarning
Analysis result: Warning, there may be minor issues.
@ c_StatusGood
Analysis result: Good.
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
void setRunID(const TString &runID)
set run ids in title
void reset()
Reset histograms.
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 165 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 159 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 440 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 415 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 533 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 519 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 492 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 465 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 177 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 147 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 153 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 514 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 171 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.

◆ getStatusColor()

DQMHistAnalysisModule::EStatusColor getStatusColor ( EStatus  status)
inherited

Return color for canvas state.

Parameters
statuscanvas status
Returns
alarm color

Definition at line 641 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 497 of file DQMHistAnalysis.h.

◆ getUseEpicsReadOnly()

bool getUseEpicsReadOnly ( void  )
inlineinherited

Getter EPICS flag in read only mode.

Returns
flag if read only

Definition at line 503 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.

◆ makeStatus()

DQMHistAnalysisModule::EStatus makeStatus ( bool  enough,
bool  warn_flag,
bool  error_flag 
)
inherited

Helper function to judge the status for coloring and EPICS.

Parameters
enoughenough events for judging
warn_flagoutside of expected range
error_flagoutside of warning range
Returns
the status

Definition at line 623 of file DQMHistAnalysis.cc.

◆ printPVStatus()

void printPVStatus ( chid  pv,
bool  onlyError = true 
)
inherited

check the status of a PVs and report if disconnected or not found

Parameters
pvthe chid of the PV to check
onlyErrorprint only if in error condition (default)

Definition at line 690 of file DQMHistAnalysis.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 306 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 586 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 580 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 574 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 377 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 389 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 335 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 347 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 401 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 359 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 189 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 520 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 183 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 485 of file DQMHistAnalysis.h.

◆ setUseEpicsReadOnly()

void setUseEpicsReadOnly ( bool  flag)
inlineinherited

Setter EPICS flag in read only mode.

Parameters
flagset read only

Definition at line 491 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 271 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 276 of file DQMHistAnalysis.cc.

◆ updateEpicsPVs()

int updateEpicsPVs ( float  timeout)
inherited

Update all EPICS PV (flush to network)

Parameters
timeoutmaximum time until timeout in s
Returns
status of ca_pend_io

Definition at line 547 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 127 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 110 of file DQMHistAnalysis.h.


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