ATLAS Offline Software
Loading...
Searching...
No Matches
LArCellMonAlg Class Reference

#include <LArCellMonAlg.h>

Inheritance diagram for LArCellMonAlg:

Public Types

enum class  Environment_t {
  user = 0 , online , tier0 , tier0Raw ,
  tier0ESD , AOD , altprod
}
 Specifies the processing environment. More...
enum class  DataType_t {
  userDefined = 0 , monteCarlo , collisions , cosmics ,
  heavyIonCollisions
}
 Specifies what type of input data is being monitored. More...

Public Member Functions

 LArCellMonAlg (const std::string &name, ISvcLocator *pSvcLocator)
 ~LArCellMonAlg ()
virtual StatusCode initialize () override final
 initialize
virtual StatusCode fillHistograms (const EventContext &ctx) const override final
 adds event to the monitoring histograms
StatusCode checkFilters (bool &ifPass, bool &passBeamBackgroundRemoval, const std::string &MonGroupName, const EventContext &ctx) const
virtual StatusCode execute (const EventContext &ctx) const override
 Applies filters and trigger requirements.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by reference.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by reference.
template<typename... T>
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, T &&... variables) const
 Fills a variadic list of variables to a group by reference.
void fill (const std::string &groupName, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by name.
void fill (const std::string &groupName, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by name.
template<typename... T>
void fill (const std::string &groupName, T &&... variables) const
 Fills a variadic list of variables to a group by name.
Environment_t environment () const
 Accessor functions for the environment.
Environment_t envStringToEnum (const std::string &str) const
 Convert the environment string from the python configuration to an enum object.
DataType_t dataType () const
 Accessor functions for the data type.
DataType_t dataTypeStringToEnum (const std::string &str) const
 Convert the data type string from the python configuration to an enum object.
const ToolHandle< GenericMonitoringTool > & getGroup (const std::string &name) const
 Get a specific monitoring tool from the tool handle array.
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool () const
 Get the trigger decision tool member.
bool trigChainsArePassed (const std::vector< std::string > &vTrigNames) const
 Check whether triggers are passed.
SG::ReadHandle< xAOD::EventInfoGetEventInfo (const EventContext &) const
 Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
virtual float lbAverageInteractionsPerCrossing (const EventContext &ctx) const
 Calculate the average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx) const
 Calculate instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx) const
 Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx) const
 Calculate the instantaneous luminosity per bunch crossing.
virtual double lbDuration (const EventContext &ctx) const
 Calculate the duration of the luminosity block (in seconds).
virtual float lbAverageLivefraction (const EventContext &ctx) const
 Calculate the average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx) const
 Calculate the live fraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx) const
 Calculate the average integrated luminosity multiplied by the live fraction.
virtual StatusCode parseList (const std::string &line, std::vector< std::string > &result) const
 Parse a string into a vector.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Public Attributes

 flags = initConfigFlags()
 Files
 HISTFileName
 enableLumiAccess
 useTrigger
 Environment
 cfg = MainServicesCfg(flags)
 f = open("LArCellMon.pkl","wb")

Protected Types

enum  LayerEnum {
  EMBPA =0 , EMBPC , EMB1A , EMB1C ,
  EMB2A , EMB2C , EMB3A , EMB3C ,
  HEC0A , HEC0C , HEC1A , HEC1C ,
  HEC2A , HEC2C , HEC3A , HEC3C ,
  EMECPA , EMECPC , EMEC1A , EMEC1C ,
  EMEC2A , EMEC2C , EMEC3A , EMEC3C ,
  FCAL1A , FCAL1C , FCAL2A , FCAL2C ,
  FCAL3A , FCAL3C , MAXLAYER
}
enum  LayerEnumNoSides {
  EMBPNS =0 , EMB1NS , EMB2NS , EMB3NS ,
  HEC0NS , HEC1NS , HEC2NS , HEC3NS ,
  EMECPNS , EMEC1NS , EMEC2NS , EMEC3NS ,
  FCAL1NS , FCAL2NS , FCAL3NS , MAXLYRNS
}

Protected Member Functions

void getHistoCoordinates (const CaloDetDescrElement *dde, float &celleta, float &cellphi, unsigned &iLyr, unsigned &iLyrNS) const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

const CaloCell_IDm_calo_id {nullptr}
const std::map< unsigned, LayerEnumNoSidesm_caloSamplingToLyrNS
ToolHandleArray< GenericMonitoringToolm_tools {this,"GMTools",{}}
 Array of Generic Monitoring Tools.
PublicToolHandle< Trig::TrigDecisionToolm_trigDecTool
 Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterToolm_DQFilterTools {this,"FilterTools",{}}
 Array of Data Quality filter tools.
SG::ReadCondHandleKey< LuminosityCondDatam_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
SG::ReadCondHandleKey< LBDurationCondDatam_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
SG::ReadCondHandleKey< TrigLiveFractionCondDatam_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
AthMonitorAlgorithm::Environment_t m_environment
 Instance of the Environment_t enum.
AthMonitorAlgorithm::DataType_t m_dataType
 Instance of the DataType_t enum.
Gaudi::Property< std::string > m_environmentStr {this,"Environment","user"}
 Environment string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_dataTypeStr {this,"DataType","userDefined"}
 DataType string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_triggerChainString {this,"TriggerChain",""}
 Trigger chain string pulled from the job option and parsed into a vector.
std::vector< std::string > m_vTrigChainNames
 Vector of trigger chain names parsed from trigger chain string.
Gaudi::Property< std::string > m_fileKey {this,"FileKey",""}
 Internal Athena name for file.
Gaudi::Property< bool > m_useLumi {this,"EnableLumi",false}
 Allows use of various luminosity functions.
Gaudi::Property< float > m_defaultLBDuration {this,"DefaultLBDuration",60.}
 Default duration of one lumi block.
Gaudi::Property< int > m_detailLevel {this,"DetailLevel",0}
 Sets the level of detail used in the monitoring.
SG::ReadHandleKey< xAOD::EventInfom_EventInfoKey {this,"EventInfoKey","EventInfo"}
 Key for retrieving EventInfo from StoreGate.

Private Types

enum  Direction { OVER , UNDER , NONE , BOTH }
enum  TriggerType {
  RNDM , CALO , MINBIAS , MET ,
  MISC , NOTA , MAXTRIGTYPE
}
enum  PartitionEnum {
  EMBA , EMBC , EMECA , EMECC ,
  HECA , HECC , FCALA , FCALC ,
  MAXPARTITIONS
}
typedef std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode initThresh ()
void setLArCellBinning ()
StatusCode createPerJobHistograms (const CaloCellContainer *cellcont, const CaloNoise *noisep) const
void checkTriggerAndBeamBackground (bool passBeamBackgroundRemoval, std::vector< threshold_t > &thresholds) const
void sporadicNoiseCandidate (const CaloCell *cell, const LArCellMonAlg::LayerEnum iLyr, const float threshold, const LArOnOffIdMapping *cabling) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static bool isThrListed (const std::vector< std::string > &vec, const std::string &s)
static std::string strToLower (const std::string &input)

Private Attributes

SG::ReadHandleKey< CaloCellContainerm_cellContainerKey {this,"CaloCellContainer","AllCalo","SG key of the input cell container"}
Gaudi::Property< std::string > m_MonGroupName {this, "MonGroupName", "LArCellMonGroup"}
Gaudi::Property< std::string > m_MonGroupNamePerJob {this, "MonGroupName_perJob"}
Gaudi::Property< std::string > m_groupnameTotalOccupancyEtaPhi {this, "MonGroupName_OccupancyEtaPhi"}
Gaudi::Property< std::string > m_groupnamePercentageOccupancyEtaPhi {this, "MonGroupName_PercentageOccupancyEtaPhi"}
Gaudi::Property< std::string > m_groupnameOccupancyEta {this, "MonGroupName_OccupancyEta"}
Gaudi::Property< std::string > m_groupnameOccupancyPhi {this, "MonGroupName_OccupancyPhi"}
Gaudi::Property< std::string > m_groupnameTotEnergyEtaPhi {this, "MonGroupName_TotEnergyEtaPhi"}
Gaudi::Property< std::string > m_groupnameTotQualityEtaPhi {this, "MonGroupName_AvgQualityEtaPhi"}
Gaudi::Property< std::string > m_groupnameFractionOverQthEtaPhi {this, "MonGroupName_FractionOverQthEtaPhi"}
Gaudi::Property< std::string > m_groupnameTotTimeEtaPhi {this, "MonGroupName_AvgTimeEtaPhi"}
Gaudi::Property< std::string > m_groupnameFractionPastTthEtaPhi {this, "MonGroupName_FractionPastTthEtaPhi"}
SG::ReadCondHandleKey< CaloNoisem_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
std::map< std::string, std::map< std::string, int > > m_toolmapAll
FloatArrayProperty m_eCutForTiming
StringArrayProperty m_layerNames
IntegerArrayProperty m_layerNcells
StringArrayProperty m_partitionNames {this, "PartitionNames", {"EMBA","EMBC","EMECA","EMECC","HECA","HECC","FCALA","FCALC"}}
BooleanProperty m_useTrigger {this, "useTrigger", true}
std::array< StringProperty, NOTAm_triggerNames
BooleanProperty m_ignoreKnownBadChannels {this, "MaskBadChannels", false, "Do not fill histograms with values from known bad channels"}
BooleanProperty m_maskNoCondChannels {this, "MaskNoCondChannels", false, "Do not fill histograms with values from cells reco'ed w/o conditions database"}
BooleanArrayProperty m_doBeamBackgroundRemovalProp {this, "DoBeamBackgroundRemoval"}
BooleanProperty m_doKnownBadChannelsVsEtaPhi {this, "doKnownBadChannelsVsEtaPhi", true}
BooleanProperty m_doDatabaseNoiseVsEtaPhi {this, "doDatabaseNoiseVsEtaPhi", true}
BooleanProperty m_doEnergyVsTime {this, "doEnergyVsTime", true}
BooleanProperty m_doUnnormalized1DEnergy {this, "doUnnormalized1DEnergy", false}
BooleanProperty m_sporadic_switch {this, "Sporadic_switch", false}
FloatProperty m_threshold_em_S0S1 {this, "Threshold_EM_S0S1", 5000.}
FloatProperty m_threshold_HECFCALEMS2S3 {this, "Threshold_HECFCALEMS2S3", 15000.}
UnsignedIntegerProperty m_sporadicPlotLimit {this, "NsporadicPlotLimit", 300}
UnsignedIntegerProperty m_sporadic_protc {this, "Sporadic_protection", 4000}
UnsignedIntegerProperty m_minSporadicNoiseEventsPerCell {this, "minSporadicEvents", 10}
StringArrayProperty m_thresholdNameProp {this, "ThresholdType", {},"Vector of threshold names"}
StringArrayProperty m_thresholdColumnType {this, "ThresholdColumnType",{}}
StringArrayProperty m_thresholdDirectionProp {this, "ThresholdDirection", {}, "Vector of threshold directions"}
StringArrayProperty m_triggersToIncludeProp {this, "TriggersToInclude", {}}
StringArrayProperty m_triggersToExcludeProp {this, "TriggersToExclude", {}}
StringArrayProperty m_thresholdTitleTemplates {this, "ThresholdTitleTemplates", {}}
FloatArrayProperty m_defaultThresholds {this, "DefaultThresholds", {}}
BooleanArrayProperty m_inSigNoise {this, "ThresholdinSigNoise", {}}
FloatArrayProperty m_timeThresholdProp {this, "TimeThreshold"}
FloatArrayProperty m_qualityFactorThresholdProp {this, "QualityFactorThreshold",{}}
StringArrayProperty m_doEtaPhiTotalOccupancyNames {this, "DoEtaPhiTotalOccupancyNames", {}}
StringArrayProperty m_doEtaPhiPercentageOccupancyNames {this, "DoEtaPhiPercentageOccupancyNames", {}}
StringArrayProperty m_doEtaOccupancyNames {this, "DoEtaOccupancyNames", {}}
StringArrayProperty m_doPhiOccupancyNames {this, "DoPhiOccupancyNames", {}}
StringArrayProperty m_doEtaPhiTotEnergyNames {this, "DoEtaPhiTotEnergyNames", {}}
StringArrayProperty m_doEtaPhiAvgQualityNames {this, "DoEtaPhiAvgQualityNames", {},"Turns on 'totQuality' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"}
StringArrayProperty m_doEtaPhiFractionOverQthNames {this, "DoEtaPhiFractionOverQthNames", {}}
StringArrayProperty m_doEtaPhiAvgTimeNames {this, "DoEtaPhiAvgTimeNames", {},"Turns on 'totTime' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"}
StringArrayProperty m_doEtaPhiFractionPastTthNames {this, "DoEtaPhiFractionPastTthNames", {}}
std::array< FloatArrayProperty, MAXLYRNSm_thresholdsProp
const std::array< PartitionEnum, MAXLAYERm_layerEnumtoPartitionEnum
LArBadChannelMask m_bcMask
Gaudi::Property< std::vector< std::string > > m_problemsToMask {this,"ProblemsToMask",{}, "Bad-Channel categories to mask"}
std::vector< threshold_t > m_thresholds
const LArOnlineIDm_LArOnlineIDHelper
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
SG::ReadCondHandleKey< LArBadChannelContm_BCKey {this, "BadChanKey", "LArBadChannel", "SG key for LArBadChan object"}
std::array< CaloMonitoring::LArCellBinning, MAXLAYERm_binning
SG::ReadHandleKey< LArCollisionTimem_LArCollisionTimeKey {this,"LArCollisionTimeKey","LArCollisionTime"}
SG::ReadHandleKey< BeamBackgroundDatam_beamBackgroundKey {this,"BeamBackgroundKey","CSCBackgroundForCaloMon"}
Gaudi::Property< bool > m_useBadLBTool {this, "useBadLBTool", false}
ToolHandle< IDQFilterToolm_BadLBTool {this, "BadLBTool","DQBadLBFilterTool"}
Gaudi::Property< bool > m_useReadyFilterTool {this, "useReadyFilterTool", true}
ToolHandle< IDQFilterToolm_ReadyFilterTool {this, "ReadyFilterTool", "DQAtlasReadyFilterTool"}
Gaudi::Property< bool > m_useLArNoisyAlg {this, "useLArNoisyAlg", false}
Gaudi::Property< bool > m_useCollisionFilterTool {this, "useLArCollisionFilterTool", true}
Gaudi::Property< bool > m_useBeamBackgroundRemoval {this, "useBeamBackgroundRemoval", false}
std::string m_name
std::unordered_map< std::string, size_t > m_toolLookupMap
const ToolHandle< GenericMonitoringToolm_dummy
Gaudi::Property< bool > m_enforceExpressTriggers
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 41 of file LArCellMonAlg.h.

Member Typedef Documentation

◆ MonVarVec_t

typedef std::vector<std::reference_wrapper<Monitored::IMonitoredVariable> > AthMonitorAlgorithm::MonVarVec_t
privateinherited

Definition at line 370 of file AthMonitorAlgorithm.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ DataType_t

enum class AthMonitorAlgorithm::DataType_t
stronginherited

Specifies what type of input data is being monitored.

An enumeration of the different types of data the monitoring application may be running over. This can be used to select which histograms to produce, e.g. to prevent the production of colliding-beam histograms when running on cosmic-ray data. Strings of the same names may be given as jobOptions.

Enumerator
userDefined 
monteCarlo 
collisions 
cosmics 
heavyIonCollisions 

Definition at line 194 of file AthMonitorAlgorithm.h.

194 {
195 userDefined = 0,
196 monteCarlo,
197 collisions,
198 cosmics,
199 heavyIonCollisions,
200 };
AthConfigFlags cosmics(AthConfigFlags flags, str instanceName, str recoMode)

◆ Direction

enum LArCellMonAlg::Direction
private
Enumerator
OVER 
UNDER 
NONE 
BOTH 

Definition at line 99 of file LArCellMonAlg.h.

99{OVER,UNDER,NONE,BOTH};

◆ Environment_t

enum class AthMonitorAlgorithm::Environment_t
stronginherited

Specifies the processing environment.

The running environment may be used to select which histograms are produced, and where they are located in the output. For example, the output paths of the histograms are different for the "user", "online" and the various offline flags. Strings of the same names may be given as jobOptions.

Enumerator
user 
online 
tier0 
tier0Raw 
tier0ESD 
AOD 
altprod 

Definition at line 175 of file AthMonitorAlgorithm.h.

175 {
176 user = 0,
177 online,
178 tier0,
179 tier0Raw,
180 tier0ESD,
181 AOD,
182 altprod,
183 };

◆ LayerEnum

enum CaloMonAlgBase::LayerEnum
protectedinherited
Enumerator
EMBPA 
EMBPC 
EMB1A 
EMB1C 
EMB2A 
EMB2C 
EMB3A 
EMB3C 
HEC0A 
HEC0C 
HEC1A 
HEC1C 
HEC2A 
HEC2C 
HEC3A 
HEC3C 
EMECPA 
EMECPC 
EMEC1A 
EMEC1C 
EMEC2A 
EMEC2C 
EMEC3A 
EMEC3C 
FCAL1A 
FCAL1C 
FCAL2A 
FCAL2C 
FCAL3A 
FCAL3C 
MAXLAYER 

Definition at line 48 of file CaloMonAlgBase.h.

48 {EMBPA=0, EMBPC, EMB1A, EMB1C, EMB2A, EMB2C, EMB3A, EMB3C,
49 HEC0A, HEC0C, HEC1A, HEC1C, HEC2A, HEC2C, HEC3A, HEC3C,
50 EMECPA,EMECPC,EMEC1A,EMEC1C,EMEC2A,EMEC2C,EMEC3A,EMEC3C,
51 FCAL1A,FCAL1C,FCAL2A,FCAL2C,FCAL3A,FCAL3C,MAXLAYER};

◆ LayerEnumNoSides

enum CaloMonAlgBase::LayerEnumNoSides
protectedinherited
Enumerator
EMBPNS 
EMB1NS 
EMB2NS 
EMB3NS 
HEC0NS 
HEC1NS 
HEC2NS 
HEC3NS 
EMECPNS 
EMEC1NS 
EMEC2NS 
EMEC3NS 
FCAL1NS 
FCAL2NS 
FCAL3NS 
MAXLYRNS 

Definition at line 54 of file CaloMonAlgBase.h.

54 {EMBPNS=0, EMB1NS, EMB2NS, EMB3NS, HEC0NS, HEC1NS, HEC2NS, HEC3NS,
55 EMECPNS,EMEC1NS,EMEC2NS,EMEC3NS,FCAL1NS,FCAL2NS,FCAL3NS,MAXLYRNS};

◆ PartitionEnum

enum LArCellMonAlg::PartitionEnum
private
Enumerator
EMBA 
EMBC 
EMECA 
EMECC 
HECA 
HECC 
FCALA 
FCALC 
MAXPARTITIONS 

Definition at line 171 of file LArCellMonAlg.h.

171{EMBA,EMBC,EMECA,EMECC,HECA,HECC,FCALA,FCALC,MAXPARTITIONS};

◆ TriggerType

enum LArCellMonAlg::TriggerType
private
Enumerator
RNDM 
CALO 
MINBIAS 
MET 
MISC 
NOTA 
MAXTRIGTYPE 

Definition at line 100 of file LArCellMonAlg.h.

100{RNDM,CALO,MINBIAS,MET,MISC,NOTA,MAXTRIGTYPE};
Definition MET.py:1

Constructor & Destructor Documentation

◆ LArCellMonAlg()

LArCellMonAlg::LArCellMonAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 32 of file LArCellMonAlg.cxx.

33 :CaloMonAlgBase(name, pSvcLocator),
34 m_LArOnlineIDHelper(nullptr)
35{
36}

◆ ~LArCellMonAlg()

LArCellMonAlg::~LArCellMonAlg ( )
default

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

62{
63 return 0;
64}

◆ checkFilters()

StatusCode CaloMonAlgBase::checkFilters ( bool & ifPass,
bool & passBeamBackgroundRemoval,
const std::string & MonGroupName,
const EventContext & ctx ) const
inherited

Definition at line 48 of file CaloMonAlgBase.cxx.

48 {
49
50 ATH_MSG_DEBUG("CaloMonAlgBase:checkFilters() starts "<<MonGroupName);
51
52 auto evtbin = Monitored::Scalar<int>("EvtBin",1);
53 fill(MonGroupName,evtbin);
54
55 ifPass = 0;
56 if (m_useReadyFilterTool) {
57 if (m_ReadyFilterTool->accept(ctx)) {
58 ifPass = 1;
59 evtbin = 2;
60 fill(MonGroupName,evtbin); //All events with ATLAS Ready
61 }
62 }
63 else{
64 evtbin = 2;
65 fill(MonGroupName,evtbin); //ATLAS ready not activated
66 ifPass = 1;
67 }
68
69 ATH_MSG_DEBUG("CaloMonAlgBase::checkFilters() ATLAS Ready done");
70
71 SG::ReadHandle<xAOD::EventInfo> eventInfo{GetEventInfo(ctx)};
72
73 if (m_useBadLBTool) {
74 if (m_BadLBTool->accept(ctx)) {
75 ifPass = ifPass && 1;
76 if(ifPass) {evtbin=3; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB
77 }
78 else {
79 ifPass = 0;
80 }
81 }
82 else{
83 if(ifPass) {evtbin=3; fill(MonGroupName,evtbin);}
84 }
85
86 ATH_MSG_DEBUG("CaloMonAlgBase::checkFilters() BadLBTool done");
87
88 // Filter the events identfied as collision by the LAr system
89 // Useful in CosmicCalo to reject collision candidates
90 if (m_useCollisionFilterTool){
91 SG::ReadHandle<LArCollisionTime> larTime{m_LArCollisionTimeKey,ctx};
92 if(!larTime.isValid()){
93 ATH_MSG_WARNING("Unable to retrieve LArCollisionTime event store");
94 if(ifPass) {evtbin=4; fill(MonGroupName,evtbin);}
95 }
96 else {
97 if (larTime->timeC()!=0 && larTime->timeA()!=0 && std::fabs(larTime->timeC() - larTime->timeA())<10) {
98 ifPass = 0;
99 }
100 else {
101 ifPass = ifPass && 1;
102 if(ifPass) {evtbin=4; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB and Good LAr collision time
103 }
104 }
105 }
106 else{
107 if(ifPass) {evtbin=4; fill(MonGroupName,evtbin);}
108 }
109 ATH_MSG_DEBUG("CaloMonAlgBase::checkFilters() CollisionFilterTool done");
110
111
112 passBeamBackgroundRemoval=true;
113 if(m_useBeamBackgroundRemoval){
114 SG::ReadHandle<BeamBackgroundData> beamBackgroundData{m_beamBackgroundKey, ctx};
115 if(!beamBackgroundData.isValid()){
116 ATH_MSG_WARNING("Unable to retrieve BeamBackgroundData");
117 }
118 else {
119 if( beamBackgroundData->GetNumSegment() > 0 ) {
120 passBeamBackgroundRemoval = false;
121 ifPass = 0;
122 ATH_MSG_DEBUG("Identified background event");
123 }
124 else {
125 passBeamBackgroundRemoval = true;
126 ifPass = ifPass && 1;
127 if(ifPass){evtbin=5; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB and Good LAr collision time and not Beam Background
128 }
129 }
130 }
131 else { // Do not use BeamBackgroundRemoval
132 ifPass = ifPass && 1;
133 if(ifPass) {evtbin=5; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB and Good LAr collision time and not Beam Background
134
135 }
136 ATH_MSG_DEBUG("CaloMonAlgBase::checkFilters() m_useBeamBackgroundRemoval done");
137
138 std::string TheTrigger;
139 if ( m_vTrigChainNames.empty()) {
140 TheTrigger="NoTrigSel";
141 ifPass = ifPass && 1; // No Trigger Filter check
142 if(ifPass) {evtbin=6; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB and Good LAr collision time and not Beam Background and Trigger Filter pass
143 }
144 else {
145 TheTrigger = m_triggerChainString; // Trigger Filter not implemented ++ FIXME ==
146 if(ifPass) {evtbin=6; fill(MonGroupName,evtbin);}
147 }
148
149 if(m_useLArNoisyAlg && (eventInfo->errorState(xAOD::EventInfo::LAr) == xAOD::EventInfo::Error)) {
150 ifPass = 0;
151 }
152 else {
153 ifPass = ifPass && 1;
154 if(ifPass) {evtbin=7; fill(MonGroupName,evtbin);} //All events with ATLAS Ready and Good LB and Good LAr collision time and not Beam Background and Trigger Filter pass and no Lar Error
155 }
156
157 ATH_MSG_DEBUG("CaloMonAlgBase::checkFilters() is done with pass=" << ifPass);
158 return StatusCode::SUCCESS;
159}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< std::string > m_triggerChainString
Trigger chain string pulled from the job option and parsed into a vector.
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
SG::ReadHandleKey< LArCollisionTime > m_LArCollisionTimeKey
ToolHandle< IDQFilterTool > m_BadLBTool
SG::ReadHandleKey< BeamBackgroundData > m_beamBackgroundKey
Declare a monitored scalar variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
@ LAr
The LAr calorimeter.
@ Error
The sub-detector issued an error.
void fill(H5::Group &out_file, size_t iterations)

◆ checkTriggerAndBeamBackground()

void LArCellMonAlg::checkTriggerAndBeamBackground ( bool passBeamBackgroundRemoval,
std::vector< threshold_t > & thresholds ) const
private

Definition at line 259 of file LArCellMonAlg.cxx.

259 {
260
261 auto mon_trig = Monitored::Scalar<float>("trigType",-1);
262 mon_trig=0.5;
263 fill(m_MonGroupName,mon_trig);
264
265 const ToolHandle<Trig::TrigDecisionTool>& trigTool = getTrigDecisionTool();
266 if (m_useTrigger && !trigTool.empty()) {
267 std::bitset<MAXTRIGTYPE> triggersPassed(0x1<<NOTA); //Last bit: NOTA, always passes
268 constexpr std::bitset<MAXTRIGTYPE> NOTAmask=~(0x1<<NOTA);
269
270 for (unsigned i=0;i<NOTA;++i) {
271 const std::string& chainName=m_triggerNames[i];
272 if(!chainName.empty()) {
273 const Trig::ChainGroup* cg = trigTool->getChainGroup(chainName);
274 if(cg->isPassed()) {
275 triggersPassed.set(i);
276 mon_trig=0.5+i;
277 fill(m_MonGroupName,mon_trig);
278 }
279 }
280 }//end of loop over trigger types
281
282 for (threshold_t& thr : thresholds) { //Loop over thresholds
283 thr.m_threshTriggerDecision=(thr.m_triggersToInclude & triggersPassed).any() && (thr.m_triggersToExclude & triggersPassed & NOTAmask).none();
284 }// end loop over thresholds
285
286 } //end if trigger used
287 else {
288 mon_trig=6.5;
289 fill(m_MonGroupName,mon_trig);
290 }
291 //Note that thr.m_threshTriggerDecision remains in it's default state 'true' if trigger wasn't used
292
293 //Check beam-background removal
294 for (const threshold_t& thr : thresholds) { //Loop over thresholds
295 if (thr.m_threshTriggerDecision && (passBeamBackgroundRemoval || !thr.m_doBeamBackgroundRemoval)) {
296 //The counter of events passing. Will be incremented even if neither trigger nor background removal is requested for this threshold
297 auto eventCounter = Monitored::Scalar<size_t>("eventCounter",thr.m_thrIndex);
298 fill(m_MonGroupName,eventCounter);
299 }
300 }//end loop over thresholds
301 }
bool isPassed(unsigned int condition=TrigDefs::Physics) const
tells if chain group passed
bool any() const
Return true if there are any 1 bits in the set.

◆ createPerJobHistograms()

StatusCode LArCellMonAlg::createPerJobHistograms ( const CaloCellContainer * cellcont,
const CaloNoise * noisep ) const
private

Definition at line 603 of file LArCellMonAlg.cxx.

603 {
604
605 ATH_MSG_INFO("Creating the once-per-job histograms");
606 //The following histograms can be considered constants for one job
607 //(in fact, they are constant for an entire run or even run-periode)
608 //ActiveCells in eta/phi (to normalize 1D occupancy plots)
609 //BadChannel word
610 //Database noise
611
612 auto doDatabaseNoisePlot = Monitored::Scalar<bool>("doDatabaseNoisePlot",m_doDatabaseNoiseVsEtaPhi);
613 auto doCellsActiveEtaPlot = Monitored::Scalar<bool>("doCellsActiveEtaPlot",m_doEtaOccupancyNames.size()>0);
614 auto doCellsActivePhiPlot = Monitored::Scalar<bool>("doCellsActivePhiPlot",m_doPhiOccupancyNames.size()>0);
615
616 if(!m_doKnownBadChannelsVsEtaPhi && !doDatabaseNoisePlot && !doCellsActiveEtaPlot && !doCellsActivePhiPlot) {
617 ATH_MSG_INFO("No once-per-job histogram requested");
618 return StatusCode::SUCCESS;
619 }
620
621 SG::ReadCondHandle<LArBadChannelCont> readHandle{m_BCKey};
622 const LArBadChannelCont *bcCont {*readHandle};
623 if(m_doKnownBadChannelsVsEtaPhi && !bcCont) {
624 ATH_MSG_WARNING( "Do not have Bad chan container !!!" );
625 return StatusCode::FAILURE;
626 }
627
628 //filling:
629
630 CaloCellContainer::const_iterator it = cellCont->begin();
631 CaloCellContainer::const_iterator it_e = cellCont->end();
632 for ( ; it!=it_e;++it) {
633 const CaloCell* cell = *it;
634 Identifier id = cell->ID();
635 bool is_lar=m_calo_id->is_lar(id);
636 if(!is_lar) continue;
637 const CaloDetDescrElement* caloDDEl=cell->caloDDE();
638 float celleta, cellphi;
639 unsigned iLyr, iLyrNS;
640 getHistoCoordinates(caloDDEl, celleta, cellphi, iLyr, iLyrNS);
641
642 auto mon_eta = Monitored::Scalar<float>("celleta_"+m_layerNames[iLyr],celleta);
643 auto mon_phi = Monitored::Scalar<float>("cellphi_"+m_layerNames[iLyr],cellphi);
644
645 const LArBadChannel larBadChannel = bcCont->offlineStatus(id);
646 auto fillBadChannelPlot = Monitored::Scalar<bool>("fillBadChannelPlot",(m_doKnownBadChannelsVsEtaPhi && (!larBadChannel.good())));
647 auto badCellWord = Monitored::Scalar<uint32_t>("badCellWord_"+m_layerNames[iLyr],larBadChannel.packedData());
648
649 auto cellnoisedb = Monitored::Scalar<float>("cellnoisedb_"+m_layerNames[iLyr],noisep->getNoise(id,cell->gain()));
650
651 fill(m_MonGroupNamePerJob,badCellWord,cellnoisedb,mon_eta,mon_phi,fillBadChannelPlot,doDatabaseNoisePlot,doCellsActiveEtaPlot,doCellsActivePhiPlot);
652 }//end loop over cells
653
654 return StatusCode::SUCCESS;
655}
#define ATH_MSG_INFO(x)
LArBadXCont< LArBadChannel > LArBadChannelCont
bool is_lar(Identifier id) const
void getHistoCoordinates(const CaloDetDescrElement *dde, float &celleta, float &cellphi, unsigned &iLyr, unsigned &iLyrNS) const
const CaloCell_ID * m_calo_id
float getNoise(const IdentifierHash h, const int gain) const
Accessor by IdentifierHash and gain.
Definition CaloNoise.h:35
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
BitWord packedData() const
bool good() const
Returns true if no problems at all (all bits at zero).
LArBC_t offlineStatus(const Identifier id) const
Query the status of a particular channel by offline ID This is the main client access method.

◆ dataType()

DataType_t AthMonitorAlgorithm::dataType ( ) const
inlineinherited

Accessor functions for the data type.

Returns
the current value of the class's DataType_t instance.

Definition at line 224 of file AthMonitorAlgorithm.h.

224{ return m_dataType; }
AthMonitorAlgorithm::DataType_t m_dataType
Instance of the DataType_t enum.

◆ dataTypeStringToEnum()

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum ( const std::string & str) const
inherited

Convert the data type string from the python configuration to an enum object.

Returns
a value in the DataType_t enumeration which matches the input string.

Definition at line 144 of file AthMonitorAlgorithm.cxx.

144 {
145 // convert the string to all lowercase
146 std::string lowerCaseStr = str;
147 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
148
149 // check if it matches one of the enum choices
150 if( lowerCaseStr == "userdefined" ) {
152 } else if( lowerCaseStr == "montecarlo" ) {
154 } else if( lowerCaseStr == "collisions" ) {
156 } else if( lowerCaseStr == "cosmics" ) {
157 return DataType_t::cosmics;
158 } else if( lowerCaseStr == "heavyioncollisions" ) {
160 } else { // otherwise, warn the user and return "userDefined"
161 ATH_MSG_WARNING("AthMonitorAlgorithm::dataTypeStringToEnum(): Unknown data type "
162 <<str<<", returning userDefined.");
164 }
165}
void tolower(std::string &s)

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ environment()

Environment_t AthMonitorAlgorithm::environment ( ) const
inlineinherited

Accessor functions for the environment.

Returns
the current value of the class's Environment_t instance.

Definition at line 208 of file AthMonitorAlgorithm.h.

208{ return m_environment; }
AthMonitorAlgorithm::Environment_t m_environment
Instance of the Environment_t enum.

◆ envStringToEnum()

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::envStringToEnum ( const std::string & str) const
inherited

Convert the environment string from the python configuration to an enum object.

Returns
a value in the Environment_t enumeration which matches the input string.

Definition at line 116 of file AthMonitorAlgorithm.cxx.

116 {
117 // convert the string to all lowercase
118 std::string lowerCaseStr = str;
119 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
120
121 // check if it matches one of the enum choices
122 if( lowerCaseStr == "user" ) {
123 return Environment_t::user;
124 } else if( lowerCaseStr == "online" ) {
126 } else if( lowerCaseStr == "tier0" ) {
128 } else if( lowerCaseStr == "tier0raw" ) {
130 } else if( lowerCaseStr == "tier0esd" ) {
132 } else if( lowerCaseStr == "aod" ) {
133 return Environment_t::AOD;
134 } else if( lowerCaseStr == "altprod" ) {
136 } else { // otherwise, warn the user and return "user"
137 ATH_MSG_WARNING("AthMonitorAlgorithm::envStringToEnum(): Unknown environment "
138 <<str<<", returning user.");
139 return Environment_t::user;
140 }
141}

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode AthMonitorAlgorithm::execute ( const EventContext & ctx) const
overridevirtualinherited

Applies filters and trigger requirements.

Then, calls fillHistograms().

Parameters
ctxevent context for reentrant Athena call
Returns
StatusCode

Definition at line 77 of file AthMonitorAlgorithm.cxx.

77 {
78
79 // Checks that all of the DQ filters are passed. If any one of the filters
80 // fails, return SUCCESS code and do not fill the histograms with the event.
81 for ( const auto& filterItr : m_DQFilterTools ) {
82 if (!filterItr->accept(ctx)) {
83 ATH_MSG_DEBUG("Event rejected due to filter tool.");
84 return StatusCode::SUCCESS;
85 }
86 }
87
88 // Trigger: If there is a decision tool and the chains fail, skip the event.
90 ATH_MSG_DEBUG("Event rejected due to trigger filter.");
91 return StatusCode::SUCCESS;
92 }
93
94 ATH_MSG_DEBUG("Event accepted!");
95 return fillHistograms(ctx);
96}
virtual StatusCode fillHistograms(const EventContext &ctx) const =0
adds event to the monitoring histograms
bool trigChainsArePassed(const std::vector< std::string > &vTrigNames) const
Check whether triggers are passed.
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterTool > m_DQFilterTools
Array of Data Quality filter tools.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

88{
89 // If we didn't find any symlinks to add, just return the collection
90 // from the base class. Otherwise, return the extended collection.
91 if (!m_extendedExtraObjects.empty()) {
93 }
95}
An algorithm that can be simultaneously executed in multiple threads.

◆ fillHistograms()

StatusCode LArCellMonAlg::fillHistograms ( const EventContext & ctx) const
finaloverridevirtual

adds event to the monitoring histograms

User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.

Parameters
ctxforwarded from execute
Returns
StatusCode

Implements AthMonitorAlgorithm.

Definition at line 400 of file LArCellMonAlg.cxx.

400 {
401
402 ATH_MSG_DEBUG("LArCellMonAlg::fillHistograms() starts");
403
404 SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey, ctx};
405 const LArOnOffIdMapping* cabling{*cablingHdl};
406 if(!cabling) {
407 ATH_MSG_ERROR( "Do not have cabling");
408 return StatusCode::FAILURE;
409 }
410
411 const LArBadChannelCont* bcCont=nullptr;
412 if (m_ignoreKnownBadChannels) {
413 SG::ReadCondHandle<LArBadChannelCont> bcContHdl{m_BCKey,ctx};
414 bcCont=(*bcContHdl);
415 }
416
417 SG::ReadHandle<CaloCellContainer> cellHdl{m_cellContainerKey, ctx};
418 const CaloCellContainer* cellCont = cellHdl.cptr();
419
420 SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey, ctx};
421 const CaloNoise *noisep = *noiseHdl;
422
423 if (ctx.evt()==0) {
424 ATH_CHECK(createPerJobHistograms(cellCont, noisep));
425 }
426
427 bool ifPass = true;
428 bool passBeamBackgroundRemoval = true;
429 ATH_CHECK(checkFilters(ifPass,passBeamBackgroundRemoval,m_MonGroupName,ctx)); //Check ATLAS-Ready, beam-background, etc from base class
430 //Continue if 'ifpass' set but also if we identified a background event (for the control plot)
431 if(!ifPass and not passBeamBackgroundRemoval==false) {
432 ATH_MSG_DEBUG("Event rejected by filters");
433 return StatusCode::SUCCESS;
434 }
435
436 std::vector<threshold_t> thresholds = m_thresholds;
437
438 checkTriggerAndBeamBackground(passBeamBackgroundRemoval, thresholds);
439
440 //get LB
441 auto lumiBlock = Monitored::Scalar<unsigned int>("lumiBlock",0);
442 lumiBlock = GetEventInfo(ctx)->lumiBlock();
443
445 CaloCellContainer::const_iterator it_e = cellCont->end();
446 // loop over cells -------------
447
448 std::vector<std::vector<std::vector<LArMonValues>>> monValueVec;
449 monValueVec.reserve(m_layerNames.size());
450 for (size_t ilayer = 0; ilayer < m_layerNames.size(); ++ilayer) {
451 monValueVec.emplace_back();
452 monValueVec[ilayer].reserve(thresholds.size());
453 for (size_t ithreshold = 0; ithreshold < thresholds.size(); ++ithreshold) {
454 monValueVec[ilayer].emplace_back();
455 // this could be more intelligent (this is the worst case for #cells in a layer, most are much less)
456 monValueVec[ilayer][ithreshold].reserve(m_layerNcells[ilayer]);
457 }
458 }
459
460 std::vector<std::vector<float>> energies_nocut;
461 energies_nocut.reserve(m_layerNames.size());
462 for (size_t ilayer = 0; ilayer < m_layerNames.size(); ++ilayer) {
463 energies_nocut.emplace_back();
464 energies_nocut[ilayer].reserve(m_layerNcells[ilayer]);
465 }
466
467 for ( ; it!=it_e;++it) {
468 // cell info
469 const CaloCell* cell = *it;
470 Identifier id = cell->ID();
471 bool is_lar=m_calo_id->is_lar(id);
472 const ULong64_t monCellID = id.get_compact();
473
474 if(!is_lar) continue;
475
476 const CaloDetDescrElement* caloDDEl=cell->caloDDE();
477 const IdentifierHash cellHash=caloDDEl->calo_hash();
478
479 const CaloGain::CaloGain gain= cell->gain();
480 const float cellen = cell->energy();
481 const float celltime = cell->time();
482 const uint16_t cellquality = cell->quality();
483 const uint16_t cellprovenance = cell->provenance();
484 const bool celltqavailable = ( cellprovenance & 0x2000 );
485
486 // No more filling if we encounter a bad channel ....
487 if (m_ignoreKnownBadChannels && m_bcMask.cellShouldBeMasked(bcCont,id)) continue;
488
489 // ...or a channel w/o conditions
490 if (m_maskNoCondChannels && (cellprovenance & 0x00FF) != 0x00A5) continue; //FIXME, I think that cut is wrong
491
492 float celleta,cellphi;
493 unsigned iLyr, iLyrNS;
494 getHistoCoordinates(caloDDEl, celleta, cellphi, iLyr, iLyrNS);
495
496 //Start filling per-threshold histograms:
497 auto& lvaluemap = monValueVec[iLyr];
498 for (size_t ithr = 0; ithr < thresholds.size(); ++ithr) {
499 const auto& thr = thresholds[ithr];
500 // for (auto& thr : thresholds) {
501 //std::cout << "Threshold name " << thr.m_threshName << std::endl;
502 //Any of the conditons below means we do not fill the histogram:
503
504 //Trigger passed?
505 if (m_useTrigger && !thr.m_threshTriggerDecision) continue;
506 //std::cout << " Trigger passed" << std::endl;
507
508 //Beam background event?
509 if (thr.m_doBeamBackgroundRemoval && !passBeamBackgroundRemoval) continue;
510
511 //std::cout << " Beam background passed" << std::endl;
512
513 float thresholdVal=thr.m_threshValue[iLyrNS];
514 if (thresholdVal==0) {
515 ATH_MSG_WARNING("Got threshold 0 for type '" << thr.m_threshName << "'for cell in layer " << m_layerNames[iLyr]);
516 }
517
518 if (thr.m_inSigNoise) thresholdVal*=noisep->getNoise(cellHash, gain);
519
520
521 bool passThrCut(true);
522 if (thr.m_threshDirection==OVER && cellen <= thresholdVal) passThrCut=false;
523 if (thr.m_threshDirection==UNDER && cellen > thresholdVal) passThrCut=false;
524 if (thr.m_threshDirection==BOTH && (cellen > -thresholdVal && cellen <= thresholdVal)) passThrCut=false;
525
526
527 bool pass_qual = (cellquality > thr.m_qualityFactorThreshold);
528 bool pass_time = (fabs(celltime) > thr.m_timeThreshold);
529
530 lvaluemap[ithr].push_back({celleta, cellphi, cellen, celltime, cellquality, pass_qual, pass_time, passThrCut});
531
532 if(!passThrCut) continue;
533
534 }//end loop over thresholds
535
536 //some additional monitored objects
537 auto en = Monitored::Scalar<float>("cellEnergy_"+m_layerNames[iLyr],cellen);
538 auto tim = Monitored::Scalar<float>("cellTime_"+m_layerNames[iLyr],celltime);
539 if(passBeamBackgroundRemoval) {
540 // 1D Energy distribution:
541 energies_nocut[iLyr].push_back(cellen);
542 //if (m_h_energy[iLyr]) m_h_energy[iLyr]->Fill(cellen);
543
544 // Time vs Energy:
545 if (m_doEnergyVsTime && celltqavailable && cellquality<4000) {
546 bool passecut = (cellen>m_eCutForTiming[iLyrNS]);
547 auto eGTcut = Monitored::Scalar<float>("enGreaterThanCut_"+m_layerNames[iLyr],passecut);
548 fill(m_MonGroupName,en,tim,eGTcut);
549
550 }
551
552 //Checking for signs of sporadic noise
553 if(m_sporadic_switch) {
554 float energyThreshold;
555 //We have two energy thresholds for sporadic noise, one for EM samling 1 and 2 and one for the rest
556 if(iLyrNS==EMB1NS || iLyrNS==EMB2NS || iLyrNS==EMEC1NS || iLyrNS==EMEC2NS) {
557 energyThreshold=m_threshold_em_S0S1;
558 }
559 else {
560 energyThreshold = m_threshold_HECFCALEMS2S3;
561 }
562 if (cellen > energyThreshold) {
563 ATH_MSG_INFO( "Found sporadic noise candidate cell with id 0x" << std::hex << id.get_identifier32().get_compact() << std::dec << " in " << m_partitionNames[m_layerEnumtoPartitionEnum[iLyr]] );
564 auto sporadicCellE = Monitored::Scalar<float>("sporadicCellE",cellen);
565 auto sporadicCellTime = Monitored::Scalar<float>("sporadicCellTime",celltime);
566 auto sporadicCellQuality = Monitored::Scalar<uint16_t>("sporadicCellQuality",cellquality);
567 auto sporadicCellID = Monitored::Scalar<ULong64_t>("sporadicCellID",monCellID);
568 fill(m_MonGroupName,sporadicCellE,sporadicCellTime,sporadicCellQuality,sporadicCellID,lumiBlock);
569 }
570 }//end if m_sporadic_switch
571 } // end if m_passBeamBackgroundRemoval
572 }//end loop over cells
573
574 for (size_t ilayer = 0; ilayer < energies_nocut.size(); ++ilayer) {
575 auto en0 = Monitored::Collection("cellEnergy_nocuts_"+m_layerNames[ilayer],
576 energies_nocut[ilayer]);
577 fill(m_MonGroupName, en0);
578 }
579
580 // fill, for every layer/threshold
581 for (size_t ilayer = 0; ilayer < monValueVec.size(); ++ilayer) {
582 for (size_t ithreshold = 0; ithreshold < monValueVec[ilayer].size(); ++ithreshold) {
583 const auto& tool = monValueVec[ilayer][ithreshold];
584 auto mon_eta = Monitored::Collection("celleta",tool,[](const auto& v){return v.mon_eta;});
585 auto mon_phi = Monitored::Collection("cellphi",tool,[](const auto& v){return v.mon_phi;});
586 auto en = Monitored::Collection("cellEnergy",tool,[](const auto& v){return v.en;});
587 auto mon_qual = Monitored::Collection("cellQuality",tool,[](const auto& v){return v.mon_qual;});
588 auto pass_qual = Monitored::Collection("isPoorQuality",tool,[](const auto& v){return v.pass_qual;});
589 auto tim = Monitored::Collection("cellTime",tool,[](const auto& v){return v.time;});
590 auto pass_time = Monitored::Collection("isLateTime",tool,[](const auto& v){return v.pass_time;});
591 auto passThrCut = Monitored::Collection("passThrCut",tool,[](const auto& v){return v.passThrCut;});
592 fill(m_tools[m_toolmapAll.at(m_layerNames[ilayer]).at(thresholds[ithreshold].m_threshName)],
593 passThrCut, mon_eta, mon_phi, en, mon_qual,
594 pass_qual, tim, pass_time);
595 }
596 }
597
598 ATH_MSG_DEBUG("LArCellMonAlg::fillLarHists() is done");
599 return StatusCode::SUCCESS;
600}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
StatusCode checkFilters(bool &ifPass, bool &passBeamBackgroundRemoval, const std::string &MonGroupName, const EventContext &ctx) const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
StatusCode createPerJobHistograms(const CaloCellContainer *cellcont, const CaloNoise *noisep) const
std::map< std::string, std::map< std::string, int > > m_toolmapAll
std::vector< threshold_t > m_thresholds
FloatArrayProperty m_eCutForTiming
FloatProperty m_threshold_em_S0S1
LArBadChannelMask m_bcMask
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
StringArrayProperty m_layerNames
SG::ReadCondHandleKey< LArBadChannelCont > m_BCKey
void checkTriggerAndBeamBackground(bool passBeamBackgroundRemoval, std::vector< threshold_t > &thresholds) const
SG::ReadHandleKey< CaloCellContainer > m_cellContainerKey
FloatProperty m_threshold_HECFCALEMS2S3
const_pointer_type cptr()
Dereference the pointer.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
setTeId lumiBlock
setWord1 uint16_t

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ GetEventInfo()

SG::ReadHandle< xAOD::EventInfo > AthMonitorAlgorithm::GetEventInfo ( const EventContext & ctx) const
inherited

Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).

Parameters
ctxEventContext for the event
Returns
a SG::ReadHandle<xAOD::EventInfo>

Definition at line 111 of file AthMonitorAlgorithm.cxx.

111 {
112 return SG::ReadHandle<xAOD::EventInfo>(m_EventInfoKey, ctx);
113}
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Key for retrieving EventInfo from StoreGate.

◆ getGroup()

const ToolHandle< GenericMonitoringTool > & AthMonitorAlgorithm::getGroup ( const std::string & name) const
inherited

Get a specific monitoring tool from the tool handle array.

Finds a specific GenericMonitoringTool instance from the list of monitoring tools (a ToolHandleArray). Throws a FATAL warning if the object found is empty.

Parameters
namestring name of the desired tool
Returns
reference to the desired monitoring tool

Definition at line 168 of file AthMonitorAlgorithm.cxx.

168 {
169 // get the pointer to the tool, and check that it exists
170 auto idx = m_toolLookupMap.find(name);
171 //Check if the tool exists in the map
172 if (ATH_LIKELY(idx != m_toolLookupMap.end())) {
173 return m_tools[idx->second];
174 }
175 else {
176 //Check if the map is empty
177 if (m_toolLookupMap.empty()) {
178 ATH_MSG_FATAL("The m_toolLookupMap is empty. The tool " << name << " cannot be found in an empty map.");
179 return m_dummy;
180 }
181 //If the map is not empty and the tool was not found, print a fatal error
182 if (!m_toolLookupMap.empty()) {
183 std::string available = std::accumulate(
184 m_toolLookupMap.begin(), m_toolLookupMap.end(), std::string(""),
185 [](const std::string& s, auto h) { return s + "," + h.first; });
186 ATH_MSG_FATAL("The tool " << name << " could not be found in the tool array of the "
187 << "monitoring algorithm " << m_name << ". This probably reflects a discrepancy between "
188 << "your python configuration and c++ filling code. Note: your available groups are {"
189 << available << "}.");
190
191 return m_dummy;
192 }
193 if (!isInitialized()) {
195 "It seems that the AthMonitorAlgorithm::initialize was not called "
196 "in derived class initialize method, group name: " << name);
197 }
198 }
199 return m_dummy;
200}
#define ATH_MSG_FATAL(x)
#define ATH_LIKELY(x)
std::unordered_map< std::string, size_t > m_toolLookupMap
const ToolHandle< GenericMonitoringTool > m_dummy
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.

◆ getHistoCoordinates()

void CaloMonAlgBase::getHistoCoordinates ( const CaloDetDescrElement * dde,
float & celleta,
float & cellphi,
unsigned & iLyr,
unsigned & iLyrNS ) const
protectedinherited

Definition at line 163 of file CaloMonAlgBase.cxx.

163 {
164
165 celleta=dde->eta_raw();
166 cellphi=dde->phi_raw();
167
168 int calosample=dde->getSampling();
169 if (dde->is_lar_em_endcap_inner()) calosample-=1; //Here, we consider the two layers of the EMEC IW as EME1 and EME2 instad of layer 2 and 3
170 iLyrNS=m_caloSamplingToLyrNS.at(calosample); //will throw if out of bounds
171 if ((iLyrNS==EMB1NS || iLyrNS==EMB2NS) && m_calo_id->region(dde->identify())==1) {
172 //We are in the awkward region 1 of the EM Barrel
173 //Looking at the image at http://atlas.web.cern.ch/Atlas/GROUPS/LIQARGEXT/TDR/figures6/figure6-17.eps
174 //may be useful to understand what's going on here.
175
176 //In brief: Region 1, layer 1 is closer related ot the middle compartment (aka layer 2)
177 // and region 1, layer 2 closer related to the back compartment (aka layer 3)
178 iLyrNS+=1;
179
180 //Layer 2: 0<eta<1.4 + 1.4<eta<1.475, deta = 0.025. 3 rows of cells from region 1
181 //Layer 3: 0<eta<1.35 (deta=0.050) + 1.4<eta<1.475 (deta = 0.075). 1 row of cell from region 1 with different dEta
182 }
183
184 const unsigned side=(celleta>0) ? 0 : 1; //Value >0 means A-side
185 iLyr=iLyrNS*2+side;
186 }
int region(const Identifier id) const
LAr field values (NOT_VALID == invalid request).
CaloCell_ID::CaloSample getSampling() const
cell sampling
Identifier identify() const override final
cell identifier
bool is_lar_em_endcap_inner() const
cell belongs to the inner wheel of EM end cap

◆ getTrigDecisionTool()

const ToolHandle< Trig::TrigDecisionTool > & AthMonitorAlgorithm::getTrigDecisionTool ( ) const
inherited

Get the trigger decision tool member.

The trigger decision tool is used to check whether a specific trigger is passed by an event.

Returns
m_trigDecTool

Definition at line 203 of file AthMonitorAlgorithm.cxx.

203 {
204 return m_trigDecTool;
205}

◆ initialize()

StatusCode LArCellMonAlg::initialize ( )
finaloverridevirtual

initialize

Returns
StatusCode

Reimplemented from CaloMonAlgBase.

Definition at line 41 of file LArCellMonAlg.cxx.

41 {
42
43 ATH_MSG_DEBUG("LArCellMonAlg::initialize() start");
44
45 // Initialize superclass
46 ATH_CHECK( CaloMonAlgBase::initialize() );
47
48 //Identfier-helpers
49 ATH_CHECK( detStore()->retrieve(m_LArOnlineIDHelper, "LArOnlineID") );
50
51 // Bad channel masker tool
52 ATH_CHECK(m_BCKey.initialize(m_ignoreKnownBadChannels || m_doKnownBadChannelsVsEtaPhi));
53 ATH_CHECK(m_bcMask.buildBitMask(m_problemsToMask,msg()));
54
55 ATH_CHECK( m_cellContainerKey.initialize() );
56 ATH_CHECK( m_cablingKey.initialize() );
57 ATH_CHECK( m_noiseCDOKey.initialize() );
58
59 //JobO consistency check:
60 if (m_useTrigger && std::all_of(std::begin(m_triggerNames),std::end(m_triggerNames),[](const std::string& trigName){return trigName.empty();})) {
61 ATH_MSG_WARNING("UseTrigger set to true but no trigger names given! Forcing useTrigger to false");
62 m_useTrigger=false;
63 }
64
65 // FIXME check consistency between layer and partitions from jO to enums
66
67 // Check that sizes of layer names and ncells is the same
68 if (m_layerNames.size() != m_layerNcells.size()) {
69 ATH_MSG_ERROR("LayerNames and LayerNcells not of the same length, aborting.....");
70 return StatusCode::FAILURE;
71 }
72
73
74 // Sets the threshold value arrays
76
77 //Fill the LArCellBinning for each layer
78 //setLArCellBinning();
79
81
82 ATH_MSG_DEBUG("LArCellMonAlg::initialize() is done!");
83
84 return StatusCode::SUCCESS;
85}
const ServiceHandle< StoreGateSvc > & detStore() const
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
StringArrayProperty m_thresholdNameProp
StatusCode initThresh()
IntegerArrayProperty m_layerNcells
StatusCode initialize(bool used=true)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
std::vector< V > buildToolMap(const ToolHandleArray< GenericMonitoringTool > &tools, const std::string &baseName, int nHist)
Builds an array of indices (base case).
MsgStream & msg
Definition testRead.cxx:32

◆ initThresh()

StatusCode LArCellMonAlg::initThresh ( )
private

Definition at line 89 of file LArCellMonAlg.cxx.

89 {
90
91 //Interpret the jobO defining the per-threshold histograms
92 //and initialize vector<threshold_t> m_thresholds;
93
94 const size_t nThr=m_thresholdNameProp.value().size();
95
96 //Check uniqueness of threshold-type by filling a set
97 std::set<std::string> uniqunesCheck;
98 for (const std::string& s : m_thresholdNameProp.value()) {
99 auto r=uniqunesCheck.insert(s);
100 if (!r.second) {
101 ATH_MSG_ERROR( "Configuration error: Threshold type " << s << " appears more than once" );
102 return StatusCode::FAILURE;
103 }
104 }
105 uniqunesCheck.clear();
106
107
108 const std::map<const std::string, const Direction> stringToDirection {{"over",OVER},{"under",UNDER},{"both",BOTH},{"none",NONE}};
109 const std::map<const std::string, const TriggerType> stringToTrigType {{"nota",NOTA},{"rndm",RNDM},{"calo",CALO},{"minbias",MINBIAS},
110 {"met",MET},{"misc",MISC},{"none",NOTA},{"all",NOTA}};
111
112 m_thresholds.resize(nThr);
113 for (size_t iThr=0;iThr<nThr;++iThr) {
115 threshold.m_threshName=m_thresholdNameProp.value()[iThr];
116 threshold.m_thrIndex=iThr;
117 threshold.m_threshTitleTemplate= m_thresholdTitleTemplates.value()[iThr];
118 std::fill(threshold.m_threshValue.begin(),threshold.m_threshValue.end(),m_defaultThresholds.value()[iThr]);
119 threshold.m_inSigNoise=m_inSigNoise.value()[iThr];
120
121 auto itD=stringToDirection.find(strToLower(m_thresholdDirectionProp.value()[iThr]));
122 if (itD!=stringToDirection.end()) {
123 threshold.m_threshDirection=itD->second;
124 }
125 else {
126 ATH_MSG_ERROR( "Configuration problem. Unknown threshold direction '"
127 << m_thresholdDirectionProp.value()[iThr]
128 << "'given" );
129 return StatusCode::FAILURE;
130 }
131
132 auto itT=stringToTrigType.find(strToLower(m_triggersToExcludeProp.value()[iThr]));
133 if (itT!=stringToTrigType.end()) {
134 threshold.m_triggersToExclude.set(itT->second);
135 if (itT->first=="all") {ATH_MSG_WARNING( "Setting TriggersToExclude to 'all' has no effect!" );}
136 }
137 else {
138 ATH_MSG_ERROR( "Configuration problem. Unknown trigger type '"
139 << m_triggersToExcludeProp.value()[iThr]
140 << "' given in propety 'TriggersToExlude'" );
141 return StatusCode::FAILURE;
142 }
143
144 itT=stringToTrigType.find(strToLower(m_triggersToIncludeProp.value()[iThr]));
145 if (itT!=stringToTrigType.end()) {
146 threshold.m_triggersToInclude.set(itT->second);
147 if (itT->first=="none") {ATH_MSG_WARNING( "Setting TriggersToInclude to 'none' has no effect!" );}
148 }
149 else {
150 ATH_MSG_ERROR( "Configuration problem. Unknown trigger type '"
151 << m_triggersToIncludeProp.value()[iThr]
152 << "' given in propety 'TriggersToInclude'" );
153 return StatusCode::FAILURE;
154 }
155
156 threshold.m_doPercentageOccupancy=isThrListed(m_doEtaPhiPercentageOccupancyNames.value(),threshold.m_threshName);
157 threshold.m_doEtaPhiOccupancy=isThrListed(m_doEtaPhiTotalOccupancyNames.value(),threshold.m_threshName);
158 threshold.m_doEtaOccupancy=isThrListed(m_doEtaOccupancyNames.value(),threshold.m_threshName);
159 threshold.m_doPhiOccupancy=isThrListed(m_doPhiOccupancyNames.value(),threshold.m_threshName);
160 threshold.m_doEtaPhiTotalEnergy=isThrListed(m_doEtaPhiTotEnergyNames.value(),threshold.m_threshName);
161 threshold.m_doEtaPhiAverageQuality=isThrListed(m_doEtaPhiAvgQualityNames.value(),threshold.m_threshName);
162 threshold.m_doEtaPhiFractionOverQth=isThrListed(m_doEtaPhiFractionOverQthNames.value(),threshold.m_threshName);
163 threshold.m_qualityFactorThreshold=m_qualityFactorThresholdProp.value()[iThr];
164 threshold.m_doEtaPhiAverageTime=isThrListed(m_doEtaPhiAvgTimeNames.value(),threshold.m_threshName);
165 threshold.m_doEtaPhiFractionPastTth=isThrListed(m_doEtaPhiFractionPastTthNames.value(),threshold.m_threshName);
166 threshold.m_timeThreshold=m_timeThresholdProp.value()[iThr];
167 threshold.m_doBeamBackgroundRemoval=m_doBeamBackgroundRemovalProp.value()[iThr];
168 }//end loop over threshold names
169
170
171 //Overwrite per-layer thresholds:
172 for (size_t iThrOvr=0;iThrOvr!= m_thresholdColumnType.value().size();++iThrOvr) {
173 const std::string& nameToOverwrite=m_thresholdColumnType.value()[iThrOvr];
174 auto it=std::find_if(m_thresholds.begin(),m_thresholds.end(),
175 [&](const threshold_t& x) {return (x.m_threshName==nameToOverwrite);}
176 );
177
178 if (it==m_thresholds.end()) {
179 ATH_MSG_ERROR( "Configuration error reading 'ThresholdColumnType': Threshold type '" << nameToOverwrite << "' is not defined in 'ThresholdType'" );
180 return StatusCode::FAILURE;
181 }
182
183 for (unsigned iLyr=0;iLyr<MAXLYRNS;++iLyr) {
184 if (m_thresholdsProp[iLyr].value().size()<iThrOvr) {
185 ATH_MSG_ERROR( "Configuration error: Not enough values in threshold vector for layer " << iLyr );
186 return StatusCode::FAILURE;
187 }
188
189 it->m_threshValue[iLyr]=m_thresholdsProp[iLyr].value()[iThrOvr];
190 }
191 }//end loop over threshold types with per-layer thresholds
192
193
194 //Clean out thresholds with no histogram requested:
195 auto thrIt=m_thresholds.begin();
196 while (thrIt!=m_thresholds.end()) {
197 const threshold_t& thr=*thrIt;
198 if (!(thr.m_doEtaPhiOccupancy || thr.m_doPercentageOccupancy || thr.m_doEtaOccupancy || thr.m_doPhiOccupancy || thr.m_doEtaPhiTotalEnergy ||
199 thr.m_doEtaPhiAverageQuality || thr.m_doEtaPhiFractionOverQth || thr.m_doEtaPhiAverageTime || thr.m_doEtaPhiFractionPastTth)) {
200 ATH_MSG_INFO( "Config issue: Threshold type '" << thr.m_threshName << "' defined but no histograms requested. Deleting." );
201 thrIt=m_thresholds.erase(thrIt);
202 }
203 else {
204 ATH_MSG_INFO("Threshold histograms requested for threshold '" << thrIt->m_threshName << "'");
205 thrIt++;
206 }
207 }
208
209
210 //Fix up histogram titles
211 for (threshold_t& thr : m_thresholds) {
212 if (thr.m_threshDirection!=NONE &&
213 std::count(thr.m_threshTitleTemplate.begin(),thr.m_threshTitleTemplate.end(),'%')==1) {
214 const size_t maxTitleLenght=thr.m_threshTitleTemplate.size()+32;
215 std::unique_ptr<char[]> toBeFilled(new char[maxTitleLenght]);
216
217 for (unsigned iLyrns=0;iLyrns<MAXLYRNS;++iLyrns) {
218 //Attempt to fill in theshold value
219 snprintf(toBeFilled.get(),maxTitleLenght,thr.m_threshTitleTemplate.c_str(),thr.m_threshValue[iLyrns]);
220 toBeFilled[maxTitleLenght-1]='\0'; //To be absolutely sure...
221 thr.m_threshTitles[iLyrns]=toBeFilled.get();
222 //std::cout << "Fixup result:" << thr.m_threshTitles[iLyrns] << std::endl;
223 } //end loop over thresholds
224 } //and if somthing to fix up
225 else {
226 //No threshold value to be set, keep as is
227 for (unsigned iLyrns=0;iLyrns<MAXLYRNS;++iLyrns) {
228 thr.m_threshTitles[iLyrns]=thr.m_threshTitleTemplate;
229 }
230 }
231 }
232
233 return StatusCode::SUCCESS;
234}
size_t size() const
Number of registered mappings.
#define x
FloatArrayProperty m_timeThresholdProp
StringArrayProperty m_doEtaOccupancyNames
std::array< FloatArrayProperty, MAXLYRNS > m_thresholdsProp
StringArrayProperty m_doEtaPhiAvgTimeNames
StringArrayProperty m_doEtaPhiTotalOccupancyNames
BooleanArrayProperty m_inSigNoise
StringArrayProperty m_thresholdColumnType
StringArrayProperty m_doEtaPhiAvgQualityNames
StringArrayProperty m_doEtaPhiTotEnergyNames
StringArrayProperty m_doEtaPhiFractionPastTthNames
static std::string strToLower(const std::string &input)
StringArrayProperty m_thresholdTitleTemplates
FloatArrayProperty m_defaultThresholds
StringArrayProperty m_thresholdDirectionProp
StringArrayProperty m_triggersToIncludeProp
StringArrayProperty m_doEtaPhiFractionOverQthNames
BooleanArrayProperty m_doBeamBackgroundRemovalProp
FloatArrayProperty m_qualityFactorThresholdProp
static bool isThrListed(const std::vector< std::string > &vec, const std::string &s)
StringArrayProperty m_doEtaPhiPercentageOccupancyNames
StringArrayProperty m_doPhiOccupancyNames
StringArrayProperty m_triggersToExcludeProp
int r
Definition globals.cxx:22

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ isThrListed()

bool LArCellMonAlg::isThrListed ( const std::vector< std::string > & vec,
const std::string & s )
staticprivate

Definition at line 667 of file LArCellMonAlg.cxx.

667 {
668 return (std::find(vec.begin(),vec.end(),s)!=vec.end());
669 }
std::vector< size_t > vec

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ parseList()

StatusCode AthMonitorAlgorithm::parseList ( const std::string & line,
std::vector< std::string > & result ) const
virtualinherited

Parse a string into a vector.

The input string is a single long string of all of the trigger names. It parses this string and turns it into a vector, where each element is one trigger or trigger category.

Parameters
lineThe input string.
resultThe parsed output vector of strings.
Returns
StatusCode

Definition at line 350 of file AthMonitorAlgorithm.cxx.

350 {
351 std::string item;
352 std::stringstream ss(line);
353
354 ATH_MSG_DEBUG( "AthMonitorAlgorithm::parseList()" );
355
356 while ( std::getline(ss, item, ',') ) {
357 std::stringstream iss(item); // remove whitespace
358 iss >> item;
359 result.push_back(item);
360 }
361
362 return StatusCode::SUCCESS;
363}
static Double_t ss

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ setLArCellBinning()

void LArCellMonAlg::setLArCellBinning ( )
private

Definition at line 8 of file LArCellMonAlgSetBinning.cxx.

8 {
9
10 //EMB Pre-sampler
11 const int embpaNEtaReg = 1;
12 double embpaEtaBreakPts[embpaNEtaReg+1]={0.,1.52};
13 int embpaEtaBins[embpaNEtaReg]={61};
14 m_binning[EMBPA].doEtaBinning(embpaNEtaReg,embpaEtaBreakPts,embpaEtaBins);
15 m_binning[EMBPA].doPhiBinning(64);
16 m_binning[EMBPC]= m_binning[EMBPA].etaMirror();
17
18 // EMB Layer 1
19 const int emb1aNEtaReg = 1;
20 double emb1aEtaBreakPts[emb1aNEtaReg+1]={0.,1.4};
21 int emb1aEtaBins[emb1aNEtaReg]={448};
22 m_binning[EMB1A].doEtaBinning(emb1aNEtaReg,emb1aEtaBreakPts,emb1aEtaBins);
23 m_binning[EMB1A].doPhiBinning(64);
24 m_binning[EMB1C]=m_binning[EMB1A].etaMirror();
25
26 // EMB Layer 2
27 const int emb2aNEtaReg = 1;
28 double emb2aEtaBreakPts[emb2aNEtaReg+1]={0.,1.475};
29 int emb2aEtaBins[emb2aNEtaReg]={59};
30 m_binning[EMB2A].doEtaBinning(emb2aNEtaReg,emb2aEtaBreakPts,emb2aEtaBins);
31 m_binning[EMB2A].doPhiBinning(256);
32 m_binning[EMB2C]=m_binning[EMB2A].etaMirror();
33
34 // EMB Layer 3
35 const int emb3aNEtaReg = 2;
36 double emb3aEtaBreakPts[emb3aNEtaReg+1]={0.00,1.35,1.475};
37 int emb3aEtaBins[emb3aNEtaReg]={27,1};
38 m_binning[EMB3A].doEtaBinning(emb3aNEtaReg,emb3aEtaBreakPts,emb3aEtaBins);
39 m_binning[EMB3A].doPhiBinning(256);
40 m_binning[EMB3C]= m_binning[EMB3A].etaMirror();
41
42 // HEC Layer 0
43 const int hec0aNEtaReg = 2;
44 double hec0aEtaBreakPts[hec0aNEtaReg+1]={1.5,2.5,3.3};
45 int hec0aEtaBins[hec0aNEtaReg]={10,4};
46 m_binning[HEC0A].doEtaBinning(hec0aNEtaReg,hec0aEtaBreakPts,hec0aEtaBins);
47 m_binning[HEC0A].doPhiBinning(64);
48 m_binning[HEC0C]=m_binning[HEC0A].etaMirror();
49
50 // HEC Layer 1
51 const int hec1aNEtaReg = 2;
52 double hec1aEtaBreakPts[hec1aNEtaReg+1]={1.5,2.5,3.1};
53 int hec1aEtaBins[hec1aNEtaReg]={10,3};
54 m_binning[HEC1A].doEtaBinning(hec1aNEtaReg,hec1aEtaBreakPts,hec1aEtaBins);
55 m_binning[HEC1A].doPhiBinning(64);
56 m_binning[HEC1C]=m_binning[HEC1A].etaMirror();
57
58 // HEC Layer 2
59 const int hec2aNEtaReg = 2;
60 double hec2aEtaBreakPts[hec2aNEtaReg+1]={1.6,2.5,3.1};
61 int hec2aEtaBins[hec2aNEtaReg]={9,3};
62 m_binning[HEC2A].doEtaBinning(hec2aNEtaReg,hec2aEtaBreakPts,hec2aEtaBins);
63 m_binning[HEC2A].doPhiBinning(64);
64 m_binning[HEC2C]=m_binning[HEC2A].etaMirror();
65
66 // HEC Layer 3
67 const int hec3aNEtaReg = 2;
68 double hec3aEtaBreakPts[hec3aNEtaReg+1]={1.7,2.5,3.3};
69 int hec3aEtaBins[hec3aNEtaReg]={8,4};
70 m_binning[HEC3A].doEtaBinning(hec3aNEtaReg,hec3aEtaBreakPts,hec3aEtaBins);
71 m_binning[HEC3A].doPhiBinning(64);
72 m_binning[HEC3C]=m_binning[HEC3A].etaMirror();
73
74 // EMEC Pre-sampler (Layer 0)
75 const int emecpaNEtaReg = 1;
76 double emecpaEtaBreakPts[emecpaNEtaReg+1]={1.5,1.8};
77 int emecpaEtaBins[emecpaNEtaReg]={12};
78 m_binning[EMECPA].doEtaBinning(emecpaNEtaReg,emecpaEtaBreakPts,emecpaEtaBins);
79 m_binning[EMECPA].doPhiBinning(64);
80 m_binning[EMECPC]=m_binning[EMECPA].etaMirror();
81
82 // EMEC Layer 1
83 const int emec1aNEtaReg = 7;
84 double emec1aEtaBreakPts[emec1aNEtaReg+1]={1.375,1.425,1.5,1.8,2.0,2.4,2.5,3.2};
85 int emec1aEtaBins[emec1aNEtaReg]={1,3,96,48,64,4,7};
86 m_binning[EMEC1A].doEtaBinning(emec1aNEtaReg,emec1aEtaBreakPts,emec1aEtaBins);
87 m_binning[EMEC1A].doPhiBinning(64);
88 m_binning[EMEC1C]=m_binning[EMEC1A].etaMirror();
89
90 // EMEC Layer 2
91 const int emec2aNEtaReg = 3;
92 double emec2aEtaBreakPts[emec2aNEtaReg+1]={1.375,1.425,2.5,3.2};
93 int emec2aEtaBins[emec2aNEtaReg]={1,43,7};
94 m_binning[EMEC2A].doEtaBinning(emec2aNEtaReg,emec2aEtaBreakPts,emec2aEtaBins);
95 m_binning[EMEC2A].doPhiBinning(256);
96 m_binning[EMEC2C]=m_binning[EMEC2A].etaMirror();
97
98 // EMEC Layer 3
99 const int emec3aNEtaReg = 1;
100 double emec3aEtaBreakPts[emec3aNEtaReg+1]={1.5,2.5};
101 int emec3aEtaBins[emec3aNEtaReg]={20};
102 m_binning[EMEC3A].doEtaBinning(emec3aNEtaReg,emec3aEtaBreakPts,emec3aEtaBins);
103 m_binning[EMEC3A].doPhiBinning(256);
104 m_binning[EMEC3C]=m_binning[EMEC3A].etaMirror();
105
106 // FCAL Layer 1 (0th layer in the code)
107 const int fcal1aNEtaReg = 4;
108 double fcal1aEtaBreakPts[fcal1aNEtaReg+1]={3.08,3.2,3.8,4.6,4.82};
109 int fcal1aEtaBins[fcal1aNEtaReg]={3,6,4,2};
110 m_binning[FCAL1A].doEtaBinning(fcal1aNEtaReg,fcal1aEtaBreakPts,fcal1aEtaBins);
111
112 const int fcal1aNPhiReg = 95;
113 double fcal1aPhiBreakPts[fcal1aNPhiReg+1]=
114 {-M_PI,(-250.0/256)*M_PI,(-248.0/256)*M_PI,(-243.0/256)*M_PI,(-240.0/256)*M_PI,(-234.0/256)*M_PI,
115 (-230.0/256)*M_PI,(-225.0/256)*M_PI,(-219.0/256)*M_PI,(-195.0/256)*M_PI,(-190.0/256)*M_PI,(-186.0/256)*M_PI,
116 (-183.0/256)*M_PI,(-178.0/256)*M_PI,(-175.0/256)*M_PI,(-173.0/256)*M_PI,(-167.0/256)*M_PI,(-161.0/256)*M_PI,
117 (-159.0/256)*M_PI,(-156.0/256)*M_PI,(-151.0/256)*M_PI,(-148.0/256)*M_PI,(-146.0/256)*M_PI,(-141.0/256)*M_PI,
118 (-139.0/256)*M_PI,(-135.0/256)*M_PI,(-132.0/256)*M_PI,(-120.0/256)*M_PI,(-117.0/256)*M_PI,(-114.0/256)*M_PI,
119 (-110.0/256)*M_PI,(-105.0/256)*M_PI,(-97.0/256)*M_PI,(-94.0/256)*M_PI,(-86.0/256)*M_PI,(-78.0/256)*M_PI,
120 (-63.0/256)*M_PI,(-60.0/256)*M_PI,(-56.0/256)*M_PI,(-46.0/256)*M_PI,(-44.0/256)*M_PI,(-41.0/256)*M_PI,
121 (-32.0/256)*M_PI,(-28.0/256)*M_PI,(-22.0/256)*M_PI,(-10.0/256)*M_PI,(-7.0/256)*M_PI,(-3.0/256)*M_PI,
122 (6.0/256)*M_PI,(8.0/256)*M_PI,(13.0/256)*M_PI,(16.0/256)*M_PI,(22.0/256)*M_PI,(26.0/256)*M_PI,(31.0/256)*M_PI,
123 (37.0/256)*M_PI,(61.0/256)*M_PI,(66.0/256)*M_PI,(70.0/256)*M_PI,(73.0/256)*M_PI,(78.0/256)*M_PI,(81.0/256)*M_PI,
124 (83.0/256)*M_PI,(89.0/256)*M_PI,(95.0/256)*M_PI,(97.0/256)*M_PI,(100.0/256)*M_PI,(105.0/256)*M_PI,
125 (108.0/256)*M_PI,(110.0/256)*M_PI,(115.0/256)*M_PI,(117.0/256)*M_PI,(121.0/256)*M_PI,(124.0/256)*M_PI,
126 (136.0/256)*M_PI,(139.0/256)*M_PI,(142.0/256)*M_PI,(146.0/256)*M_PI,(151.0/256)*M_PI,(159.0/256)*M_PI,
127 (162.0/256)*M_PI,(170.0/256)*M_PI,(178.0/256)*M_PI,(193.0/256)*M_PI,(196.0/256)*M_PI,(200.0/256)*M_PI,
128 (210.0/256)*M_PI,(212.0/256)*M_PI,(215.0/256)*M_PI,(224.0/256)*M_PI,(228.0/256)*M_PI,(234.0/256)*M_PI,
129 (246.0/256)*M_PI,(249.0/256)*M_PI,(253.0/256)*M_PI,M_PI};
130 int fcal1aPhiBins[fcal1aNPhiReg+1] =
131 {2,1,1,1,1,1,1,2,6,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,3,1,1,2,1,2,1,2,4,3,1,1,2,1,1,3,1,2,2,1,2,3,
132 1,1,1,1,1,1,2,6,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,3,1,1,2,1,2,1,2,4,3,1,1,2,1,1,3,1,2,2,1,2,1};
133 m_binning[FCAL1A].doPhiBinning(fcal1aNPhiReg,fcal1aPhiBreakPts,fcal1aPhiBins);
134 m_binning[FCAL1C]=m_binning[FCAL1A].etaMirror();
135
136 // FCAL Layer 2 (1st layer in the code);
137 const int fcal2aNEtaReg = 15;
138 double fcal2aEtaBreakPts[fcal2aNEtaReg+1]=
139 {3.192,3.1987,3.206,3.22,3.26,3.34,3.37,3.39,3.52,3.57,3.835,4.1,4.365,4.5,4.65,4.81};
140 int fcal2aEtaBins[fcal2aNEtaReg]={1,1,1,2,2,1,1,3,1,4,2,1,1,1,1};
141 m_binning[FCAL2A].doEtaBinning(fcal2aNEtaReg,fcal2aEtaBreakPts,fcal2aEtaBins);
142
143 const int fcal2aNPhiReg = 32;
144 double fcal2aPhiBreakPts[fcal2aNPhiReg+1]=
145 {-M_PI,(-62.0/64)*M_PI,(-59.0/64)*M_PI,(-55.0/64)*M_PI,(-52.0/64)*M_PI,(-50.0/64)*M_PI,(-48.0/64)*M_PI,
146 (-45.0/64)*M_PI,(-41.0/64)*M_PI,(-38.0/64)*M_PI,(-22.0/64)*M_PI,(-18.0/64)*M_PI,(-12.0/64)*M_PI,
147 (-8.0/64)*M_PI,(-5.0/64)*M_PI,(-1.0/64)*M_PI,0,(2.0/64)*M_PI,(5.0/64)*M_PI,(9.0/64)*M_PI,(12.0/64)*M_PI,
148 (14.0/64)*M_PI,(16.0/64)*M_PI,(19.0/64)*M_PI,(23.0/64)*M_PI,(26.0/64)*M_PI,(42.0/64)*M_PI,(46.0/64)*M_PI,
149 (52.0/64)*M_PI,(56.0/64)*M_PI,(59.0/64)*M_PI,(63.0/64)*M_PI,M_PI};
150 int fcal2aPhiBins[fcal2aNPhiReg+1] =
151 {1,1,1,1,1,1,1,1,1,8,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,3,1,1,1,1};
152 m_binning[FCAL2A].doPhiBinning(fcal2aNPhiReg,fcal2aPhiBreakPts,fcal2aPhiBins);
153 m_binning[FCAL2C]=m_binning[FCAL2A].etaMirror();
154
155 // FCAL Layer 3 (2nd layer in the code)
156 const int fcal3aNEtaReg = 5;
157 double fcal3aEtaBreakPts[fcal3aNEtaReg+1]={3.27,3.43,3.7,3.91,4.33,4.75};
158 int fcal3aEtaBins[fcal3aNEtaReg]={2,2,1,1,2};
159 m_binning[FCAL3A].doEtaBinning(fcal3aNEtaReg,fcal3aEtaBreakPts,fcal3aEtaBins);
160
161 const int fcal3aNPhiReg = 22;
162 double fcal3aPhiBreakPts[fcal3aNPhiReg+1]=
163 {-M_PI,(-40.0/64)*M_PI,(-39.0/64)*M_PI,(-35.0/64)*M_PI,(-29.0/64)*M_PI,(-24.0/64)*M_PI,(-22.0/64)*M_PI,
164 (-16.0/64)*M_PI,(-11.0/64)*M_PI,(-9.0/64)*M_PI,(-6.0/64)*M_PI,0,(24.0/64)*M_PI,(25.0/64)*M_PI,
165 (29.0/64)*M_PI,(35.0/64)*M_PI,(40.0/64)*M_PI,(42.0/64)*M_PI,(48.0/64)*M_PI,(53.0/64)*M_PI,(55.0/64)*M_PI,
166 (58.0/64)*M_PI,M_PI};
167 int fcal3aPhiBins[fcal3aNPhiReg+1] = {10,1,1,4,2,1,2,2,1,1,2,10,1,1,4,2,1,2,2,1,1,2};
168 m_binning[FCAL3A].doPhiBinning(fcal3aNPhiReg,fcal3aPhiBreakPts,fcal3aPhiBins);
169 m_binning[FCAL3C]=m_binning[FCAL3A].etaMirror();
170}
#define M_PI
std::array< CaloMonitoring::LArCellBinning, MAXLAYER > m_binning

◆ sporadicNoiseCandidate()

void LArCellMonAlg::sporadicNoiseCandidate ( const CaloCell * cell,
const LArCellMonAlg::LayerEnum iLyr,
const float threshold,
const LArOnOffIdMapping * cabling ) const
private

◆ strToLower()

std::string LArCellMonAlg::strToLower ( const std::string & input)
staticprivate

Definition at line 659 of file LArCellMonAlg.cxx.

659 {
660 std::string output;
661 for (const auto& c : input) {
662 output.push_back(std::tolower(c));
663 }
664 return output;
665}

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

75{
76 return BaseAlg::sysExecute (ctx);
77}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

105 {
107
108 if (sc.isFailure()) {
109 return sc;
110 }
111
112 ServiceHandle<ICondSvc> cs("CondSvc",name());
113 for (auto h : outputHandles()) {
114 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
115 // do this inside the loop so we don't create the CondSvc until needed
116 if ( cs.retrieve().isFailure() ) {
117 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
118 return StatusCode::SUCCESS;
119 }
120 if (cs->regHandle(this,*h).isFailure()) {
122 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
123 << " with CondSvc");
124 }
125 }
126 }
127 return sc;
128}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ trigChainsArePassed()

bool AthMonitorAlgorithm::trigChainsArePassed ( const std::vector< std::string > & vTrigNames) const
inherited

Check whether triggers are passed.

For the event, use the trigger decision tool to check that at least one of the triggers listed in the supplied vector is passed.

Parameters
vTrigNamesList of trigger names.
Returns
If empty input, default to true. If at least one trigger is specified, returns whether at least one trigger was passed.

Definition at line 208 of file AthMonitorAlgorithm.cxx.

208 {
209
210
211 // If no triggers were given, return true.
212 if (vTrigNames.empty()) return true;
213
214
215 // Trigger: Check if this Algorithm is being run as an Express Stream job.
216 // Events are entering the express stream are chosen randomly, and by chain,
217 // Hence an additional check should be aplied to see if the chain(s)
218 // monitored here are responsible for the event being selected for
219 // the express stream.
220
221 const auto group = m_trigDecTool->getChainGroup(vTrigNames);
223 const auto passedBits = m_trigDecTool->isPassedBits(group);
224 bool expressPass = passedBits & TrigDefs::Express_passed; //bitwise AND
225 if(!expressPass) {
226 return false;
227 }
228 }
229
230 // monitor the event if any of the chains in the chain group passes the event.
231 return group->isPassed();
232
233}
Gaudi::Property< bool > m_enforceExpressTriggers

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ cfg

LArCellMonAlg.cfg = MainServicesCfg(flags)

Definition at line 475 of file LArCellMonAlg.py.

◆ enableLumiAccess

LArCellMonAlg.enableLumiAccess

Definition at line 467 of file LArCellMonAlg.py.

◆ Environment

LArCellMonAlg.Environment

Definition at line 469 of file LArCellMonAlg.py.

◆ f

LArCellMonAlg.f = open("LArCellMon.pkl","wb")

Definition at line 487 of file LArCellMonAlg.py.

◆ Files

LArCellMonAlg.Files

Definition at line 462 of file LArCellMonAlg.py.

◆ flags

LArCellMonAlg.flags = initConfigFlags()

Definition at line 461 of file LArCellMonAlg.py.

◆ HISTFileName

LArCellMonAlg.HISTFileName

Definition at line 466 of file LArCellMonAlg.py.

◆ m_BadLBTool

ToolHandle<IDQFilterTool> CaloMonAlgBase::m_BadLBTool {this, "BadLBTool","DQBadLBFilterTool"}
privateinherited

Definition at line 31 of file CaloMonAlgBase.h.

31{this, "BadLBTool","DQBadLBFilterTool"};

◆ m_BCKey

SG::ReadCondHandleKey<LArBadChannelCont> LArCellMonAlg::m_BCKey {this, "BadChanKey", "LArBadChannel", "SG key for LArBadChan object"}
private

Definition at line 247 of file LArCellMonAlg.h.

247{this, "BadChanKey", "LArBadChannel", "SG key for LArBadChan object"};

◆ m_bcMask

LArBadChannelMask LArCellMonAlg::m_bcMask
private

Definition at line 237 of file LArCellMonAlg.h.

◆ m_beamBackgroundKey

SG::ReadHandleKey<BeamBackgroundData> CaloMonAlgBase::m_beamBackgroundKey {this,"BeamBackgroundKey","CSCBackgroundForCaloMon"}
privateinherited

Definition at line 27 of file CaloMonAlgBase.h.

27{this,"BeamBackgroundKey","CSCBackgroundForCaloMon"};

◆ m_binning

std::array<CaloMonitoring::LArCellBinning,MAXLAYER> LArCellMonAlg::m_binning
private

Definition at line 249 of file LArCellMonAlg.h.

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArCellMonAlg::m_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
private

Definition at line 246 of file LArCellMonAlg.h.

246{this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"};

◆ m_calo_id

const CaloCell_ID* CaloMonAlgBase::m_calo_id {nullptr}
protectedinherited

Definition at line 43 of file CaloMonAlgBase.h.

43{nullptr};

◆ m_caloSamplingToLyrNS

const std::map<unsigned,LayerEnumNoSides> CaloMonAlgBase::m_caloSamplingToLyrNS
protectedinherited
Initial value:
{
{CaloSampling::PreSamplerB, EMBPNS},{CaloSampling::EMB1,EMB1NS},{CaloSampling::EMB2,EMB2NS},{CaloSampling::EMB3,EMB3NS},
{CaloSampling::PreSamplerE, EMECPNS},{CaloSampling::EME1,EMEC1NS}, {CaloSampling::EME2,EMEC2NS}, {CaloSampling::EME3,EMEC3NS},
{CaloSampling::HEC0,HEC0NS}, {CaloSampling::HEC1,HEC1NS}, {CaloSampling::HEC2,HEC2NS}, {CaloSampling::HEC3,HEC3NS},
{CaloSampling::FCAL0,FCAL1NS}, {CaloSampling::FCAL1,FCAL2NS}, {CaloSampling::FCAL2,FCAL3NS}
}

Definition at line 58 of file CaloMonAlgBase.h.

58 {
59 {CaloSampling::PreSamplerB, EMBPNS},{CaloSampling::EMB1,EMB1NS},{CaloSampling::EMB2,EMB2NS},{CaloSampling::EMB3,EMB3NS}, //LAr Barrel
60 {CaloSampling::PreSamplerE, EMECPNS},{CaloSampling::EME1,EMEC1NS}, {CaloSampling::EME2,EMEC2NS}, {CaloSampling::EME3,EMEC3NS}, //LAr Endcap
61 {CaloSampling::HEC0,HEC0NS}, {CaloSampling::HEC1,HEC1NS}, {CaloSampling::HEC2,HEC2NS}, {CaloSampling::HEC3,HEC3NS}, //Hadronic endcap
62 {CaloSampling::FCAL0,FCAL1NS}, {CaloSampling::FCAL1,FCAL2NS}, {CaloSampling::FCAL2,FCAL3NS} //FCAL
63 };

◆ m_cellContainerKey

SG::ReadHandleKey<CaloCellContainer> LArCellMonAlg::m_cellContainerKey {this,"CaloCellContainer","AllCalo","SG key of the input cell container"}
private

Definition at line 55 of file LArCellMonAlg.h.

55{this,"CaloCellContainer","AllCalo","SG key of the input cell container"};

◆ m_dataType

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::m_dataType
protectedinherited

Instance of the DataType_t enum.

Definition at line 356 of file AthMonitorAlgorithm.h.

◆ m_dataTypeStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_dataTypeStr {this,"DataType","userDefined"}
protectedinherited

DataType string pulled from the job option and converted to enum.

Definition at line 358 of file AthMonitorAlgorithm.h.

358{this,"DataType","userDefined"};

◆ m_defaultLBDuration

Gaudi::Property<float> AthMonitorAlgorithm::m_defaultLBDuration {this,"DefaultLBDuration",60.}
protectedinherited

Default duration of one lumi block.

Definition at line 365 of file AthMonitorAlgorithm.h.

365{this,"DefaultLBDuration",60.};

◆ m_defaultThresholds

FloatArrayProperty LArCellMonAlg::m_defaultThresholds {this, "DefaultThresholds", {}}
private

Definition at line 137 of file LArCellMonAlg.h.

137{this, "DefaultThresholds", {}};

◆ m_detailLevel

Gaudi::Property<int> AthMonitorAlgorithm::m_detailLevel {this,"DetailLevel",0}
protectedinherited

Sets the level of detail used in the monitoring.

Definition at line 366 of file AthMonitorAlgorithm.h.

366{this,"DetailLevel",0};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doBeamBackgroundRemovalProp

BooleanArrayProperty LArCellMonAlg::m_doBeamBackgroundRemovalProp {this, "DoBeamBackgroundRemoval"}
private

Definition at line 115 of file LArCellMonAlg.h.

115{this, "DoBeamBackgroundRemoval"};

◆ m_doDatabaseNoiseVsEtaPhi

BooleanProperty LArCellMonAlg::m_doDatabaseNoiseVsEtaPhi {this, "doDatabaseNoiseVsEtaPhi", true}
private

Definition at line 117 of file LArCellMonAlg.h.

117{this, "doDatabaseNoiseVsEtaPhi", true};

◆ m_doEnergyVsTime

BooleanProperty LArCellMonAlg::m_doEnergyVsTime {this, "doEnergyVsTime", true}
private

Definition at line 119 of file LArCellMonAlg.h.

119{this, "doEnergyVsTime", true};

◆ m_doEtaOccupancyNames

StringArrayProperty LArCellMonAlg::m_doEtaOccupancyNames {this, "DoEtaOccupancyNames", {}}
private

Definition at line 145 of file LArCellMonAlg.h.

145{this, "DoEtaOccupancyNames", {}};

◆ m_doEtaPhiAvgQualityNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiAvgQualityNames {this, "DoEtaPhiAvgQualityNames", {},"Turns on 'totQuality' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"}
private

Definition at line 148 of file LArCellMonAlg.h.

148{this, "DoEtaPhiAvgQualityNames", {},"Turns on 'totQuality' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"};

◆ m_doEtaPhiAvgTimeNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiAvgTimeNames {this, "DoEtaPhiAvgTimeNames", {},"Turns on 'totTime' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"}
private

Definition at line 150 of file LArCellMonAlg.h.

150{this, "DoEtaPhiAvgTimeNames", {},"Turns on 'totTime' and total 'Occupancy' plots. The ratio will be computed at post-processing stage"};

◆ m_doEtaPhiFractionOverQthNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiFractionOverQthNames {this, "DoEtaPhiFractionOverQthNames", {}}
private

Definition at line 149 of file LArCellMonAlg.h.

149{this, "DoEtaPhiFractionOverQthNames", {}};

◆ m_doEtaPhiFractionPastTthNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiFractionPastTthNames {this, "DoEtaPhiFractionPastTthNames", {}}
private

Definition at line 151 of file LArCellMonAlg.h.

151{this, "DoEtaPhiFractionPastTthNames", {}};

◆ m_doEtaPhiPercentageOccupancyNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiPercentageOccupancyNames {this, "DoEtaPhiPercentageOccupancyNames", {}}
private

Definition at line 144 of file LArCellMonAlg.h.

144{this, "DoEtaPhiPercentageOccupancyNames", {}};

◆ m_doEtaPhiTotalOccupancyNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiTotalOccupancyNames {this, "DoEtaPhiTotalOccupancyNames", {}}
private

Definition at line 143 of file LArCellMonAlg.h.

143{this, "DoEtaPhiTotalOccupancyNames", {}};

◆ m_doEtaPhiTotEnergyNames

StringArrayProperty LArCellMonAlg::m_doEtaPhiTotEnergyNames {this, "DoEtaPhiTotEnergyNames", {}}
private

Definition at line 147 of file LArCellMonAlg.h.

147{this, "DoEtaPhiTotEnergyNames", {}};

◆ m_doKnownBadChannelsVsEtaPhi

BooleanProperty LArCellMonAlg::m_doKnownBadChannelsVsEtaPhi {this, "doKnownBadChannelsVsEtaPhi", true}
private

Definition at line 116 of file LArCellMonAlg.h.

116{this, "doKnownBadChannelsVsEtaPhi", true};

◆ m_doPhiOccupancyNames

StringArrayProperty LArCellMonAlg::m_doPhiOccupancyNames {this, "DoPhiOccupancyNames", {}}
private

Definition at line 146 of file LArCellMonAlg.h.

146{this, "DoPhiOccupancyNames", {}};

◆ m_doUnnormalized1DEnergy

BooleanProperty LArCellMonAlg::m_doUnnormalized1DEnergy {this, "doUnnormalized1DEnergy", false}
private

Definition at line 120 of file LArCellMonAlg.h.

120{this, "doUnnormalized1DEnergy", false};

◆ m_DQFilterTools

ToolHandleArray<IDQFilterTool> AthMonitorAlgorithm::m_DQFilterTools {this,"FilterTools",{}}
protectedinherited

Array of Data Quality filter tools.

Definition at line 346 of file AthMonitorAlgorithm.h.

346{this,"FilterTools",{}};

◆ m_dummy

const ToolHandle<GenericMonitoringTool> AthMonitorAlgorithm::m_dummy
privateinherited

Definition at line 374 of file AthMonitorAlgorithm.h.

◆ m_eCutForTiming

FloatArrayProperty LArCellMonAlg::m_eCutForTiming
private
Initial value:
{this, "EcutForTiming",
{1000., 1000., 3000., 1500., 3500., 3500., 3500., 3500., 1500., 3000., 3000., 2000., 10000., 10000., 10000.}
}

Definition at line 79 of file LArCellMonAlg.h.

79 {this, "EcutForTiming",
80 //EMBPNS=0, EMB1NS, EMB2NS, EMB3NS, HEC0NS, HEC1NS, HEC2NS, HEC3NS,EMECPNS,EMEC1NS,EMEC2NS,EMEC3NS,FCAL1NS,FCAL2NS,FCAL3NS
81 {1000., 1000., 3000., 1500., 3500., 3500., 3500., 3500., 1500., 3000., 3000., 2000., 10000., 10000., 10000.}
82 };

◆ m_enforceExpressTriggers

Gaudi::Property<bool> AthMonitorAlgorithm::m_enforceExpressTriggers
privateinherited
Initial value:
{this,
"EnforceExpressTriggers", false,
"Requires that matched triggers made the event enter the express stream"}

Definition at line 377 of file AthMonitorAlgorithm.h.

377 {this,
378 "EnforceExpressTriggers", false,
379 "Requires that matched triggers made the event enter the express stream"};

◆ m_environment

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::m_environment
protectedinherited

Instance of the Environment_t enum.

Definition at line 355 of file AthMonitorAlgorithm.h.

◆ m_environmentStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_environmentStr {this,"Environment","user"}
protectedinherited

Environment string pulled from the job option and converted to enum.

Definition at line 357 of file AthMonitorAlgorithm.h.

357{this,"Environment","user"};

◆ m_EventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> AthMonitorAlgorithm::m_EventInfoKey {this,"EventInfoKey","EventInfo"}
protectedinherited

Key for retrieving EventInfo from StoreGate.

Definition at line 367 of file AthMonitorAlgorithm.h.

367{this,"EventInfoKey","EventInfo"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_fileKey

Gaudi::Property<std::string> AthMonitorAlgorithm::m_fileKey {this,"FileKey",""}
protectedinherited

Internal Athena name for file.

Definition at line 363 of file AthMonitorAlgorithm.h.

363{this,"FileKey",""};

◆ m_groupnameFractionOverQthEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameFractionOverQthEtaPhi {this, "MonGroupName_FractionOverQthEtaPhi"}
private

Definition at line 65 of file LArCellMonAlg.h.

65{this, "MonGroupName_FractionOverQthEtaPhi"};

◆ m_groupnameFractionPastTthEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameFractionPastTthEtaPhi {this, "MonGroupName_FractionPastTthEtaPhi"}
private

Definition at line 67 of file LArCellMonAlg.h.

67{this, "MonGroupName_FractionPastTthEtaPhi"};

◆ m_groupnameOccupancyEta

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameOccupancyEta {this, "MonGroupName_OccupancyEta"}
private

Definition at line 61 of file LArCellMonAlg.h.

61{this, "MonGroupName_OccupancyEta"};

◆ m_groupnameOccupancyPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameOccupancyPhi {this, "MonGroupName_OccupancyPhi"}
private

Definition at line 62 of file LArCellMonAlg.h.

62{this, "MonGroupName_OccupancyPhi"};

◆ m_groupnamePercentageOccupancyEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnamePercentageOccupancyEtaPhi {this, "MonGroupName_PercentageOccupancyEtaPhi"}
private

Definition at line 60 of file LArCellMonAlg.h.

60{this, "MonGroupName_PercentageOccupancyEtaPhi"};

◆ m_groupnameTotalOccupancyEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameTotalOccupancyEtaPhi {this, "MonGroupName_OccupancyEtaPhi"}
private

Definition at line 59 of file LArCellMonAlg.h.

59{this, "MonGroupName_OccupancyEtaPhi"};

◆ m_groupnameTotEnergyEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameTotEnergyEtaPhi {this, "MonGroupName_TotEnergyEtaPhi"}
private

Definition at line 63 of file LArCellMonAlg.h.

63{this, "MonGroupName_TotEnergyEtaPhi"};

◆ m_groupnameTotQualityEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameTotQualityEtaPhi {this, "MonGroupName_AvgQualityEtaPhi"}
private

Definition at line 64 of file LArCellMonAlg.h.

64{this, "MonGroupName_AvgQualityEtaPhi"};

◆ m_groupnameTotTimeEtaPhi

Gaudi::Property<std::string> LArCellMonAlg::m_groupnameTotTimeEtaPhi {this, "MonGroupName_AvgTimeEtaPhi"}
private

Definition at line 66 of file LArCellMonAlg.h.

66{this, "MonGroupName_AvgTimeEtaPhi"};

◆ m_ignoreKnownBadChannels

BooleanProperty LArCellMonAlg::m_ignoreKnownBadChannels {this, "MaskBadChannels", false, "Do not fill histograms with values from known bad channels"}
private

Definition at line 112 of file LArCellMonAlg.h.

112{this, "MaskBadChannels", false, "Do not fill histograms with values from known bad channels"};

◆ m_inSigNoise

BooleanArrayProperty LArCellMonAlg::m_inSigNoise {this, "ThresholdinSigNoise", {}}
private

Definition at line 138 of file LArCellMonAlg.h.

138{this, "ThresholdinSigNoise", {}};

◆ m_LArCollisionTimeKey

SG::ReadHandleKey<LArCollisionTime> CaloMonAlgBase::m_LArCollisionTimeKey {this,"LArCollisionTimeKey","LArCollisionTime"}
privateinherited

Definition at line 26 of file CaloMonAlgBase.h.

26{this,"LArCollisionTimeKey","LArCollisionTime"};

◆ m_LArOnlineIDHelper

const LArOnlineID* LArCellMonAlg::m_LArOnlineIDHelper
private

Definition at line 244 of file LArCellMonAlg.h.

◆ m_layerEnumtoPartitionEnum

◆ m_layerNames

StringArrayProperty LArCellMonAlg::m_layerNames
private
Initial value:
{this, "LayerNames", {"EMBPA", "EMBPC", "EMB1A", "EMB1C", "EMB2A", "EMB2C", "EMB3A", "EMB3C",
"HEC0A", "HEC0C", "HEC1A", "HEC1C", "HEC2A", "HEC2C", "HEC3A", "HEC3C",
"EMECPA", "EMECPC", "EMEC1A", "EMEC1C", "EMEC2A", "EMEC2C", "EMEC3A", "EMEC3C",
"FCAL1A", "FCAL1C", "FCAL2A", "FCAL2C", "FCAL3A", "FCAL3C"},
"Names of individual layers to monitor"}

Definition at line 84 of file LArCellMonAlg.h.

84 {this, "LayerNames", {"EMBPA", "EMBPC", "EMB1A", "EMB1C", "EMB2A", "EMB2C", "EMB3A", "EMB3C",
85 "HEC0A", "HEC0C", "HEC1A", "HEC1C", "HEC2A", "HEC2C", "HEC3A", "HEC3C",
86 "EMECPA", "EMECPC", "EMEC1A", "EMEC1C", "EMEC2A", "EMEC2C", "EMEC3A", "EMEC3C",
87 "FCAL1A", "FCAL1C", "FCAL2A", "FCAL2C", "FCAL3A", "FCAL3C"},
88 "Names of individual layers to monitor"};

◆ m_layerNcells

IntegerArrayProperty LArCellMonAlg::m_layerNcells
private
Initial value:
{this,"LayerNcells",{ 3905, 3905, 29376, 29376, 14595, 14595, 6912, 6912,
768, 768, 736, 736, 672, 672, 640, 640,
768, 768, 14272, 14272, 11712, 11712, 5120, 5120,
1008, 1008, 500, 500, 254, 254},
"Number of expected cells per layer"}

Definition at line 89 of file LArCellMonAlg.h.

89 {this,"LayerNcells",{ 3905, 3905, 29376, 29376, 14595, 14595, 6912, 6912,
90 768, 768, 736, 736, 672, 672, 640, 640,
91 768, 768, 14272, 14272, 11712, 11712, 5120, 5120,
92 1008, 1008, 500, 500, 254, 254},
93 "Number of expected cells per layer"};

◆ m_lbDurationDataKey

SG::ReadCondHandleKey<LBDurationCondData> AthMonitorAlgorithm::m_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
protectedinherited

Definition at line 350 of file AthMonitorAlgorithm.h.

351{this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"};

◆ m_lumiDataKey

SG::ReadCondHandleKey<LuminosityCondData> AthMonitorAlgorithm::m_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
protectedinherited

Definition at line 348 of file AthMonitorAlgorithm.h.

349{this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"};

◆ m_maskNoCondChannels

BooleanProperty LArCellMonAlg::m_maskNoCondChannels {this, "MaskNoCondChannels", false, "Do not fill histograms with values from cells reco'ed w/o conditions database"}
private

Definition at line 113 of file LArCellMonAlg.h.

113{this, "MaskNoCondChannels", false, "Do not fill histograms with values from cells reco'ed w/o conditions database"};

◆ m_minSporadicNoiseEventsPerCell

UnsignedIntegerProperty LArCellMonAlg::m_minSporadicNoiseEventsPerCell {this, "minSporadicEvents", 10}
private

Definition at line 128 of file LArCellMonAlg.h.

128{this, "minSporadicEvents", 10};

◆ m_MonGroupName

Gaudi::Property<std::string> LArCellMonAlg::m_MonGroupName {this, "MonGroupName", "LArCellMonGroup"}
private

Definition at line 57 of file LArCellMonAlg.h.

57{this, "MonGroupName", "LArCellMonGroup"};

◆ m_MonGroupNamePerJob

Gaudi::Property<std::string> LArCellMonAlg::m_MonGroupNamePerJob {this, "MonGroupName_perJob"}
private

Definition at line 58 of file LArCellMonAlg.h.

58{this, "MonGroupName_perJob"};

◆ m_name

std::string AthMonitorAlgorithm::m_name
privateinherited

Definition at line 371 of file AthMonitorAlgorithm.h.

◆ m_noiseCDOKey

SG::ReadCondHandleKey<CaloNoise> LArCellMonAlg::m_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
private

Definition at line 69 of file LArCellMonAlg.h.

69{this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"};

◆ m_partitionNames

StringArrayProperty LArCellMonAlg::m_partitionNames {this, "PartitionNames", {"EMBA","EMBC","EMECA","EMECC","HECA","HECC","FCALA","FCALC"}}
private

Definition at line 95 of file LArCellMonAlg.h.

95{this, "PartitionNames", {"EMBA","EMBC","EMECA","EMECC","HECA","HECC","FCALA","FCALC"}};

◆ m_problemsToMask

Gaudi::Property<std::vector<std::string> > LArCellMonAlg::m_problemsToMask {this,"ProblemsToMask",{}, "Bad-Channel categories to mask"}
private

Definition at line 238 of file LArCellMonAlg.h.

238{this,"ProblemsToMask",{}, "Bad-Channel categories to mask"};

◆ m_qualityFactorThresholdProp

FloatArrayProperty LArCellMonAlg::m_qualityFactorThresholdProp {this, "QualityFactorThreshold",{}}
private

Definition at line 141 of file LArCellMonAlg.h.

141{this, "QualityFactorThreshold",{}};

◆ m_ReadyFilterTool

ToolHandle<IDQFilterTool> CaloMonAlgBase::m_ReadyFilterTool {this, "ReadyFilterTool", "DQAtlasReadyFilterTool"}
privateinherited

Definition at line 33 of file CaloMonAlgBase.h.

33{this, "ReadyFilterTool", "DQAtlasReadyFilterTool"};

◆ m_sporadic_protc

UnsignedIntegerProperty LArCellMonAlg::m_sporadic_protc {this, "Sporadic_protection", 4000}
private

Definition at line 127 of file LArCellMonAlg.h.

127{this, "Sporadic_protection", 4000};

◆ m_sporadic_switch

BooleanProperty LArCellMonAlg::m_sporadic_switch {this, "Sporadic_switch", false}
private

Definition at line 123 of file LArCellMonAlg.h.

123{this, "Sporadic_switch", false};

◆ m_sporadicPlotLimit

UnsignedIntegerProperty LArCellMonAlg::m_sporadicPlotLimit {this, "NsporadicPlotLimit", 300}
private

Definition at line 126 of file LArCellMonAlg.h.

126{this, "NsporadicPlotLimit", 300};

◆ m_threshold_em_S0S1

FloatProperty LArCellMonAlg::m_threshold_em_S0S1 {this, "Threshold_EM_S0S1", 5000.}
private

Definition at line 124 of file LArCellMonAlg.h.

124{this, "Threshold_EM_S0S1", 5000.};

◆ m_threshold_HECFCALEMS2S3

FloatProperty LArCellMonAlg::m_threshold_HECFCALEMS2S3 {this, "Threshold_HECFCALEMS2S3", 15000.}
private

Definition at line 125 of file LArCellMonAlg.h.

125{this, "Threshold_HECFCALEMS2S3", 15000.};

◆ m_thresholdColumnType

StringArrayProperty LArCellMonAlg::m_thresholdColumnType {this, "ThresholdColumnType",{}}
private

Definition at line 132 of file LArCellMonAlg.h.

132{this, "ThresholdColumnType",{}};

◆ m_thresholdDirectionProp

StringArrayProperty LArCellMonAlg::m_thresholdDirectionProp {this, "ThresholdDirection", {}, "Vector of threshold directions"}
private

Definition at line 133 of file LArCellMonAlg.h.

133{this, "ThresholdDirection", {}, "Vector of threshold directions"};

◆ m_thresholdNameProp

StringArrayProperty LArCellMonAlg::m_thresholdNameProp {this, "ThresholdType", {},"Vector of threshold names"}
private

Definition at line 131 of file LArCellMonAlg.h.

131{this, "ThresholdType", {},"Vector of threshold names"};

◆ m_thresholds

std::vector<threshold_t> LArCellMonAlg::m_thresholds
private

Definition at line 240 of file LArCellMonAlg.h.

◆ m_thresholdsProp

std::array<FloatArrayProperty, MAXLYRNS> LArCellMonAlg::m_thresholdsProp
private
Initial value:
{{{this, "EMBP_Thresh", {}},
{this, "EMB1_Thresh", {}},
{this, "EMB2_Thresh", {}},
{this, "EMB3_Thresh", {}},
{this, "EMECP_Thresh", {}},
{this, "EMEC1_Thresh", {}},
{this, "EMEC2_Thresh", {}},
{this, "EMEC3_Thresh", {}},
{this, "HEC0_Thresh", {}},
{this, "HEC1_Thresh", {}},
{this, "HEC2_Thresh", {}},
{this, "HEC3_Thresh", {}},
{this, "FCAL1_Thresh", {}},
{this, "FCAL2_Thresh", {}},
{this, "FCAL3_Thresh", {}},
}}

Definition at line 153 of file LArCellMonAlg.h.

153 {{{this, "EMBP_Thresh", {}},
154 {this, "EMB1_Thresh", {}},
155 {this, "EMB2_Thresh", {}},
156 {this, "EMB3_Thresh", {}},
157 {this, "EMECP_Thresh", {}},
158 {this, "EMEC1_Thresh", {}},
159 {this, "EMEC2_Thresh", {}},
160 {this, "EMEC3_Thresh", {}},
161 {this, "HEC0_Thresh", {}},
162 {this, "HEC1_Thresh", {}},
163 {this, "HEC2_Thresh", {}},
164 {this, "HEC3_Thresh", {}},
165 {this, "FCAL1_Thresh", {}},
166 {this, "FCAL2_Thresh", {}},
167 {this, "FCAL3_Thresh", {}},
168 }};

◆ m_thresholdTitleTemplates

StringArrayProperty LArCellMonAlg::m_thresholdTitleTemplates {this, "ThresholdTitleTemplates", {}}
private

Definition at line 136 of file LArCellMonAlg.h.

136{this, "ThresholdTitleTemplates", {}};

◆ m_timeThresholdProp

FloatArrayProperty LArCellMonAlg::m_timeThresholdProp {this, "TimeThreshold"}
private

Definition at line 140 of file LArCellMonAlg.h.

140{this, "TimeThreshold"};

◆ m_toolLookupMap

std::unordered_map<std::string, size_t> AthMonitorAlgorithm::m_toolLookupMap
privateinherited

Definition at line 372 of file AthMonitorAlgorithm.h.

◆ m_toolmapAll

std::map<std::string,std::map<std::string,int> > LArCellMonAlg::m_toolmapAll
private

Definition at line 72 of file LArCellMonAlg.h.

◆ m_tools

ToolHandleArray<GenericMonitoringTool> AthMonitorAlgorithm::m_tools {this,"GMTools",{}}
protectedinherited

Array of Generic Monitoring Tools.

Definition at line 341 of file AthMonitorAlgorithm.h.

341{this,"GMTools",{}};

◆ m_trigDecTool

PublicToolHandle<Trig::TrigDecisionTool> AthMonitorAlgorithm::m_trigDecTool
protectedinherited

Tool to tell whether a specific trigger is passed.

Definition at line 345 of file AthMonitorAlgorithm.h.

◆ m_triggerChainString

Gaudi::Property<std::string> AthMonitorAlgorithm::m_triggerChainString {this,"TriggerChain",""}
protectedinherited

Trigger chain string pulled from the job option and parsed into a vector.

Definition at line 360 of file AthMonitorAlgorithm.h.

360{this,"TriggerChain",""};

◆ m_triggerNames

std::array<StringProperty,NOTA> LArCellMonAlg::m_triggerNames
private
Initial value:
{{{this,"rndmTriggerNames",""},
{this,"caloTriggerNames",""},
{this,"minBiasTriggerNames",""},
{this,"metTriggerNames",""},
{this,"miscTriggerNames",""}
}}

Definition at line 105 of file LArCellMonAlg.h.

105 {{{this,"rndmTriggerNames",""},
106 {this,"caloTriggerNames",""},
107 {this,"minBiasTriggerNames",""},
108 {this,"metTriggerNames",""},
109 {this,"miscTriggerNames",""}
110 }};

◆ m_triggersToExcludeProp

StringArrayProperty LArCellMonAlg::m_triggersToExcludeProp {this, "TriggersToExclude", {}}
private

Definition at line 135 of file LArCellMonAlg.h.

135{this, "TriggersToExclude", {}};

◆ m_triggersToIncludeProp

StringArrayProperty LArCellMonAlg::m_triggersToIncludeProp {this, "TriggersToInclude", {}}
private

Definition at line 134 of file LArCellMonAlg.h.

134{this, "TriggersToInclude", {}};

◆ m_trigLiveFractionDataKey

SG::ReadCondHandleKey<TrigLiveFractionCondData> AthMonitorAlgorithm::m_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
protectedinherited

Definition at line 352 of file AthMonitorAlgorithm.h.

353{this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"};

◆ m_useBadLBTool

Gaudi::Property<bool> CaloMonAlgBase::m_useBadLBTool {this, "useBadLBTool", false}
privateinherited

Definition at line 30 of file CaloMonAlgBase.h.

30{this, "useBadLBTool", false};

◆ m_useBeamBackgroundRemoval

Gaudi::Property<bool> CaloMonAlgBase::m_useBeamBackgroundRemoval {this, "useBeamBackgroundRemoval", false}
privateinherited

Definition at line 38 of file CaloMonAlgBase.h.

38{this, "useBeamBackgroundRemoval", false};

◆ m_useCollisionFilterTool

Gaudi::Property<bool> CaloMonAlgBase::m_useCollisionFilterTool {this, "useLArCollisionFilterTool", true}
privateinherited

Definition at line 37 of file CaloMonAlgBase.h.

37{this, "useLArCollisionFilterTool", true};

◆ m_useLArNoisyAlg

Gaudi::Property<bool> CaloMonAlgBase::m_useLArNoisyAlg {this, "useLArNoisyAlg", false}
privateinherited

Definition at line 35 of file CaloMonAlgBase.h.

35{this, "useLArNoisyAlg", false};

◆ m_useLumi

Gaudi::Property<bool> AthMonitorAlgorithm::m_useLumi {this,"EnableLumi",false}
protectedinherited

Allows use of various luminosity functions.

Definition at line 364 of file AthMonitorAlgorithm.h.

364{this,"EnableLumi",false};

◆ m_useReadyFilterTool

Gaudi::Property<bool> CaloMonAlgBase::m_useReadyFilterTool {this, "useReadyFilterTool", true}
privateinherited

Definition at line 32 of file CaloMonAlgBase.h.

32{this, "useReadyFilterTool", true};

◆ m_useTrigger

BooleanProperty LArCellMonAlg::m_useTrigger {this, "useTrigger", true}
private

Definition at line 102 of file LArCellMonAlg.h.

102{this, "useTrigger", true};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vTrigChainNames

std::vector<std::string> AthMonitorAlgorithm::m_vTrigChainNames
protectedinherited

Vector of trigger chain names parsed from trigger chain string.

Definition at line 361 of file AthMonitorAlgorithm.h.

◆ useTrigger

LArCellMonAlg.useTrigger

Definition at line 468 of file LArCellMonAlg.py.


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