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

#include <LArDigitalTriggMonAlg.h>

Inheritance diagram for LArDigitalTriggMonAlg:

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

virtual ~LArDigitalTriggMonAlg ()
 Default destructor.
virtual StatusCode initialize () override
 initialize
virtual StatusCode fillHistograms (const EventContext &ctx) const override
 adds event to the monitoring histograms
 AthMonitorAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor.
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=Gaudi::Hive::currentContext()) const
 Calculate the average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the instantaneous luminosity per bunch crossing.
virtual double lbDuration (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the duration of the luminosity block (in seconds)
virtual float lbAverageLivefraction (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the live fraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx=Gaudi::Hive::currentContext()) 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

dict selStr = {}
 flags = initConfigFlags()
 Run
 Files
 HISTFileName
 useTrigger
 AtlasVersion
 doFullMonMT
 MaxEvents
 cfg = MainServicesCfg(flags)
 SCData_acc = LArRawSCDataReadingCfg(flags)
 larLATOMEBuilderAlg = CompFactory.LArLATOMEBuilderAlg("LArLATOMEBuilderAlg",LArDigitKey="SC", isADCBas=False)
list streamTypes = ["SelectedEnergy", "ADC"]
 aff_acc = LArDigitalTriggMonConfig(flags, larLATOMEBuilderAlg, streamTypes=streamTypes)

Protected Member Functions

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

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  LayerEnumNoSides {
  EMBPNS =0 , EMB1NS , EMB2NS , EMB3NS ,
  EMECPNS , EMEC1NS , EMEC2NS , EMEC3NS ,
  HECNS , FCAL1NS , FCAL2NS , FCAL3NS ,
  MAXLYRNS
}
typedef std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

int whatPartition (HWIdentifier id, int side) const
 private methods:
unsigned getXbinFromSourceID (const unsigned sourceID) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< std::string > m_MonGroupName {this, "LArDigitTriggMonGroupName", "LArDigitTriggMonGroup"}
 declaration variables used in joboptions
Gaudi::Property< unsigned > m_NLatomeBins {this, "NLatomeBins", 117}
Gaudi::Property< bool > m_isADCBaseline {this,"isADCBas",false,"Set true for ADC_BAS (implies dividing ADC-value by 8)"}
Gaudi::Property< std::vector< std::string > > m_streams {this, "Streams", {""}}
 Give the name of the streams you want to monitor:
Gaudi::Property< std::string > m_scMonGroupName {this, "SCMonGroup", "SC"}
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"}
SG::ReadHandleKey< LArDigitContainerm_digitContainerKey {this,"LArDigitContainerKey","","SG key of LArDigitContainer read from Bytestream"}
 Handle to EventData (input)
SG::ReadHandleKey< LArRawSCContainerm_rawSCContainerKey {this,"LArRawSCContainerKey","","SG key of LArRawSCContainer read from Bytestream"}
SG::ReadHandleKey< LArRawSCContainerm_rawSCEtRecoContainerKey {this,"LArRawSCEtRecoContainerKey","SC_ET_RECO","SG key of LArRawSCContainer read from Bytestream"}
SG::ReadHandleKey< LArLATOMEHeaderContainerm_LATOMEHeaderContainerKey {this,"LArLATOMEHeaderContainerKey","SC_LATOME_HEADER","SG key of LArLATOMEHeaderContainer read from Bytestream"}
LArBadChannelMask m_bcMask {true}
 Handle to bad-channel mask.
SG::ReadCondHandleKey< LArBadChannelContm_bcContKey {this, "BadChanKey", "LArBadChannelSC", "SG key for LArBadChan object"}
Gaudi::Property< std::vector< std::string > > m_problemsToMask {this,"ProblemsToMask",{}, "Bad-Channel categories to mask"}
SG::ReadCondHandleKey< ILArPedestalm_keyPedestalSC {this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal CDO"}
 Handle to pedestal.
SG::ReadCondHandleKey< CaloSuperCellDetDescrManagerm_caloSuperCellMgrKey
 Handle to Super Cell DD Manager.
SG::ReadDecorHandleKey< xAOD::EventInfom_actualMuKey
StringArrayProperty m_layerNames
const std::array< unsigned, CaloSampling::Unknown > m_caloSamplingToLyrNS
const std::map< unsigned, unsigned > m_LatomeDetBinMappingQ
std::map< std::string, int > m_toolmapLayerNames_digi
std::map< std::string, int > m_toolmapLayerNames_sc
const LArOnline_SuperCellIDm_LArOnlineIDHelper =nullptr
const CaloCell_SuperCell_IDm_SCID_helper =nullptr
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 33 of file LArDigitalTriggMonAlg.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)

◆ 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 };

◆ LayerEnumNoSides

enum LArDigitalTriggMonAlg::LayerEnumNoSides
private
Enumerator
EMBPNS 
EMB1NS 
EMB2NS 
EMB3NS 
EMECPNS 
EMEC1NS 
EMEC2NS 
EMEC3NS 
HECNS 
FCAL1NS 
FCAL2NS 
FCAL3NS 
MAXLYRNS 

Definition at line 96 of file LArDigitalTriggMonAlg.h.

96{EMBPNS=0,EMB1NS,EMB2NS,EMB3NS,EMECPNS,EMEC1NS,EMEC2NS,EMEC3NS,HECNS,FCAL1NS,FCAL2NS,FCAL3NS,MAXLYRNS};

Constructor & Destructor Documentation

◆ ~LArDigitalTriggMonAlg()

LArDigitalTriggMonAlg::~LArDigitalTriggMonAlg ( )
virtual

Default destructor.

Definition at line 63 of file LArDigitalTriggMonAlg.cxx.

64{
65}

Member Function Documentation

◆ AthMonitorAlgorithm()

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

Constructor.

Definition at line 45 of file AthMonitorAlgorithm.cxx.

9:AthReentrantAlgorithm(name,pSvcLocator)
10 // Put this here rather than in the header to allow forward-declaring
11 // TrigDecisionTool.
12,m_trigDecTool{this, "TrigDecisionTool",""}
13,m_environment(Environment_t::user)
14,m_dataType(DataType_t::userDefined)
15,m_vTrigChainNames({})
16{}
An algorithm that can be simultaneously executed in multiple threads.

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

64{
65 return 0;
66}

◆ 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}
#define ATH_MSG_WARNING(x)
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()) {
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}
#define ATH_MSG_DEBUG(x)
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.
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
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.

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

◆ fillHistograms()

StatusCode LArDigitalTriggMonAlg::fillHistograms ( const EventContext & ctx) const
overridevirtual

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 164 of file LArDigitalTriggMonAlg.cxx.

165{
166
167 ATH_MSG_DEBUG("in fillHists()" );
168
169 // General Monitored variables
170 auto lumi_block = Monitored::Scalar<unsigned int>("lumi_block", 0);
171 auto time_stamp = Monitored::Scalar<unsigned int>("time_stamp", 0);
172 auto BCID = Monitored::Scalar<int>("BCID",0);
173 auto Pedestal = Monitored::Scalar<float>("Pedestal",0.0);
174 auto PedestalRMS = Monitored::Scalar<float>("PedestalRMS",0.0);
175
176 // From digi loop
177 auto Digi_Nsamples = Monitored::Scalar<int>("Digi_Nsamples",-1); // MNsamples
178 auto Digi_SCChannel = Monitored::Scalar<int>("Digi_SCChannel",-1); // MSCChannel
179 auto Digi_latomeSourceId = Monitored::Scalar<int>("Digi_latomeSourceId",-1); // MlatomeSourceId
180 auto Digi_latomeSourceIdBIN = Monitored::Scalar<int>("Digi_latomeSourceIdBIN",1); // MlatomeSourceIdBIN
181 auto Digi_phi = Monitored::Scalar<float>("Digi_phi",0.0); // MSCphi
182 auto Digi_eta = Monitored::Scalar<float>("Digi_eta",0.0); // MSCeta
183 auto Digi_iphi = Monitored::Scalar<int>("Digi_iphi",0.0);
184 auto Digi_ieta = Monitored::Scalar<int>("Digi_ieta",0.0);
185 auto Digi_maxpos = Monitored::Scalar<int>("Digi_maxpos",-1); // Mmaxpos
186 auto Digi_partition = Monitored::Scalar<int>("Digi_partition",-1); // Mpartition
187 auto Digi_sampos = Monitored::Scalar<int>("Digi_sampos",-1); // Msampos
188 auto Digi_ADC = Monitored::Scalar<int>("Digi_ADC",-1); // MADC
189 auto Digi_Diff_ADC_Ped = Monitored::Scalar<float>("Digi_Diff_ADC_Ped", -999); // Diff_ADC_Pedestal
190 auto Digi_Diff_ADC0_Ped = Monitored::Scalar<float>("Digi_Diff_ADC0_Ped", -999); // Pedestal diff
191 auto Digi_Diff_ADC_Ped_Norm = Monitored::Scalar<float>("Digi_Diff_ADC_Ped_Norm",-999); // Diff_ADC_Pedestal_Norm
192 auto Digi_ADC_RMS = Monitored::Scalar<float>("Digi_ADC_RMS",-1); // Digi_ADC_RMS
193
194 // cuts
195 auto notBadQual = Monitored::Scalar<bool>("notBadQual",false);
196 auto ADCped10RMS = Monitored::Scalar<bool>("ADCped10RMS",false);
197 auto passDigiNom = Monitored::Scalar<bool>("passDigiNom",false);
198 auto badNotMasked = Monitored::Scalar<bool>("badNotMasked",false);
199
200 // cuts which are used in both loops
201 auto notMasked = Monitored::Scalar<bool>("notMasked",false);
202
203 // From SC loop
204 auto SC_SCChannel = Monitored::Scalar<int>("SC_SCChannel",-1); // MSCChannel
205 auto SC_latomeSourceId = Monitored::Scalar<int>("SC_latomeSourceId",-1); // MlatomeSourceId
206 auto SC_partition = Monitored::Scalar<int>("SC_partition",-1); // Mpartition
207 auto SC_phi = Monitored::Scalar<float>("SC_phi",0.0); // MSCphi
208 auto SC_eta = Monitored::Scalar<float>("SC_eta",0.0); // MSCeta
209 auto SC_iphi = Monitored::Scalar<int>("SC_iphi",0.0);
210 auto SC_ieta = Monitored::Scalar<int>("SC_ieta",0.0);
211 auto SC_energy_onl = Monitored::Scalar<int>("SC_energy_onl",0.0); // Menergy_onl
212 auto SC_ET_onl = Monitored::Scalar<float>("SC_ET_onl",0.0); // Menergy_onl
213 auto SC_ET_onl_muscaled = Monitored::Scalar<float>("SC_ET_onl_muscaled",0.0); // Menergy_onl
214 auto SC_energy_ofl = Monitored::Scalar<int>("SC_energy_ofl",0.0); // Menergy_ofl
215 auto SC_ET_ofl = Monitored::Scalar<float>("SC_ET_ofl",0.0); // Menergy_onl
216 auto SC_ET_diff = Monitored::Scalar<int>("SC_ET_diff",0.0); // MSCEt_diff
217 auto SC_time = Monitored::Scalar<float>("SC_time",0.0); // MSCtime
218 auto SC_latomeSourceIdBIN = Monitored::Scalar<int>("SC_latomeSourceIdBIN",1); // MlatomeSourceIdBIN
219 auto SC_AvEnergyOverMu = Monitored::Scalar<float>("SC_AvEnergyOverMu",0); // LMAvEnergyOverMu
220 // cuts
221 auto passTauSel = Monitored::Scalar<bool>("passTauSel",false);
222 auto nonZeroET = Monitored::Scalar<bool>("nonZeroET",false); // eTgt0GeV
223 auto zeroET = Monitored::Scalar<bool>("zeroET",false); // eTgt0GeV
224 auto nonZeroETofl = Monitored::Scalar<bool>("nonZeroETofl",false); // eTgt0GeV
225 auto onlofflEmismatch = Monitored::Scalar<bool>("onlofflEmismatch",false);
226 auto notSatur = Monitored::Scalar<bool>("notSatur",false);
227 auto notOFCbOF = Monitored::Scalar<bool>("notOFCbOF",false);
228 auto tauGt3 = Monitored::Scalar<bool>("tauGt3",false);
229 auto nonZeroEtau = Monitored::Scalar<bool>("nonZeroEtau",false);
230 auto eTgt1GeV = Monitored::Scalar<bool>("eTgt1GeV",false);
231 auto eTlt1GeV = Monitored::Scalar<bool>("eTlt1GeV",false);
232 auto eTgt0p325GeV = Monitored::Scalar<bool>("eTgt0p325GeV",false);
233 auto eTgt0lt0p325GeV = Monitored::Scalar<bool>("eTgt0lt0p325GeV",false);
234 auto eTgt10GeV = Monitored::Scalar<bool>("eTgt10GeV",false);
235 auto eTlt10GeV = Monitored::Scalar<bool>("eTlt10GeV",false);
236 auto eToflGt1GeV = Monitored::Scalar<bool>("eToflGt1GeV",false);
237
238
239 //auto passSCNom = Monitored::Scalar<bool>("passSCNom",false); // pass tau, not satur, not OFCb OF, not masked nonZeroET < 10 GeV
240 auto passSCNomInvalid = Monitored::Scalar<bool>("passSCNomInvalid",false); // pass tau, not satur, not OFCb OF, not masked and raw E = -99999
241 auto passSCNom0_0p325 = Monitored::Scalar<bool>("passSCNom0_0p325",false); // pass tau, not satur, not OFCb OF, not masked nonZeroET < 0.2 GeV
242 auto passSCNom0p325_1 = Monitored::Scalar<bool>("passSCNom0p325_1",false); // pass tau, not satur, not OFCb OF, not masked 0.2 < ET < 1 GeV
243 auto passSCNom1 = Monitored::Scalar<bool>("passSCNom1",false); // pass tau, not satur, not OFCb OF, not masked eTgt1GeV
244 auto passSCNom10 = Monitored::Scalar<bool>("passSCNom10",false); // pass tau, not satur, not OFCb OF, not masked eTgt10GeV
245 auto passSCNom10tauGt3 = Monitored::Scalar<bool>("passSCNom10tauGt3",false); // pass tau, not satur, not OFCb OF, not masked eTgt10GeV tauGt3
246 auto saturNotMasked = Monitored::Scalar<bool>("saturNotMasked",false); // notSatur is false, notMasked is false
247 auto OFCbOFNotMasked = Monitored::Scalar<bool>("OFCbOFNotMasked",false); // notOFCbOF is false, notMasked is false
248 auto notMaskedEoflNe0 = Monitored::Scalar<bool>("notMaskedEoflNe0",false); // not masked OSUM, not satur, not OFCb OF, ET ofl != 0
249 auto notMaskedEoflGt1 = Monitored::Scalar<bool>("notMaskedEoflGt1",false); // not masked OSUM, not satur, not OFCb OF, ET ofl > 1
250
251 // From LATOME header loop
252 auto thisEvent=this->GetEventInfo(ctx);
253
254 const std::vector<unsigned> streamsThisEvent=LArMon::trigStreamMatching(m_streams,thisEvent->streamTags());
255
256 SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey,ctx};
257 const LArOnOffIdMapping* cabling=*cablingHdl;
258
259 SG::ReadHandle<LArDigitContainer> hLArDigitContainer;
260 if (!m_digitContainerKey.empty()) {
261 hLArDigitContainer= SG::ReadHandle<LArDigitContainer>{m_digitContainerKey,ctx}; //"SC"
262 if (!hLArDigitContainer.isValid()) {
263 ATH_MSG_WARNING("The requested digit container key could not be retrieved. Was there a problem retrieving information from the run logger?");
264 }
265 }
266 else {
267 ATH_MSG_DEBUG("hLArDigitContainer.size() " << hLArDigitContainer->size());
268 }
269
270
271 SG::ReadHandle<LArRawSCContainer> hSCetContainer;
272 if (!m_rawSCContainerKey.empty()) {
273 hSCetContainer = SG::ReadHandle<LArRawSCContainer>{m_rawSCContainerKey, ctx}; //"SC_ET"
274 if (!hSCetContainer.isValid()) {
275 ATH_MSG_WARNING("The requested SC ET container key could not be retrieved. Was there a problem retrieving information from the run logger?");
276 }
277 }
278 else {
279 ATH_MSG_DEBUG("hSCetContainer.size() " << hSCetContainer->size());
280 }
281
282 SG::ReadHandle<LArRawSCContainer> hSCetRecoContainer;
284 hSCetRecoContainer = SG::ReadHandle<LArRawSCContainer>{m_rawSCEtRecoContainerKey, ctx}; //"SC_ET_RECO"
285 if (!hSCetRecoContainer.isValid()) {
286 ATH_MSG_WARNING("The requested SC ET reco container key could not be retrieved. Was there a problem retrieving information from the run logger?");
287 }
288 }
289 else {
290 ATH_MSG_DEBUG("hSCetRecoContainer.size() " << hSCetRecoContainer->size());
291 }
292
293 SG::ReadHandle<LArLATOMEHeaderContainer> hLArLATOMEHeaderContainer{m_LATOMEHeaderContainerKey,ctx}; //"SC_LATOME_HEADER"
294 if (!hLArLATOMEHeaderContainer.isValid()) {
295 ATH_MSG_WARNING("The requested LATOME header container key could not be retrieved. Was there a problem retrieving information from the run logger?");
296 }else{
297 ATH_MSG_DEBUG("hLArLATOMEHeaderContainer.size() " << hLArLATOMEHeaderContainer->size());
298 }
299
300 if (isEmptyCont(hLArDigitContainer) && isEmptyCont(hSCetContainer) && isEmptyCont(hSCetRecoContainer) && isEmptyCont(hLArLATOMEHeaderContainer)) {
301 //Make this only warning, come CI tests use the runs without DT info
302 ATH_MSG_WARNING("All of the requested containers are empty. Was there a problem retrieving information from the run logger?");
303 return StatusCode::SUCCESS;
304 }
305
306 BCID = thisEvent->bcid(); // - 88)%((36+7)*4 + 36 + 31);
307 lumi_block = thisEvent->lumiBlock();
308 time_stamp = thisEvent->timeStamp();
309
310 float mu = lbInteractionsPerCrossing(ctx);
311 float event_mu = lbLuminosityPerBCID(ctx);
312
313 ATH_MSG_DEBUG("mu (LB): " << mu);
314 ATH_MSG_DEBUG("mu (BCID): " << event_mu);
315 ATH_MSG_DEBUG("Event number: " << thisEvent->eventNumber());
316 ATH_MSG_DEBUG("LB number: " << thisEvent->lumiBlock());
317 ATH_MSG_DEBUG("BCID: " << thisEvent->bcid());
318 SG::ReadCondHandle<ILArPedestal> pedestalHdl{m_keyPedestalSC, ctx};
319 const ILArPedestal* pedestals = *pedestalHdl;
320
321 SG::ReadCondHandle<CaloSuperCellDetDescrManager> caloSuperCellMgrHandle{m_caloSuperCellMgrKey, ctx};
322 const CaloSuperCellDetDescrManager* ddman = *caloSuperCellMgrHandle;
323
324 // retrieve BadChannel info:
325 const LArBadChannelCont* bcCont = nullptr;
326 SG::ReadCondHandle<LArBadChannelCont> bcContHdl{m_bcContKey, ctx};
327 bcCont = (*bcContHdl);
328
329 if ((hLArDigitContainer.isValid())) {
330 std::vector<std::vector<Digi_MonValues>> digiMonValueVec(m_layerNames.size());
331 for (auto& innerVec : digiMonValueVec) {
332 innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
333 }
334
335 // Loop over digits
336 for (const LArDigit* pLArDigit : *hLArDigitContainer) {
337 HWIdentifier id = pLArDigit->hardwareID(); // gives online ID
338 // skip disconnected channels:
339 if (!cabling->isOnlineConnected(id))
340 continue;
341
342 const unsigned trueNSamples = pLArDigit->nsamples();
343 if (trueNSamples == 0)
344 continue;
345 Digi_Nsamples = trueNSamples; // Fill the monitored variable
346 const int cgain = pLArDigit->gain();
347
348 const Identifier offlineID = cabling->cnvToIdentifier(id);
349 const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
350 if (caloDetElement == 0) {
351 ATH_MSG_ERROR("Cannot retrieve caloDetElement");
352 continue;
353 }
354 Digi_eta = caloDetElement->eta_raw();
355 Digi_phi = caloDetElement->phi_raw();
356
357 Digi_ieta = m_SCID_helper->eta(offlineID);
358 Digi_iphi = m_SCID_helper->phi(offlineID);
359
360 const int calosample = caloDetElement->getSampling();
361
362 const unsigned iLyrNS = m_caloSamplingToLyrNS[calosample];
363 const int side = m_LArOnlineIDHelper->pos_neg(id);
364 const unsigned iLyr = iLyrNS * 2 + side;
365 auto& lvaluemap_digi = digiMonValueVec[iLyr];
366 auto& lvaluemap_digi_ALL = digiMonValueVec.back();
367
368 // Determine to which partition this channel belongs to
369 const int ThisPartition = whatPartition(id, side);
370 Digi_partition = ThisPartition; // Fill the monitored variable
371
372 fill(m_scMonGroupName, Digi_Nsamples);
373
374 // Check if this is a maskedOSUM SC
375 notMasked = true;
376 if (m_bcMask.cellShouldBeMasked(bcCont, id)) {
377 notMasked = false;
378 }
379
380 if (pedestals) {
381 Pedestal = pedestals->pedestal(id, cgain);
382 PedestalRMS = pedestals->pedestalRMS(id, cgain);
383 } else
384 ATH_MSG_INFO("Pedestal values not received");
385
386 const LArSCDigit* scdigi = dynamic_cast<const LArSCDigit*>(pLArDigit);
387 if (!scdigi) {
388 ATH_MSG_DEBUG(" CAN'T CAST ");
389 } else {
390 Digi_SCChannel = scdigi->Channel();
391 Digi_latomeSourceId = scdigi->SourceId();
392 Digi_latomeSourceIdBIN = getXbinFromSourceID(Digi_latomeSourceId);
393 }
394 // Retrieve samples
395 const std::vector<short>* digito = &pLArDigit->samples();
396
397 // retrieve the max sample digit ie digitot.back().
398 std::vector<short>::const_iterator maxSam = std::max_element(digito->begin(), digito->end());
399 int thismaxPos = std::distance(digito->begin(), maxSam);
400 Digi_maxpos = thismaxPos + 1; // count samples [1,5]
401 float ADC_max = pLArDigit->samples().at(Digi_maxpos - 1);
402
403 float ADC_0 = pLArDigit->samples().at(0);
404 if (m_isADCBaseline) { // SC_ADC_BAS, have to divide by 8
405 ADC_0 = ADC_0 / 8;
406 }
407
408 float samp_sum = std::accumulate(digito->begin(), digito->end(), 0.0);
409 float samp_mean = samp_sum / static_cast<float>(trueNSamples);
410 float sq_sum = std::inner_product(digito->begin(), digito->end(), digito->begin(), 0.0);
411 float rms_arg = sq_sum / static_cast<float>(trueNSamples) - samp_mean * samp_mean;
412
413 if (rms_arg < 0)
414 Digi_ADC_RMS = -1;
415 else
416 Digi_ADC_RMS = std::sqrt(rms_arg);
417
418
419 // Start Loop over samples
420 Digi_Diff_ADC0_Ped = ADC_0 - Pedestal;
421 for (unsigned i = 0; i < trueNSamples; ++i) {
422 badNotMasked = false;
423 notBadQual = false;
424 ADCped10RMS = false;
425 passDigiNom = false;
426 Digi_sampos = i + 1;
427 Digi_ADC = pLArDigit->samples().at(i);
428 if (m_isADCBaseline) { // SC_ADC_BAS, have to divide by 8
429 Digi_ADC = Digi_ADC / 8;
430 }
431
432 Digi_Diff_ADC_Ped = Digi_ADC - Pedestal;
433 if (ADC_max != Pedestal) {
434 Digi_Diff_ADC_Ped_Norm = (Digi_ADC - Pedestal) / std::abs(ADC_max - Pedestal);
435 }
436
437 // Some selections
438 if (Digi_ADC != -1) {
439 notBadQual = true;
440 } else {
441 if (notMasked) {
442 badNotMasked = true;
443 }
444 }
445 if (ADC_max - Pedestal > 10 * PedestalRMS) {
446 ADCped10RMS = true;
447 }
448 if (notMasked && notBadQual && ADCped10RMS) {
449 passDigiNom = true;
450 }
451
452 lvaluemap_digi.emplace_back(Digi_eta, Digi_phi, Digi_ieta, Digi_iphi, Digi_sampos, Digi_ADC, Digi_latomeSourceIdBIN, Pedestal, Digi_maxpos,
453 Digi_partition, Digi_Diff_ADC_Ped_Norm, Digi_Diff_ADC_Ped, Digi_Diff_ADC0_Ped, Digi_ADC_RMS, BCID, lumi_block, passDigiNom,
454 badNotMasked);
455 lvaluemap_digi_ALL.emplace_back(Digi_eta, Digi_phi, Digi_ieta, Digi_iphi, Digi_sampos, Digi_ADC, Digi_latomeSourceIdBIN, Pedestal, Digi_maxpos,
456 Digi_partition, Digi_Diff_ADC_Ped_Norm, Digi_Diff_ADC_Ped, Digi_Diff_ADC0_Ped, Digi_ADC_RMS, BCID, lumi_block, passDigiNom,
457 badNotMasked);
458
459 } // End loop over samples
460
461 } // End of loop on LArDigit
462
463 // fill, for every layer/threshold
464 for (size_t ilayer = 0; ilayer < digiMonValueVec.size(); ++ilayer) {
465 const auto& tool = digiMonValueVec[ilayer];
466 auto digi_part_eta = Monitored::Collection("Digi_part_eta", tool, [](const auto& v) { return v.digi_eta; });
467 auto digi_part_phi = Monitored::Collection("Digi_part_phi", tool, [](const auto& v) { return v.digi_phi; });
468 auto digi_part_ieta = Monitored::Collection("Digi_part_ieta", tool, [](const auto& v) { return v.digi_ieta; });
469 auto digi_part_iphi = Monitored::Collection("Digi_part_iphi", tool, [](const auto& v) { return v.digi_iphi; });
470 auto digi_part_sampos = Monitored::Collection("Digi_part_sampos", tool, [](const auto& v) { return v.digi_sampos; });
471 auto digi_part_adc = Monitored::Collection("Digi_part_adc", tool, [](const auto& v) { return v.digi_adc; });
472 auto digi_part_latomesourceidbin = Monitored::Collection("Digi_part_latomesourceidbin", tool, [](const auto& v) { return v.digi_latomesourceidbin; });
473 auto digi_part_pedestal = Monitored::Collection("Digi_part_pedestal", tool, [](const auto& v) { return v.digi_pedestal; });
474 auto digi_part_maxpos = Monitored::Collection("Digi_part_maxpos", tool, [](const auto& v) { return v.digi_maxpos; });
475 auto digi_part_partition = Monitored::Collection("Digi_part_partition", tool, [](const auto& v) { return v.digi_partition; });
476 auto digi_part_diff_adc_ped_norm = Monitored::Collection("Digi_part_diff_adc_ped_norm", tool, [](const auto& v) { return v.digi_diff_adc_ped_norm; });
477 auto digi_part_diff_adc_ped = Monitored::Collection("Digi_part_diff_adc_ped", tool, [](const auto& v) { return v.digi_diff_adc_ped; });
478 auto digi_part_diff_adc0_ped = Monitored::Collection("Digi_part_diff_adc0_ped", tool, [](const auto& v) { return v.digi_diff_adc0_ped; });
479 auto digi_part_bcid = Monitored::Collection("Digi_part_BCID", tool, [](const auto& v) { return v.digi_bcid; });
480 auto digi_part_lb = Monitored::Collection("Digi_part_LB", tool, [](const auto& v) { return v.digi_lb; });
481 auto digi_part_passDigiNom = Monitored::Collection("Digi_part_passDigiNom", tool, [](const auto& v) { return v.digi_passDigiNom; });
482 auto digi_part_badNotMasked = Monitored::Collection("Digi_part_badNotMasked", tool, [](const auto& v) { return v.digi_badNotMasked; });
483 auto digi_part_adc_rms = Monitored::Collection("Digi_part_adc_rms", tool, [](const auto& v) { return v.digi_adc_rms; });
484
485 fill(m_tools[m_toolmapLayerNames_digi.at(m_layerNames[ilayer])], digi_part_eta, digi_part_phi, digi_part_ieta, digi_part_iphi, digi_part_sampos,
486 digi_part_adc, digi_part_latomesourceidbin, digi_part_pedestal, digi_part_maxpos, digi_part_diff_adc_ped_norm, digi_part_diff_adc_ped,
487 digi_part_diff_adc0_ped, digi_part_adc_rms, digi_part_bcid, digi_part_lb, digi_part_passDigiNom, digi_part_badNotMasked);
488 }
489
490 } // End if(LArDigitContainer is valid)
491
492
493 if (!isEmptyCont(hSCetContainer) && !isEmptyCont(hSCetRecoContainer)) {
494 LArRawSCContainer::const_iterator itSC = hSCetContainer->begin();
495 LArRawSCContainer::const_iterator itSC_e= hSCetContainer->end();
496 LArRawSCContainer::const_iterator itSCReco = hSCetRecoContainer->begin();
497 const LArRawSC* rawSC = 0;
498 const LArRawSC* rawSCReco = 0;
499
500 std::vector<std::vector<SC_MonValues>> scMonValueVec(m_layerNames.size());
501 for (auto& innerVec : scMonValueVec) {
502 innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
503 }
504
505 // Loop over SCs
506 for (; itSC != itSC_e; ++itSC, ++itSCReco) {
507 rawSC = *itSC;
508 if (itSCReco < hSCetRecoContainer->end()) {
509 rawSCReco = *itSCReco;
510 } else {
511 //temporarily removed
512 //ATH_MSG_WARNING("Looping SC ET container, but we have reached the end of the SC ET Reco iterator. Check the sizes of these containers. Is SC ET Reco size zero? Is there a problem with the digit container name sent by the run logger?");
513 rawSCReco = 0;
514 }
515 SC_SCChannel = rawSC->chan();
516 HWIdentifier id = rawSC->hardwareID(); // gives online ID
517 // skip disconnected channels:
518 if (!cabling->isOnlineConnected(id))
519 continue;
520
521 const Identifier offlineID = cabling->cnvToIdentifier(id); // converts online to offline ID
522 // Get Physical Coordinates
523 const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
524 if (caloDetElement == 0) {
525 ATH_MSG_ERROR("Cannot retrieve (eta,phi) coordinates for raw channels");
526 ATH_MSG_ERROR(" ==============> " << std::hex << "; offlineID = " << offlineID << "online ID =" << m_LArOnlineIDHelper->channel_name(id)
527 << "; rawSC->SourceId() = " << rawSC->SourceId());
528 continue;
529 }
530 SC_eta = caloDetElement->eta_raw();
531 SC_phi = caloDetElement->phi_raw();
532
533 SC_ieta = m_SCID_helper->eta(offlineID);
534 SC_iphi = m_SCID_helper->phi(offlineID);
535 int calosample = caloDetElement->getSampling();
536
537 const unsigned iLyrNS = m_caloSamplingToLyrNS[calosample];
538 const unsigned side = m_LArOnlineIDHelper->pos_neg(id);
539 const unsigned iLyr = iLyrNS * 2 + side;
540
541 auto& lvaluemap_sc = scMonValueVec[iLyr];
542 auto& lvaluemap_sc_ALL = scMonValueVec.back();
543
544 SC_latomeSourceIdBIN = getXbinFromSourceID(rawSC->SourceId());
545
546 // initialise cuts
547 notMasked = false;
548 passTauSel = false;
549 nonZeroET = false;
550 zeroET = false;
551 notSatur = false;
552 nonZeroEtau = false;
553 eTgt0p325GeV = false;
554 eTgt0lt0p325GeV = false;
555 eTgt1GeV = false;
556 eTlt1GeV = false;
557 eTgt10GeV = false;
558 eTlt10GeV = false;
559 notOFCbOF = false;
560 tauGt3 = false;
561 onlofflEmismatch = false;
562 passSCNom0_0p325 = false;
563 passSCNom0p325_1 = false;
564 passSCNom1 = false;
565 passSCNom10 = false;
566 passSCNom10tauGt3 = false;
567 saturNotMasked = false;
568 OFCbOFNotMasked = false;
569 notMaskedEoflNe0 = false;
570 notMaskedEoflGt1 = false;
571 nonZeroETofl = false;
572 eToflGt1GeV = false;
573 passSCNomInvalid = false;
574 // Check if this is a maskedOSUM SC
575 if (!m_bcMask.cellShouldBeMasked(bcCont, id)) {
576 notMasked = true;
577 }
578 // popopopo
579 if (rawSCReco != 0 && rawSCReco->passTauSelection().size() > 0) { // only compare Et if tau selection is passed
580 if (rawSCReco->passTauSelection().at(0) == true)
581 passTauSel = true;
582 }
583 unsigned int bcid_ind = 0;
584 if (rawSC->energies().size() > 0) {
585 for (auto& SCe : rawSC->bcids()) {
586 if (SCe == BCID)
587 break;
588 bcid_ind++;
589 }
590 if (bcid_ind >= rawSC->bcids().size()) {
591 ATH_MSG_WARNING("BCID not found in SC bcids list!! " << BCID << " BCIDs size: " << rawSC->bcids().size() << ", proposed index: " << bcid_ind);
592 } else if (rawSC->bcids().at(bcid_ind) != BCID) {
593 ATH_MSG_WARNING("BCID not found in SC bcids list!! " << BCID << " " << rawSC->bcids().at(bcid_ind));
594 }
595
596 if (rawSC->energies().size() > bcid_ind) {
597 SC_energy_onl = rawSC->energies().at(bcid_ind);
598 } else {
599 ATH_MSG_WARNING("rawSC energies vector is too small for the requested BCID index " << bcid_ind << " (size is " << rawSC->energies().size()
600 << ", bcid vec size is " << rawSC->bcids().size() << ")");
601 SC_energy_onl = 0;
602 }
603 } else {
604 ATH_MSG_WARNING("rawSC energies vector is empty!");
605 SC_energy_onl = 0;
606 }
607
608 if (rawSCReco != 0) {
609 if (rawSCReco->energies().size() > 0) {
610 SC_energy_ofl = rawSCReco->energies().at(0); // algorithm already selects the correct energy
611 } else {
612 ATH_MSG_WARNING("rawSCReco energies vector is empty!");
613 SC_energy_ofl = 0;
614 }
615 }
616 SC_ET_diff = SC_energy_onl - SC_energy_ofl;
617 SC_ET_onl = (SC_energy_onl * 12.5) / 1000; // Converted to GeV
618 SC_ET_ofl = (SC_energy_ofl * 12.5) / 1000; // Converted to GeV
619 SC_ET_onl_muscaled = event_mu > 0. ? SC_ET_onl / event_mu : SC_ET_onl;
620 int Etau = 0;
621 if (rawSCReco != 0) {
622 if (rawSCReco->tauEnergies().size() > 0) {
623 Etau = rawSCReco->tauEnergies().at(0);
624 }
625 }
626 SC_time = (SC_energy_ofl != 0) ? (float)Etau / (float)SC_energy_ofl : Etau;
627
628 ATH_MSG_DEBUG("Energy onl - Energy ofl: " << SC_energy_onl << ", " << SC_energy_ofl << std::endl);
629 if (SC_ET_onl != 0) {
630 nonZeroET = true;
631 } else {
632 zeroET = true;
633 }
634 if (SC_ET_onl > 0.325) {
635 eTgt0p325GeV = true;
636 } else if (SC_ET_onl < 0.325 && SC_ET_onl > 0.) {
637 eTgt0lt0p325GeV = true;
638 }
639 if (SC_ET_onl > 1) {
640 eTgt1GeV = true;
641 }
642 if (SC_ET_onl < 1) {
643 eTlt1GeV = true;
644 }
645 if (SC_ET_onl > 10) {
646 eTgt10GeV = true;
647 }
648 if (SC_ET_onl < 10) {
649 eTlt10GeV = true;
650 }
651 if (SC_ET_ofl != 0) {
652 nonZeroETofl = true;
653 }
654 if (SC_ET_ofl > 1) {
655 eToflGt1GeV = true;
656 }
657 if (rawSC->satur().size() > bcid_ind) {
658 if (rawSC->satur().at(bcid_ind)) {
659 if (notMasked) {
660 saturNotMasked = true;
661 }
662 } else {
663 notSatur = true;
664 }
665 }
666 if (Etau != 0) {
667 nonZeroEtau = true;
668 }
669 if (rawSCReco != 0 && rawSCReco->ofcbOverflow() == false) {
670 notOFCbOF = true;
671 } else {
672 if (notMasked) {
673 OFCbOFNotMasked = true;
674 }
675 }
676 if (std::abs(SC_time) > 3) {
677 tauGt3 = true;
678 }
679
680 if (notMasked && notSatur && notOFCbOF) {
681 if (nonZeroETofl) {
682 notMaskedEoflNe0 = true;
683 }
684 if (eToflGt1GeV) {
685 notMaskedEoflGt1 = true;
686 }
687 if (SC_energy_onl == -99999) {
688 passSCNomInvalid = true;
689 }
690
691 //if ( passTauSel ){
692 //if ( nonZeroET && eTgt0lt0p325GeV ){
693 if (eTgt0lt0p325GeV) {
694 passSCNom0_0p325 = true;
695 }
696 if (eTgt0p325GeV && eTlt1GeV) {
697 passSCNom0p325_1 = true;
698 }
699 if (eTgt1GeV) {
700 passSCNom1 = true;
701 }
702 if (eTgt10GeV) {
703 passSCNom10 = true;
704 if (tauGt3) {
705 passSCNom10tauGt3 = true;
706 }
707 }
708 if (SC_energy_onl != SC_energy_ofl) {
709 onlofflEmismatch = true;
710 }
711 //}
712 } // end nominal selections
713
714 lvaluemap_sc.emplace_back(SC_eta, SC_phi, SC_ieta, SC_iphi, SC_latomeSourceIdBIN, SC_ET_ofl, SC_ET_diff, SC_ET_onl, SC_ET_onl_muscaled, SC_time, BCID,
715 lumi_block, zeroET, passSCNomInvalid, passSCNom0_0p325, passSCNom0p325_1, passSCNom1, passSCNom10, passSCNom10tauGt3, saturNotMasked, OFCbOFNotMasked, notMaskedEoflNe0,
716 notMaskedEoflGt1);
717 lvaluemap_sc_ALL.emplace_back(SC_eta, SC_phi, SC_ieta, SC_iphi, SC_latomeSourceIdBIN, SC_ET_ofl, SC_ET_diff, SC_ET_onl, SC_ET_onl_muscaled, SC_time,
718 BCID, lumi_block, zeroET, passSCNomInvalid, passSCNom0_0p325, passSCNom0p325_1, passSCNom1, passSCNom10, passSCNom10tauGt3, saturNotMasked, OFCbOFNotMasked,
719 notMaskedEoflNe0, notMaskedEoflGt1);
720
721 } // end loop over SCs
722
723 // fill, for every layer/threshold
724 for (size_t ilayer = 0; ilayer < scMonValueVec.size(); ++ilayer) {
725 const auto& tool = scMonValueVec[ilayer];
726 auto sc_part_eta = Monitored::Collection("SC_part_eta", tool, [](const auto& v) { return v.sc_eta; });
727 auto sc_part_phi = Monitored::Collection("SC_part_phi", tool, [](const auto& v) { return v.sc_phi; });
728 auto sc_part_ieta = Monitored::Collection("SC_part_ieta", tool, [](const auto& v) { return v.sc_ieta; });
729 auto sc_part_iphi = Monitored::Collection("SC_part_iphi", tool, [](const auto& v) { return v.sc_iphi; });
730 auto sc_part_latomesourceidbin = Monitored::Collection("SC_part_latomesourceidbin", tool, [](const auto& v) { return v.sc_latomesourceidbin; });
731 auto sc_part_et_ofl = Monitored::Collection("SC_part_et_ofl", tool, [](const auto& v) { return v.sc_et_ofl; });
732 auto sc_part_et_diff = Monitored::Collection("SC_part_et_diff", tool, [](const auto& v) { return v.sc_et_diff; });
733 auto sc_part_et_onl = Monitored::Collection("SC_part_et_onl", tool, [](const auto& v) { return v.sc_et_onl; });
734 auto sc_part_et_onl_muscaled = Monitored::Collection("SC_part_et_onl_muscaled", tool, [](const auto& v) { return v.sc_et_onl_muscaled; });
735 auto sc_part_time = Monitored::Collection("SC_part_time", tool, [](const auto& v) { return v.sc_time; });
736 auto sc_part_bcid = Monitored::Collection("SC_part_BCID", tool, [](const auto& v) { return v.sc_bcid; });
737 auto sc_part_lb = Monitored::Collection("SC_part_LB", tool, [](const auto& v) { return v.sc_lb; });
738 // auto sc_part_passSCNom = Monitored::Collection("SC_part_passSCNom", tool, [](const auto& v) { return v.sc_passSCNom; });
739 auto sc_zeroET = Monitored::Collection("SC_part_zeroET", tool, [](const auto& v) { return v.sc_zeroET; });
740 auto sc_part_passSCNomInvalid = Monitored::Collection("SC_part_passSCNomInvalid", tool, [](const auto& v) { return v.sc_passSCNomInvalid; });
741 auto sc_part_passSCNom0_0p325 = Monitored::Collection("SC_part_passSCNom0_0p325", tool, [](const auto& v) { return v.sc_passSCNom0_0p325; });
742 auto sc_part_passSCNom0p325_1 = Monitored::Collection("SC_part_passSCNom0p325_1", tool, [](const auto& v) { return v.sc_passSCNom0p325_1; });
743 auto sc_part_passSCNom1 = Monitored::Collection("SC_part_passSCNom1", tool, [](const auto& v) { return v.sc_passSCNom1; });
744 auto sc_part_passSCNom10 = Monitored::Collection("SC_part_passSCNom10", tool, [](const auto& v) { return v.sc_passSCNom10; });
745 auto sc_part_passSCNom10tauGt3 = Monitored::Collection("SC_part_passSCNom10tauGt3", tool, [](const auto& v) { return v.sc_passSCNom10tauGt3; });
746 auto sc_part_saturNotMasked = Monitored::Collection("SC_part_saturNotMasked", tool, [](const auto& v) { return v.sc_saturNotMasked; });
747 auto sc_part_OFCbOFNotMasked = Monitored::Collection("SC_part_OFCbOFNotMasked", tool, [](const auto& v) { return v.sc_OFCbOFNotMasked; });
748 auto sc_part_notMaskedEoflNe0 = Monitored::Collection("SC_part_notMaskedEoflNe0", tool, [](const auto& v) { return v.sc_notMaskedEoflNe0; });
749 auto sc_part_notMaskedEoflGt1 = Monitored::Collection("SC_part_notMaskedEoflGt1", tool, [](const auto& v) { return v.sc_notMaskedEoflGt1; });
750
751
752 fill(m_tools[m_toolmapLayerNames_sc.at(m_layerNames[ilayer])], sc_part_eta, sc_part_phi, sc_part_ieta, sc_part_iphi, sc_part_latomesourceidbin,
753 sc_part_et_ofl, sc_part_et_diff, sc_part_et_onl, sc_part_et_onl_muscaled, sc_part_time, sc_part_bcid, sc_part_lb, sc_zeroET, sc_part_passSCNomInvalid,
754 sc_part_passSCNom0_0p325, sc_part_passSCNom0p325_1, sc_part_passSCNom1, sc_part_passSCNom10, sc_part_passSCNom10tauGt3, sc_part_saturNotMasked, sc_part_OFCbOFNotMasked, sc_part_notMaskedEoflNe0,
755 sc_part_notMaskedEoflGt1);
756 }
757
758
759 } // End if(LArSCContainer is valid)
760
761
762
763 // LATOME event size
764 if ((hLArLATOMEHeaderContainer.isValid())) {
765 auto event_size = Monitored::Scalar<float>("event_size", 0);
766 for (const LArLATOMEHeader* pLArLATOMEHeader : *hLArLATOMEHeaderContainer) {
767 event_size += pLArLATOMEHeader->ROBFragSize() + 48; // 48 is the offset between rod_ndata and ROB fragment size
768 }
769 event_size /= (1024 * 1024 / 4);
770 fill(m_scMonGroupName, lumi_block, event_size);
771 }
772
773 // end LATOME event size
774
775 return StatusCode::SUCCESS;
776 }
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
LArBadXCont< LArBadChannel > LArBadChannelCont
bool isEmptyCont(C &c)
int phi(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
int eta(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
CaloCell_ID::CaloSample getSampling() const
cell sampling
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
virtual float pedestal(const HWIdentifier &id, int gain) const =0
virtual float pedestalRMS(const HWIdentifier &id, int gain) const =0
access to RMS of Pedestal index by Identifier, and gain setting
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
const CaloCell_SuperCell_ID * m_SCID_helper
std::map< std::string, int > m_toolmapLayerNames_sc
SG::ReadCondHandleKey< ILArPedestal > m_keyPedestalSC
Handle to pedestal.
SG::ReadHandleKey< LArRawSCContainer > m_rawSCContainerKey
int whatPartition(HWIdentifier id, int side) const
private methods:
SG::ReadHandleKey< LArLATOMEHeaderContainer > m_LATOMEHeaderContainerKey
unsigned getXbinFromSourceID(const unsigned sourceID) const
StringArrayProperty m_layerNames
SG::ReadHandleKey< LArRawSCContainer > m_rawSCEtRecoContainerKey
const LArOnline_SuperCellID * m_LArOnlineIDHelper
const std::array< unsigned, CaloSampling::Unknown > m_caloSamplingToLyrNS
SG::ReadCondHandleKey< CaloSuperCellDetDescrManager > m_caloSuperCellMgrKey
Handle to Super Cell DD Manager.
LArBadChannelMask m_bcMask
Handle to bad-channel mask.
std::map< std::string, int > m_toolmapLayerNames_digi
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
unsigned int SourceId() const
Definition LArRawSC.h:95
short chan() const
Definition LArRawSC.h:92
const std::vector< bool > & satur() const
Definition LArRawSC.h:107
const std::vector< bool > & passTauSelection() const
Definition LArRawSC.h:113
const std::vector< unsigned short > & bcids() const
Definition LArRawSC.h:104
bool ofcbOverflow() const
Definition LArRawSC.h:120
const std::vector< int > & tauEnergies() const
Definition LArRawSC.h:110
const std::vector< int > & energies() const
Definition LArRawSC.h:101
const HWIdentifier & hardwareID() const
Definition LArRawSC.h:89
unsigned int SourceId() const
Definition LArSCDigit.h:45
short Channel() const
Definition LArSCDigit.h:42
Declare a monitored scalar variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
bool empty() const
Test if the key is blank.
virtual float lbInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate instantaneous number of interactions, i.e.
virtual float lbLuminosityPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the instantaneous luminosity per bunch crossing.
std::vector< unsigned > trigStreamMatching(const std::vector< std::string > &streamsFromJobO, const std::vector< xAOD::EventInfo::StreamTag > &streamInEvent)
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
void fill(H5::Group &out_file, size_t iterations)

◆ 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 if (ATH_LIKELY(idx != m_toolLookupMap.end())) {
172 return m_tools[idx->second];
173 }
174 else {
175 // treat empty tool handle case as in Monitored::Group
176 if (m_toolLookupMap.empty()) {
177 return m_dummy;
178 }
179
180 if (!isInitialized()) {
182 "It seems that the AthMonitorAlgorithm::initialize was not called "
183 "in derived class initialize method");
184 } else {
185 std::string available = std::accumulate(
186 m_toolLookupMap.begin(), m_toolLookupMap.end(), std::string(""),
187 [](const std::string& s, auto h) { return s + "," + h.first; });
188 ATH_MSG_FATAL("The tool " << name << " could not be found in the tool array of the "
189 << "monitoring algorithm " << m_name << ". This probably reflects a discrepancy between "
190 << "your python configuration and c++ filling code. Note: your available groups are {"
191 << available << "}.");
192 }
193 }
194 return m_dummy;
195}
#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.

◆ 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 198 of file AthMonitorAlgorithm.cxx.

198 {
199 return m_trigDecTool;
200}

◆ getXbinFromSourceID()

unsigned LArDigitalTriggMonAlg::getXbinFromSourceID ( const unsigned sourceID) const
private

Definition at line 800 of file LArDigitalTriggMonAlg.cxx.

801{
802 // int NLatomeBins = 117;
803 int detStartingBin=m_NLatomeBins;
804 const unsigned detID = sourceID >> 16;
805 const unsigned value = sourceID & 0xF;
806 auto mapit=m_LatomeDetBinMappingQ.find(detID);
807 if (mapit!=m_LatomeDetBinMappingQ.end()) {
808 detStartingBin=mapit->second;
809 }
810
811 unsigned binx = detStartingBin+value;
812 if (binx>m_NLatomeBins){
813 ATH_MSG_WARNING("something wrong with binning, filling overflowbin");
814 binx=m_NLatomeBins;
815 }
816
817 return binx;
818}

◆ initialize()

StatusCode LArDigitalTriggMonAlg::initialize ( )
overridevirtual

initialize

Returns
StatusCode

Get LAr Online Id Helper

Get offline SC Id Helper

Get bad-channel mask (only if jO IgnoreBadChannels is true)

Reimplemented from AthMonitorAlgorithm.

Definition at line 68 of file LArDigitalTriggMonAlg.cxx.

69{
70 ATH_MSG_INFO( "Initialize LArDigitalTriggMonAlg" );
71
73 ATH_CHECK(detStore()->retrieve( m_LArOnlineIDHelper, "LArOnline_SuperCellID" ));
74
76 ATH_CHECK(detStore()->retrieve( m_SCID_helper, "CaloCell_SuperCell_ID" ).isSuccess());
77
78 ATH_MSG_INFO("Building tool map");
79 m_toolmapLayerNames_digi = Monitored::buildToolMap<int>( m_tools, "LArDigitalTriggerMon_digi", m_layerNames);
80 m_toolmapLayerNames_sc = Monitored::buildToolMap<int>( m_tools, "LArDigitalTriggerMon_sc", m_layerNames);
81
82 ATH_MSG_INFO("Done building tool map");
83
84 ATH_MSG_INFO("Input containers=" << m_rawSCContainerKey << " / " << m_rawSCEtRecoContainerKey);
85
86
88 ATH_CHECK(m_bcContKey.initialize());
89 ATH_CHECK(m_bcMask.buildBitMask(m_problemsToMask,msg()));
90
91 ATH_CHECK(m_digitContainerKey.initialize());
92 ATH_CHECK(m_keyPedestalSC.initialize());
93 ATH_CHECK(m_caloSuperCellMgrKey.initialize());
94 ATH_CHECK(m_rawSCContainerKey.initialize(SG::AllowEmpty));
95 ATH_CHECK(m_rawSCEtRecoContainerKey.initialize(SG::AllowEmpty));
96 ATH_CHECK(m_cablingKey.initialize());
97 ATH_CHECK(m_actualMuKey.initialize());
98 ATH_CHECK(m_LATOMEHeaderContainerKey.initialize());
99
100 // Property check:
101 constexpr unsigned expSize=MAXLYRNS*2+1;
102 if (m_layerNames.size() != expSize) {
103 ATH_MSG_ERROR("Unexpected size of LayerNames property. Expect "<< expSize << " entries, found "<< m_layerNames.size() << " entries");
104 return StatusCode::FAILURE;
105 }
106
107 if (m_isADCBaseline) {
108 ATH_MSG_INFO("IsADCBas set to true");
109 }
111}
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode initialize() override
initialize
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
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.
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

◆ 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()

◆ 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 345 of file AthMonitorAlgorithm.cxx.

345 {
346 std::string item;
347 std::stringstream ss(line);
348
349 ATH_MSG_DEBUG( "AthMonitorAlgorithm::parseList()" );
350
351 while ( std::getline(ss, item, ',') ) {
352 std::stringstream iss(item); // remove whitespace
353 iss >> item;
354 result.push_back(item);
355 }
356
357 return StatusCode::SUCCESS;
358}
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

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

77{
78 return BaseAlg::sysExecute (ctx);
79}

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

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
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 203 of file AthMonitorAlgorithm.cxx.

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

◆ whatPartition()

int LArDigitalTriggMonAlg::whatPartition ( HWIdentifier id,
int side ) const
private

private methods:

Say which partition is a channel.

Definition at line 781 of file LArDigitalTriggMonAlg.cxx.

782{
783 if (m_LArOnlineIDHelper->isEMBchannel(id)) {
784 if(side==0) return 0;
785 else return 1;
786 } else if (m_LArOnlineIDHelper->isEMECchannel(id)) {
787 if(side==0) return 2;
788 else return 3;
789 } else if (m_LArOnlineIDHelper->isHECchannel(id)) {
790 if(side==0) return 4;
791 else return 5;
792 } else {
793 if(side==0) return 6;
794 else return 7;
795 }
796}
bool isEMBchannel(const HWIdentifier id) const
bool isHECchannel(const HWIdentifier id) const override final
bool isEMECchannel(const HWIdentifier id) const override final

Member Data Documentation

◆ aff_acc

LArDigitalTriggMonAlg.aff_acc = LArDigitalTriggMonConfig(flags, larLATOMEBuilderAlg, streamTypes=streamTypes)

Definition at line 639 of file LArDigitalTriggMonAlg.py.

◆ AtlasVersion

LArDigitalTriggMonAlg.AtlasVersion

Definition at line 614 of file LArDigitalTriggMonAlg.py.

◆ cfg

LArDigitalTriggMonAlg.cfg = MainServicesCfg(flags)

Definition at line 621 of file LArDigitalTriggMonAlg.py.

◆ doFullMonMT

LArDigitalTriggMonAlg.doFullMonMT

Definition at line 615 of file LArDigitalTriggMonAlg.py.

◆ Files

LArDigitalTriggMonAlg.Files

Definition at line 609 of file LArDigitalTriggMonAlg.py.

◆ flags

LArDigitalTriggMonAlg.flags = initConfigFlags()

Definition at line 604 of file LArDigitalTriggMonAlg.py.

◆ HISTFileName

LArDigitalTriggMonAlg.HISTFileName

Definition at line 611 of file LArDigitalTriggMonAlg.py.

◆ larLATOMEBuilderAlg

LArDigitalTriggMonAlg.larLATOMEBuilderAlg = CompFactory.LArLATOMEBuilderAlg("LArLATOMEBuilderAlg",LArDigitKey="SC", isADCBas=False)

Definition at line 635 of file LArDigitalTriggMonAlg.py.

◆ m_actualMuKey

SG::ReadDecorHandleKey<xAOD::EventInfo> LArDigitalTriggMonAlg::m_actualMuKey
private
Initial value:
{this, "actualInteractionsPerCrossing",
"EventInfo.actualInteractionsPerCrossing","Decoration for Actual Number of Interactions Per Crossing"}

Definition at line 88 of file LArDigitalTriggMonAlg.h.

88 {this, "actualInteractionsPerCrossing",
89 "EventInfo.actualInteractionsPerCrossing","Decoration for Actual Number of Interactions Per Crossing"};

◆ m_bcContKey

SG::ReadCondHandleKey<LArBadChannelCont> LArDigitalTriggMonAlg::m_bcContKey {this, "BadChanKey", "LArBadChannelSC", "SG key for LArBadChan object"}
private

Definition at line 76 of file LArDigitalTriggMonAlg.h.

76{this, "BadChanKey", "LArBadChannelSC", "SG key for LArBadChan object"};

◆ m_bcMask

LArBadChannelMask LArDigitalTriggMonAlg::m_bcMask {true}
private

Handle to bad-channel mask.

Definition at line 75 of file LArDigitalTriggMonAlg.h.

75{true}; //isSC=true

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArDigitalTriggMonAlg::m_cablingKey {this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"}
private

Definition at line 66 of file LArDigitalTriggMonAlg.h.

66{this, "CablingSCKey","LArOnOffIdMapSC","SG Key of LArOnOffIdMapping object"};

◆ m_caloSamplingToLyrNS

const std::array<unsigned,CaloSampling::Unknown> LArDigitalTriggMonAlg::m_caloSamplingToLyrNS
private
Initial value:

Definition at line 100 of file LArDigitalTriggMonAlg.h.

100 {
101 EMBPNS, //CALOSAMPLING(PreSamplerB, 1, 0) // 0
102 EMB1NS, //CALOSAMPLING(EMB1, 1, 0) // 1
103 EMB2NS, //CALOSAMPLING(EMB2, 1, 0) // 2
104 EMB3NS, //CALOSAMPLING(EMB3, 1, 0) // 3
105 EMECPNS, //CALOSAMPLING(PreSamplerE, 0, 1) // 4
106 EMEC1NS, //CALOSAMPLING(EME1, 0, 1) // 5
107 EMEC2NS, //CALOSAMPLING(EME2, 0, 1) // 6
108 EMEC3NS, //CALOSAMPLING(EME3, 0, 1) // 7
109 HECNS, //CALOSAMPLING(HEC0, 0, 1) // 8
110 HECNS, //CALOSAMPLING(HEC0, 0, 1) // 9
111 HECNS, //CALOSAMPLING(HEC0, 0, 1) // 19
112 HECNS, //CALOSAMPLING(HEC0, 0, 1) // 11
113 MAXLYRNS, //CALOSAMPLING(TileBar0, 1, 0) // 12
114 MAXLYRNS, //CALOSAMPLING(TileBar1, 1, 0) // 13
115 MAXLYRNS, //CALOSAMPLING(TileBar2, 1, 0) // 14
116 MAXLYRNS, //CALOSAMPLING(TileGap1, 1, 0) // 15
117 MAXLYRNS, //CALOSAMPLING(TileGap2, 1, 0) // 16
118 MAXLYRNS, // CALOSAMPLING(TileGap3, 1, 0) // 17
119 MAXLYRNS, //CALOSAMPLING(TileExt0, 1, 0) // 18
120 MAXLYRNS, //CALOSAMPLING(TileExt1, 1, 0) // 19
121 MAXLYRNS, //CALOSAMPLING(TileExt2, 1, 0) // 20
122 FCAL1NS, //CALOSAMPLING(FCAL0, 0, 1) // 21
123 FCAL2NS, //CALOSAMPLING(FCAL1, 0, 1) // 22
124 FCAL3NS, //ALOSAMPLING(FCAL2, 0, 1) // 23
125 MAXLYRNS, //CALOSAMPLING(MINIFCAL0, 0, 1) // 24
126 MAXLYRNS, //CALOSAMPLING(MINIFCAL1, 0, 1) // 25
127 MAXLYRNS, //CALOSAMPLING(MINIFCAL2, 0, 1) // 26
128 MAXLYRNS, //CALOSAMPLING(MINIFCAL3, 0, 1) // 27
129 };

◆ m_caloSuperCellMgrKey

SG::ReadCondHandleKey<CaloSuperCellDetDescrManager> LArDigitalTriggMonAlg::m_caloSuperCellMgrKey
private
Initial value:
{this
,"CaloSuperCellDetDescrManager"
,"CaloSuperCellDetDescrManager"
,"SG key of the resulting CaloSuperCellDetDescrManager"}

Handle to Super Cell DD Manager.

Definition at line 83 of file LArDigitalTriggMonAlg.h.

83 {this
84 ,"CaloSuperCellDetDescrManager"
85 ,"CaloSuperCellDetDescrManager"
86 ,"SG key of the resulting CaloSuperCellDetDescrManager"};

◆ 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_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_digitContainerKey

SG::ReadHandleKey<LArDigitContainer> LArDigitalTriggMonAlg::m_digitContainerKey {this,"LArDigitContainerKey","","SG key of LArDigitContainer read from Bytestream"}
private

Handle to EventData (input)

Definition at line 69 of file LArDigitalTriggMonAlg.h.

69{this,"LArDigitContainerKey","","SG key of LArDigitContainer read from Bytestream"}; //raw ADC 12 bits - ADC axis up to 4096

◆ 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_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_isADCBaseline

Gaudi::Property<bool> LArDigitalTriggMonAlg::m_isADCBaseline {this,"isADCBas",false,"Set true for ADC_BAS (implies dividing ADC-value by 8)"}
private

Definition at line 56 of file LArDigitalTriggMonAlg.h.

56{this,"isADCBas",false,"Set true for ADC_BAS (implies dividing ADC-value by 8)"};

◆ m_keyPedestalSC

SG::ReadCondHandleKey<ILArPedestal> LArDigitalTriggMonAlg::m_keyPedestalSC {this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal CDO"}
private

Handle to pedestal.

Definition at line 80 of file LArDigitalTriggMonAlg.h.

80{this,"LArPedestalKeySC","LArPedestalSC","SG key of LArPedestal CDO"};

◆ m_LArOnlineIDHelper

const LArOnline_SuperCellID* LArDigitalTriggMonAlg::m_LArOnlineIDHelper =nullptr
private

Definition at line 150 of file LArDigitalTriggMonAlg.h.

◆ m_LatomeDetBinMappingQ

const std::map<unsigned, unsigned> LArDigitalTriggMonAlg::m_LatomeDetBinMappingQ
private
Initial value:
{
{0x48, 1},
{0x4c, 3},
{0x44, 11},
{0x4a, 27},
{0x42, 43},
{0x41, 59},
{0x49, 75},
{0x43, 91},
{0x4b,107},
{0x47,115}
}

Definition at line 133 of file LArDigitalTriggMonAlg.h.

133 {
134 {0x48, 1}, //FCALC
135 {0x4c, 3}, //EMECC/HEC
136 {0x44, 11}, //EMECC
137 {0x4a, 27}, //EMB/EMECC
138 {0x42, 43}, //EMBC
139 {0x41, 59}, //EMBA
140 {0x49, 75}, //EMB/EMECA
141 {0x43, 91}, //EMECA
142 {0x4b,107}, //EMEC/HECA
143 {0x47,115} //FCALA
144 };

◆ m_LATOMEHeaderContainerKey

SG::ReadHandleKey<LArLATOMEHeaderContainer> LArDigitalTriggMonAlg::m_LATOMEHeaderContainerKey {this,"LArLATOMEHeaderContainerKey","SC_LATOME_HEADER","SG key of LArLATOMEHeaderContainer read from Bytestream"}
private

Definition at line 72 of file LArDigitalTriggMonAlg.h.

72{this,"LArLATOMEHeaderContainerKey","SC_LATOME_HEADER","SG key of LArLATOMEHeaderContainer read from Bytestream"};

◆ m_layerNames

StringArrayProperty LArDigitalTriggMonAlg::m_layerNames
private
Initial value:
{this, "LayerNames", {"EMBPC", "EMBPA", "EMB1C", "EMB1A", "EMB2C", "EMB2A", "EMB3C", "EMB3A", "EMECPC", "EMECPA", "EMEC1C", "EMEC1A", "EMEC2C", "EMEC2A", "EMEC3C", "EMEC3A", "HECC", "HECA", "FCAL1C", "FCAL1A", "FCAL2C", "FCAL2A", "FCAL3C", "FCAL3A", "ALL"},
"Names of individual layers to monitor"}

Definition at line 91 of file LArDigitalTriggMonAlg.h.

91 {this, "LayerNames", {"EMBPC", "EMBPA", "EMB1C", "EMB1A", "EMB2C", "EMB2A", "EMB3C", "EMB3A", "EMECPC", "EMECPA", "EMEC1C", "EMEC1A", "EMEC2C", "EMEC2A", "EMEC3C", "EMEC3A", "HECC", "HECA", "FCAL1C", "FCAL1A", "FCAL2C", "FCAL2A", "FCAL3C", "FCAL3A", "ALL"},
92 "Names of individual layers to monitor"};

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

Gaudi::Property<std::string> LArDigitalTriggMonAlg::m_MonGroupName {this, "LArDigitTriggMonGroupName", "LArDigitTriggMonGroup"}
private

declaration variables used in joboptions

Definition at line 54 of file LArDigitalTriggMonAlg.h.

54{this, "LArDigitTriggMonGroupName", "LArDigitTriggMonGroup"};

◆ m_name

std::string AthMonitorAlgorithm::m_name
privateinherited

Definition at line 371 of file AthMonitorAlgorithm.h.

◆ m_NLatomeBins

Gaudi::Property<unsigned> LArDigitalTriggMonAlg::m_NLatomeBins {this, "NLatomeBins", 117}
private

Definition at line 55 of file LArDigitalTriggMonAlg.h.

55{this, "NLatomeBins", 117};

◆ m_problemsToMask

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

Definition at line 77 of file LArDigitalTriggMonAlg.h.

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

◆ m_rawSCContainerKey

SG::ReadHandleKey<LArRawSCContainer> LArDigitalTriggMonAlg::m_rawSCContainerKey {this,"LArRawSCContainerKey","","SG key of LArRawSCContainer read from Bytestream"}
private

Definition at line 70 of file LArDigitalTriggMonAlg.h.

70{this,"LArRawSCContainerKey","","SG key of LArRawSCContainer read from Bytestream"};

◆ m_rawSCEtRecoContainerKey

SG::ReadHandleKey<LArRawSCContainer> LArDigitalTriggMonAlg::m_rawSCEtRecoContainerKey {this,"LArRawSCEtRecoContainerKey","SC_ET_RECO","SG key of LArRawSCContainer read from Bytestream"}
private

Definition at line 71 of file LArDigitalTriggMonAlg.h.

71{this,"LArRawSCEtRecoContainerKey","SC_ET_RECO","SG key of LArRawSCContainer read from Bytestream"};

◆ m_SCID_helper

const CaloCell_SuperCell_ID* LArDigitalTriggMonAlg::m_SCID_helper =nullptr
private

Definition at line 151 of file LArDigitalTriggMonAlg.h.

◆ m_scMonGroupName

Gaudi::Property<std::string> LArDigitalTriggMonAlg::m_scMonGroupName {this, "SCMonGroup", "SC"}
private

Definition at line 63 of file LArDigitalTriggMonAlg.h.

63{this, "SCMonGroup", "SC"};

◆ m_streams

Gaudi::Property<std::vector<std::string> > LArDigitalTriggMonAlg::m_streams {this, "Streams", {""}}
private

Give the name of the streams you want to monitor:

Definition at line 60 of file LArDigitalTriggMonAlg.h.

60{this, "Streams", {""}};

◆ m_toolLookupMap

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

Definition at line 372 of file AthMonitorAlgorithm.h.

◆ m_toolmapLayerNames_digi

std::map<std::string,int> LArDigitalTriggMonAlg::m_toolmapLayerNames_digi
private

Definition at line 146 of file LArDigitalTriggMonAlg.h.

◆ m_toolmapLayerNames_sc

std::map<std::string,int> LArDigitalTriggMonAlg::m_toolmapLayerNames_sc
private

Definition at line 147 of file LArDigitalTriggMonAlg.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_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_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_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.

◆ MaxEvents

LArDigitalTriggMonAlg.MaxEvents

Definition at line 616 of file LArDigitalTriggMonAlg.py.

◆ Run

LArDigitalTriggMonAlg.Run

Definition at line 607 of file LArDigitalTriggMonAlg.py.

◆ SCData_acc

LArDigitalTriggMonAlg.SCData_acc = LArRawSCDataReadingCfg(flags)

Definition at line 631 of file LArDigitalTriggMonAlg.py.

◆ selStr

dict LArDigitalTriggMonAlg.selStr = {}

Definition at line 13 of file LArDigitalTriggMonAlg.py.

◆ streamTypes

list LArDigitalTriggMonAlg.streamTypes = ["SelectedEnergy", "ADC"]

Definition at line 638 of file LArDigitalTriggMonAlg.py.

◆ useTrigger

LArDigitalTriggMonAlg.useTrigger

Definition at line 613 of file LArDigitalTriggMonAlg.py.


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