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

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

815{
816 // int NLatomeBins = 117;
817 int detStartingBin=m_NLatomeBins;
818 const unsigned detID = sourceID >> 16;
819 const unsigned value = sourceID & 0xF;
820 auto mapit=m_LatomeDetBinMappingQ.find(detID);
821 if (mapit!=m_LatomeDetBinMappingQ.end()) {
822 detStartingBin=mapit->second;
823 }
824
825 unsigned binx = detStartingBin+value;
826 if (binx>m_NLatomeBins){
827 ATH_MSG_WARNING("something wrong with binning, filling overflowbin");
828 binx=m_NLatomeBins;
829 }
830
831 return binx;
832}

◆ 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(SG::AllowEmpty));
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(SG::AllowEmpty));
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 795 of file LArDigitalTriggMonAlg.cxx.

796{
797 if (m_LArOnlineIDHelper->isEMBchannel(id)) {
798 if(side==0) return 0;
799 else return 1;
800 } else if (m_LArOnlineIDHelper->isEMECchannel(id)) {
801 if(side==0) return 2;
802 else return 3;
803 } else if (m_LArOnlineIDHelper->isHECchannel(id)) {
804 if(side==0) return 4;
805 else return 5;
806 } else {
807 if(side==0) return 6;
808 else return 7;
809 }
810}
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 660 of file LArDigitalTriggMonAlg.py.

◆ AtlasVersion

LArDigitalTriggMonAlg.AtlasVersion

Definition at line 635 of file LArDigitalTriggMonAlg.py.

◆ cfg

LArDigitalTriggMonAlg.cfg = MainServicesCfg(flags)

Definition at line 642 of file LArDigitalTriggMonAlg.py.

◆ doFullMonMT

LArDigitalTriggMonAlg.doFullMonMT

Definition at line 636 of file LArDigitalTriggMonAlg.py.

◆ Files

LArDigitalTriggMonAlg.Files

Definition at line 630 of file LArDigitalTriggMonAlg.py.

◆ flags

LArDigitalTriggMonAlg.flags = initConfigFlags()

Definition at line 625 of file LArDigitalTriggMonAlg.py.

◆ HISTFileName

LArDigitalTriggMonAlg.HISTFileName

Definition at line 632 of file LArDigitalTriggMonAlg.py.

◆ larLATOMEBuilderAlg

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

Definition at line 656 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 637 of file LArDigitalTriggMonAlg.py.

◆ Run

LArDigitalTriggMonAlg.Run

Definition at line 628 of file LArDigitalTriggMonAlg.py.

◆ SCData_acc

LArDigitalTriggMonAlg.SCData_acc = LArRawSCDataReadingCfg(flags)

Definition at line 652 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 659 of file LArDigitalTriggMonAlg.py.

◆ useTrigger

LArDigitalTriggMonAlg.useTrigger

Definition at line 634 of file LArDigitalTriggMonAlg.py.


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