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

#include <TrigMETMonitorAlgorithm.h>

Inheritance diagram for TrigMETMonitorAlgorithm:

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

 TrigMETMonitorAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TrigMETMonitorAlgorithm ()
virtual StatusCode initialize () override
 initialize
virtual StatusCode fillHistograms (const EventContext &ctx) const override
 adds event to the monitoring histograms
virtual StatusCode execute (const EventContext &ctx) const override
 Applies filters and trigger requirements.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by reference.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by reference.
template<typename... T>
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, T &&... variables) const
 Fills a variadic list of variables to a group by reference.
void fill (const std::string &groupName, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by name.
void fill (const std::string &groupName, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by name.
template<typename... T>
void fill (const std::string &groupName, T &&... variables) const
 Fills a variadic list of variables to a group by name.
Environment_t environment () const
 Accessor functions for the environment.
Environment_t envStringToEnum (const std::string &str) const
 Convert the environment string from the python configuration to an enum object.
DataType_t dataType () const
 Accessor functions for the data type.
DataType_t dataTypeStringToEnum (const std::string &str) const
 Convert the data type string from the python configuration to an enum object.
const ToolHandle< GenericMonitoringTool > & getGroup (const std::string &name) const
 Get a specific monitoring tool from the tool handle array.
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool () const
 Get the trigger decision tool member.
bool trigChainsArePassed (const std::vector< std::string > &vTrigNames) const
 Check whether triggers are passed.
SG::ReadHandle< xAOD::EventInfoGetEventInfo (const EventContext &) const
 Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
virtual float lbAverageInteractionsPerCrossing (const EventContext &ctx) const
 Calculate the average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx) const
 Calculate instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx) const
 Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx) const
 Calculate the instantaneous luminosity per bunch crossing.
virtual double lbDuration (const EventContext &ctx) const
 Calculate the duration of the luminosity block (in seconds).
virtual float lbAverageLivefraction (const EventContext &ctx) const
 Calculate the average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx) const
 Calculate the live fraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx) const
 Calculate the average integrated luminosity multiplied by the live fraction.
virtual StatusCode parseList (const std::string &line, std::vector< std::string > &result) const
 Parse a string into a vector.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual 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
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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

str nightly = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CommonInputs/'
str file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1'
 flags = initConfigFlags()
 Files
 isMC
 HISTFileName
 cfg = MainServicesCfg(flags)
 trigMETMonitorAcc = TrigMETMonConfig(flags)
 withDetails

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

typedef std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

double signed_log (double e, double epsilon) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< xAOD::MissingETContainerm_offline_met_key {this, "offline_met_key", "MET_Reference_AntiKt4EMPFlow", "Offline met container name"}
SG::ReadHandleKey< xAOD::ElectronContainerm_hlt_electron_key {this, "hlt_electron_key", "HLT_egamma_Electrons_GSF", "HLT electron container name"}
SG::ReadHandleKey< xAOD::MuonContainerm_hlt_muon_key {this, "hlt_muon_key", "HLT_MuonsCB_FS", "HLT muon container name"}
SG::ReadHandleKey< xAOD::CaloClusterContainerm_topoclusters_key {this, "topoclusters_key", "HLT_TopoCaloClustersLCFS", "HLT topoclusters container name"}
SG::ReadHandleKey< xAOD::TrackParticleContainerm_tracks_key {this, "tracks_key", "HLT_IDTrack_FS_FTF", "HLT tracks container name"}
SG::ReadHandleKey< xAOD::VertexContainerm_vertex_key {this, "vertex_key", "HLT_IDVertex_FS", "HLT vertex container name"}
SG::ReadHandleKey< xAOD::VertexContainerm_offline_vertex_key {this, "offline_vertex_key", "PrimaryVertices", "Offline vertex container name"}
SG::ReadHandleKey< xAOD::EnergySumRoIm_lvl1_roi_key {this, "l1_roi_key", "", "L1 energy sum ROI container name"}
SG::ReadHandleKey< xAOD::jFexMETRoIContainerm_l1_jFexMet_key {this, "l1_jFexMet_key", "L1_jFexMETRoI", "L1 jFex MET container name"}
SG::ReadHandleKey< xAOD::jFexSumETRoIContainerm_l1_jFexSumEt_key {this, "l1_jFexSumEt_key", "L1_jFexSumETRoI", "L1 jFex sumEt container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexJwojScalar_key {this, "l1_gFexJwojScalar_key", "L1_gScalarEJwoj", "L1 gFex JWOJ Et and sumEt container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexJwojMETComponents_key {this, "l1_gFexJwojMETComponents_key", "L1_gMETComponentsJwoj", "L1 gFex JWOJ Ex and Ey container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexJwojMHTComponents_key {this, "l1_gFexJwojMHTComponents_key", "L1_gMHTComponentsJwoj", "L1 gFex JWOJ Hard Term Ex and Ey container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexJwojMSTComponents_key {this, "l1_gFexJwojMSTComponents_key", "L1_gMSTComponentsJwoj", "L1 gFex JWOJ Soft Term Ex and Ey container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexNCMETScalar_key {this, "l1_gFexNCMETScalar_key", "L1_gScalarENoiseCut", "L1 gFex NC Et and sumEt container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexNCMETComponents_key {this, "l1_gFexNCMETComponents_key", "L1_gMETComponentsNoiseCut", "L1 gFex NC Ex and Ey container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexRhoMETScalar_key {this, "l1_gFexRhoMETScalar_key", "L1_gScalarERms", "L1 gFex Rho Et and sumEt container name"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_l1_gFexRhoMETComponents_key {this, "l1_gFexRhoMETComponents_key", "L1_gMETComponentsRms", "L1 gFex Rho Ex and Ey container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_cell_met_key {this, "hlt_cell_key", "HLT_MET_cell", "HLT Cell MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_mht_met_key {this, "hlt_mht_key", "HLT_MET_mht", "HLT MHT MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_tc_met_key {this, "hlt_tc_key", "HLT_MET_tc", "HLT TC MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_tc_em_met_key {this, "hlt_tc_em_key", "HLT_MET_tc_em", "HLT TC EM MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_tcpufit_met_key {this, "hlt_tcpufit_key", "HLT_MET_tcpufit", "HLT TCPufit MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_tcpufit_sig30_met_key {this, "hlt_tcpufit_sig30_key", "HLT_MET_tcpufit_sig30", "HLT TCPufit sig30 MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_trkmht_met_key {this, "hlt_trkmht_key", "HLT_MET_trkmht", "HLT TrkMht MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_pfsum_met_key {this, "hlt_pfsum_key", "HLT_MET_pfsum", "HLT Pfsum MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_pfsum_cssk_met_key {this, "hlt_pfsum_cssk_key", "HLT_MET_pfsum_cssk", "HLT Pfsum CSSK MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_pfsum_vssk_met_key {this, "hlt_pfsum_vssk_key", "HLT_MET_pfsum_vssk", "HLT Pfsum VSSK MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_pfopufit_met_key {this, "hlt_pfopufit_key", "HLT_MET_pfopufit", "HLT PfoPufit MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_pfopufit_sig30_met_key {this, "hlt_pfopufit_sig30_key", "HLT_MET_pfopufit_sig30", "HLT PfoPufit sig30 MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_cvfpufit_met_key {this, "hlt_cvfpufit_key", "HLT_MET_cvfpufit", "HLT CvfPufit MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_mhtpufit_pf_met_key {this, "hlt_mhtpufit_pf_key", "HLT_MET_mhtpufit_pf", "HLT MhtPufitPf MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_mhtpufit_em_met_key {this, "hlt_mhtpufit_em_key", "HLT_MET_mhtpufit_em", "HLT MhtPufitEm MET container name"}
SG::ReadHandleKey< xAOD::TrigMissingETContainerm_hlt_met_nn_key {this, "hlt_met_nn_key", "HLT_MET_nn", "HLT MET NN container name"}
Gaudi::Property< std::vector< std::string > > m_l1Chains {this, "L1Chains", {}, "The L1 chains to monitor"}
Gaudi::Property< std::vector< std::string > > m_hltChains {this, "HLTChains", {}, "The HLT shifter chains to monitor"}
Gaudi::Property< std::vector< std::string > > m_hltChainsVal {this, "HLTChainsVal", {}, "The HLT val chains to monitor"}
Gaudi::Property< std::vector< std::string > > m_hltChainsT0 {this, "HLTChainsT0", {}, "The HLT t0 chains to monitor"}
Gaudi::Property< std::vector< std::string > > m_hltChainEl {this, "HLTChainEl", {}, "The HLT Electron primary chain to use for monitoring plots"}
Gaudi::Property< std::vector< std::string > > m_hltChainMu {this, "HLTChainMu", {}, "The HLT Muon primary chain to use for monitoring plots"}
Gaudi::Property< std::vector< std::string > > m_algsL1 {this, "algsL1", {}, "L1 algorithms to monitor"}
Gaudi::Property< std::vector< std::string > > m_algsHLT {this, "algsHLT", {}, "HLT algorithms to monitor"}
Gaudi::Property< std::vector< std::string > > m_algsHLTPreSel {this, "algsHLTPreSel", {}, "HLTPreSel algorithms to monitor"}
Gaudi::Property< std::vector< std::string > > m_LArNoiseBurstVetoAlgs {this, "LArNoiseBurstVetoAlgs", {}, "MET histograms with LAr NoiseBurst Veto Applied"}
Gaudi::Property< std::vector< std::string > > m_algsHLT2d {this, "algsHLT2d", {}, "HLT algorithms for 2d eta-phi plots"}
Gaudi::Property< std::vector< std::string > > m_algsHLTExpert {this, "algsHLTExpert", {}, "HLT algorithms for Expert"}
Gaudi::Property< std::vector< std::string > > m_algsMET2d_tcpufit {this, "algsMET2d_tcpufit", {}, "HLT algorithms for 2D MET wrt tcpufit"}
Gaudi::Property< std::vector< std::string > > m_compNames {this, "compNames", {}, "Calorimeter component names"}
Gaudi::Property< std::vector< std::string > > m_bitNames {this, "bitNames", {}, "Status bit names"}
Gaudi::Property< int > m_L1MetAlg {this, "L1MetAlg", 1, "L1 MET algorithm for PreSel"}
Gaudi::Property< double > m_L1MetCut {this, "L1MetCut", 50.0, "L1 MET cut for PreSel"}
Gaudi::Property< double > m_electronPtCut {this, "electronPtCut", 0.0, "Electron pt cut for leading electron"}
Gaudi::Property< double > m_electronEtaCut {this, "electronEtaCut", 0.0, "Electron eta cut for leading electron"}
Gaudi::Property< double > m_muonPtCut {this, "muonPtCut", 0.0, "Muon pt cut for leading muon"}
Gaudi::Property< double > m_muonEtaCut {this, "muonEtaCut", 0.0, "Muon eta cut for leading muon"}
Gaudi::Property< std::vector< std::string > > m_signalLepAlgs {this, "signalLepAlgs", {}, "Signal lepton MET histograms"}
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 37 of file TrigMETMonitorAlgorithm.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 };

Constructor & Destructor Documentation

◆ TrigMETMonitorAlgorithm()

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

Definition at line 10 of file TrigMETMonitorAlgorithm.cxx.

11 : AthMonitorAlgorithm(name,pSvcLocator)
12{
13}
Base class for Athena Monitoring Algorithms.

◆ ~TrigMETMonitorAlgorithm()

TrigMETMonitorAlgorithm::~TrigMETMonitorAlgorithm ( )
virtual

Definition at line 16 of file TrigMETMonitorAlgorithm.cxx.

16{}

Member Function Documentation

◆ 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(ctx)) {
83 ATH_MSG_DEBUG("Event rejected due to filter tool.");
84 return StatusCode::SUCCESS;
85 }
86 }
87
88 // Trigger: If there is a decision tool and the chains fail, skip the event.
90 ATH_MSG_DEBUG("Event rejected due to trigger filter.");
91 return StatusCode::SUCCESS;
92 }
93
94 ATH_MSG_DEBUG("Event accepted!");
95 return fillHistograms(ctx);
96}
#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 & AthCommonAlgorithm< 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 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ fillHistograms()

StatusCode TrigMETMonitorAlgorithm::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 60 of file TrigMETMonitorAlgorithm.cxx.

60 {
61 using namespace Monitored;
62
63
64 if(m_trigDecTool->ExperimentalAndExpertMethods().isHLTTruncated()){
65 ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis");
66 return StatusCode::SUCCESS;
67 } // ATR-31454
68
69
70 // access event info container
71 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_EventInfoKey, ctx);
72 if (! eventInfo.isValid() ){
73 ATH_MSG_DEBUG("Container "<< eventInfo << " does not exist");
74 }
75
76 // access lepton containers
77 SG::ReadHandle<xAOD::ElectronContainer> hlt_electron_cont(m_hlt_electron_key, ctx);
78 if (! hlt_electron_cont.isValid() ) {
79 ATH_MSG_DEBUG("Container "<< m_hlt_electron_key << " does not exist");
80 }
81
82 SG::ReadHandle<xAOD::MuonContainer> hlt_muon_cont(m_hlt_muon_key, ctx);
83 if (! hlt_muon_cont.isValid() ) {
84 ATH_MSG_DEBUG("Container "<< m_hlt_muon_key << " does not exist");
85 }
86
87 // access topoclusters container
88 SG::ReadHandle<xAOD::CaloClusterContainer> hlt_topoclusters_cont(m_topoclusters_key, ctx);
89 if (! hlt_topoclusters_cont.isValid() ) {
90 ATH_MSG_DEBUG("Container "<< m_topoclusters_key << " does not exist");
91 }
92
93 // access tracks container
94 SG::ReadHandle<xAOD::TrackParticleContainer> hlt_tracks_cont(m_tracks_key, ctx);
95 if (! hlt_tracks_cont.isValid() ) {
96 ATH_MSG_DEBUG("Container "<< m_tracks_key << " does not exist");
97 }
98
99 // access vertex container
100 SG::ReadHandle<xAOD::VertexContainer> hlt_vertex_cont(m_vertex_key, ctx);
101 if (! hlt_vertex_cont.isValid() ) {
102 ATH_MSG_DEBUG("Container "<< m_vertex_key << " does not exist");
103 }
104
105 SG::ReadHandle<xAOD::VertexContainer> offline_vertex_cont(m_offline_vertex_key, ctx);
106 if (! offline_vertex_cont.isValid() ) {
107 ATH_MSG_DEBUG("Container "<< m_offline_vertex_key << " does not exist");
108 }
109
110 // access offline met containers
111 SG::ReadHandle<xAOD::MissingETContainer> offline_met_cont(m_offline_met_key, ctx);
112 if (! offline_met_cont.isValid() ) {
113 ATH_MSG_DEBUG("Container "<< m_offline_met_key << " does not exist");
114 }
115
116 // access L1 met containers
117 std::optional<SG::ReadHandle<xAOD::EnergySumRoI>> l1_roi_cont_rh;
118 const xAOD::EnergySumRoI* l1_roi_cont = nullptr;
119 if (!m_lvl1_roi_key.empty()) {
120 l1_roi_cont_rh.emplace(m_lvl1_roi_key, ctx);
121 if (l1_roi_cont_rh->isValid()) l1_roi_cont = l1_roi_cont_rh->cptr();
122 }
123
124 // access L1 Fex met containers
125 SG::ReadHandle<xAOD::jFexMETRoIContainer> l1_jFexMet_cont(m_l1_jFexMet_key, ctx);
126 if (! l1_jFexMet_cont.isValid() ) {
127 ATH_MSG_DEBUG("Container "<< m_l1_jFexMet_key << " does not exist");
128 }
129 SG::ReadHandle<xAOD::jFexSumETRoIContainer> l1_jFexSumEt_cont(m_l1_jFexSumEt_key, ctx);
130 if (! l1_jFexSumEt_cont.isValid() ) {
131 ATH_MSG_DEBUG("Container "<< m_l1_jFexSumEt_key << " does not exist");
132 }
133 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexJwojScalar_cont(m_l1_gFexJwojScalar_key, ctx);
134 if (! l1_gFexJwojScalar_cont.isValid() ) {
135 ATH_MSG_DEBUG("Container "<< m_l1_gFexJwojScalar_key << " does not exist");
136 }
137 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexJwojMETComponents_cont(m_l1_gFexJwojMETComponents_key, ctx);
138 if (! l1_gFexJwojMETComponents_cont.isValid() ) {
139 ATH_MSG_DEBUG("Container "<< m_l1_gFexJwojMETComponents_key << " does not exist");
140 }
141 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexJwojMHTComponents_cont(m_l1_gFexJwojMHTComponents_key, ctx);
142 if (! l1_gFexJwojMHTComponents_cont.isValid() ) {
143 ATH_MSG_DEBUG("Container "<< m_l1_gFexJwojMHTComponents_key << " does not exist");
144 }
145 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexJwojMSTComponents_cont(m_l1_gFexJwojMSTComponents_key, ctx);
146 if (! l1_gFexJwojMSTComponents_cont.isValid() ) {
147 ATH_MSG_DEBUG("Container "<< m_l1_gFexJwojMSTComponents_key << " does not exist");
148 }
149 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexNCMETScalar_cont(m_l1_gFexNCMETScalar_key, ctx);
150 if (! l1_gFexNCMETScalar_cont.isValid() ) {
151 ATH_MSG_DEBUG("Container "<< m_l1_gFexNCMETScalar_key << " does not exist");
152 }
153 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexNCMETComponents_cont(m_l1_gFexNCMETComponents_key, ctx);
154 if (! l1_gFexNCMETComponents_cont.isValid() ) {
155 ATH_MSG_DEBUG("Container "<< m_l1_gFexNCMETComponents_key << " does not exist");
156 }
157 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexRhoMETScalar_cont(m_l1_gFexRhoMETScalar_key, ctx);
158 if (! l1_gFexRhoMETScalar_cont.isValid() ) {
159 ATH_MSG_DEBUG("Container "<< m_l1_gFexRhoMETScalar_key << " does not exist");
160 }
161 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> l1_gFexRhoMETComponents_cont(m_l1_gFexRhoMETComponents_key, ctx);
162 if (! l1_gFexRhoMETComponents_cont.isValid() ) {
163 ATH_MSG_DEBUG("Container "<< m_l1_gFexRhoMETComponents_key << " does not exist");
164 }
165
166 // access HLT met containers
167 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_cell_met_cont(m_hlt_cell_met_key, ctx);
168 if (! hlt_cell_met_cont.isValid() ) {
169 ATH_MSG_DEBUG("Container "<< m_hlt_cell_met_key << " does not exist");
170 }
171
172 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_mht_met_cont(m_hlt_mht_met_key, ctx);
173 if (! hlt_mht_met_cont.isValid() ) {
174 ATH_MSG_DEBUG("Container "<< m_hlt_mht_met_key << " does not exist");
175 }
176
177 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tc_met_cont(m_hlt_tc_met_key, ctx);
178 if (! hlt_tc_met_cont.isValid() ) {
179 ATH_MSG_DEBUG("Container "<< m_hlt_tc_met_key << " does not exist");
180 }
181
182 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tc_em_met_cont(m_hlt_tc_em_met_key, ctx);
183 if (! hlt_tc_em_met_cont.isValid() ) {
184 ATH_MSG_DEBUG("Container "<< m_hlt_tc_em_met_key << " does not exist");
185 }
186
187 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tcpufit_met_cont(m_hlt_tcpufit_met_key, ctx);
188 if (! hlt_tcpufit_met_cont.isValid() ) {
189 ATH_MSG_DEBUG("Container "<< m_hlt_tcpufit_met_key << " does not exist");
190 }
191
192 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tcpufit_sig30_met_cont(m_hlt_tcpufit_sig30_met_key, ctx);
193 if (! hlt_tcpufit_sig30_met_cont.isValid() ) {
194 ATH_MSG_DEBUG("Container "<< m_hlt_tcpufit_sig30_met_key << " does not exist");
195 }
196
197 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_trkmht_met_cont(m_hlt_trkmht_met_key, ctx);
198 if (! hlt_trkmht_met_cont.isValid() ) {
199 ATH_MSG_DEBUG("Container "<< m_hlt_trkmht_met_key << " does not exist");
200 }
201
202 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_pfsum_met_cont(m_hlt_pfsum_met_key, ctx);
203 if (! hlt_pfsum_met_cont.isValid() ) {
204 ATH_MSG_DEBUG("Container "<< m_hlt_pfsum_met_key << " does not exist");
205 }
206
207 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_pfsum_cssk_met_cont(m_hlt_pfsum_cssk_met_key, ctx);
208 if (! hlt_pfsum_cssk_met_cont.isValid() ) {
209 ATH_MSG_DEBUG("Container "<< m_hlt_pfsum_cssk_met_key << " does not exist");
210 }
211
212 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_pfsum_vssk_met_cont(m_hlt_pfsum_vssk_met_key, ctx);
213 if (! hlt_pfsum_vssk_met_cont.isValid() ) {
214 ATH_MSG_DEBUG("Container "<< m_hlt_pfsum_vssk_met_key << " does not exist");
215 }
216
217 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_pfopufit_met_cont(m_hlt_pfopufit_met_key, ctx);
218 if (! hlt_pfopufit_met_cont.isValid() ) {
219 ATH_MSG_DEBUG("Container "<< m_hlt_pfopufit_met_key << " does not exist");
220 }
221
222 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_pfopufit_sig30_met_cont(m_hlt_pfopufit_sig30_met_key, ctx);
223 if (! hlt_pfopufit_sig30_met_cont.isValid() ) {
224 ATH_MSG_DEBUG("Container "<< m_hlt_pfopufit_sig30_met_key << " does not exist");
225 }
226
227 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_cvfpufit_met_cont(m_hlt_cvfpufit_met_key, ctx);
228 if (! hlt_cvfpufit_met_cont.isValid() ) {
229 ATH_MSG_DEBUG("Container "<< m_hlt_cvfpufit_met_key << " does not exist");
230 }
231
232 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_mhtpufit_pf_met_cont(m_hlt_mhtpufit_pf_met_key, ctx);
233 if (! hlt_mhtpufit_pf_met_cont.isValid() ) {
234 ATH_MSG_DEBUG("Container "<< m_hlt_mhtpufit_pf_met_key << " does not exist");
235 }
236
237 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_mhtpufit_em_met_cont(m_hlt_mhtpufit_em_met_key, ctx);
238 if (! hlt_mhtpufit_em_met_cont.isValid() ) {
239 ATH_MSG_DEBUG("Container "<< m_hlt_mhtpufit_em_met_key << " does not exist");
240 }
241
242 SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_met_nn_cont(m_hlt_met_nn_key, ctx);
243 if (! hlt_met_nn_cont.isValid() ) {
244 ATH_MSG_DEBUG("Container "<< m_hlt_met_nn_key << " does not exist");
245 }
246
247 // define variables
248 auto act_IPBC = Monitored::Scalar<float>("act_IPBC",0.0);
249 auto hlt_el_mult = Monitored::Scalar<int>("hlt_el_mult",0.0);
250 auto hlt_el_pt = Monitored::Scalar<float>("hlt_el_pt",0.0);
251 auto hlt_mu_mult = Monitored::Scalar<int>("hlt_mu_mult",0.0);
252 auto hlt_mu_pt = Monitored::Scalar<float>("hlt_mu_pt",0.0);
253
254 auto hlt_topoclusters_mult = Monitored::Scalar<int>("hlt_topoclusters_mult",0.0);
255 auto hlt_topoclusters_pt = Monitored::Scalar<float>("hlt_topoclusters_pt",0.0);
256 auto hlt_tracks_mult = Monitored::Scalar<int>("hlt_tracks_mult",0.0);
257 auto hlt_tracks_pt = Monitored::Scalar<float>("hlt_tracks_pt",0.0);
258 auto hlt_tracks_phi = Monitored::Scalar<float>("hlt_tracks_phi",0.0);
259 auto hlt_tracks_eta = Monitored::Scalar<float>("hlt_tracks_eta",0.0);
260 auto hlt_tracks_leading_pt = Monitored::Scalar<float>("hlt_tracks_leading_pt",0.0);
261 auto hlt_tracks_vec_sumPt = Monitored::Scalar<float>("hlt_tracks_vec_sumPt",0.0);
262 auto hlt_tracks_sca_sumPt = Monitored::Scalar<float>("hlt_tracks_sca_sumPt",0.0);
263 auto hlt_vertex_mult = Monitored::Scalar<int>("hlt_vertex_mult",0.0);
264 auto hlt_vertex_mult_mu = Monitored::Scalar<int>("hlt_vertex_mult_mu",0.0);
265 auto hlt_vertex_z = Monitored::Scalar<float>("hlt_vertex_z",0.0);
266 auto hlt_vertex_z_diff = Monitored::Scalar<float>("hlt_vertex_z_diff",0.0);
267
268 auto offline_Ex = Monitored::Scalar<float>("offline_Ex",0.0);
269 auto offline_Ey = Monitored::Scalar<float>("offline_Ey",0.0);
270 auto offline_Et = Monitored::Scalar<float>("offline_Et",0.0);
271 auto offline_sumEt = Monitored::Scalar<float>("offline_sumEt",0.0);
272 auto offline_Et_eff = Monitored::Scalar<float>("offline_Et_eff",0.0);
273 auto offline_NoMu_Ex = Monitored::Scalar<float>("offline_NoMu_Ex",0.0);
274 auto offline_NoMu_Ey = Monitored::Scalar<float>("offline_NoMu_Ey",0.0);
275 auto offline_NoMu_Et = Monitored::Scalar<float>("offline_NoMu_Et",0.0);
276 auto offline_NoMu_sumEt = Monitored::Scalar<float>("offline_NoMu_sumEt",0.0);
277 auto offline_NoMu_Et_eff = Monitored::Scalar<float>("offline_NoMu_Et_eff",0.0);
278
279 auto HLT_MET_status = Monitored::Scalar<int>("HLT_MET_status",0.0);
280 auto MET_status = Monitored::Scalar<float>("MET_status",0.0);
281 auto HLT_MET_component = Monitored::Scalar<int>("HLT_MET_component",0.0);
282 auto component_Et = Monitored::Scalar<float>("component_Et",0.0);
283 auto component = Monitored::Scalar<int>("component",0.0);
284 auto component_status = Monitored::Scalar<int>("component_status",0.0);
285 auto component_status_weight = Monitored::Scalar<int>("component_status_weight",0.0);
286
287 // constant floor for log plots
288 double epsilon = 1.189;
289
290 // for histogram filling
291 // Fill. First argument is the tool (GMT) name as defined in the py file,
292 // all others are the variables to be saved.
293 auto tool = getGroup("TrigMETMonitor");
294
295 // access pileup <mu>
296 act_IPBC = eventInfo->actualInteractionsPerCrossing();
297
298 // access lepton values
299 // access events with electron passing primary single electron chain
300 bool passedPrimaryEl = false;
301 for (const std::string& chain : m_hltChainEl){
302 if(getTrigDecisionTool()->isPassed(chain)){
303 passedPrimaryEl = true;
304 break;
305 }
306 }
307 if ( hlt_electron_cont.isValid() && passedPrimaryEl ){
308 hlt_el_mult = hlt_electron_cont->size();
309 fill(tool,hlt_el_mult);
310 if( hlt_electron_cont->size() > 0 ) {
311 for (auto Electron: *hlt_electron_cont) {
312 hlt_el_pt = Electron->pt()/Gaudi::Units::GeV;
313 fill(tool, hlt_el_pt);
314 }
315 }
316 }
317
318 // access events with muon passing primary single muon chain
319 bool passedPrimaryMu = false;
320 for (const std::string& chain : m_hltChainMu){
321 if(getTrigDecisionTool()->isPassed(chain)){
322 passedPrimaryMu = true;
323 break;
324 }
325 }
326 if( hlt_muon_cont.isValid() &&passedPrimaryMu ){
327 hlt_mu_mult = hlt_muon_cont->size();
328 fill(tool,hlt_mu_mult);
329 if ( hlt_muon_cont->size() > 0 ){
330 for(auto Muon : *hlt_muon_cont){
331 hlt_mu_pt = Muon->pt()/Gaudi::Units::GeV;
332 fill(tool, hlt_mu_pt);
333 }
334 }
335 }
336
337 // access topoclusters container
338 if(hlt_topoclusters_cont.isValid() && hlt_topoclusters_cont->size() > 0){
339 hlt_topoclusters_mult = hlt_topoclusters_cont->size();
340 for(auto topoclusters : *hlt_topoclusters_cont){
341 hlt_topoclusters_pt = topoclusters->pt()/Gaudi::Units::GeV;
342 if(hlt_topoclusters_pt > 0){
343 fill(tool, hlt_topoclusters_pt);
344 }
345 }
346
347 if(hlt_topoclusters_mult > 0){
348 fill(tool, hlt_topoclusters_mult);
349 }
350 }
351
352 // access tracks container
353 if( hlt_tracks_cont.isValid() && hlt_tracks_cont->size() > 0){
354 hlt_tracks_mult = hlt_tracks_cont->size();
355 float scalarSumPt = 0.0;
356 float scalarSumPx = 0.0;
357 float scalarSumPy = 0.0;
358 for(auto tracks : *hlt_tracks_cont){
359 float i_track_pt = tracks->pt()/Gaudi::Units::GeV;
360 hlt_tracks_pt = i_track_pt;
361 scalarSumPt += i_track_pt;
362 scalarSumPx += (tracks->p4().Px());
363 scalarSumPy += (tracks->p4().Py());
364
365 if(hlt_tracks_pt > hlt_tracks_leading_pt){
366 hlt_tracks_leading_pt = i_track_pt;
367 }
368
369 if(hlt_tracks_pt > 0){
370 fill(tool, hlt_tracks_pt);
371 }
372
373 if(hlt_tracks_pt > 3){
374 hlt_tracks_eta = (tracks->eta());
375 hlt_tracks_phi = (tracks->phi());
376 fill(tool, hlt_tracks_eta, hlt_tracks_phi);
377 }
378 }
379
380 hlt_tracks_vec_sumPt = std::sqrt(scalarSumPx*scalarSumPx + scalarSumPy*scalarSumPy)/Gaudi::Units::GeV;
381 hlt_tracks_sca_sumPt = scalarSumPt;
382
383 fill(tool, hlt_tracks_mult, hlt_tracks_leading_pt, hlt_tracks_vec_sumPt, hlt_tracks_sca_sumPt);
384 }
385
386 // access vertex container
387 if(hlt_vertex_cont.isValid() && hlt_vertex_cont->size() > 0){
388 hlt_vertex_mult = hlt_vertex_cont->size();
389 hlt_vertex_mult_mu = hlt_vertex_cont->size();
390 const xAOD::Vertex_v1* hlt_vertex = nullptr;
391 for(auto vertex : *hlt_vertex_cont){
392 if(vertex->vertexType() == xAOD::VxType::VertexType::PriVtx){
393 hlt_vertex = vertex;
394 break;
395 }
396 }
397
398 if(hlt_vertex){
399 hlt_vertex_z = hlt_vertex->z();
400 fill(tool, hlt_vertex_z);
401
402 if(offline_vertex_cont.isValid() && offline_vertex_cont->size() > 0){
403 const xAOD::Vertex_v1* offline_vertex = nullptr;
404 for(auto vertex : *offline_vertex_cont){
405 if(vertex->vertexType() == xAOD::VxType::VertexType::PriVtx){
406 offline_vertex = vertex;
407 break;
408 }
409 }
410
411 if(offline_vertex){
412 hlt_vertex_z_diff = hlt_vertex_z - offline_vertex->z();
413 fill(tool, hlt_vertex_z_diff);
414 }
415 }
416 }
417 }else{
418 hlt_vertex_mult = -1;
419 hlt_vertex_mult_mu = 1;
420 act_IPBC = -1.;
421 }
422 fill(tool, hlt_vertex_mult);
423 fill(tool, act_IPBC, hlt_vertex_mult_mu);
424
425 // access offline MET values
426 const xAOD::MissingET *finalTrkMET = 0;
427 const xAOD::MissingET *muonsMET = 0;
428 if ( offline_met_cont.isValid() && offline_met_cont->size() > 0 ) {
429 finalTrkMET = ((*offline_met_cont)["FinalTrk"]);
430 muonsMET = ((*offline_met_cont)["Muons"]);
431
432 if(finalTrkMET) {
433 offline_Ex = - finalTrkMET->mpx()/Gaudi::Units::GeV;
434 offline_Ey = - finalTrkMET->mpy()/Gaudi::Units::GeV;
435 offline_sumEt = finalTrkMET->sumet()/Gaudi::Units::GeV;
436 offline_Et = std::sqrt(offline_Ex*offline_Ex + offline_Ey*offline_Ey);
437 offline_Et_eff = std::sqrt(offline_Ex*offline_Ex + offline_Ey*offline_Ey);
438 fill(tool,offline_Ex,offline_Ey,offline_Et,offline_sumEt);
439
440 if(muonsMET){
441 xAOD::MissingET finalTrkNoMuMET = *finalTrkMET - *muonsMET;
442 offline_NoMu_Ex = - finalTrkNoMuMET.mpx()/Gaudi::Units::GeV;
443 offline_NoMu_Ey = - finalTrkNoMuMET.mpy()/Gaudi::Units::GeV;
444 offline_NoMu_sumEt = finalTrkNoMuMET.sumet()/Gaudi::Units::GeV;
445 offline_NoMu_Et = std::sqrt(offline_NoMu_Ex*offline_NoMu_Ex + offline_NoMu_Ey*offline_NoMu_Ey);
446 offline_NoMu_Et_eff = std::sqrt(offline_NoMu_Ex*offline_NoMu_Ex + offline_NoMu_Ey*offline_NoMu_Ey);
447 fill(tool,offline_NoMu_Ex,offline_NoMu_Ey,offline_NoMu_Et,offline_NoMu_sumEt);
448 }
449 }
450 }
451
452 // access L1 MET values
453 for (const std::string& alg : m_algsL1) {
454 if (alg == "roi" && l1_roi_cont != nullptr) {
455
456 if ((l1_roi_cont->energyX())>-9e12 && (l1_roi_cont->energyX())<9e12 && (l1_roi_cont->energyY())>-9e12 && (l1_roi_cont->energyY())<9e12) {
457 float L1_met_Ex = - l1_roi_cont->energyX()/Gaudi::Units::GeV;
458 float L1_met_Ey = - l1_roi_cont->energyY()/Gaudi::Units::GeV;
459 float L1_met_Et = std::sqrt(L1_met_Ex*L1_met_Ex + L1_met_Ey*L1_met_Ey);
460 float L1_met_sumEt = l1_roi_cont->energyT()/Gaudi::Units::GeV;
461 float L1_met_Ex_log = signed_log(L1_met_Ex, epsilon);
462 float L1_met_Ey_log = signed_log(L1_met_Ey, epsilon);
463 float L1_met_Et_log = signed_log(L1_met_Et, epsilon);
464 float L1_met_sumEt_log = signed_log(L1_met_sumEt, epsilon);
465 TVector3 v(L1_met_Ex, L1_met_Ey, 0.0);
466 float L1_met_phi = v.Phi();
467
468 auto L1_Ex = Monitored::Scalar<float>("L1_"+alg+"_Ex", static_cast<float>(L1_met_Ex));
469 auto L1_Ey = Monitored::Scalar<float>("L1_"+alg+"_Ey", static_cast<float>(L1_met_Ey));
470 auto L1_Et = Monitored::Scalar<float>("L1_"+alg+"_Et", static_cast<float>(L1_met_Et));
471 auto L1_sumEt = Monitored::Scalar<float>("L1_"+alg+"_sumEt", static_cast<float>(L1_met_sumEt));
472 auto L1_Ex_log = Monitored::Scalar<float>("L1_"+alg+"_Ex_log", static_cast<float>(L1_met_Ex_log));
473 auto L1_Ey_log = Monitored::Scalar<float>("L1_"+alg+"_Ey_log", static_cast<float>(L1_met_Ey_log));
474 auto L1_Et_log = Monitored::Scalar<float>("L1_"+alg+"_Et_log", static_cast<float>(L1_met_Et_log));
475 auto L1_sumEt_log = Monitored::Scalar<float>("L1_"+alg+"_sumEt_log", static_cast<float>(L1_met_sumEt_log));
476 auto L1_phi = Monitored::Scalar<float>("L1_"+alg+"_phi", static_cast<float>(L1_met_phi));
477 fill(tool, L1_Ex, L1_Ey, L1_Et, L1_sumEt,
478 L1_Ex_log, L1_Ey_log, L1_Et_log, L1_sumEt_log, L1_phi);
479 }
480 }
481 }
482
483 // access L1 jFex MET values
484 if (l1_jFexMet_cont.isValid() && l1_jFexMet_cont->size() > 0) {
485 float L1_met_Ex = 0;
486 float L1_met_Ey = 0;
487 for (const auto l1_jmet: *l1_jFexMet_cont) {
488 L1_met_Ex += l1_jmet->Ex()/Gaudi::Units::GeV;
489 L1_met_Ey += l1_jmet->Ey()/Gaudi::Units::GeV;
490 }
491 float L1_met_Et = std::sqrt(L1_met_Ex*L1_met_Ex + L1_met_Ey*L1_met_Ey);
492 float L1_met_Ex_log = signed_log(L1_met_Ex, epsilon);
493 float L1_met_Ey_log = signed_log(L1_met_Ey, epsilon);
494 float L1_met_Et_log = signed_log(L1_met_Et, epsilon);
495 TVector3 v(L1_met_Ex, L1_met_Ey, 0.0);
496 float L1_met_phi = v.Phi();
497 auto L1_Ex = Monitored::Scalar<float>("L1_jFex_Ex", static_cast<float>(L1_met_Ex));
498 auto L1_Ey = Monitored::Scalar<float>("L1_jFex_Ey", static_cast<float>(L1_met_Ey));
499 auto L1_Et = Monitored::Scalar<float>("L1_jFex_Et", static_cast<float>(L1_met_Et));
500 auto L1_Ex_log = Monitored::Scalar<float>("L1_jFex_Ex_log", static_cast<float>(L1_met_Ex_log));
501 auto L1_Ey_log = Monitored::Scalar<float>("L1_jFex_Ey_log", static_cast<float>(L1_met_Ey_log));
502 auto L1_Et_log = Monitored::Scalar<float>("L1_jFex_Et_log", static_cast<float>(L1_met_Et_log));
503 auto L1_phi = Monitored::Scalar<float>("L1_jFex_phi", static_cast<float>(L1_met_phi));
504 fill(tool, L1_Ex, L1_Ey, L1_Et, L1_Ex_log, L1_Ey_log, L1_Et_log, L1_phi);
505 }
506 if (l1_jFexSumEt_cont.isValid() && l1_jFexSumEt_cont->size() > 0) {
507 float L1_met_sumEt = 0;
508 for (const auto l1_jsumEt: *l1_jFexSumEt_cont) {
509 L1_met_sumEt += l1_jsumEt->Et_lower()/Gaudi::Units::GeV + l1_jsumEt->Et_upper()/Gaudi::Units::GeV;
510 }
511 float L1_met_sumEt_log = signed_log(L1_met_sumEt, epsilon);
512 auto L1_sumEt = Monitored::Scalar<float>("L1_jFex_sumEt", static_cast<float>(L1_met_sumEt));
513 auto L1_sumEt_log = Monitored::Scalar<float>("L1_jFex_sumEt_log", static_cast<float>(L1_met_sumEt_log));
514 fill(tool, L1_sumEt, L1_sumEt_log);
515 }
516
517 // define L1 gFex MET object
518 const xAOD::gFexGlobalRoI *l1_gmet;
519
520 // access L1 gFex MET values
521 // This will be properly implemented when it's ready
522 if (l1_gFexJwojScalar_cont.isValid() && l1_gFexJwojScalar_cont->size() > 0) {
523 l1_gmet = l1_gFexJwojScalar_cont->at(0);
524 float L1_met_Et = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
525 float L1_met_sumEt = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
526 float L1_met_Et_log = signed_log(L1_met_Et, epsilon);
527 float L1_met_sumEt_log = signed_log(L1_met_sumEt, epsilon);
528 auto L1_Et = Monitored::Scalar<float>("L1_gFexJwoj_Et", static_cast<float>(L1_met_Et));
529 auto L1_Et_log = Monitored::Scalar<float>("L1_gFexJwoj_Et_log", static_cast<float>(L1_met_Et_log));
530 auto L1_sumEt = Monitored::Scalar<float>("L1_gFexJwoj_sumEt", static_cast<float>(L1_met_sumEt));
531 auto L1_sumEt_log = Monitored::Scalar<float>("L1_gFexJwoj_sumEt_log", static_cast<float>(L1_met_sumEt_log));
532 fill(tool, L1_Et, L1_Et_log, L1_sumEt, L1_sumEt_log);
533 }
534
535 if (l1_gFexJwojMETComponents_cont.isValid() && l1_gFexJwojMETComponents_cont->size() > 0) {
536 l1_gmet = l1_gFexJwojMETComponents_cont->at(0);
537 float L1_met_Ex = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
538 float L1_met_Ex_log = signed_log(L1_met_Ex, epsilon);
539 float L1_met_Ey = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
540 float L1_met_Ey_log = signed_log(L1_met_Ey, epsilon);
541 TVector3 v(L1_met_Ex, L1_met_Ey, 0.0);
542 float L1_met_phi = v.Phi();
543 auto L1_Ex = Monitored::Scalar<float>("L1_gFexJwoj_Ex", static_cast<float>(L1_met_Ex));
544 auto L1_Ey = Monitored::Scalar<float>("L1_gFexJwoj_Ey", static_cast<float>(L1_met_Ey));
545 auto L1_Ex_log = Monitored::Scalar<float>("L1_gFexJwoj_Ex_log", static_cast<float>(L1_met_Ex_log));
546 auto L1_Ey_log = Monitored::Scalar<float>("L1_gFexJwoj_Ey_log", static_cast<float>(L1_met_Ey_log));
547 auto L1_phi = Monitored::Scalar<float>("L1_gFexJwoj_phi", static_cast<float>(L1_met_phi));
548 fill(tool, L1_Ex, L1_Ey, L1_Ex_log, L1_Ey_log, L1_phi);
549 }
550
551 if (l1_gFexJwojMHTComponents_cont.isValid() && l1_gFexJwojMHTComponents_cont->size() > 0) {
552 l1_gmet = l1_gFexJwojMHTComponents_cont->at(0);
553 float L1_met_HT_Ex = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
554 float L1_met_HT_Ex_log = signed_log(L1_met_HT_Ex, epsilon);
555 float L1_met_HT_Ey = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
556 float L1_met_HT_Ey_log = signed_log(L1_met_HT_Ey, epsilon);
557 TVector3 v(L1_met_HT_Ex, L1_met_HT_Ey, 0.0);
558 float L1_met_HT_phi = v.Phi();
559 auto L1_HT_Ex = Monitored::Scalar<float>("L1_gFexJwoj_HT_Ex", static_cast<float>(L1_met_HT_Ex));
560 auto L1_HT_Ey = Monitored::Scalar<float>("L1_gFexJwoj_HT_Ey", static_cast<float>(L1_met_HT_Ey));
561 auto L1_HT_Ex_log = Monitored::Scalar<float>("L1_gFexJwoj_HT_Ex_log", static_cast<float>(L1_met_HT_Ex_log));
562 auto L1_HT_Ey_log = Monitored::Scalar<float>("L1_gFexJwoj_HT_Ey_log", static_cast<float>(L1_met_HT_Ey_log));
563 auto L1_HT_phi = Monitored::Scalar<float>("L1_gFexJwoj_HT_phi", static_cast<float>(L1_met_HT_phi));
564 fill(tool, L1_HT_Ex, L1_HT_Ey, L1_HT_Ex_log, L1_HT_Ey_log, L1_HT_phi);
565 }
566
567 if (l1_gFexJwojMSTComponents_cont.isValid() && l1_gFexJwojMSTComponents_cont->size() > 0) {
568 l1_gmet = l1_gFexJwojMSTComponents_cont->at(0);
569 float L1_met_ST_Ex = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
570 float L1_met_ST_Ex_log = signed_log(L1_met_ST_Ex, epsilon);
571 float L1_met_ST_Ey = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
572 float L1_met_ST_Ey_log = signed_log(L1_met_ST_Ey, epsilon);
573 TVector3 v(L1_met_ST_Ex, L1_met_ST_Ey, 0.0);
574 float L1_met_ST_phi = v.Phi();
575 auto L1_ST_Ex = Monitored::Scalar<float>("L1_gFexJwoj_ST_Ex", static_cast<float>(L1_met_ST_Ex));
576 auto L1_ST_Ey = Monitored::Scalar<float>("L1_gFexJwoj_ST_Ey", static_cast<float>(L1_met_ST_Ey));
577 auto L1_ST_Ex_log = Monitored::Scalar<float>("L1_gFexJwoj_ST_Ex_log", static_cast<float>(L1_met_ST_Ex_log));
578 auto L1_ST_Ey_log = Monitored::Scalar<float>("L1_gFexJwoj_ST_Ey_log", static_cast<float>(L1_met_ST_Ey_log));
579 auto L1_ST_phi = Monitored::Scalar<float>("L1_gFexJwoj_ST_phi", static_cast<float>(L1_met_ST_phi));
580 fill(tool, L1_ST_Ex, L1_ST_Ey, L1_ST_Ex_log, L1_ST_Ey_log, L1_ST_phi);
581 }
582
583 if (l1_gFexNCMETScalar_cont.isValid() && l1_gFexNCMETScalar_cont->size() > 0) {
584 l1_gmet = l1_gFexNCMETScalar_cont->at(0);
585 float L1_met_Et = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
586 float L1_met_sumEt = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
587 float L1_met_Et_log = signed_log(L1_met_Et, epsilon);
588 float L1_met_sumEt_log = signed_log(L1_met_sumEt, epsilon);
589 auto L1_Et = Monitored::Scalar<float>("L1_gFexNC_Et", static_cast<float>(L1_met_Et));
590 auto L1_Et_log = Monitored::Scalar<float>("L1_gFexNC_Et_log", static_cast<float>(L1_met_Et_log));
591 auto L1_sumEt = Monitored::Scalar<float>("L1_gFexNC_sumEt", static_cast<float>(L1_met_sumEt));
592 auto L1_sumEt_log = Monitored::Scalar<float>("L1_gFexNC_sumEt_log", static_cast<float>(L1_met_sumEt_log));
593 fill(tool, L1_Et, L1_Et_log, L1_sumEt, L1_sumEt_log);
594 }
595
596 if (l1_gFexNCMETComponents_cont.isValid() && l1_gFexNCMETComponents_cont->size() > 0) {
597 l1_gmet = l1_gFexNCMETComponents_cont->at(0);
598 float L1_met_Ex = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
599 float L1_met_Ex_log = signed_log(L1_met_Ex, epsilon);
600 float L1_met_Ey = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
601 float L1_met_Ey_log = signed_log(L1_met_Ey, epsilon);
602 TVector3 v(L1_met_Ex, L1_met_Ey, 0.0);
603 float L1_met_phi = v.Phi();
604 auto L1_Ex = Monitored::Scalar<float>("L1_gFexNC_Ex", static_cast<float>(L1_met_Ex));
605 auto L1_Ey = Monitored::Scalar<float>("L1_gFexNC_Ey", static_cast<float>(L1_met_Ey));
606 auto L1_Ex_log = Monitored::Scalar<float>("L1_gFexNC_Ex_log", static_cast<float>(L1_met_Ex_log));
607 auto L1_Ey_log = Monitored::Scalar<float>("L1_gFexNC_Ey_log", static_cast<float>(L1_met_Ey_log));
608 auto L1_phi = Monitored::Scalar<float>("L1_gFexNC_phi", static_cast<float>(L1_met_phi));
609 fill(tool, L1_Ex, L1_Ey, L1_Ex_log, L1_Ey_log, L1_phi);
610 }
611
612 if (l1_gFexRhoMETScalar_cont.isValid() && l1_gFexRhoMETScalar_cont->size() > 0) {
613 l1_gmet = l1_gFexRhoMETScalar_cont->at(0);
614 float L1_met_Et = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
615 float L1_met_sumEt = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
616 float L1_met_Et_log = signed_log(L1_met_Et, epsilon);
617 float L1_met_sumEt_log = signed_log(L1_met_sumEt, epsilon);
618 auto L1_Et = Monitored::Scalar<float>("L1_gFexRho_Et", static_cast<float>(L1_met_Et));
619 auto L1_Et_log = Monitored::Scalar<float>("L1_gFexRho_Et_log", static_cast<float>(L1_met_Et_log));
620 auto L1_sumEt = Monitored::Scalar<float>("L1_gFexRho_sumEt", static_cast<float>(L1_met_sumEt));
621 auto L1_sumEt_log = Monitored::Scalar<float>("L1_gFexRho_sumEt_log", static_cast<float>(L1_met_sumEt_log));
622 fill(tool, L1_Et, L1_Et_log, L1_sumEt, L1_sumEt_log);
623 }
624
625 if (l1_gFexRhoMETComponents_cont.isValid() && l1_gFexRhoMETComponents_cont->size() > 0) {
626 l1_gmet = l1_gFexRhoMETComponents_cont->at(0);
627 float L1_met_Ex = l1_gmet->METquantityOne()/Gaudi::Units::GeV;
628 float L1_met_Ex_log = signed_log(L1_met_Ex, epsilon);
629 float L1_met_Ey = l1_gmet->METquantityTwo()/Gaudi::Units::GeV;
630 float L1_met_Ey_log = signed_log(L1_met_Ey, epsilon);
631 TVector3 v(L1_met_Ex, L1_met_Ey, 0.0);
632 float L1_met_phi = v.Phi();
633 auto L1_Ex = Monitored::Scalar<float>("L1_gFexRho_Ex", static_cast<float>(L1_met_Ex));
634 auto L1_Ey = Monitored::Scalar<float>("L1_gFexRho_Ey", static_cast<float>(L1_met_Ey));
635 auto L1_Ex_log = Monitored::Scalar<float>("L1_gFexRho_Ex_log", static_cast<float>(L1_met_Ex_log));
636 auto L1_Ey_log = Monitored::Scalar<float>("L1_gFexRho_Ey_log", static_cast<float>(L1_met_Ey_log));
637 auto L1_phi = Monitored::Scalar<float>("L1_gFexRho_phi", static_cast<float>(L1_met_phi));
638 fill(tool, L1_Ex, L1_Ey, L1_Ex_log, L1_Ey_log, L1_phi);
639 }
640
641 // define TrigMissingET object
642 const xAOD::TrigMissingET *hlt_met = 0;
643
644 // status, component from HLT cell
645 int nComponent = m_compNames.size();
646 int nStatus = m_bitNames.size();
647 if ( hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0 ) {
648 hlt_met = hlt_cell_met_cont->at(0);
649 for (int j=0; j<nStatus; ++j) { //status loop
650 unsigned mask = (1u<<j);
651 if (hlt_met->flag() & mask) {
652 MET_status = 1.;
653 } else {
654 MET_status = 0;
655 }
656 auto mon1 = Monitored::Scalar<std::string>( "HLT_MET_status",m_bitNames[j]);
657 fill(tool,mon1,MET_status);
658 }
659
660 for (int i=0; i<nComponent; ++i) { //component loop
661 float ex = hlt_met->exComponent(i)/Gaudi::Units::GeV;
662 float ey = hlt_met->eyComponent(i)/Gaudi::Units::GeV;
663 component_Et = sqrt(ex*ex+ey*ey);
664 auto mon2 = Monitored::Scalar<std::string>( "HLT_MET_component",m_compNames[i]);
665 fill(tool,mon2,component_Et);
666 }
667
668 for (int i=0; i<nComponent; ++i) { //component loop
669 for (int j=0; j<nStatus; ++j) { //status loop
670 unsigned mask = (1u<<j);
671 if (hlt_met->statusComponent(i) & mask) {
672 component_status_weight = 1.;
673 } else {
674 component_status_weight = 0;
675 }
676 auto mon_bit = Monitored::Scalar<std::string>( "component_status",m_bitNames[j]);
677 auto mon_comp = Monitored::Scalar<std::string>( "component",m_compNames[i]);
678 fill(tool,mon_comp,mon_bit,component_status_weight);
679 }
680 }
681 }
682
683 // get L1 MET for pre-selection
684 float L1_roiMet_Et = 0;
685 if ( l1_roi_cont != nullptr ) {
686 if ((l1_roi_cont->energyX())>-9e12 && (l1_roi_cont->energyX())<9e12 && (l1_roi_cont->energyY())>-9e12 && (l1_roi_cont->energyY())<9e12) {
687 float Ex = - l1_roi_cont->energyX()/Gaudi::Units::GeV;
688 float Ey = - l1_roi_cont->energyY()/Gaudi::Units::GeV;
689 L1_roiMet_Et = std::sqrt(Ex*Ex + Ey*Ey);
690 }
691 }
692 float L1_jFexMet_Et = 0;
693 if (l1_jFexMet_cont.isValid() && l1_jFexMet_cont->size() > 0) {
694 float L1_met_Ex = 0;
695 float L1_met_Ey = 0;
696 for (const auto l1_jmet: *l1_jFexMet_cont) {
697 L1_met_Ex += l1_jmet->Ex()/Gaudi::Units::GeV;
698 L1_met_Ey += l1_jmet->Ey()/Gaudi::Units::GeV;
699 }
700 L1_jFexMet_Et = std::sqrt(L1_met_Ex*L1_met_Ex + L1_met_Ey*L1_met_Ey);
701 }
702 float L1_gFexJWOJMet_Et = 0;
703
704 float L1_PreSelMet_Et = L1_roiMet_Et;
705 if (m_L1MetAlg == 1) L1_PreSelMet_Et = L1_jFexMet_Et;
706 if (m_L1MetAlg == 2) L1_PreSelMet_Et = L1_gFexJWOJMet_Et;
707
708 // access HLT MET values
709 for (const std::string& alg : m_algsHLT) {
710 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
711 hlt_met = hlt_cell_met_cont->at(0);
712 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
713 hlt_met = hlt_mht_met_cont->at(0);
714 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
715 hlt_met = hlt_tc_met_cont->at(0);
716 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
717 hlt_met = hlt_tc_em_met_cont->at(0);
718 } else if (alg == "tcpufit" && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0) {
719 hlt_met = hlt_tcpufit_met_cont->at(0);
720 } else if (alg == "tcpufit_sig30" && hlt_tcpufit_sig30_met_cont.isValid() && hlt_tcpufit_sig30_met_cont->size() > 0) {
721 hlt_met = hlt_tcpufit_sig30_met_cont->at(0);
722 } else if (alg == "trkmht" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
723 hlt_met = hlt_trkmht_met_cont->at(0);
724 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
725 hlt_met = hlt_pfsum_met_cont->at(0);
726 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
727 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
728 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
729 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
730 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
731 hlt_met = hlt_pfopufit_met_cont->at(0);
732 } else if (alg == "pfopufit_sig30" && hlt_pfopufit_sig30_met_cont.isValid() && hlt_pfopufit_sig30_met_cont->size() > 0) {
733 hlt_met = hlt_pfopufit_sig30_met_cont->at(0);
734 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
735 hlt_met = hlt_cvfpufit_met_cont->at(0);
736 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
737 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
738 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
739 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
740 } else if (alg == "met_nn" && hlt_met_nn_cont.isValid() && hlt_met_nn_cont->size() > 0) {
741 hlt_met = hlt_met_nn_cont->at(0);
742 } else {
743 hlt_met = 0;
744 }
745
746 if ( hlt_met ) {
747 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
748 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
749 float hlt_Ez = hlt_met->ez()/Gaudi::Units::GeV;
750 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
751 float hlt_sumEt = hlt_met->sumEt()/Gaudi::Units::GeV;
752 float hlt_Ex_log = signed_log(hlt_Ex, epsilon);
753 float hlt_Ey_log = signed_log(hlt_Ey, epsilon);
754 float hlt_Et_log = signed_log(hlt_Et, epsilon);
755 float hlt_sumEt_log = signed_log(hlt_sumEt, epsilon);
756 TVector3 v(hlt_Ex, hlt_Ey, hlt_Ez);
757 float hlt_eta = v.Eta();
758 float hlt_phi = v.Phi();
759
760 auto met_Ex = Monitored::Scalar<float>(alg+"_Ex", static_cast<float>(hlt_Ex));
761 auto met_Ey = Monitored::Scalar<float>(alg+"_Ey", static_cast<float>(hlt_Ey));
762 auto met_Et = Monitored::Scalar<float>(alg+"_Et", static_cast<float>(hlt_Et));
763 auto met_sumEt = Monitored::Scalar<float>(alg+"_sumEt", static_cast<float>(hlt_sumEt));
764 auto met_Ex_log = Monitored::Scalar<float>(alg+"_Ex_log", static_cast<float>(hlt_Ex_log));
765 auto met_Ey_log = Monitored::Scalar<float>(alg+"_Ey_log", static_cast<float>(hlt_Ey_log));
766 auto met_Et_log = Monitored::Scalar<float>(alg+"_Et_log", static_cast<float>(hlt_Et_log));
767 auto met_sumEt_log = Monitored::Scalar<float>(alg+"_sumEt_log", static_cast<float>(hlt_sumEt_log));
768 auto met_eta = Monitored::Scalar<float>(alg+"_eta", static_cast<float>(hlt_eta));
769 auto met_phi = Monitored::Scalar<float>(alg+"_phi", static_cast<float>(hlt_phi));
770 fill(tool,met_Ex,met_Ey,met_Et,met_sumEt,
771 met_Ex_log,met_Ey_log,met_Et_log,met_sumEt_log,
772 met_eta,met_phi);
773
774 }
775 }
776
777 // access HLT pre-selection MET values
778 for (const std::string& alg : m_algsHLTPreSel) {
779 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
780 hlt_met = hlt_cell_met_cont->at(0);
781 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
782 hlt_met = hlt_mht_met_cont->at(0);
783 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
784 hlt_met = hlt_tc_met_cont->at(0);
785 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
786 hlt_met = hlt_tc_em_met_cont->at(0);
787 } else if (alg == "tcpufit" && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0) {
788 hlt_met = hlt_tcpufit_met_cont->at(0);
789 } else if (alg == "tcpufit_sig30" && hlt_tcpufit_sig30_met_cont.isValid() && hlt_tcpufit_sig30_met_cont->size() > 0) {
790 hlt_met = hlt_tcpufit_sig30_met_cont->at(0);
791 } else if (alg == "trkmht" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
792 hlt_met = hlt_trkmht_met_cont->at(0);
793 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
794 hlt_met = hlt_pfsum_met_cont->at(0);
795 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
796 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
797 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
798 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
799 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
800 hlt_met = hlt_pfopufit_met_cont->at(0);
801 } else if (alg == "pfopufit_sig30" && hlt_pfopufit_sig30_met_cont.isValid() && hlt_pfopufit_sig30_met_cont->size() > 0) {
802 hlt_met = hlt_pfopufit_sig30_met_cont->at(0);
803 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
804 hlt_met = hlt_cvfpufit_met_cont->at(0);
805 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
806 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
807 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
808 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
809 } else if (alg == "met_nn" && hlt_met_nn_cont.isValid() && hlt_met_nn_cont->size() > 0) {
810 hlt_met = hlt_met_nn_cont->at(0);
811 } else {
812 hlt_met = 0;
813 }
814
815 if ( hlt_met ) {
816 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
817 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
818 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
819 if (L1_PreSelMet_Et > m_L1MetCut && !std::isnan(hlt_Et)) {
820 auto met_presel_Et = Monitored::Scalar<float>(alg+"_presel_Et", hlt_Et);
821 fill(tool,met_presel_Et);
822 }
823 }
824 }
825
826 for (const std::string& alg : m_LArNoiseBurstVetoAlgs) {
827 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
828 hlt_met = hlt_cell_met_cont->at(0);
829 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
830 hlt_met = hlt_mht_met_cont->at(0);
831 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
832 hlt_met = hlt_tc_met_cont->at(0);
833 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
834 hlt_met = hlt_tc_em_met_cont->at(0);
835 } else if (alg == "tcpufit" && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0) {
836 hlt_met = hlt_tcpufit_met_cont->at(0);
837 } else if (alg == "trkmht" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
838 hlt_met = hlt_trkmht_met_cont->at(0);
839 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
840 hlt_met = hlt_pfsum_met_cont->at(0);
841 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
842 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
843 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
844 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
845 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
846 hlt_met = hlt_pfopufit_met_cont->at(0);
847 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
848 hlt_met = hlt_cvfpufit_met_cont->at(0);
849 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
850 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
851 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
852 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
853 } else {
854 hlt_met = 0;
855 }
856
857 if ( hlt_met ) {
858 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
859 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
860 float hlt_Ez = hlt_met->ez()/Gaudi::Units::GeV;
861 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
862 float hlt_sumEt = hlt_met->sumEt()/Gaudi::Units::GeV;
863 float hlt_Ex_log = signed_log(hlt_Ex, epsilon);
864 float hlt_Ey_log = signed_log(hlt_Ey, epsilon);
865 float hlt_Et_log = signed_log(hlt_Et, epsilon);
866 float hlt_sumEt_log = signed_log(hlt_sumEt, epsilon);
867 TVector3 v(hlt_Ex, hlt_Ey, hlt_Ez);
868 float hlt_eta = v.Eta();
869 float hlt_phi = v.Phi();
870
871
872 // LAr noiseburst Veto
873 bool LArNoiseBurst = eventInfo->isEventFlagBitSet(xAOD::EventInfo::LAr,LArEventBitInfo::NOISEBURSTVETO);
874 if (!LArNoiseBurst){
875 auto met_Ex = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Ex", static_cast<float>(hlt_Ex));
876 auto met_Ey = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Ey", static_cast<float>(hlt_Ey));
877 auto met_Et = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Et", static_cast<float>(hlt_Et));
878 auto met_sumEt = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_sumEt", static_cast<float>(hlt_sumEt));
879 auto met_Ex_log = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Ex_log", static_cast<float>(hlt_Ex_log));
880 auto met_Ey_log = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Ey_log", static_cast<float>(hlt_Ey_log));
881 auto met_Et_log = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_Et_log", static_cast<float>(hlt_Et_log));
882 auto met_sumEt_log = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_sumEt_log", static_cast<float>(hlt_sumEt_log));
883 auto met_phi = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_phi", static_cast<float>(hlt_phi));
884 auto met_eta = Monitored::Scalar<float>(alg+"_LArNoiseBurstVeto_eta", static_cast<float>(hlt_eta));
885 fill(tool,met_Ex,met_Ey,met_Et,met_sumEt,
886 met_Ex_log,met_Ey_log,met_Et_log,met_sumEt_log,
887 met_eta,met_phi);
888 }
889 }
890 }
891
892
893 for (const std::string& alg : m_signalLepAlgs) {
894 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
895 hlt_met = hlt_cell_met_cont->at(0);
896 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
897 hlt_met = hlt_mht_met_cont->at(0);
898 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
899 hlt_met = hlt_tc_met_cont->at(0);
900 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
901 hlt_met = hlt_tc_em_met_cont->at(0);
902 } else if (alg == "tcpufit" && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0) {
903 hlt_met = hlt_tcpufit_met_cont->at(0);
904 } else if (alg == "trkmht" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
905 hlt_met = hlt_trkmht_met_cont->at(0);
906 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
907 hlt_met = hlt_pfsum_met_cont->at(0);
908 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
909 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
910 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
911 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
912 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
913 hlt_met = hlt_pfopufit_met_cont->at(0);
914 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
915 hlt_met = hlt_cvfpufit_met_cont->at(0);
916 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
917 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
918 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
919 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
920 } else {
921 hlt_met = 0;
922 }
923
924 if ( hlt_met ) {
925 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
926 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
927 float hlt_Ez = hlt_met->ez()/Gaudi::Units::GeV;
928 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
929 float hlt_sumEt = hlt_met->sumEt()/Gaudi::Units::GeV;
930 float hlt_Ex_log = signed_log(hlt_Ex, epsilon);
931 float hlt_Ey_log = signed_log(hlt_Ey, epsilon);
932 float hlt_Et_log = signed_log(hlt_Et, epsilon);
933 float hlt_sumEt_log = signed_log(hlt_sumEt, epsilon);
934 TVector3 v(hlt_Ex, hlt_Ey, hlt_Ez);
935 float hlt_eta = v.Eta();
936 float hlt_phi = v.Phi();
937
938// access events with electron passing primary single electron chain
939 if(passedPrimaryEl){
940 auto met_Ex = Monitored::Scalar<float>(alg+"_SigEl_Ex", static_cast<float>(hlt_Ex));
941 auto met_Ey = Monitored::Scalar<float>(alg+"_SigEl_Ey", static_cast<float>(hlt_Ey));
942 auto met_Et = Monitored::Scalar<float>(alg+"_SigEl_Et", static_cast<float>(hlt_Et));
943 auto met_sumEt = Monitored::Scalar<float>(alg+"_SigEl_sumEt", static_cast<float>(hlt_sumEt));
944 auto met_Ex_log = Monitored::Scalar<float>(alg+"_SigEl_Ex_log", static_cast<float>(hlt_Ex_log));
945 auto met_Ey_log = Monitored::Scalar<float>(alg+"_SigEl_Ey_log", static_cast<float>(hlt_Ey_log));
946 auto met_Et_log = Monitored::Scalar<float>(alg+"_SigEl_Et_log", static_cast<float>(hlt_Et_log));
947 auto met_sumEt_log = Monitored::Scalar<float>(alg+"_SigEl_sumEt_log", static_cast<float>(hlt_sumEt_log));
948 auto met_eta = Monitored::Scalar<float>(alg+"_SigEl_eta", static_cast<float>(hlt_eta));
949 auto met_phi = Monitored::Scalar<float>(alg+"_SigEl_phi", static_cast<float>(hlt_phi));
950 fill(tool,met_Ex,met_Ey,met_Et,met_sumEt,
951 met_Ex_log,met_Ey_log,met_Et_log,met_sumEt_log,
952 met_eta,met_phi);
953 }
954
955// access events with muon passing primary single muon chain
956 if(passedPrimaryMu){
957 auto met_Ex = Monitored::Scalar<float>(alg+"_SigMu_Ex", static_cast<float>(hlt_Ex));
958 auto met_Ey = Monitored::Scalar<float>(alg+"_SigMu_Ey", static_cast<float>(hlt_Ey));
959 auto met_Et = Monitored::Scalar<float>(alg+"_SigMu_Et", static_cast<float>(hlt_Et));
960 auto met_sumEt = Monitored::Scalar<float>(alg+"_SigMu_sumEt", static_cast<float>(hlt_sumEt));
961 auto met_Ex_log = Monitored::Scalar<float>(alg+"_SigMu_Ex_log", static_cast<float>(hlt_Ex_log));
962 auto met_Ey_log = Monitored::Scalar<float>(alg+"_SigMu_Ey_log", static_cast<float>(hlt_Ey_log));
963 auto met_Et_log = Monitored::Scalar<float>(alg+"_SigMu_Et_log", static_cast<float>(hlt_Et_log));
964 auto met_sumEt_log = Monitored::Scalar<float>(alg+"_SigMu_sumEt_log", static_cast<float>(hlt_sumEt_log));
965 auto met_eta = Monitored::Scalar<float>(alg+"_SigMu_eta", static_cast<float>(hlt_eta));
966 auto met_phi = Monitored::Scalar<float>(alg+"_SigMu_phi", static_cast<float>(hlt_phi));
967 fill(tool,met_Ex,met_Ey,met_Et,met_sumEt,
968 met_Ex_log,met_Ey_log,met_Et_log,met_sumEt_log,
969 met_eta,met_phi);
970 }
971 }
972 }
973
974 // access HLT MET Expert values
975 for (const std::string& alg : m_algsHLTExpert) {
976 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
977 hlt_met = hlt_cell_met_cont->at(0);
978 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
979 hlt_met = hlt_mht_met_cont->at(0);
980 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
981 hlt_met = hlt_tc_met_cont->at(0);
982 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
983 hlt_met = hlt_tc_em_met_cont->at(0);
984 } else if (alg == "tcpufit" && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0) {
985 hlt_met = hlt_tcpufit_met_cont->at(0);
986 } else if (alg == "tcpufit_sig30" && hlt_tcpufit_sig30_met_cont.isValid() && hlt_tcpufit_sig30_met_cont->size() > 0) {
987 hlt_met = hlt_tcpufit_sig30_met_cont->at(0);
988 } else if (alg == "trkmht" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
989 hlt_met = hlt_trkmht_met_cont->at(0);
990 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
991 hlt_met = hlt_pfsum_met_cont->at(0);
992 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
993 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
994 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
995 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
996 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
997 hlt_met = hlt_pfopufit_met_cont->at(0);
998 } else if (alg == "pfopufit_sig30" && hlt_pfopufit_sig30_met_cont.isValid() && hlt_pfopufit_sig30_met_cont->size() > 0) {
999 hlt_met = hlt_pfopufit_sig30_met_cont->at(0);
1000 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
1001 hlt_met = hlt_cvfpufit_met_cont->at(0);
1002 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
1003 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
1004 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
1005 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
1006 } else if (alg == "met_nn" && hlt_met_nn_cont.isValid() && hlt_met_nn_cont->size() > 0) {
1007 hlt_met = hlt_met_nn_cont->at(0);
1008 } else {
1009 hlt_met = 0;
1010 }
1011
1012 if ( hlt_met ) {
1013 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
1014 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
1015 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
1016 float hlt_sumEt = hlt_met->sumEt()/Gaudi::Units::GeV;
1017 if (!std::isnan(hlt_Et)) {
1018 auto met_Ex = Monitored::Scalar<float>(alg+"_Ex", static_cast<float>(hlt_Ex));
1019 auto met_Ey = Monitored::Scalar<float>(alg+"_Ey", static_cast<float>(hlt_Ey));
1020 auto met_Et = Monitored::Scalar<float>(alg+"_Et", static_cast<float>(hlt_Et));
1021 auto met_sumEt = Monitored::Scalar<float>(alg+"_sumEt", static_cast<float>(hlt_sumEt));
1022 fill(tool,met_Ex,met_Ey,met_Et,met_sumEt);
1023 ATH_MSG_DEBUG(alg << ": hlt_Et = " << hlt_Et);
1024 if (L1_roiMet_Et > 50.) {
1025 auto met_presel_Et = Monitored::Scalar<float>(alg+"_presel_Et", static_cast<float>(hlt_Et));
1026 fill(tool,met_presel_Et);
1027 }
1028 }
1029 }
1030 }
1031
1032 // Make 2D tcpufit MET distributions wrt track-based MET
1033 const xAOD::TrigMissingET *hlt_tcpufit_met = 0;
1034 for (const std::string& alg : m_algsMET2d_tcpufit) {
1035 if (alg == "cell" && hlt_cell_met_cont.isValid() && hlt_cell_met_cont->size() > 0) {
1036 hlt_met = hlt_cell_met_cont->at(0);
1037 } else if (alg == "mht" && hlt_mht_met_cont.isValid() && hlt_mht_met_cont->size() > 0) {
1038 hlt_met = hlt_mht_met_cont->at(0);
1039 } else if (alg == "tc" && hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0) {
1040 hlt_met = hlt_tc_met_cont->at(0);
1041 } else if (alg == "tc_em" && hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0) {
1042 hlt_met = hlt_tc_em_met_cont->at(0);
1043 } else if (alg == "trkmht_pf" && hlt_trkmht_met_cont.isValid() && hlt_trkmht_met_cont->size() > 0) {
1044 hlt_met = hlt_trkmht_met_cont->at(0);
1045 } else if (alg == "pfsum" && hlt_pfsum_met_cont.isValid() && hlt_pfsum_met_cont->size() > 0) {
1046 hlt_met = hlt_pfsum_met_cont->at(0);
1047 } else if (alg == "pfsum_cssk" && hlt_pfsum_cssk_met_cont.isValid() && hlt_pfsum_cssk_met_cont->size() > 0) {
1048 hlt_met = hlt_pfsum_cssk_met_cont->at(0);
1049 } else if (alg == "pfsum_vssk" && hlt_pfsum_vssk_met_cont.isValid() && hlt_pfsum_vssk_met_cont->size() > 0) {
1050 hlt_met = hlt_pfsum_vssk_met_cont->at(0);
1051 } else if (alg == "pfopufit" && hlt_pfopufit_met_cont.isValid() && hlt_pfopufit_met_cont->size() > 0) {
1052 hlt_met = hlt_pfopufit_met_cont->at(0);
1053 } else if (alg == "cvfpufit" && hlt_cvfpufit_met_cont.isValid() && hlt_cvfpufit_met_cont->size() > 0) {
1054 hlt_met = hlt_cvfpufit_met_cont->at(0);
1055 } else if (alg == "mhtpufit_pf" && hlt_mhtpufit_pf_met_cont.isValid() && hlt_mhtpufit_pf_met_cont->size() > 0) {
1056 hlt_met = hlt_mhtpufit_pf_met_cont->at(0);
1057 } else if (alg == "mhtpufit_em" && hlt_mhtpufit_em_met_cont.isValid() && hlt_mhtpufit_em_met_cont->size() > 0) {
1058 hlt_met = hlt_mhtpufit_em_met_cont->at(0);
1059 } else {
1060 hlt_met = 0;
1061 }
1062
1063 if(hlt_met && hlt_tcpufit_met_cont.isValid() && hlt_tcpufit_met_cont->size() > 0){
1064 hlt_tcpufit_met = hlt_tcpufit_met_cont->at(0);
1065 float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
1066 float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
1067 float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
1068 auto met_Et = Monitored::Scalar<float>(alg+"_2D_Et", static_cast<float>(hlt_Et));
1069
1070 float hlt_tcpufit_Ex = hlt_tcpufit_met->ex()/Gaudi::Units::GeV;
1071 float hlt_tcpufit_Ey = hlt_tcpufit_met->ey()/Gaudi::Units::GeV;
1072 float hlt_tcpufit_Et = std::sqrt(hlt_tcpufit_Ex*hlt_tcpufit_Ex + hlt_tcpufit_Ey*hlt_tcpufit_Ey);
1073 auto tcpufit_met_Et = Monitored::Scalar<float>("tcpufit_2D_Et", static_cast<float>(hlt_tcpufit_Et));
1074 fill(tool, met_Et, tcpufit_met_Et);
1075 }
1076 }
1077
1078 // efficiency plots
1079 for (const std::string& chain : m_l1Chains) {
1080 auto pass_chain = Monitored::Scalar<float>("pass_" + chain, static_cast<float>(getTrigDecisionTool()->isPassed(chain)));
1081 fill(tool, pass_chain,offline_NoMu_Et_eff);
1082 }
1083 for (const std::string& chain : m_hltChains) {
1084 auto pass_chain = Monitored::Scalar<float>("pass_" + chain, static_cast<float>(getTrigDecisionTool()->isPassed(chain)));
1085 fill(tool, pass_chain,offline_NoMu_Et_eff);
1086 }
1087 for (const std::string& chain : m_hltChainsVal) {
1088 auto pass_chain = Monitored::Scalar<float>("pass_" + chain, static_cast<float>(getTrigDecisionTool()->isPassed(chain)));
1089 fill(tool, pass_chain,offline_NoMu_Et_eff);
1090 }
1091 for (const std::string& chain : m_hltChainsT0) {
1092 auto pass_chain = Monitored::Scalar<float>("pass_" + chain, static_cast<float>(getTrigDecisionTool()->isPassed(chain)));
1093 fill(tool, pass_chain,offline_NoMu_Et_eff);
1094 }
1095
1096 return StatusCode::SUCCESS;
1097}
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.
Gaudi::Property< std::vector< std::string > > m_compNames
Gaudi::Property< std::vector< std::string > > m_bitNames
double signed_log(double e, double epsilon) const
SG::ReadHandleKey< xAOD::EnergySumRoI > m_lvl1_roi_key
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition Egamma_v1.cxx:66
float energyT() const
The deposited total transverse energy.
float energyX() const
The total energy deposited in the X direction.
float energyY() const
The total energy deposited in the Y direction.
@ LAr
The LAr calorimeter.
float sumet() const
Returns.
float mpx() const
Returns .
float mpy() const
Returns .
virtual double pt() const override
The transverse momentum ( ) of the particle.
int flag() const
Get the status flag.
float ex() const
Get the x component of the missing energy.
float exComponent(unsigned int index) const
Get the x component fo the energy of a component.
float eyComponent(unsigned int index) const
Get the y component fo the energy of a component.
float sumEt() const
Get the sum of the ET of the missing energy.
short statusComponent(unsigned int index) const
Get Status.
float ez() const
Get the z component of the missing energy.
float ey() const
Get the y component of the missing energy.
float z() const
Returns the z position.
float METquantityTwo() const
floating point value (GeV, TOB scale)
float METquantityOne() const
retrieves the Et index from the 32-bit word
Generic monitoring tool for athena components.
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
@ PriVtx
Primary vertex.
MissingET_v1 MissingET
Version control by type defintion.
gFexGlobalRoI_v1 gFexGlobalRoI
Define the latest version of the eFexEMRoI class.
TrigMissingET_v1 TrigMissingET
Define the most recent version of the TrigMissingET class.
Muon_v1 Muon
Reference the current persistent version:
EnergySumRoI_v2 EnergySumRoI
Electron_v1 Electron
Definition of the current "egamma version".
void fill(H5::Group &out_file, size_t iterations)

◆ filterPassed()

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

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ GetEventInfo()

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

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

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

Definition at line 111 of file AthMonitorAlgorithm.cxx.

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

◆ getGroup()

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

Get a specific monitoring tool from the tool handle array.

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

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

Definition at line 168 of file AthMonitorAlgorithm.cxx.

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

◆ getTrigDecisionTool()

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

Get the trigger decision tool member.

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

Returns
m_trigDecTool

Definition at line 203 of file AthMonitorAlgorithm.cxx.

203 {
204 return m_trigDecTool;
205}

◆ initialize()

StatusCode TrigMETMonitorAlgorithm::initialize ( )
overridevirtual

initialize

Returns
StatusCode

Reimplemented from AthMonitorAlgorithm.

Definition at line 19 of file TrigMETMonitorAlgorithm.cxx.

19 {
20 ATH_CHECK( m_EventInfoKey.initialize() );
21 ATH_CHECK( m_offline_met_key.initialize() );
22 ATH_CHECK( m_hlt_electron_key.initialize() );
23 ATH_CHECK( m_hlt_muon_key.initialize() );
24 ATH_CHECK( m_topoclusters_key.initialize() );
25 ATH_CHECK( m_tracks_key.initialize() );
26 ATH_CHECK( m_vertex_key.initialize() );
27 ATH_CHECK( m_offline_vertex_key.initialize() );
28 ATH_CHECK( m_lvl1_roi_key.initialize(SG::AllowEmpty) );
29 ATH_CHECK( m_l1_jFexMet_key.initialize() );
30 ATH_CHECK( m_l1_jFexSumEt_key.initialize() );
31 ATH_CHECK( m_l1_gFexJwojScalar_key.initialize() );
32 ATH_CHECK( m_l1_gFexJwojMETComponents_key.initialize() );
33 ATH_CHECK( m_l1_gFexJwojMHTComponents_key.initialize() );
34 ATH_CHECK( m_l1_gFexJwojMSTComponents_key.initialize() );
35 ATH_CHECK( m_l1_gFexNCMETScalar_key.initialize() );
36 ATH_CHECK( m_l1_gFexNCMETComponents_key.initialize() );
37 ATH_CHECK( m_l1_gFexRhoMETScalar_key.initialize() );
38 ATH_CHECK( m_l1_gFexRhoMETComponents_key.initialize() );
39 ATH_CHECK( m_hlt_cell_met_key.initialize() );
40 ATH_CHECK( m_hlt_mht_met_key.initialize() );
41 ATH_CHECK( m_hlt_tc_met_key.initialize() );
42 ATH_CHECK( m_hlt_tc_em_met_key.initialize() );
43 ATH_CHECK( m_hlt_tcpufit_met_key.initialize() );
44 ATH_CHECK( m_hlt_tcpufit_sig30_met_key.initialize() );
45 ATH_CHECK( m_hlt_trkmht_met_key.initialize() );
46 ATH_CHECK( m_hlt_pfsum_met_key.initialize() );
47 ATH_CHECK( m_hlt_pfopufit_met_key.initialize() );
48 ATH_CHECK( m_hlt_pfopufit_sig30_met_key.initialize() );
49 ATH_CHECK( m_hlt_cvfpufit_met_key.initialize() );
50 ATH_CHECK( m_hlt_mhtpufit_pf_met_key.initialize() );
51 ATH_CHECK( m_hlt_mhtpufit_em_met_key.initialize() );
52 ATH_CHECK( m_hlt_met_nn_key.initialize() );
53 ATH_CHECK( m_hlt_pfsum_cssk_met_key.initialize() );
54 ATH_CHECK( m_hlt_pfsum_vssk_met_key.initialize() );
55
57}
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode initialize() override
initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.

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

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ parseList()

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

Parse a string into a vector.

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

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

Definition at line 350 of file AthMonitorAlgorithm.cxx.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

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

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ signed_log()

double TrigMETMonitorAlgorithm::signed_log ( double e,
double epsilon ) const
private

Definition at line 1100 of file TrigMETMonitorAlgorithm.cxx.

1100 {
1101
1102
1103 double e_log = -9e9;
1104 if (std::abs(e) > epsilon)
1105 e_log = std::copysign(std::log10(std::abs(e)), e);
1106 else
1107 e_log = 0.01;
1108
1109 return e_log;
1110}

◆ sysExecute()

StatusCode AthCommonAlgorithm< 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.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< 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 AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_ERROR(x)
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

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

Handle START transition.

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

◆ trigChainsArePassed()

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

Check whether triggers are passed.

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

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

Definition at line 208 of file AthMonitorAlgorithm.cxx.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ cfg

TrigMETMonitorAlgorithm.cfg = MainServicesCfg(flags)

Definition at line 1116 of file TrigMETMonitorAlgorithm.py.

◆ file

str TrigMETMonitorAlgorithm.file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1'

Definition at line 1105 of file TrigMETMonitorAlgorithm.py.

◆ Files

TrigMETMonitorAlgorithm.Files

Definition at line 1107 of file TrigMETMonitorAlgorithm.py.

◆ flags

TrigMETMonitorAlgorithm.flags = initConfigFlags()

Definition at line 1106 of file TrigMETMonitorAlgorithm.py.

◆ HISTFileName

TrigMETMonitorAlgorithm.HISTFileName

Definition at line 1109 of file TrigMETMonitorAlgorithm.py.

◆ isMC

TrigMETMonitorAlgorithm.isMC

Definition at line 1108 of file TrigMETMonitorAlgorithm.py.

◆ m_algsHLT

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsHLT {this, "algsHLT", {}, "HLT algorithms to monitor"}
private

Definition at line 94 of file TrigMETMonitorAlgorithm.h.

94{this, "algsHLT", {}, "HLT algorithms to monitor"};

◆ m_algsHLT2d

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsHLT2d {this, "algsHLT2d", {}, "HLT algorithms for 2d eta-phi plots"}
private

Definition at line 97 of file TrigMETMonitorAlgorithm.h.

97{this, "algsHLT2d", {}, "HLT algorithms for 2d eta-phi plots"};

◆ m_algsHLTExpert

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsHLTExpert {this, "algsHLTExpert", {}, "HLT algorithms for Expert"}
private

Definition at line 98 of file TrigMETMonitorAlgorithm.h.

98{this, "algsHLTExpert", {}, "HLT algorithms for Expert"};

◆ m_algsHLTPreSel

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsHLTPreSel {this, "algsHLTPreSel", {}, "HLTPreSel algorithms to monitor"}
private

Definition at line 95 of file TrigMETMonitorAlgorithm.h.

95{this, "algsHLTPreSel", {}, "HLTPreSel algorithms to monitor"};

◆ m_algsL1

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsL1 {this, "algsL1", {}, "L1 algorithms to monitor"}
private

Definition at line 93 of file TrigMETMonitorAlgorithm.h.

93{this, "algsL1", {}, "L1 algorithms to monitor"};

◆ m_algsMET2d_tcpufit

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_algsMET2d_tcpufit {this, "algsMET2d_tcpufit", {}, "HLT algorithms for 2D MET wrt tcpufit"}
private

Definition at line 99 of file TrigMETMonitorAlgorithm.h.

99{this, "algsMET2d_tcpufit", {}, "HLT algorithms for 2D MET wrt tcpufit"};

◆ m_bitNames

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_bitNames {this, "bitNames", {}, "Status bit names"}
private

Definition at line 101 of file TrigMETMonitorAlgorithm.h.

101{this, "bitNames", {}, "Status bit names"};

◆ m_compNames

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_compNames {this, "compNames", {}, "Calorimeter component names"}
private

Definition at line 100 of file TrigMETMonitorAlgorithm.h.

100{this, "compNames", {}, "Calorimeter component names"};

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

Gaudi::Property<double> TrigMETMonitorAlgorithm::m_electronEtaCut {this, "electronEtaCut", 0.0, "Electron eta cut for leading electron"}
private

Definition at line 107 of file TrigMETMonitorAlgorithm.h.

107{this, "electronEtaCut", 0.0, "Electron eta cut for leading electron"};

◆ m_electronPtCut

Gaudi::Property<double> TrigMETMonitorAlgorithm::m_electronPtCut {this, "electronPtCut", 0.0, "Electron pt cut for leading electron"}
private

Definition at line 106 of file TrigMETMonitorAlgorithm.h.

106{this, "electronPtCut", 0.0, "Electron pt cut for leading electron"};

◆ 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 AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.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_hlt_cell_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_cell_met_key {this, "hlt_cell_key", "HLT_MET_cell", "HLT Cell MET container name"}
private

Definition at line 70 of file TrigMETMonitorAlgorithm.h.

70{this, "hlt_cell_key", "HLT_MET_cell", "HLT Cell MET container name"};

◆ m_hlt_cvfpufit_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_cvfpufit_met_key {this, "hlt_cvfpufit_key", "HLT_MET_cvfpufit", "HLT CvfPufit MET container name"}
private

Definition at line 82 of file TrigMETMonitorAlgorithm.h.

82{this, "hlt_cvfpufit_key", "HLT_MET_cvfpufit", "HLT CvfPufit MET container name"};

◆ m_hlt_electron_key

SG::ReadHandleKey<xAOD::ElectronContainer> TrigMETMonitorAlgorithm::m_hlt_electron_key {this, "hlt_electron_key", "HLT_egamma_Electrons_GSF", "HLT electron container name"}
private

Definition at line 49 of file TrigMETMonitorAlgorithm.h.

49{this, "hlt_electron_key", "HLT_egamma_Electrons_GSF", "HLT electron container name"};

◆ m_hlt_met_nn_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_met_nn_key {this, "hlt_met_nn_key", "HLT_MET_nn", "HLT MET NN container name"}
private

Definition at line 85 of file TrigMETMonitorAlgorithm.h.

85{this, "hlt_met_nn_key", "HLT_MET_nn", "HLT MET NN container name"};

◆ m_hlt_mht_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_mht_met_key {this, "hlt_mht_key", "HLT_MET_mht", "HLT MHT MET container name"}
private

Definition at line 71 of file TrigMETMonitorAlgorithm.h.

71{this, "hlt_mht_key", "HLT_MET_mht", "HLT MHT MET container name"};

◆ m_hlt_mhtpufit_em_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_mhtpufit_em_met_key {this, "hlt_mhtpufit_em_key", "HLT_MET_mhtpufit_em", "HLT MhtPufitEm MET container name"}
private

Definition at line 84 of file TrigMETMonitorAlgorithm.h.

84{this, "hlt_mhtpufit_em_key", "HLT_MET_mhtpufit_em", "HLT MhtPufitEm MET container name"};

◆ m_hlt_mhtpufit_pf_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_mhtpufit_pf_met_key {this, "hlt_mhtpufit_pf_key", "HLT_MET_mhtpufit_pf", "HLT MhtPufitPf MET container name"}
private

Definition at line 83 of file TrigMETMonitorAlgorithm.h.

83{this, "hlt_mhtpufit_pf_key", "HLT_MET_mhtpufit_pf", "HLT MhtPufitPf MET container name"};

◆ m_hlt_muon_key

SG::ReadHandleKey<xAOD::MuonContainer> TrigMETMonitorAlgorithm::m_hlt_muon_key {this, "hlt_muon_key", "HLT_MuonsCB_FS", "HLT muon container name"}
private

Definition at line 50 of file TrigMETMonitorAlgorithm.h.

50{this, "hlt_muon_key", "HLT_MuonsCB_FS", "HLT muon container name"};

◆ m_hlt_pfopufit_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_pfopufit_met_key {this, "hlt_pfopufit_key", "HLT_MET_pfopufit", "HLT PfoPufit MET container name"}
private

Definition at line 80 of file TrigMETMonitorAlgorithm.h.

80{this, "hlt_pfopufit_key", "HLT_MET_pfopufit", "HLT PfoPufit MET container name"};

◆ m_hlt_pfopufit_sig30_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_pfopufit_sig30_met_key {this, "hlt_pfopufit_sig30_key", "HLT_MET_pfopufit_sig30", "HLT PfoPufit sig30 MET container name"}
private

Definition at line 81 of file TrigMETMonitorAlgorithm.h.

81{this, "hlt_pfopufit_sig30_key", "HLT_MET_pfopufit_sig30", "HLT PfoPufit sig30 MET container name"};

◆ m_hlt_pfsum_cssk_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_pfsum_cssk_met_key {this, "hlt_pfsum_cssk_key", "HLT_MET_pfsum_cssk", "HLT Pfsum CSSK MET container name"}
private

Definition at line 78 of file TrigMETMonitorAlgorithm.h.

78{this, "hlt_pfsum_cssk_key", "HLT_MET_pfsum_cssk", "HLT Pfsum CSSK MET container name"};

◆ m_hlt_pfsum_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_pfsum_met_key {this, "hlt_pfsum_key", "HLT_MET_pfsum", "HLT Pfsum MET container name"}
private

Definition at line 77 of file TrigMETMonitorAlgorithm.h.

77{this, "hlt_pfsum_key", "HLT_MET_pfsum", "HLT Pfsum MET container name"};

◆ m_hlt_pfsum_vssk_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_pfsum_vssk_met_key {this, "hlt_pfsum_vssk_key", "HLT_MET_pfsum_vssk", "HLT Pfsum VSSK MET container name"}
private

Definition at line 79 of file TrigMETMonitorAlgorithm.h.

79{this, "hlt_pfsum_vssk_key", "HLT_MET_pfsum_vssk", "HLT Pfsum VSSK MET container name"};

◆ m_hlt_tc_em_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_tc_em_met_key {this, "hlt_tc_em_key", "HLT_MET_tc_em", "HLT TC EM MET container name"}
private

Definition at line 73 of file TrigMETMonitorAlgorithm.h.

73{this, "hlt_tc_em_key", "HLT_MET_tc_em", "HLT TC EM MET container name"};

◆ m_hlt_tc_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_tc_met_key {this, "hlt_tc_key", "HLT_MET_tc", "HLT TC MET container name"}
private

Definition at line 72 of file TrigMETMonitorAlgorithm.h.

72{this, "hlt_tc_key", "HLT_MET_tc", "HLT TC MET container name"};

◆ m_hlt_tcpufit_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_tcpufit_met_key {this, "hlt_tcpufit_key", "HLT_MET_tcpufit", "HLT TCPufit MET container name"}
private

Definition at line 74 of file TrigMETMonitorAlgorithm.h.

74{this, "hlt_tcpufit_key", "HLT_MET_tcpufit", "HLT TCPufit MET container name"};

◆ m_hlt_tcpufit_sig30_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_tcpufit_sig30_met_key {this, "hlt_tcpufit_sig30_key", "HLT_MET_tcpufit_sig30", "HLT TCPufit sig30 MET container name"}
private

Definition at line 75 of file TrigMETMonitorAlgorithm.h.

75{this, "hlt_tcpufit_sig30_key", "HLT_MET_tcpufit_sig30", "HLT TCPufit sig30 MET container name"};

◆ m_hlt_trkmht_met_key

SG::ReadHandleKey<xAOD::TrigMissingETContainer> TrigMETMonitorAlgorithm::m_hlt_trkmht_met_key {this, "hlt_trkmht_key", "HLT_MET_trkmht", "HLT TrkMht MET container name"}
private

Definition at line 76 of file TrigMETMonitorAlgorithm.h.

76{this, "hlt_trkmht_key", "HLT_MET_trkmht", "HLT TrkMht MET container name"};

◆ m_hltChainEl

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_hltChainEl {this, "HLTChainEl", {}, "The HLT Electron primary chain to use for monitoring plots"}
private

Definition at line 91 of file TrigMETMonitorAlgorithm.h.

91{this, "HLTChainEl", {}, "The HLT Electron primary chain to use for monitoring plots"};

◆ m_hltChainMu

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_hltChainMu {this, "HLTChainMu", {}, "The HLT Muon primary chain to use for monitoring plots"}
private

Definition at line 92 of file TrigMETMonitorAlgorithm.h.

92{this, "HLTChainMu", {}, "The HLT Muon primary chain to use for monitoring plots"};

◆ m_hltChains

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_hltChains {this, "HLTChains", {}, "The HLT shifter chains to monitor"}
private

Definition at line 88 of file TrigMETMonitorAlgorithm.h.

88{this, "HLTChains", {}, "The HLT shifter chains to monitor"};

◆ m_hltChainsT0

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_hltChainsT0 {this, "HLTChainsT0", {}, "The HLT t0 chains to monitor"}
private

Definition at line 90 of file TrigMETMonitorAlgorithm.h.

90{this, "HLTChainsT0", {}, "The HLT t0 chains to monitor"};

◆ m_hltChainsVal

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_hltChainsVal {this, "HLTChainsVal", {}, "The HLT val chains to monitor"}
private

Definition at line 89 of file TrigMETMonitorAlgorithm.h.

89{this, "HLTChainsVal", {}, "The HLT val chains to monitor"};

◆ m_l1_gFexJwojMETComponents_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexJwojMETComponents_key {this, "l1_gFexJwojMETComponents_key", "L1_gMETComponentsJwoj", "L1 gFex JWOJ Ex and Ey container name"}
private

Definition at line 62 of file TrigMETMonitorAlgorithm.h.

62{this, "l1_gFexJwojMETComponents_key", "L1_gMETComponentsJwoj", "L1 gFex JWOJ Ex and Ey container name"};

◆ m_l1_gFexJwojMHTComponents_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexJwojMHTComponents_key {this, "l1_gFexJwojMHTComponents_key", "L1_gMHTComponentsJwoj", "L1 gFex JWOJ Hard Term Ex and Ey container name"}
private

Definition at line 63 of file TrigMETMonitorAlgorithm.h.

63{this, "l1_gFexJwojMHTComponents_key", "L1_gMHTComponentsJwoj", "L1 gFex JWOJ Hard Term Ex and Ey container name"};

◆ m_l1_gFexJwojMSTComponents_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexJwojMSTComponents_key {this, "l1_gFexJwojMSTComponents_key", "L1_gMSTComponentsJwoj", "L1 gFex JWOJ Soft Term Ex and Ey container name"}
private

Definition at line 64 of file TrigMETMonitorAlgorithm.h.

64{this, "l1_gFexJwojMSTComponents_key", "L1_gMSTComponentsJwoj", "L1 gFex JWOJ Soft Term Ex and Ey container name"};

◆ m_l1_gFexJwojScalar_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexJwojScalar_key {this, "l1_gFexJwojScalar_key", "L1_gScalarEJwoj", "L1 gFex JWOJ Et and sumEt container name"}
private

Definition at line 61 of file TrigMETMonitorAlgorithm.h.

61{this, "l1_gFexJwojScalar_key", "L1_gScalarEJwoj", "L1 gFex JWOJ Et and sumEt container name"};

◆ m_l1_gFexNCMETComponents_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexNCMETComponents_key {this, "l1_gFexNCMETComponents_key", "L1_gMETComponentsNoiseCut", "L1 gFex NC Ex and Ey container name"}
private

Definition at line 66 of file TrigMETMonitorAlgorithm.h.

66{this, "l1_gFexNCMETComponents_key", "L1_gMETComponentsNoiseCut", "L1 gFex NC Ex and Ey container name"};

◆ m_l1_gFexNCMETScalar_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexNCMETScalar_key {this, "l1_gFexNCMETScalar_key", "L1_gScalarENoiseCut", "L1 gFex NC Et and sumEt container name"}
private

Definition at line 65 of file TrigMETMonitorAlgorithm.h.

65{this, "l1_gFexNCMETScalar_key", "L1_gScalarENoiseCut", "L1 gFex NC Et and sumEt container name"};

◆ m_l1_gFexRhoMETComponents_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexRhoMETComponents_key {this, "l1_gFexRhoMETComponents_key", "L1_gMETComponentsRms", "L1 gFex Rho Ex and Ey container name"}
private

Definition at line 68 of file TrigMETMonitorAlgorithm.h.

68{this, "l1_gFexRhoMETComponents_key", "L1_gMETComponentsRms", "L1 gFex Rho Ex and Ey container name"};

◆ m_l1_gFexRhoMETScalar_key

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> TrigMETMonitorAlgorithm::m_l1_gFexRhoMETScalar_key {this, "l1_gFexRhoMETScalar_key", "L1_gScalarERms", "L1 gFex Rho Et and sumEt container name"}
private

Definition at line 67 of file TrigMETMonitorAlgorithm.h.

67{this, "l1_gFexRhoMETScalar_key", "L1_gScalarERms", "L1 gFex Rho Et and sumEt container name"};

◆ m_l1_jFexMet_key

SG::ReadHandleKey<xAOD::jFexMETRoIContainer> TrigMETMonitorAlgorithm::m_l1_jFexMet_key {this, "l1_jFexMet_key", "L1_jFexMETRoI", "L1 jFex MET container name"}
private

Definition at line 59 of file TrigMETMonitorAlgorithm.h.

59{this, "l1_jFexMet_key", "L1_jFexMETRoI", "L1 jFex MET container name"};

◆ m_l1_jFexSumEt_key

SG::ReadHandleKey<xAOD::jFexSumETRoIContainer> TrigMETMonitorAlgorithm::m_l1_jFexSumEt_key {this, "l1_jFexSumEt_key", "L1_jFexSumETRoI", "L1 jFex sumEt container name"}
private

Definition at line 60 of file TrigMETMonitorAlgorithm.h.

60{this, "l1_jFexSumEt_key", "L1_jFexSumETRoI", "L1 jFex sumEt container name"};

◆ m_l1Chains

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_l1Chains {this, "L1Chains", {}, "The L1 chains to monitor"}
private

Definition at line 87 of file TrigMETMonitorAlgorithm.h.

87{this, "L1Chains", {}, "The L1 chains to monitor"};

◆ m_L1MetAlg

Gaudi::Property<int> TrigMETMonitorAlgorithm::m_L1MetAlg {this, "L1MetAlg", 1, "L1 MET algorithm for PreSel"}
private

Definition at line 103 of file TrigMETMonitorAlgorithm.h.

103{this, "L1MetAlg", 1, "L1 MET algorithm for PreSel"}; //0=lagacy, 1=jFex, 2=gFexJWOJ

◆ m_L1MetCut

Gaudi::Property<double> TrigMETMonitorAlgorithm::m_L1MetCut {this, "L1MetCut", 50.0, "L1 MET cut for PreSel"}
private

Definition at line 104 of file TrigMETMonitorAlgorithm.h.

104{this, "L1MetCut", 50.0, "L1 MET cut for PreSel"};

◆ m_LArNoiseBurstVetoAlgs

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_LArNoiseBurstVetoAlgs {this, "LArNoiseBurstVetoAlgs", {}, "MET histograms with LAr NoiseBurst Veto Applied"}
private

Definition at line 96 of file TrigMETMonitorAlgorithm.h.

96{this, "LArNoiseBurstVetoAlgs", {}, "MET histograms with LAr NoiseBurst Veto Applied"};

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

SG::ReadHandleKey<xAOD::EnergySumRoI> TrigMETMonitorAlgorithm::m_lvl1_roi_key {this, "l1_roi_key", "", "L1 energy sum ROI container name"}
private

Definition at line 57 of file TrigMETMonitorAlgorithm.h.

57{this, "l1_roi_key", "", "L1 energy sum ROI container name"};

◆ m_muonEtaCut

Gaudi::Property<double> TrigMETMonitorAlgorithm::m_muonEtaCut {this, "muonEtaCut", 0.0, "Muon eta cut for leading muon"}
private

Definition at line 109 of file TrigMETMonitorAlgorithm.h.

109{this, "muonEtaCut", 0.0, "Muon eta cut for leading muon"};

◆ m_muonPtCut

Gaudi::Property<double> TrigMETMonitorAlgorithm::m_muonPtCut {this, "muonPtCut", 0.0, "Muon pt cut for leading muon"}
private

Definition at line 108 of file TrigMETMonitorAlgorithm.h.

108{this, "muonPtCut", 0.0, "Muon pt cut for leading muon"};

◆ m_name

std::string AthMonitorAlgorithm::m_name
privateinherited

Definition at line 371 of file AthMonitorAlgorithm.h.

◆ m_offline_met_key

SG::ReadHandleKey<xAOD::MissingETContainer> TrigMETMonitorAlgorithm::m_offline_met_key {this, "offline_met_key", "MET_Reference_AntiKt4EMPFlow", "Offline met container name"}
private

Definition at line 47 of file TrigMETMonitorAlgorithm.h.

47{this, "offline_met_key", "MET_Reference_AntiKt4EMPFlow", "Offline met container name"};

◆ m_offline_vertex_key

SG::ReadHandleKey<xAOD::VertexContainer> TrigMETMonitorAlgorithm::m_offline_vertex_key {this, "offline_vertex_key", "PrimaryVertices", "Offline vertex container name"}
private

Definition at line 55 of file TrigMETMonitorAlgorithm.h.

55{this, "offline_vertex_key", "PrimaryVertices", "Offline vertex container name"};

◆ m_signalLepAlgs

Gaudi::Property<std::vector<std::string> > TrigMETMonitorAlgorithm::m_signalLepAlgs {this, "signalLepAlgs", {}, "Signal lepton MET histograms"}
private

Definition at line 110 of file TrigMETMonitorAlgorithm.h.

110{this, "signalLepAlgs", {}, "Signal lepton MET histograms"};

◆ m_toolLookupMap

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

Definition at line 372 of file AthMonitorAlgorithm.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_topoclusters_key

SG::ReadHandleKey<xAOD::CaloClusterContainer> TrigMETMonitorAlgorithm::m_topoclusters_key {this, "topoclusters_key", "HLT_TopoCaloClustersLCFS", "HLT topoclusters container name"}
private

Definition at line 52 of file TrigMETMonitorAlgorithm.h.

52{this, "topoclusters_key", "HLT_TopoCaloClustersLCFS", "HLT topoclusters container name"};

◆ m_tracks_key

SG::ReadHandleKey<xAOD::TrackParticleContainer> TrigMETMonitorAlgorithm::m_tracks_key {this, "tracks_key", "HLT_IDTrack_FS_FTF", "HLT tracks container name"}
private

Definition at line 53 of file TrigMETMonitorAlgorithm.h.

53{this, "tracks_key", "HLT_IDTrack_FS_FTF", "HLT tracks container name"};

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

SG::ReadHandleKey<xAOD::VertexContainer> TrigMETMonitorAlgorithm::m_vertex_key {this, "vertex_key", "HLT_IDVertex_FS", "HLT vertex container name"}
private

Definition at line 54 of file TrigMETMonitorAlgorithm.h.

54{this, "vertex_key", "HLT_IDVertex_FS", "HLT vertex container name"};

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

◆ nightly

str TrigMETMonitorAlgorithm.nightly = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CommonInputs/'

Definition at line 1104 of file TrigMETMonitorAlgorithm.py.

◆ trigMETMonitorAcc

TrigMETMonitorAlgorithm.trigMETMonitorAcc = TrigMETMonConfig(flags)

Definition at line 1119 of file TrigMETMonitorAlgorithm.py.

◆ withDetails

TrigMETMonitorAlgorithm.withDetails

Definition at line 1124 of file TrigMETMonitorAlgorithm.py.


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