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

DQM Histogram Analysis for PXD Efficiency. More...

#include <DQMHistAnalysisPXDEff.h>

Inheritance diagram for DQMHistAnalysisPXDEffModule:
Collaboration diagram for DQMHistAnalysisPXDEffModule:

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

 DQMHistAnalysisPXDEffModule ()
 Constructor.
 
 ~DQMHistAnalysisPXDEffModule ()
 Destructor.
 
void initialize (void) override final
 Initializer.
 
void beginRun (void) override final
 Called when entering a new run.
 
void event (void) override final
 This method is called for each event. More...
 
void terminate (void) 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...
 
virtual void endRun ()
 This method is called if the current run ends. 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 Member Functions

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

Private Attributes

std::string m_histogramDirectoryName
 name of histogram directory
 
int m_u_bins
 u binning for 2d plots
 
int m_v_bins
 v binning for 2d plots
 
double m_confidence
 confidence level for error bars
 
double m_warnlevel
 warn level for alarm
 
double m_errorlevel
 error level for alarm
 
int m_minEntries = 1000
 Update entry intervall.
 
bool m_perModuleAlarm
 use alarm level per module
 
bool m_alarmAdhoc
 generate alarm from adhoc values
 
std::vector< int > m_excluded
 Indizes of excluded PXD Modules.
 
std::vector< VxdIDm_PXDModules
 IDs of all PXD Modules to iterate over.
 
std::map< VxdID, TEfficiency * > m_hEffModules
 Individual efficiency for each module, 2d histogram.
 
std::map< VxdID, TCanvas * > m_cEffModules
 Individual efficiency for each module, canvas.
 
TEfficiency * m_hEffAll = nullptr
 One bin for each module in the geometry.
 
TCanvas * m_cEffAll = nullptr
 Final Canvas.
 
TH1 * m_hEffAllLastTotal = nullptr
 TH1, last state, total.
 
TH1 * m_hEffAllLastPassed = nullptr
 TH1, last state, passed.
 
TEfficiency * m_hEffAllUpdate = nullptr
 Efficiency, last state, updated.
 
TCanvas * m_cEffAllUpdate = nullptr
 Final Canvas for Update.
 
TH2F * m_hInnerMap {}
 Full Eff Map Inner Layer.
 
TH2F * m_hOuterMap {}
 Full Eff Map Outer Layer.
 
TCanvas * m_cInnerMap {}
 Full Eff Map Inner Layer.
 
TCanvas * m_cOuterMap {}
 Full Eff Map Outer Layer.
 
TH1F * m_hWarnLine {}
 TLine object for warning limit.
 
TH1F * m_hErrorLine {}
 TLine object for error error.
 
std::map< VxdID, double > m_warnlevelmod
 warn level for alarm per module
 
std::map< VxdID, double > m_errorlevelmod
 error level for alarm per module
 
MonitoringObjectm_monObj {}
 Monitoring Object.
 
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

DQM Histogram Analysis for PXD Efficiency.

Definition at line 29 of file DQMHistAnalysisPXDEff.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

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

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

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

c_HistogramManager 

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

c_InternalSerializer 

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

c_TerminateInAllProcesses 

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

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

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

Member Function Documentation

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

◆ endRun()

virtual void endRun ( void  )
inlinevirtualinherited

This method is called if the current run ends.

Use this method to store information, which should be aggregated over one run.

This method can be implemented by subclasses.

Reimplemented in DQMHistOutputToEPICSModule, DQMHistAnalysisTRGModule, DQMHistAnalysisRooFitExampleModule, DQMHistAnalysisPXDTrackChargeModule, DQMHistAnalysisPXDChargeModule, DQMHistAnalysisDeltaTestModule, DQMHistAnalysisDeltaEpicsMonObjExampleModule, vxdDigitMaskingModule, TrackSetEvaluatorHopfieldNNDEVModule, SVDUnpackerDQMModule, PyModule, DQMHistSnapshotsModule, DQMHistDeltaHistoModule, DQMHistComparitorModule, DQMHistAnalysisTRGGDLModule, DQMHistAnalysisTOPModule, DQMHistAnalysisSVDOnMiraBelleModule, DQMHistAnalysisSVDGeneralModule, DQMHistAnalysisSVDEfficiencyModule, DQMHistAnalysisSVDDoseModule, DQMHistAnalysisPXDFitsModule, DQMHistAnalysisOutputRelayMsgModule, DQMHistAnalysisOutputMonObjModule, DQMHistAnalysisOutputFileModule, DQMHistAnalysisMonObjModule, DQMHistAnalysisMiraBelleModule, DQMHistAnalysisKLM2Module, DQMHistAnalysisKLMModule, DQMHistAnalysisInputTestModule, DQMHistAnalysisInputPVSrvModule, DQMHistAnalysisHLTMonObjModule, DQMHistAnalysisExampleFlagsModule, DQMHistAnalysisExampleModule, DQMHistAnalysisEventT0Module, DQMHistAnalysisEpicsExampleModule, DQMHistAnalysisECLSummaryModule, DQMHistAnalysisECLShapersModule, DQMHistAnalysisECLOutOfTimeDigitsModule, DQMHistAnalysisECLConnectedRegionsModule, DQMHistAnalysisECLModule, DQMHistAnalysisCDCMonObjModule, DQMHistAnalysisCDCDedxModule, DQMHistAnalysisARICHMonObjModule, DQMHistAnalysisARICHModule, TRGRAWDATAModule, TRGTOPWaveformPlotterModule, TRGTOPUnpackerWaveformModule, TRGTOPUnpackerModule, TRGTOPTRD2TTSConverterModule, TRGTOPDQMModule, KLMTriggerModule, TRGGRLUnpackerModule, TRGGRLDQMModule, TRGGRLProjectsModule, TRGGRLModule, TRGGRLMatchModule, TRGGDLUnpackerModule, TRGGDLSummaryModule, TRGGDLDSTModule, TRGGDLDQMModule, TRGGDLModule, TRGECLUnpackerModule, TRGECLTimingCalModule, TRGECLRawdataAnalysisModule, TRGECLQAMModule, TRGECLDQMModule, TRGECLBGTCHitModule, TRGECLModule, TRGECLFAMModule, MCMatcherTRGECLModule, TRGCDCTSStreamModule, TRGCDCTSFUnpackerModule, TRGCDCTSFDQMModule, TRGCDCT3DUnpackerModule, TRGCDCT3DDQMModule, TRGCDCT3DConverterModule, TRGCDCT2DDQMModule, TRGCDCETFUnpackerModule, TRGCDCModule, CDCTriggerNDFinderModule, CDCTriggerNeuroDQMOnlineModule, CDCTriggerNeuroDQMModule, FindletModule< AFindlet >, FindletModule< TrackFinderAutomaton >, FindletModule< FacetCreator >, FindletModule< CKFToCDCFromEclFindlet >, FindletModule< AxialTrackCreatorMCTruth >, FindletModule< AxialStraightTrackFinder >, FindletModule< CKFToCDCFindlet >, FindletModule< CKFToSVDSeedFindlet >, FindletModule< SegmentLinker >, FindletModule< TrackCreatorSegmentTripleAutomaton >, FindletModule< TrackCreatorSegmentPairAutomaton >, FindletModule< SegmentOrienter >, FindletModule< SegmentCreatorFacetAutomaton >, FindletModule< TrackFinderSegmentTripleAutomaton >, FindletModule< SegmentFinderFacetAutomaton >, FindletModule< CKFToSVDFindlet >, FindletModule< TrackRejecter >, FindletModule< SegmentCreatorMCTruth >, FindletModule< TrackFinderCosmics >, FindletModule< TrackExporter >, FindletModule< SuperClusterCreator >, FindletModule< AsicBackgroundLibraryCreator >, FindletModule< HitBasedT0Extractor >, FindletModule< TrackFinderSegmentPairAutomaton >, FindletModule< ClusterPreparer >, FindletModule< AxialTrackFinderHough >, FindletModule< CosmicsTrackMergerFindlet >, FindletModule< TrackOrienter >, FindletModule< TrackLinker >, FindletModule< TrackFinder >, FindletModule< SegmentPairCreator >, FindletModule< MonopoleAxialTrackFinderLegendre >, FindletModule< HitReclaimer >, FindletModule< ClusterRefiner< BridgingWireHitRelationFilter > >, FindletModule< AxialTrackFinderLegendre >, FindletModule< AxialTrackCreatorSegmentHough >, FindletModule< TrackQualityEstimator >, FindletModule< StereoHitFinder >, FindletModule< CKFToPXDFindlet >, FindletModule< WireHitPreparer >, FindletModule< TrackFlightTimeAdjuster >, FindletModule< TrackCreatorSingleSegments >, FindletModule< SegmentRejecter >, FindletModule< SegmentFitter >, FindletModule< SegmentTripleCreator >, FindletModule< SegmentTrackCombiner >, FindletModule< vxdHoughTracking::SVDHoughTracking >, FindletModule< MCVXDCDCTrackMergerFindlet >, FindletModule< TrackCombiner >, FindletModule< MonopoleStereoHitFinder >, FindletModule< DATCONFPGAFindlet >, FindletModule< WireHitBackgroundDetector >, FindletModule< AxialSegmentPairCreator >, FindletModule< WireHitCreator >, FindletModule< TrackQualityAsserter >, FindletModule< MonopoleStereoHitFinderQuadratic >, FindletModule< ClusterBackgroundDetector >, FindletModule< CDCTrackingEventLevelMdstInfoFillerFindlet >, VXDTFTrainingDataCollectorModule, SectorMapBootstrapModule, NoKickCutsEvalModule, VXDSimpleClusterizerModule, TrackFinderVXDAnalizerModule, SecMapTrainerVXDTFModule, SecMapTrainerBaseModule, V0findingPerformanceEvaluationModule, TrackingPerformanceEvaluationModule, HitXPModule, EffPlotsModule, TrackFinderMCTruthRecoTracksModule, SVDROIFinderModule, SVDROIFinderAnalysisModule, SVDROIDQMModule, SPTCvirtualIPRemoverModule, SPTCmomentumSeedRetrieverModule, RT2SPTCConverterModule, PXDROIFinderModule, MCSlowPionPXDROICreatorModule, MuidModule, MCTrackCandClassifierModule, MCV0MatcherModule, GenfitVisModule, ExtModule, TOPXTalkChargeShareSetterModule, TOPWaveformQualityPlotterModule, TOPWaveformFeatureExtractorModule, TOPUnpackerModule, TOPTimeBaseCalibratorModule, TOPTBCComparatorModule, TOPRawDigitConverterModule, TOPPackerModule, TOPNtupleModule, TOPMCTrackMakerModule, TOPLaserCalibratorModule, TOPInterimFENtupleModule, TOPLaserHitSelectorModule, TOPGainEfficiencyCalculatorModule, TOPDoublePulseGeneratorModule, TOPTriggerDigitizerModule, TOPChannelT0MCModule, TOPBackgroundModule, SVDUnpackerModule, SVDTriggerQualityGeneratorModule, SVD3SamplesEmulatorModule, SVDRecoDigitCreatorModule, SVDDataFormatCheckModule, SVDCoGTimeEstimatorModule, SVDClusterizerModule, SVDShaperDigitsFromTracksModule, SVDPerformanceModule, SVDOccupancyAnalysisModule, SVDClusterFilterModule, SVDClusterEvaluationTrueInfoModule, SVDClusterEvaluationModule, SVDB4CommissioningPlotsModule, SVDPackerModule, svdDumpModule, SVDTimeCalibrationsMonitorModule, SVDPositionErrorScaleFactorImporterModule, SVDLocalCalibrationsMonitorModule, SVDLatencyCalibrationModule, SVDHotStripFinderModule, SVDClusterCalibrationsMonitorModule, SVDBackgroundModule, FullSimModule, PIDNtupleModule, MdstPIDModule, KlongValidationModule, DataWriterModule, CDCDedxValidationModule, CDCDedxDQMModule, Root2BinaryModule, PrintEventRateModule, PrintDataModule, Convert2RawDetModule, PXDPerformanceModule, PXDClustersFromTracksModule, PXDBackgroundModule, AWESOMEBasicModule, KLMUnpackerModule, KLMScintillatorSimulatorModule, KLMReconstructorModule, KLMPackerModule, KLMDQM2Module, KLMDQMModule, KLMDigitizerModule, KLMClustersReconstructorModule, KLMClusterEfficiencyModule, EKLMDataCheckerModule, BKLMTrackingModule, BKLMSimHistogrammerModule, BKLMDigitAnalyzerModule, BKLMAnaModule, OverrideGenerationFlagsModule, EvtGenDecayModule, ZMQTxWorkerModule, ZMQTxInputModule, TxModule, RxModule, SeqRootOutputModule, SeqRootInputModule, StatisticsSummaryModule, HistoManagerModule, RandomBarrierModule, EventInfoPrinterModule, SwitchDataStoreModule, SubEventModule, HistoModule, ECLWaveformFitModule, ECLUnpackerModule, ECLSplitterN2Module, ECLSplitterN1Module, ECLShowerShapeModule, ECLShowerCorrectorModule, ECLShowerCalibratorModule, ECLPackerModule, ECLLOMModule, ECLLocalRunCalibratorModule, ECLLocalMaximumFinderModule, ECLHitDebugModule, ECLFinalizerModule, ECLDQMOutOfTimeDigitsModule, ECLDQMEXTENDEDModule, ECLDQMModule, EclDisplayModule, ECLDigitizerPureCsIModule, ECLDigitizerModule, ECLDigitCalibratorModule, ECLDataAnalysisModule, ECLCRFinderModule, ECLCovarianceMatrixModule, ECLClusterPSDModule, ECLChargedPIDDataAnalysisValidationModule, ECLChargedPIDDataAnalysisModule, ECLChargedPIDModule, ECLBackgroundModule, PhysicsObjectsMiraBelleModule, PhysicsObjectsMiraBelleDstModule, PhysicsObjectsMiraBelleDst2Module, PhysicsObjectsDQMModule, DQMHistAnalysisInputSrvModule, DQMHistAnalysisInputModule, StorageSerializerModule, StorageDeserializerModule, SeqRootMergerModule, PartialSeqRootReaderModule, Ds2RawFileModule, Rbuf2RbufModule, Rbuf2DsModule, RawInputModule, Raw2DsModule, FastRbuf2DsModule, EvReductionModule, Ds2RbufModule, Ds2RawModule, CertifyParallelModule, SerializerModule, Root2RawModule, MonitorDataCOPPERModule, GenRawSendModule, DeSerializerPXDModule, ElapsedTimeModule, HLTDs2ZMQModule, HLTDQM2ZMQModule, ReceiveEventModule, Ds2SampleModule, TrackAnaModule, MonitorDataModule, DqmHistoManagerModule, TxSocketModule, RxSocketModule, DAQPerfModule, CDCUnpackerModule, CDCRecoTrackFilterModule, CDCPackerModule, CDCDQMModule, cdcDQM7Module, CDCCRTestModule, CDCCosmicAnalysisModule, QcsmonitorStudyModule, QcsmonitorDigitizerModule, PlumeDigitizerModule, PindiodeStudyModule, PinDigitizerModule, TPCStudyModule, TpcDigitizerModule, MicrotpcStudyModule, He3tubeStudyModule, He3DigitizerModule, FANGSStudyModule, FANGSDigitizerModule, DosiStudyModule, DosiDigitizerModule, CsIStudyModule, CsiStudy_v2Module, CsiModule, CsIDigitizerModule, CsiDigitizer_v2Module, ClawsStudyModule, ClawsDigitizerModule, ClawStudyModule, ClawDigitizerModule, BgoStudyModule, BgoDigitizerModule, BeamDigitizerModule, BeamabortStudyModule, ReprocessorModule, NtuplePhase1_v6Module, AnalysisPhase1StudyModule, BGOverlayInputModule, BeamBkgTagSetterModule, BeamBkgMixerModule, BeamBkgHitRateMonitorModule, BeamBkgGeneratorModule, BelleMCOutputModule, B2BIIMdstInputModule, B2BIIConvertMdstModule, B2BIIMCParticlesMonitorModule, ARICHDQMModule, arichBtestModule, LowEnergyPi0VetoExpertModule, LowEnergyPi0IdentificationExpertModule, CurlTaggerModule, CosmicsAlignmentValidationModule, AlignDQMModule, CalibrationCollectorModule, GetEventFromSocketModule, SrsensorModule, QcsmonitorModule, PlumeModule, PindiodeModule, Ph1sustrModule, Ph1bpipeModule, MicrotpcModule, He3tubeModule, FANGSModule, DosiModule, CLAWSModule, ClawModule, CaveModule, BgoModule, and BeamabortModule.

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

TODO: one value per module, and please change to the "delta" instead of integral

we wont use "white" =1 in this module

Reimplemented from Module.

Definition at line 220 of file DQMHistAnalysisPXDEff.cc.

221 {
222  //Count how many of each type of histogram there are for the averaging
223  //std::map<std::string, int> typeCounter;
224 
225  m_hInnerMap->Reset();
226  m_hOuterMap->Reset();
227 
228  for (unsigned int i = 1; i <= m_PXDModules.size(); i++) {
229  VxdID& aPXDModule = m_PXDModules[i - 1];
230 
231  TString buff = (std::string)aPXDModule;
232  buff.ReplaceAll(".", "_");
233 
234  TH1* Hits, *Matches;
235  TString locationHits = "track_hits_" + buff;
236  if (m_histogramDirectoryName != "") {
237  locationHits = m_histogramDirectoryName + "/" + locationHits;
238  }
239  Hits = (TH1*)findHist(locationHits.Data());
240  TString locationMatches = "matched_cluster_" + buff;
241  if (m_histogramDirectoryName != "") {
242  locationMatches = m_histogramDirectoryName + "/" + locationMatches;
243  }
244  Matches = (TH1*)findHist(locationMatches.Data());
245 
246  // Finding only one of them should only happen in very strange situations...
247  if (Hits == nullptr || Matches == nullptr) {
248  B2ERROR("Missing histogram for sensor " << aPXDModule);
249  } else {
250  if (m_cEffModules[aPXDModule] && m_hEffModules[aPXDModule]) {// this check creates them with a nullptr ..bad
251  m_hEffModules[aPXDModule]->SetTotalHistogram(*Hits, "f");
252  m_hEffModules[aPXDModule]->SetPassedHistogram(*Matches, "f");
253 
254  m_cEffModules[aPXDModule]->cd();
255  m_hEffModules[aPXDModule]->Paint("colz"); // not Draw, enforce to create GetPaintedHistogram?
256  m_cEffModules[aPXDModule]->Modified();
257  m_cEffModules[aPXDModule]->Update();
258 
259  auto h = m_hEffModules[aPXDModule]->GetPaintedHistogram();
260  int s = (2 - aPXDModule.getSensorNumber()) * m_v_bins;
261  int l = (aPXDModule.getLadderNumber() - 1) * m_u_bins;
262  if (m_hInnerMap && aPXDModule.getLayerNumber() == 1) {
263  for (int u = 0; u < m_u_bins; u++) {
264  for (int v = 0; v < m_v_bins; v++) {
265  auto b = h->GetBin(u + 1, v + 1);
266  m_hInnerMap->Fill(u + l, v + s, h->GetBinContent(b));
267  }
268  }
269  }
270  if (m_hOuterMap && aPXDModule.getLayerNumber() == 2) {
271  for (int u = 0; u < m_u_bins; u++) {
272  for (int v = 0; v < m_v_bins; v++) {
273  auto b = h->GetBin(u + 1, v + 1);
274  m_hOuterMap->Fill(u + l, v + s, h->GetBinContent(b));
275  }
276  }
277  }
278  }
279  }
280  }// Single-Module histos + 2d overview finished
281 
282  m_cInnerMap->cd();
283  if (m_hInnerMap) m_hInnerMap->Draw("colz");
284  m_cInnerMap->Modified();
285  m_cInnerMap->Update();
286  m_cOuterMap->cd();
287  if (m_hOuterMap) m_hOuterMap->Draw("colz");
288  m_cOuterMap->Modified();
289  m_cOuterMap->Update();
290  UpdateCanvas(m_cInnerMap->GetName());
291  UpdateCanvas(m_cOuterMap->GetName());
292 
293  // Change: We now use one histogram for hits and matches to make
294  // sure that we have an atomic update which is otherwise not
295  // guaranteed by DQM framework
296  TString locationHits = "PXD_Eff_combined";
297  if (m_histogramDirectoryName != "") {
298  locationHits = m_histogramDirectoryName + "/" + locationHits;
299  }
300  TH1* Combined = (TH1*)findHist(locationHits.Data());
301 
302  double stat_data = 0;
303  bool error_flag = false;
304  bool warn_flag = false;
305  double all = 0.0;
306 
307  double imatch = 0.0, ihit = 0.0;
308  int ieff = 0;
309 
310  std::map <VxdID, bool> updated{}; // init to false, keep track of updated histograms
311  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
312  int j = i + 1;
313 
314  if (Combined == nullptr) {
315  m_hEffAll->SetPassedEvents(j, 0); // order, otherwise it might happen that SetTotalEvents is NOT filling the value!
316  m_hEffAll->SetTotalEvents(j, 0);
317  } else {
318  VxdID& aModule = m_PXDModules[i];
319  double nmatch = Combined->GetBinContent(i * 2 + 2);
320  double nhit = Combined->GetBinContent(i * 2 + 1);
321  if (nmatch > 10 && nhit > 10) { // could be zero, too
322  imatch += nmatch;
323  ihit += nhit;
324  ieff++; // only count in modules working
325  double var_e = nmatch / nhit; // can never be zero
326  // workaround for excluded module
327  if (std::find(m_excluded.begin(), m_excluded.end(), i) != m_excluded.end()) continue;
328 
329  m_monObj->setVariable(Form("efficiency_%d_%d_%d", aModule.getLayerNumber(), aModule.getLadderNumber(), aModule.getSensorNumber()),
330  var_e);
331  }
332 
334  all += nhit;
335  m_hEffAll->SetPassedEvents(j, 0); // otherwise it might happen that SetTotalEvents is NOT filling the value!
336  m_hEffAll->SetTotalEvents(j, nhit);
337  m_hEffAll->SetPassedEvents(j, nmatch);
338 
339  if (nhit < m_minEntries) {
340  // update the first entries directly (short runs)
341  m_hEffAllUpdate->SetPassedEvents(j, 0); // otherwise it might happen that SetTotalEvents is NOT filling the value!
342  m_hEffAllUpdate->SetTotalEvents(j, nhit);
343  m_hEffAllUpdate->SetPassedEvents(j, nmatch);
344  m_hEffAllLastTotal->SetBinContent(j, nhit);
345  m_hEffAllLastPassed->SetBinContent(j, nmatch);
346  updated[aModule] = true;
347  } else if (nhit - m_hEffAllLastTotal->GetBinContent(j) > m_minEntries) {
348  m_hEffAllUpdate->SetPassedEvents(j, 0); // otherwise it might happen that SetTotalEvents is NOT filling the value!
349  m_hEffAllUpdate->SetTotalEvents(j, nhit - m_hEffAllLastTotal->GetBinContent(j));
350  m_hEffAllUpdate->SetPassedEvents(j, nmatch - m_hEffAllLastPassed->GetBinContent(j));
351  m_hEffAllLastTotal->SetBinContent(j, nhit);
352  m_hEffAllLastPassed->SetBinContent(j, nmatch);
353  updated[aModule] = true;
354  }
355 
356  // workaround for excluded module
357  if (std::find(m_excluded.begin(), m_excluded.end(), i) != m_excluded.end()) continue;
358 
359  // get the errors and check for limits for each bin seperately ...
360 
361  if (nhit > 50) {
362  error_flag |= (m_hEffAll->GetEfficiency(j) + m_hEffAll->GetEfficiencyErrorUp(j) <
363  m_errorlevelmod[aModule]); // error if upper error value is below limit
364  warn_flag |= (m_hEffAll->GetEfficiency(j) + m_hEffAll->GetEfficiencyErrorUp(j) <
365  m_warnlevelmod[aModule]); // (and not only the actual eff value)
366  if (m_alarmAdhoc) {
367  error_flag |= (m_hEffAllUpdate->GetEfficiency(j) + m_hEffAllUpdate->GetEfficiencyErrorUp(j) <
368  m_errorlevelmod[aModule]); // error if upper error value is below limit
369  warn_flag |= (m_hEffAllUpdate->GetEfficiency(j) + m_hEffAllUpdate->GetEfficiencyErrorUp(j) <
370  m_warnlevelmod[aModule]); // (and not only the actual eff value)
371  }
372  }
373  }
374  }
375 
376  {
377  m_cEffAll->cd();
378  m_cEffAll->cd(0);
379  m_hEffAll->Paint("AP");
380  m_cEffAll->Clear();
381  m_cEffAll->cd(0);
382 
383  auto gr = m_hEffAll->GetPaintedGraph();
384  if (gr) {
385  double scale_min = 1.0;
386  for (int i = 0; i < gr->GetN(); i++) {
387  gr->SetPointEXhigh(i, 0.);
388  gr->SetPointEXlow(i, 0.);
389  // this has to be done first, as it will recalc Min/Max and destroy axis
390  Double_t x, y;
391  gr->GetPoint(i, x, y);
392  gr->SetPoint(i, x - 0.01, y); // workaround for jsroot bug (fixed upstream)
393  auto val = y - gr->GetErrorYlow(i); // Error is relative to value
394  if (std::find(m_excluded.begin(), m_excluded.end(), i) == m_excluded.end()) {
395  // scale update only for included module
396  if (scale_min > val) scale_min = val;
397  }
398  }
399  if (scale_min == 1.0) scale_min = 0.0;
400  if (scale_min > 0.9) scale_min = 0.9;
401  gr->SetMinimum(0);
402  gr->SetMaximum(m_PXDModules.size());
403  auto ay = gr->GetYaxis();
404  if (ay) ay->SetRangeUser(scale_min, 1.0);
405  auto ax = gr->GetXaxis();
406  if (ax) {
407  ax->Set(m_PXDModules.size(), 0, m_PXDModules.size());
408  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
409  TString ModuleName = (std::string)m_PXDModules[i];
410  ax->SetBinLabel(i + 1, ModuleName);
411  }
412  }
413 
414  gr->SetLineColor(4);
415  gr->SetLineWidth(2);
416  gr->SetMarkerStyle(8);
417 
418  gr->Draw("AP");
419 
420  for (auto& it : m_excluded) {
421  auto tt = new TLatex(it + 0.5, scale_min, (" " + std::string(m_PXDModules[it]) + " Module is excluded, please ignore").c_str());
422  tt->SetTextAngle(90);// Rotated
423  tt->SetTextAlign(12);// Centered
424  tt->Draw();
425  }
426 
427  if (all < 100.) {
428  m_cEffAll->Pad()->SetFillColor(kGray);// Magenta or Gray
429  } else {
430  if (error_flag) {
431  m_cEffAll->Pad()->SetFillColor(kRed);// Red
432  } else if (warn_flag) {
433  m_cEffAll->Pad()->SetFillColor(kYellow);// Yellow
434  } else {
435  m_cEffAll->Pad()->SetFillColor(kGreen);// Green
436  // m_cEffAll->Pad()->SetFillColor(kWhite);// White
437  }
438  }
439 
440  m_cEffAll->Pad()->SetFrameFillColor(kWhite - 1); // White
441  m_cEffAll->Pad()->SetFrameFillStyle(1001);// White
442  m_cEffAll->Pad()->Modified();
443  m_cEffAll->Pad()->Update();
444  m_hWarnLine->Draw("same,hist");
445  m_hErrorLine->Draw("same,hist");
446  }
447 
448  UpdateCanvas(m_cEffAll->GetName());
449  m_cEffAll->Modified();
450  m_cEffAll->Update();
451  }
452 
453  {
454  m_cEffAllUpdate->cd();
455  m_hEffAllUpdate->Paint("AP");
456  m_cEffAllUpdate->Clear();
457  m_cEffAllUpdate->cd(0);
458 
459  auto gr = m_hEffAllUpdate->GetPaintedGraph();
460  auto gr3 = (TGraphAsymmErrors*) m_hEffAll->GetPaintedGraph()->Clone();
461  if (gr3) {
462  for (int i = 0; i < gr3->GetN(); i++) {
463  Double_t x, y;
464  gr3->GetPoint(i, x, y);
465  gr3->SetPoint(i, x + 0.2, y);
466  }
467  }
468 
469  double scale_min = 1.0;
470  if (gr) {
471  for (int i = 0; i < gr->GetN(); i++) {
472  gr->SetPointEXhigh(i, 0.);
473  gr->SetPointEXlow(i, 0.);
474  // this has to be done first, as it will recalc Min/Max and destroy axis
475  Double_t x, y;
476  gr->GetPoint(i, x, y);
477  gr->SetPoint(i, x - 0.2, y); // shift a bit if in same plot
478  auto val = y - gr->GetErrorYlow(i); // Error is relative to value
479  if (std::find(m_excluded.begin(), m_excluded.end(), i) == m_excluded.end()) {
480  // skip scale update only for included modules
481  if (scale_min > val) scale_min = val;
482  }
483  }
484  if (scale_min == 1.0) scale_min = 0.0;
485  if (scale_min > 0.9) scale_min = 0.9;
486  gr->SetMinimum(0);
487  gr->SetMaximum(m_PXDModules.size());
488  auto ay = gr->GetYaxis();
489  if (ay) ay->SetRangeUser(scale_min, 1.0);
490  auto ax = gr->GetXaxis();
491  if (ax) {
492  ax->Set(m_PXDModules.size(), 0, m_PXDModules.size());
493  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
494  TString ModuleName = (std::string)m_PXDModules[i];
495  ax->SetBinLabel(i + 1, ModuleName);
496  }
497  }
498  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
499  if (updated[m_PXDModules[i]]) {
500  // we should only write if it was updated!
501  Double_t x, y;// we assume that double and Double_t are same!
502  gr->GetPoint(i, x, y);
503  setEpicsPV((std::string)m_PXDModules[i], y);
504  }
505  }
506 
507  gr->SetLineColor(kBlack);
508  gr->SetLineWidth(3);
509  gr->SetMarkerStyle(33);
510  gr->Draw("AP");
511  } else scale_min = 0.0;
512  if (gr3) gr3->Draw("P"); // both in one plot
513 
514  for (auto& it : m_excluded) {
515  auto tt = new TLatex(it + 0.5, scale_min, (" " + std::string(m_PXDModules[it]) + " Module is excluded, please ignore").c_str());
516  tt->SetTextSize(0.035);
517  tt->SetTextAngle(90);// Rotated
518  tt->SetTextAlign(12);// Centered
519  tt->Draw();
520  }
521 
522  if (all < 100.) {
523  m_cEffAllUpdate->Pad()->SetFillColor(kGray);// Magenta or Gray
524  stat_data = 0.;
525  } else {
526  if (error_flag) {
527  m_cEffAllUpdate->Pad()->SetFillColor(kRed);// Red
528  stat_data = 4.;
529  } else if (warn_flag) {
530  m_cEffAllUpdate->Pad()->SetFillColor(kYellow);// Yellow
531  stat_data = 3.;
532  } else {
533  m_cEffAllUpdate->Pad()->SetFillColor(kGreen);// Green
534  stat_data = 2.;
536  // m_cEffAllUpdate->Pad()->SetFillColor(kWhite);// White
537  }
538  }
539  m_cEffAllUpdate->Pad()->SetFrameFillColor(kWhite - 1); // White
540  m_cEffAllUpdate->Pad()->SetFrameFillStyle(1001);// White
541  m_cEffAllUpdate->Pad()->Modified();
542  m_cEffAllUpdate->Pad()->Update();
543  m_hWarnLine->Draw("same,hist");
544  m_hErrorLine->Draw("same,hist");
545  }
546  UpdateCanvas(m_cEffAllUpdate->GetName());
547  m_cEffAllUpdate->Modified();
548  m_cEffAllUpdate->Update();
549 
550 
551  double var_efficiency = ihit > 0 ? imatch / ihit : 0.0;
552  m_monObj->setVariable("efficiency", var_efficiency);
553  m_monObj->setVariable("nmodules", ieff);
554 
555  setEpicsPV("Status", stat_data);
556  // only update if statistics is reasonable, we dont want "0" drops between runs!
557  if (stat_data != 0) setEpicsPV("Overall", var_efficiency);
558 }
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
void UpdateCanvas(std::string name, bool updated=true)
Mark canvas as updated (or not)
TCanvas * m_cOuterMap
Full Eff Map Outer Layer.
TCanvas * m_cInnerMap
Full Eff Map Inner Layer.
int m_minEntries
Update entry intervall.
std::map< VxdID, double > m_warnlevelmod
warn level for alarm per module
TEfficiency * m_hEffAll
One bin for each module in the geometry.
std::map< VxdID, TCanvas * > m_cEffModules
Individual efficiency for each module, canvas.
TEfficiency * m_hEffAllUpdate
Efficiency, last state, updated.
std::map< VxdID, double > m_errorlevelmod
error level for alarm per module
TH1 * m_hEffAllLastTotal
TH1, last state, total.
TH1 * m_hEffAllLastPassed
TH1, last state, passed.
TH2F * m_hOuterMap
Full Eff Map Outer Layer.
MonitoringObject * m_monObj
Monitoring Object.
std::vector< VxdID > m_PXDModules
IDs of all PXD Modules to iterate over.
std::string m_histogramDirectoryName
name of histogram directory
TCanvas * m_cEffAllUpdate
Final Canvas for Update.
TH2F * m_hInnerMap
Full Eff Map Inner Layer.
TH1F * m_hWarnLine
TLine object for warning limit.
std::map< VxdID, TEfficiency * > m_hEffModules
Individual efficiency for each module, 2d histogram.
TH1F * m_hErrorLine
TLine object for error error.
std::vector< int > m_excluded
Indizes of excluded PXD Modules.
bool m_alarmAdhoc
generate alarm from adhoc values
void setVariable(const std::string &var, float val, float upErr=-1., float dwErr=-1)
set value to float variable (new variable is made if not yet existing)
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33
baseType getSensorNumber() const
Get the sensor id.
Definition: VxdID.h:100
baseType getLadderNumber() const
Get the ladder id.
Definition: VxdID.h:98
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:96

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

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