ATLAS Offline Software
Loading...
Searching...
No Matches
MissingEtDQA::PhysValMET Class Reference

#include <PhysValMET.h>

Inheritance diagram for MissingEtDQA::PhysValMET:
Collaboration diagram for MissingEtDQA::PhysValMET:

Public Types

enum  Interval_t {
  file = 0 , eventsBlock , lumiBlock , lowStat ,
  medStat , higStat , run , fill ,
  all
}
 An enumeration describing the interval over which a particular monitoring object is filled (i.e., interval over which the method Fill(...) is called). More...
enum  MgmtAttr_t { ATTRIB_MANAGED = 0 , ATTRIB_UNMANAGED = 1 , ATTRIB_X_VS_LB = 2 }
 An enumeration describing how the class handles the histogram. More...

Public Member Functions

 PhysValMET (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor with parameters:
virtual ~PhysValMET ()
 Destructor:
virtual StatusCode initialize ()
virtual StatusCode bookHistograms ()
 An inheriting class should either override this function or bookHists().
virtual StatusCode fillHistograms (const EventContext &ctx)
 An inheriting class should either override this function or fillHists().
virtual StatusCode procHistograms ()
 An inheriting class should either override this function or finalHists().
virtual StreamNameFcn * streamNameFunction ()
 Returns the function object that converts logical paramters into a physical stream name.
virtual StatusCode bookHists ()
 Calls bookHists( true, true, true ) and initializes lumiBlock and run numbers.
virtual StatusCode fillHists (const EventContext &ctx)
 Calls fillHists( bool, bool, bool ); if an eventBlock,lumiBlock, or run has turned over, calls procHists( bool, bool, bool ) and bookHists( bool, bool, bool ).
virtual StatusCode finalHists ()
 Calls procHists( true, true, true ).
virtual StatusCode bookHistogramsRecurrent ()
 An inheriting class should either override this function, bookHists() or bookHistograms().
virtual void setMonManager (AthenaMonManager *manager)
 Takes a pointer to a managing object to get information from it when needed.
virtual StatusCode regHist (TH1 *h, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
 Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical parameters that describe the histogram.
virtual StatusCode regHist (TH1 *h, const MonGroup &group)
 Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical parameters that describe the histogram.
virtual StatusCode getHist (TH1 *&h, const std::string &hName, const std::string &system, Interval_t interval)
 Returns a TH1 via the pointer passed as the first argument.
virtual StatusCode getHist (TH1 *&h, const std::string &hName, const MonGroup &group)
 Returns a TH1 via the pointer passed as the first argument.
virtual StatusCode getHist (TH2 *&h, const std::string &hName, const std::string &system, Interval_t interval)
 Returns a TH2 via the pointer passed as the first argument.
virtual StatusCode getHist (TH2 *&h, const std::string &hName, const MonGroup &group)
 Returns a TH2 via the pointer passed as the first argument.
virtual StatusCode regEfficiency (TEfficiency *e, const MonGroup &group)
 Registers a TEfficiency to be included in the output stream using logical parameters that describe the plot.
virtual StatusCode regGraph (TGraph *g, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
 Registers a TGraph to be included in the output stream using logical parameters that describe the graph.
virtual StatusCode regGraph (TGraph *g, const MonGroup &group)
 Registers a TGraph to be included in the output stream using logical parameters that describe the graph.
virtual StatusCode regTree (TTree *t, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
 Registers a TTree to be included in the output stream using logical parameters that describe it.
virtual StatusCode regTree (TTree *t, const MonGroup &group)
 Registers a TTree to be included in the output stream using logical parameters that describe it.
virtual StatusCode writeAndDelete (TH1 *h, const MonGroup &group)
 Write out histogram and delete it.
virtual StatusCode deregHist (TH1 *h)
 De-registers a TH1 from the THistSvc, but does NOT delete the object.
virtual StatusCode deregGraph (TGraph *g)
 De-registers a TGraph from the THistSvc, but does NOT delete the object.
virtual StatusCode deregObject (const std::string &objName, const std::string &system, Interval_t interval)
 De-registers a TObject from the THistSvc, but does NOT delete the object.
virtual StatusCode deregObject (const std::string &objName, const MonGroup &group)
 De-registers a TObject from the THistSvc, but does NOT delete the object.
virtual StatusCode setupOutputStreams (std::vector< std::string > Mapping=std::vector< std::string >())
 This implementation does nothing—streams in this class should be managed by the AthenaMonManager.
virtual StatusCode runStat ()
 This implementation does nothing; equivalent functionality may be provided by procHists( true, true, true ).
virtual StatusCode checkHists (bool calledFromFinalize)
 This implementation does nothing; equivalent functionality may be provided by procHists(...) with appropriate arguments.
virtual bool preSelector ()
virtual float lbAverageInteractionsPerCrossing (const EventContext &ctx) const
 Average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx) const
 Instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx) const
 Average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx) const
 Instantaneous luminosity.
virtual double lbDuration (const EventContext &ctx) const
 Luminosity block time (in seconds).
virtual float lbAverageLivefraction (const EventContext &ctx) const
 Average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx) const
 Livefraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx) const
 Average Integrated Luminosity Live Fraction.
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 sysInitialize () override
 Perform system initialization for an algorithm.
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

Static Public Member Functions

static std::string intervalEnumToString (Interval_t interval)
 Converts a Interval_t to a string of the same name.
static Interval_t intervalStringToEnum (const std::string &str)
 Converts a string to the corresponding Interval_t.
static const InterfaceID & interfaceID ()

Protected Types

typedef std::map< std::string, OutputMetadata * > MDMap_t

Protected Member Functions

StatusCode regManagedHistograms (std::vector< MgmtParams< TH1 > > &templateHistograms)
StatusCode regManagedGraphs (std::vector< MgmtParams< TGraph > > &templateGraphs)
StatusCode regManagedTrees (std::vector< MgmtParams< TTree > > &templateTrees)
StatusCode regManagedEfficiencies (std::vector< MgmtParams< TEfficiency > > &templateEfficiencies)
StatusCode parseList (const std::string &, std::vector< std::string > &)
void updateTriggersForGroups (std::vector< std::string > &)
StatusCode registerMetadata (const std::string &streamName, const std::string &hName, const MonGroup &group)
StatusCode THistSvc_deReg_fixTGraph (TFile *file, TGraph *theGraph, std::string &directoryName)
 Fixes THistSvc->deReg(obj) when obj is TGraph instance.
unsigned int get_nEvents () const
long get_procNEventsProp () const
virtual bool trigChainsArePassed (std::vector< std::string > &)
virtual StreamNameFcn * getNewStreamNameFcn () const
bool newLowStatIntervalFlag () const
 Flag functions allowing clients to determine when to book new and process old histograms; values are updated by fillHists() based on counting lumiBlocks, and are correctly set when fillHistograms(), bookHistograms() and procHistograms() are called.
bool newMedStatIntervalFlag () const
bool newHigStatIntervalFlag () const
bool newLowStatFlag () const
bool newLumiBlockFlag () const
bool newRunFlag () const
bool newEventsBlockFlag () const
bool endOfEventsBlockFlag () const
bool endOfLowStatFlag () const
bool endOfLumiBlockFlag () const
bool endOfRunFlag () const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

std::map< Interval_t, std::vector< MgmtParams< TH1 > > > m_templateHistograms
std::map< Interval_t, std::vector< MgmtParams< TGraph > > > m_templateGraphs
std::map< Interval_t, std::vector< MgmtParams< TTree > > > m_templateTrees
std::map< Interval_t, std::vector< MgmtParams< TEfficiency > > > m_templateEfficiencies
std::vector< std::string > m_vTrigChainNames
std::vector< std::string > m_vTrigGroupNames
MDMap_t m_metadataMap
AthenaMonManager * m_manager
std::string m_managerNameProp
std::string m_fileKey
std::string m_dataTypeStr
std::string m_environmentStr
unsigned int m_detailLevel
AthenaMonManager::DataType_t m_dataType
AthenaMonManager::Environment_t m_environment
StreamNameFcn * m_streamNameFcn
ServiceHandle< ITHistSvc > m_THistSvc
PublicToolHandle< Trig::ITrigDecisionTool > m_trigDecTool {this, "TrigDecisionTool",""}
PublicToolHandle< ITriggerTranslatorTool > m_trigTranslator {this,"TriggerTranslatorTool",""}
ToolHandleArray< IDQFilterTool > m_DQFilterTools {this,"FilterTools",{}}
long m_procNEventsProp
std::string m_path
long m_preScaleProp
std::string m_triggerChainProp
std::string m_triggerGroupProp
bool m_useTrigger
unsigned int m_lastLumiBlock
unsigned int m_lastRun
int m_lastLowStatInterval
int m_lastMedStatInterval
int m_lastHigStatInterval
unsigned int m_nEvents
unsigned int m_nEventsIgnoreTrigger
unsigned int m_nLumiBlocks
bool m_haveClearedLastEventBlock

Private Types

typedef ServiceHandle< StoreGateSvc > StoreGateSvc_t

Private Member Functions

 PhysValMET ()
 Default constructor:
bool Accept (const xAOD::Electron *el)
bool Accept (const xAOD::Photon *ph)
bool Accept (const xAOD::TauJet *tau)
bool Accept (const xAOD::Muon *muon)
bool Accept (const xAOD::Jet *jet, double JvtCut, ToolHandle< IJetUpdateJvt > *jvtTool)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

bool m_doTruth
bool m_inputIsDAOD
bool m_doMETRefPlots
std::string m_eleColl
std::string m_gammaColl
std::string m_tauColl
std::string m_muonColl
std::string m_mapname
std::string m_corename
std::vector< std::string > m_types
std::vector< std::string > m_terms
std::map< std::string, std::string > m_names
TH1D * m_MET_Track = nullptr
TH1D * m_MET_Track_x = nullptr
TH1D * m_MET_Track_y = nullptr
TH1D * m_MET_Track_phi = nullptr
TH1D * m_MET_Track_sum = nullptr
TH1D * m_MET_PVTrack_Nominal = nullptr
TH1D * m_MET_PVTrack_Nominal_x = nullptr
TH1D * m_MET_PVTrack_Nominal_y = nullptr
TH1D * m_MET_PVTrack_Nominal_phi = nullptr
TH1D * m_MET_PVTrack_Nominal_sum = nullptr
TH1D * m_MET_PVTrack_Pileup = nullptr
TH1D * m_MET_PVTrack_Pileup_x = nullptr
TH1D * m_MET_PVTrack_Pileup_y = nullptr
TH1D * m_MET_PVTrack_Pileup_phi = nullptr
TH1D * m_MET_PVTrack_Pileup_sum = nullptr
TH1D * m_MET_Calo = nullptr
TH1D * m_MET_Calo_x = nullptr
TH1D * m_MET_Calo_y = nullptr
TH1D * m_MET_Calo_phi = nullptr
TH1D * m_MET_Calo_sum = nullptr
std::map< std::string, std::vector< TH1D * > > m_MET_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_x
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_y
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_phi
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_sum
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_x
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_y
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_phi
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_sum
std::map< std::string, std::vector< TH1D * > > m_MET_Cumu_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_Resolution_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_Significance_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_dPhi_Ref
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalTrk_Ref
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalClus_Ref
std::map< std::string, std::vector< TH1D * > > m_MET_Reb
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_x
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_y
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_phi
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_sum
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_x
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_y
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_phi
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_sum
std::map< std::string, std::vector< TH1D * > > m_MET_Cumu_Reb
std::map< std::string, std::vector< TH1D * > > m_MET_Resolution_Reb
std::map< std::string, std::vector< TH1D * > > m_MET_Significance_Reb
std::map< std::string, std::vector< TH1D * > > m_MET_dPhi_Reb
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalTrk_Reb
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalClus_Reb
std::vector< std::string > m_dir_met
ToolHandle< CP::IMuonSelectionTool > m_muonSelTool {this, "MuonSelectionTool", "", "Muon selection tool"}
ToolHandle< IAsgElectronLikelihoodTool > m_elecSelLHTool {this, "ElectronLHSelectionTool", "", "Electron likelihood selection tool"}
ToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMTool {this, "PhotonIsEMSelectionTool" , "", "Photon selection tool"}
ToolHandle< IJetUpdateJvt > m_jvtToolEM {this, "JVTToolEMTopo", "", "JVT tool for EMTopo jets"}
ToolHandle< IJetUpdateJvt > m_jvtToolPFlow {this, "JVTToolEMPFlow", "", "JVT tool forEMPFlow jets"}
ToolHandle< IMETMaker > m_metmakerTopo {this, "METMakerTopo", "", "METMaker for EMTopo jets"}
ToolHandle< IMETMaker > m_metmakerPFlow {this, "METMakerPFlow", "", "METMaker for EMPFlow jets"}
ToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool {this, "TauSelectionTool", "", "Tau selection tool"}
ToolHandle< IMETMaker > * m_metmaker
bool m_newLowStatInterval
bool m_newMedStatInterval
bool m_newHigStatInterval
bool m_newLowStat
bool m_newLumiBlock
bool m_newRun
bool m_newEventsBlock
bool m_endOfEventsBlock
bool m_endOfLowStat
bool m_endOfLumiBlock
bool m_endOfRun
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
SG::ReadCondHandleKey< LBDurationCondData > m_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
SG::ReadCondHandleKey< TrigLiveFractionCondData > m_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData","SG Key of TrigLiveFractionCondData object"}
bool m_bookHistogramsInitial
bool m_useLumi
float m_defaultLBDuration
std::set< Interval_t > m_supportedIntervalsForRebooking
Imp * m_d
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 44 of file PhysValMET.h.

Member Typedef Documentation

◆ MDMap_t

typedef std::map<std::string,OutputMetadata*> ManagedMonitorToolBase::MDMap_t
protectedinherited

Definition at line 733 of file ManagedMonitorToolBase.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 376 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ Interval_t

An enumeration describing the interval over which a particular monitoring object is filled (i.e., interval over which the method Fill(...) is called).

This information may be stored with the monitoring object if an application is only able to partially fill the object (i.e., a job sees only part of a run or fill). This information may be ignored in some running Environments. The 'fill' interval corresponds to a fill of the LHC. The 'all' interval corresponds to all available data. The 'lumiBlock' and 'fill' intervals are only valid for the 'collisions' DataType_t.

Enumerator
file 
eventsBlock 
lumiBlock 
lowStat 
medStat 
higStat 
run 
fill 
all 

Definition at line 61 of file ManagedMonitorToolBase.h.

◆ MgmtAttr_t

An enumeration describing how the class handles the histogram.

attrib_unmanaged: histograms with this attribute will not be rebooked automatically and must be managed by the user code.

attrib_x_is_lb: indicates that the x-axis of the histogram is the luminosity block number and that the histogram should be rebooked as necessary if the current LB exceeds the range.

Enumerator
ATTRIB_MANAGED 
ATTRIB_UNMANAGED 
ATTRIB_X_VS_LB 

Definition at line 75 of file ManagedMonitorToolBase.h.

Constructor & Destructor Documentation

◆ PhysValMET() [1/2]

MissingEtDQA::PhysValMET::PhysValMET ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor with parameters:

Definition at line 54 of file PhysValMET.cxx.

56 :
57 ManagedMonitorToolBase( type, name, parent ),
58 m_metmaker(nullptr)
59 {
60 declareProperty( "InputElectrons", m_eleColl = "Electrons" );
61 declareProperty( "InputPhotons", m_gammaColl = "Photons" );
62 declareProperty( "InputTaus", m_tauColl = "TauJets" );
63 declareProperty( "InputMuons", m_muonColl = "Muons" );
64 declareProperty( "DoTruth", m_doTruth = false );
65 declareProperty( "InputIsDAOD", m_inputIsDAOD = false );
66 declareProperty( "DoMETRefPlots", m_doMETRefPlots = false );
67 declareProperty( "METMapName", m_mapname = "METAssoc" );
68 declareProperty( "METCoreName", m_corename = "MET_Core" );
69 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ManagedMonitorToolBase(const std::string &type, const std::string &name, const IInterface *parent)
ToolHandle< IMETMaker > * m_metmaker
Definition PhysValMET.h:163

◆ ~PhysValMET()

MissingEtDQA::PhysValMET::~PhysValMET ( )
virtual

Destructor:

Definition at line 73 of file PhysValMET.cxx.

74 {
75 m_names.clear();
76 m_types.clear();
77 m_terms.clear();
78 m_MET_Ref.clear();
79 m_MET_Ref_x.clear();
80 m_MET_Ref_y.clear();
81 m_MET_Ref_phi.clear();
82 m_MET_Ref_sum.clear();
83 m_MET_Diff_Ref.clear();
84 m_MET_Diff_Ref_x.clear();
85 m_MET_Diff_Ref_y.clear();
86 m_MET_Diff_Ref_phi.clear();
87 m_MET_Diff_Ref_sum.clear();
88 m_MET_Cumu_Ref.clear();
91 m_MET_dPhi_Ref.clear();
94 m_MET_Reb.clear();
95 m_MET_Reb_x.clear();
96 m_MET_Reb_y.clear();
97 m_MET_Reb_phi.clear();
98 m_MET_Reb_sum.clear();
99 m_MET_Diff_Reb.clear();
100 m_MET_Diff_Reb_x.clear();
101 m_MET_Diff_Reb_y.clear();
102 m_MET_Diff_Reb_phi.clear();
103 m_MET_Diff_Reb_sum.clear();
104 m_MET_Cumu_Reb.clear();
105 m_MET_Resolution_Reb.clear();
107 m_MET_dPhi_Reb.clear();
110}
std::map< std::string, std::vector< TH1D * > > m_MET_Reb
Definition PhysValMET.h:136
std::map< std::string, std::vector< TH1D * > > m_MET_Ref
Definition PhysValMET.h:120
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref
Definition PhysValMET.h:125
std::vector< std::string > m_terms
Definition PhysValMET.h:108
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_y
Definition PhysValMET.h:143
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_x
Definition PhysValMET.h:126
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_phi
Definition PhysValMET.h:139
std::map< std::string, std::vector< TH1D * > > m_MET_Cumu_Ref
Definition PhysValMET.h:130
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_x
Definition PhysValMET.h:137
std::map< std::string, std::vector< TH1D * > > m_MET_Significance_Reb
Definition PhysValMET.h:148
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_y
Definition PhysValMET.h:127
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_y
Definition PhysValMET.h:138
std::vector< std::string > m_types
Definition PhysValMET.h:105
std::map< std::string, std::vector< TH1D * > > m_MET_Resolution_Reb
Definition PhysValMET.h:147
std::map< std::string, std::vector< TH1D * > > m_MET_Reb_sum
Definition PhysValMET.h:140
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_x
Definition PhysValMET.h:142
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_y
Definition PhysValMET.h:122
std::map< std::string, std::string > m_names
Definition PhysValMET.h:111
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalClus_Reb
Definition PhysValMET.h:151
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_x
Definition PhysValMET.h:121
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_phi
Definition PhysValMET.h:144
std::map< std::string, std::vector< TH1D * > > m_MET_Significance_Ref
Definition PhysValMET.h:132
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_phi
Definition PhysValMET.h:128
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalTrk_Reb
Definition PhysValMET.h:150
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_sum
Definition PhysValMET.h:124
std::map< std::string, std::vector< TH1D * > > m_MET_Cumu_Reb
Definition PhysValMET.h:146
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb_sum
Definition PhysValMET.h:145
std::map< std::string, std::vector< TH1D * > > m_MET_dPhi_Reb
Definition PhysValMET.h:149
std::map< std::string, std::vector< TH1D * > > m_MET_Resolution_Ref
Definition PhysValMET.h:131
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalClus_Ref
Definition PhysValMET.h:135
std::map< std::string, std::vector< TH1D * > > m_MET_Ref_phi
Definition PhysValMET.h:123
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Reb
Definition PhysValMET.h:141
std::map< std::string, std::vector< TH1D * > > m_MET_Diff_Ref_sum
Definition PhysValMET.h:129
std::map< std::string, std::vector< TH2D * > > m_MET_CorrFinalTrk_Ref
Definition PhysValMET.h:134
std::map< std::string, std::vector< TH1D * > > m_MET_dPhi_Ref
Definition PhysValMET.h:133

◆ PhysValMET() [2/2]

MissingEtDQA::PhysValMET::PhysValMET ( )
private

Default constructor:

Member Function Documentation

◆ Accept() [1/5]

bool MissingEtDQA::PhysValMET::Accept ( const xAOD::Electron * el)
private

Definition at line 1529 of file PhysValMET.cxx.

1530 {
1531 if( fabs(el->eta())>2.47 || el->pt()<10e3 ) return false;
1532 return static_cast<bool> (m_elecSelLHTool->accept(el));
1533 }
ToolHandle< IAsgElectronLikelihoodTool > m_elecSelLHTool
Definition PhysValMET.h:156

◆ Accept() [2/5]

bool MissingEtDQA::PhysValMET::Accept ( const xAOD::Jet * jet,
double JvtCut,
ToolHandle< IJetUpdateJvt > * jvtTool )
private

Definition at line 1544 of file PhysValMET.cxx.

1545 {
1546 if( jet->pt()<20e3 || jvtTool == nullptr) return false;
1547 return (fabs(jet->eta()) > 2.4 || jet->pt() > 60e3 || (*jvtTool)->updateJvt(*jet) > JvtCut);
1548 }

◆ Accept() [3/5]

bool MissingEtDQA::PhysValMET::Accept ( const xAOD::Muon * muon)
private

Definition at line 1523 of file PhysValMET.cxx.

1524 {
1525 if( mu->pt()<2.5e3 || mu->pt()/cosh(mu->eta())<4e3 ) return false;
1526 return static_cast<bool> (m_muonSelTool->accept(*mu));
1527 }
ToolHandle< CP::IMuonSelectionTool > m_muonSelTool
Definition PhysValMET.h:155

◆ Accept() [4/5]

bool MissingEtDQA::PhysValMET::Accept ( const xAOD::Photon * ph)
private

Definition at line 1535 of file PhysValMET.cxx.

1536 {
1537 if( !(ph->author()&20) || fabs(ph->eta())>2.47 || ph->pt()<10e3 ) return false;
1538 return static_cast<bool>(m_photonSelIsEMTool->accept(ph));
1539 }
ToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMTool
Definition PhysValMET.h:157
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition Egamma_v1.cxx:66
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition Egamma_v1.cxx:71
uint16_t author(uint16_t bitmask=EgammaParameters::AuthorALL) const
Get author.

◆ Accept() [5/5]

bool MissingEtDQA::PhysValMET::Accept ( const xAOD::TauJet * tau)
private

Definition at line 1541 of file PhysValMET.cxx.

1542 { return static_cast<bool> (m_tauSelTool->accept( *tau )); }
ToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
Definition PhysValMET.h:162

◆ bookHistograms()

StatusCode MissingEtDQA::PhysValMET::bookHistograms ( )
virtual

An inheriting class should either override this function or bookHists().

Reimplemented from ManagedMonitorToolBase.

Definition at line 194 of file PhysValMET.cxx.

195 {
196 ATH_MSG_INFO ("Booking hists " << name() << "...");
197
198 // Physics validation plots are level 10
199
200 int nbinp = 100;
201 int nbinpxy = 100;
202 int nbinphi = 63;
203 int nbinE = 100;
204 double suptmi = 500.;
205 double suptmixy = 250.;
206 double binphi = 3.15;
207 double lowET = 0.;
208 double suET = 2500.;
209 //all histograms only booked for level>=10
210 if (m_detailLevel >= 10) {
211
212 for (const auto& type : m_types){
213 std::string name_met;
214 std::string name_sub;
215 std::vector<std::string> corrClus_names;
216 std::vector<std::string> corrTrk_names;
217 std::vector<std::string> sum_names;
218 std::string dir;
219
220 corrClus_names.emplace_back("RefEle");
221 corrClus_names.emplace_back("RefGamma");
222 corrClus_names.emplace_back("RefTau");
223 corrClus_names.emplace_back("Muons");
224 corrClus_names.emplace_back("RefJet");
225 corrClus_names.emplace_back("SoftClus");
226
227 corrTrk_names.emplace_back("RefEle");
228 corrTrk_names.emplace_back("RefGamma");
229 corrTrk_names.emplace_back("RefTau");
230 corrTrk_names.emplace_back("Muons");
231 corrTrk_names.emplace_back("RefJet");
232 corrTrk_names.emplace_back("PVSoftTrk");
233
234 sum_names.emplace_back("RefEle");
235 sum_names.emplace_back("RefGamma");
236 sum_names.emplace_back("RefTau");
237 sum_names.emplace_back("Muons");
238 sum_names.emplace_back("RefJet");
239
240 //-------------------------------------------------------------------------------------
241 // First set-up Reference MET histograms (if we want them)
242 if (m_doMETRefPlots){
243 name_met = "MET_Reference_" + type;
244 m_dir_met.clear();
245 std::vector<TH1D*> v_MET_Ref;
246 std::vector<TH1D*> v_MET_Ref_x;
247 std::vector<TH1D*> v_MET_Ref_y;
248 std::vector<TH1D*> v_MET_Ref_phi;
249 std::vector<TH1D*> v_MET_Ref_sum;
250 std::vector<TH1D*> v_MET_Cumu_Ref;
251 std::vector<TH1D*> v_MET_Resolution_Ref;
252 std::vector<TH1D*> v_MET_Significance_Ref;
253 std::vector<TH1D*> v_MET_dPhi_Ref;
254 std::vector<TH2D*> v_MET_CorrFinalTrk_Ref;
255 std::vector<TH2D*> v_MET_CorrFinalClus_Ref;
256 std::vector<TH1D*> v_MET_Diff_Ref;
257 std::vector<TH1D*> v_MET_Diff_Ref_x;
258 std::vector<TH1D*> v_MET_Diff_Ref_y;
259 std::vector<TH1D*> v_MET_Diff_Ref_phi;
260 std::vector<TH1D*> v_MET_Diff_Ref_sum;
261
262 for(const auto& term : m_terms) {
263 v_MET_Ref.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
264 v_MET_Ref_x.push_back( new TH1D((name_met + "_" + term +"_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
265 v_MET_Ref_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
266 v_MET_Ref_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) );
267 v_MET_Ref_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) );
268 m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/");
269 }
270 std::size_t n = v_MET_Ref.size();
271 m_MET_Ref[type] = std::move(v_MET_Ref);
272 m_MET_Ref_x[type] = std::move(v_MET_Ref_x);
273 m_MET_Ref_y[type] = std::move(v_MET_Ref_y);
274 m_MET_Ref_phi[type] = std::move(v_MET_Ref_phi);
275 m_MET_Ref_sum[type] = std::move(v_MET_Ref_sum);
276
277 for(std::size_t i = 0; i < n; ++i) {
283 }
284
285 name_sub = name_met + "/Cumulative";
286 v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
287 v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
288
289 m_MET_Cumu_Ref[type] = v_MET_Cumu_Ref;
290
291 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Ref.size(); ++i) {
292 ATH_CHECK(regHist(m_MET_Cumu_Ref[type].at(i),"MET/" + name_sub + "/",all));
293 }
294
295 name_sub = name_met + "/Residuals";
296 v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
297 v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
298 v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
299 v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
300
301 m_MET_Resolution_Ref[type] = v_MET_Resolution_Ref;
302
303 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Ref.size(); ++i) {
304 ATH_CHECK(regHist(m_MET_Resolution_Ref[type].at(i),"MET/" + name_sub + "/",all));
305 }
306
307 name_sub = name_met + "/Significance";
308 v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) );
309 v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) );
310
311 m_MET_Significance_Ref[type] = v_MET_Significance_Ref;
312
313 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Ref.size(); ++i) {
314 ATH_CHECK(regHist(m_MET_Significance_Ref[type].at(i),"MET/" + name_sub + "/",all));
315 }
316
317 name_sub = name_met + "/dPhi";
318 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
319 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
320 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
321 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
322 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
323 v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
324
325 m_MET_dPhi_Ref[type] = v_MET_dPhi_Ref;
326
327 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Ref.size(); ++i) {
328 ATH_CHECK(regHist(m_MET_dPhi_Ref[type].at(i),"MET/" + name_sub + "/",all));
329 }
330
331 name_sub = name_met + "/Correlations";
332
333 v_MET_CorrFinalClus_Ref.reserve(corrClus_names.size());
334
335 for(const auto& it : corrClus_names) {
336 v_MET_CorrFinalClus_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) );
337 }
338 v_MET_CorrFinalTrk_Ref.reserve(corrTrk_names.size());
339
340 for(const auto& it : corrTrk_names) {
341 v_MET_CorrFinalTrk_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) );
342 }
343
344 m_MET_CorrFinalClus_Ref[type] = v_MET_CorrFinalClus_Ref;
345 m_MET_CorrFinalTrk_Ref[type] = v_MET_CorrFinalTrk_Ref;
346
347 for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Ref.size(); ++i) {
348 ATH_CHECK(regHist(m_MET_CorrFinalTrk_Ref[type].at(i),"MET/" + name_sub + "/",all));
349 }
350 for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Ref.size(); ++i) {
351 ATH_CHECK(regHist(m_MET_CorrFinalClus_Ref[type].at(i),"MET/" + name_sub + "/",all));
352 }
353
354 m_dir_met.clear();
355
356 for(const auto& it : sum_names) {
357 v_MET_Diff_Ref.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150));
358 v_MET_Diff_Ref_x.push_back( new TH1D((name_met + "_Diff_" + it +"_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) );
359 v_MET_Diff_Ref_y.push_back( new TH1D((name_met + "_Diff_" + it +"_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) );
360 v_MET_Diff_Ref_phi.push_back( new TH1D((name_met + "_Diff_" + it +"_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss},#Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) );
361 v_MET_Diff_Ref_sum.push_back( new TH1D((name_met + "_Diff_" + it +"_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) );
362 m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/");
363 }
364 n = v_MET_Diff_Ref.size();
365 m_MET_Diff_Ref[type] = std::move(v_MET_Diff_Ref);
366 m_MET_Diff_Ref_x[type] = std::move(v_MET_Diff_Ref_x);
367 m_MET_Diff_Ref_y[type] = std::move(v_MET_Diff_Ref_y);
368 m_MET_Diff_Ref_phi[type] = std::move(v_MET_Diff_Ref_phi);
369 m_MET_Diff_Ref_sum[type] = std::move(v_MET_Diff_Ref_sum);
370
371 for(std::size_t i = 0; i < n; ++i) {
377 }
378 // End of if-statement (m_doMETRefPlots)
379 }
380
381 //-------------------------------------------------------------------------------------
382 // Now the same for Rebuilt MET
383
384 name_met = "MET_Rebuilt_" + type;
385 m_dir_met.clear();
386 std::vector<TH1D*> v_MET_Reb;
387 std::vector<TH1D*> v_MET_Reb_x;
388 std::vector<TH1D*> v_MET_Reb_y;
389 std::vector<TH1D*> v_MET_Reb_phi;
390 std::vector<TH1D*> v_MET_Reb_sum;
391 std::vector<TH1D*> v_MET_Cumu_Reb;
392 std::vector<TH1D*> v_MET_Resolution_Reb;
393 std::vector<TH1D*> v_MET_Significance_Reb;
394 std::vector<TH1D*> v_MET_dPhi_Reb;
395 std::vector<TH2D*> v_MET_CorrFinalTrk_Reb;
396 std::vector<TH2D*> v_MET_CorrFinalClus_Reb;
397 std::vector<TH1D*> v_MET_Diff_Reb;
398 std::vector<TH1D*> v_MET_Diff_Reb_x;
399 std::vector<TH1D*> v_MET_Diff_Reb_y;
400 std::vector<TH1D*> v_MET_Diff_Reb_phi;
401 std::vector<TH1D*> v_MET_Diff_Reb_sum;
402
403 for(const auto& term : m_terms) {
404 v_MET_Reb.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
405 v_MET_Reb_x.push_back( new TH1D((name_met + "_" + term + "_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
406 v_MET_Reb_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
407 v_MET_Reb_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) );
408 v_MET_Reb_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) );
409 m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/");
410 }
411 std::size_t n = v_MET_Reb.size();
412 m_MET_Reb[type] = std::move(v_MET_Reb);
413 m_MET_Reb_x[type] = std::move(v_MET_Reb_x);
414 m_MET_Reb_y[type] = std::move(v_MET_Reb_y);
415 m_MET_Reb_phi[type] = std::move(v_MET_Reb_phi);
416 m_MET_Reb_sum[type] = std::move(v_MET_Reb_sum);
417
418 for(std::size_t i = 0; i < n; ++i) {
424 }
425
426 name_sub = name_met + "/Cumulative";
427 v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
428 v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) );
429
430 m_MET_Cumu_Reb[type] = v_MET_Cumu_Reb;
431
432 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Reb.size(); ++i) {
433 ATH_CHECK(regHist(m_MET_Cumu_Reb[type].at(i),"MET/" + name_sub + "/",all));
434 }
435
436 name_sub = name_met + "/Residuals";
437 v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
438 v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
439 v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
440 v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) );
441 m_MET_Resolution_Reb[type] = v_MET_Resolution_Reb;
442
443 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Reb.size(); ++i) {
444 ATH_CHECK(regHist(m_MET_Resolution_Reb[type].at(i),"MET/" + name_sub + "/",all));
445 }
446
447 name_sub = name_met + "/Significance";
448 v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) );
449 v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) );
450
451 m_MET_Significance_Reb[type] = v_MET_Significance_Reb;
452
453 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Reb.size(); ++i) {
454 ATH_CHECK(regHist(m_MET_Significance_Reb[type].at(i),"MET/" + name_sub + "/",all));
455 }
456
457 name_sub = name_met + "/dPhi";
458 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
459 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
460 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
461 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
462 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
463 v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) );
464
465 m_MET_dPhi_Reb[type] = v_MET_dPhi_Reb;
466
467 for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Reb.size(); ++i) {
468 ATH_CHECK(regHist(m_MET_dPhi_Reb[type].at(i),"MET/" + name_sub + "/",all));
469 }
470
471 name_sub = name_met + "/Correlations";
472 v_MET_CorrFinalClus_Reb.reserve(corrClus_names.size());
473
474 for(const auto& it : corrClus_names) {
475 v_MET_CorrFinalClus_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) );
476 }
477 v_MET_CorrFinalTrk_Reb.reserve(corrTrk_names.size());
478
479 for(const auto& it : corrTrk_names) {
480 v_MET_CorrFinalTrk_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) );
481 }
482
483 m_MET_CorrFinalClus_Reb[type] = v_MET_CorrFinalClus_Reb;
484 m_MET_CorrFinalTrk_Reb[type] = v_MET_CorrFinalTrk_Reb;
485
486 for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Reb.size(); ++i) {
487 ATH_CHECK(regHist(m_MET_CorrFinalTrk_Reb[type].at(i),"MET/" + name_sub + "/",all));
488 }
489 for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Reb.size(); ++i) {
490 ATH_CHECK(regHist(m_MET_CorrFinalClus_Reb[type].at(i),"MET/" + name_sub + "/",all));
491 }
492
493 m_dir_met.clear();
494
495 for(const auto& it : sum_names) {
496 v_MET_Diff_Reb.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150));
497 v_MET_Diff_Reb_x.push_back( new TH1D((name_met + "_Diff_" + it + "_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) );
498 v_MET_Diff_Reb_y.push_back( new TH1D((name_met + "_Diff_" + it + "_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) );
499 v_MET_Diff_Reb_phi.push_back( new TH1D((name_met + "_Diff_" + it + "_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss}, #Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) );
500 v_MET_Diff_Reb_sum.push_back( new TH1D((name_met + "_Diff_" + it + "_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) );
501 m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/");
502 }
503 n = v_MET_Diff_Reb.size();
504 m_MET_Diff_Reb[type] = std::move(v_MET_Diff_Reb);
505 m_MET_Diff_Reb_x[type] = std::move(v_MET_Diff_Reb_x);
506 m_MET_Diff_Reb_y[type] = std::move(v_MET_Diff_Reb_y);
507 m_MET_Diff_Reb_phi[type] = std::move(v_MET_Diff_Reb_phi);
508 m_MET_Diff_Reb_sum[type] = std::move(v_MET_Diff_Reb_sum);
509
510 for(std::size_t i = 0; i < n; ++i) {
516 }
517 }
518
519 //-------------------------------------------------------------------------------------
520 // Now MET_Track (only built if METRef is too)
521 if (m_doMETRefPlots){
522 std::string name_met = "MET_Track";
523 std::string dir = "MET/" + name_met + "/";
524 std::string sub_dir;
525
526 sub_dir = dir + "Track/";
527 ATH_CHECK(regHist(m_MET_Track = new TH1D("Track", (name_met + " " + m_names["Track"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all));
528 ATH_CHECK(regHist(m_MET_Track_x = new TH1D("Track_x", (name_met + " " + m_names["Track"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
529 ATH_CHECK(regHist(m_MET_Track_y = new TH1D("Track_y", (name_met + " " + m_names["Track"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
530 ATH_CHECK(regHist(m_MET_Track_phi = new TH1D("Track_phi", (name_met + " " + m_names["Track"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all));
531 ATH_CHECK(regHist(m_MET_Track_sum = new TH1D("Track_sum", (name_met + " " + m_names["Track"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all));
532
533 sub_dir = dir + "PVTrack_Nominal/";
534 ATH_CHECK(regHist(m_MET_PVTrack_Nominal = new TH1D("PVTrack_Nominal", (name_met + " " + m_names["PVTrack_Nominal"] + " ; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all));
535 ATH_CHECK(regHist(m_MET_PVTrack_Nominal_x = new TH1D("PVTrack_Nominal_x", (name_met + " " + m_names["PVTrack_Nominal"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
536 ATH_CHECK(regHist(m_MET_PVTrack_Nominal_y = new TH1D("PVTrack_Nominal_y", (name_met + " " + m_names["PVTrack_Nominal"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
537 ATH_CHECK(regHist(m_MET_PVTrack_Nominal_phi = new TH1D("PVTrack_Nominal_phi", (name_met + " " + m_names["PVTrack_Nominal"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all));
538 ATH_CHECK(regHist(m_MET_PVTrack_Nominal_sum = new TH1D("PVTrack_Nominal_sum", (name_met + " " + m_names["PVTrack_Nominal"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all));
539
540 sub_dir = dir + "PVTrack_Pileup/";
541 ATH_CHECK(regHist(m_MET_PVTrack_Pileup = new TH1D("PVTrack_Pileup", (name_met + " " + m_names["PVTrack_Pileup"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all));
542 ATH_CHECK(regHist(m_MET_PVTrack_Pileup_x = new TH1D("PVTrack_Pileup_x", (name_met + " " + m_names["PVTrack_Pileup"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
543 ATH_CHECK(regHist(m_MET_PVTrack_Pileup_y = new TH1D("PVTrack_Pileup_y", (name_met +" " + m_names["PVTrack_Pileup"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all));
544 ATH_CHECK(regHist(m_MET_PVTrack_Pileup_phi = new TH1D("PVTrack_Pileup_phi", (name_met + " " + m_names["PVTrack_Pileup"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all));
545 ATH_CHECK(regHist(m_MET_PVTrack_Pileup_sum = new TH1D("PVTrack_Pileup_sum", (name_met + " " + m_names["PVTrack_Pileup"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all));
546 }
547
548 //-------------------------------------------------------------------------------------
549 //Now MET_Calo
550
551 std::string name_met = "MET_Calo";
552 std::string dir = "MET/" + name_met + "/";
553
554 ATH_CHECK(regHist(m_MET_Calo = new TH1D("Calo", (name_met + " " + m_names["Calo"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), dir, all));
555 ATH_CHECK(regHist(m_MET_Calo_x = new TH1D("Calo_x", (name_met + " " + m_names["Calo"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all));
556 ATH_CHECK(regHist(m_MET_Calo_y = new TH1D("Calo_y", (name_met + " " + m_names["Calo"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all));
557 ATH_CHECK(regHist(m_MET_Calo_phi = new TH1D("Calo_phi", (name_met + " " + m_names["Calo"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), dir, all));
558 ATH_CHECK(regHist(m_MET_Calo_sum = new TH1D("Calo_sum", (name_met + " " + m_names["Calo"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), dir, all));
559
560 }
561
562 return StatusCode::SUCCESS;
563 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x,...)
virtual StatusCode regHist(TH1 *h, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical ...
std::vector< std::string > m_dir_met
Definition PhysValMET.h:153
mapped_type at(key_type key) const
Look up an element in the map.

◆ bookHistogramsRecurrent()

StatusCode ManagedMonitorToolBase::bookHistogramsRecurrent ( )
virtualinherited

An inheriting class should either override this function, bookHists() or bookHistograms().

Reimplemented in ManagedMonitorToolTest, MdtVsRpcRawDataValAlg, and MdtVsTgcRawDataValAlg.

Definition at line 1179 of file ManagedMonitorToolBase.cxx.

1181{
1182 if( m_newEventsBlock ) { }
1183 if( m_newLumiBlock ) { }
1184 if( m_newRun ) { }
1185
1186 return StatusCode::SUCCESS;
1187}

◆ bookHists()

StatusCode ManagedMonitorToolBase::bookHists ( )
virtualinherited

Calls bookHists( true, true, true ) and initializes lumiBlock and run numbers.

Implements IMonitorToolBase.

Definition at line 646 of file ManagedMonitorToolBase.cxx.

648{
649 // The Run/LumiBlock numbers are not set when beginRun() is called. Therefore,
650 // book histograms on the first call to fillHists(), which is called from execute().
651 return StatusCode::SUCCESS;
652}

◆ checkHists()

StatusCode ManagedMonitorToolBase::checkHists ( bool calledFromFinalize)
virtualinherited

This implementation does nothing; equivalent functionality may be provided by procHists(...) with appropriate arguments.

Implements IMonitorToolBase.

Reimplemented in CscCalibMonToolBase.

Definition at line 1561 of file ManagedMonitorToolBase.cxx.

1563{
1564 // Histograms will be checked using the data-quality monitoring framework (DQMF)
1565
1566 return StatusCode::SUCCESS;
1567}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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>

◆ deregGraph()

StatusCode ManagedMonitorToolBase::deregGraph ( TGraph * g)
virtualinherited

De-registers a TGraph from the THistSvc, but does NOT delete the object.

Definition at line 1515 of file ManagedMonitorToolBase.cxx.

1517{
1518 return m_THistSvc->deReg( g );
1519}
ServiceHandle< ITHistSvc > m_THistSvc

◆ deregHist()

StatusCode ManagedMonitorToolBase::deregHist ( TH1 * h)
virtualinherited

De-registers a TH1 from the THistSvc, but does NOT delete the object.

Definition at line 1507 of file ManagedMonitorToolBase.cxx.

1509{
1510 return m_THistSvc->deReg( h );
1511}

◆ deregObject() [1/2]

StatusCode ManagedMonitorToolBase::deregObject ( const std::string & objName,
const MonGroup & group )
virtualinherited

De-registers a TObject from the THistSvc, but does NOT delete the object.

(NB: LightWeight histograms are not even registered until readout).

Definition at line 1533 of file ManagedMonitorToolBase.cxx.

1535{
1536 std::string streamName = streamNameFunction()->getStreamName( this, group, objName );
1537 return m_THistSvc->deReg( streamName );
1538}
virtual std::string getStreamName(const ManagedMonitorToolBase *tool, const MonGroup &group, const std::string &objName, bool usePreviousInterval=false)=0
A function that converts a MonGroup of logical parameters into a physical output stream name.
virtual StreamNameFcn * streamNameFunction()
Returns the function object that converts logical paramters into a physical stream name.

◆ deregObject() [2/2]

StatusCode ManagedMonitorToolBase::deregObject ( const std::string & objName,
const std::string & system,
Interval_t interval )
virtualinherited

De-registers a TObject from the THistSvc, but does NOT delete the object.

(NB: LightWeight histograms are not even registered until readout).

Definition at line 1523 of file ManagedMonitorToolBase.cxx.

1526{
1527 MonGroup group( this, system, interval );
1528 return deregObject( objName, group );
1529}
A container of information describing a monitoring object.
virtual StatusCode deregObject(const std::string &objName, const std::string &system, Interval_t interval)
De-registers a TObject from the THistSvc, but does NOT delete the object.

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ endOfEventsBlockFlag()

bool ManagedMonitorToolBase::endOfEventsBlockFlag ( ) const
inlineprotectedinherited

Definition at line 721 of file ManagedMonitorToolBase.h.

◆ endOfLowStatFlag()

bool ManagedMonitorToolBase::endOfLowStatFlag ( ) const
inlineprotectedinherited

Definition at line 722 of file ManagedMonitorToolBase.h.

◆ endOfLumiBlockFlag()

bool ManagedMonitorToolBase::endOfLumiBlockFlag ( ) const
inlineprotectedinherited

Definition at line 723 of file ManagedMonitorToolBase.h.

◆ endOfRunFlag()

bool ManagedMonitorToolBase::endOfRunFlag ( ) const
inlineprotectedinherited

Definition at line 724 of file ManagedMonitorToolBase.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ fillHistograms()

StatusCode MissingEtDQA::PhysValMET::fillHistograms ( const EventContext & ctx)
virtual

An inheriting class should either override this function or fillHists().

Reimplemented from ManagedMonitorToolBase.

Definition at line 565 of file PhysValMET.cxx.

566 {
567 //dont fill unbooked histograms!
568 if (m_detailLevel < 10) {
569 return StatusCode::SUCCESS;
570 }
571 ATH_MSG_DEBUG ("Filling hists " << name() << "...");
572 //If we're running over new AODs without MET containers, don't do anything!
574 return StatusCode::SUCCESS;
575
576 //Beamspot weight
577 const xAOD::EventInfo* eventInfo(nullptr);
578 ATH_CHECK(evtStore()->retrieve(eventInfo, "EventInfo"));
579
580 float weight = eventInfo->beamSpotWeight();
581
582 //Retrieve MET Truth
583 const xAOD::MissingETContainer* met_Truth = nullptr;
584 if(m_doTruth) {
585 ATH_CHECK( evtStore()->retrieve(met_Truth,"MET_Truth") );
586 if (!met_Truth) {
587 ATH_MSG_ERROR ( "Failed to retrieve MET_Truth. Exiting." );
588 return StatusCode::FAILURE;
589 }
590 }
591
592 //Physics Objects
593 const xAOD::MuonContainer* muons = nullptr;
594 ATH_CHECK( evtStore()->retrieve(muons,m_muonColl) );
595 if (!muons) {
596 ATH_MSG_ERROR ( "Failed to retrieve Muon container. Exiting." );
597 return StatusCode::FAILURE;
598 }
599 ConstDataVector<MuonContainer> metMuons(SG::VIEW_ELEMENTS);
600 bool is_muon = 0;
601 for(const auto mu : *muons) {
602 if(Accept(mu)) {
603 metMuons.push_back(mu);
604 is_muon = 1;
605 }
606 }
607
608 const xAOD::ElectronContainer* electrons = nullptr;
609 ATH_CHECK( evtStore()->retrieve(electrons,m_eleColl) );
610 if (!electrons) {
611 ATH_MSG_ERROR ( "Failed to retrieve Electron container. Exiting." );
612 return StatusCode::FAILURE;
613 }
614 ConstDataVector<ElectronContainer> metElectrons(SG::VIEW_ELEMENTS);
615 bool is_electron = 0;
616 for(const auto el : *electrons) {
617 if(Accept(el)) {
618 metElectrons.push_back(el);
619 is_electron = 1;
620 }
621 }
622
623 const xAOD::PhotonContainer* photons = nullptr;
624 ATH_CHECK( evtStore()->retrieve(photons,m_gammaColl) );
625 if (!electrons) {
626 ATH_MSG_ERROR ( "Failed to retrieve Photon container. Exiting." );
627 return StatusCode::FAILURE;
628 }
629 ConstDataVector<PhotonContainer> metPhotons(SG::VIEW_ELEMENTS);
630 for(const auto ph : *photons) {
631 if(Accept(ph)) {
632 metPhotons.push_back(ph);
633 }
634 }
635
636 const TauJetContainer* taus = nullptr;
637 ATH_CHECK( evtStore()->retrieve(taus, m_tauColl) );
638 if(!taus) {
639 ATH_MSG_ERROR("Failed to retrieve TauJet container: " << m_tauColl);
640 return StatusCode::SUCCESS;
641 }
642 ConstDataVector<TauJetContainer> metTaus(SG::VIEW_ELEMENTS);
643 for(const auto tau : *taus) {
644 if(Accept(tau)) {
645 metTaus.push_back(tau);
646 }
647 }
648
649 // Overlap removal
650
656
657 //Photons
658 bool is_photon = 0;
659 ConstDataVector<PhotonContainer> metPhotonsOR(SG::VIEW_ELEMENTS);
660 for(pho_itr = metPhotons.begin(); pho_itr != metPhotons.end(); ++pho_itr ) {
661 TLorentzVector phtlv = (*pho_itr)->p4();
662 bool passOR = 1;
663 for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) {
664 if(phtlv.DeltaR((*ele_itr)->p4()) < 0.2) {
665 passOR = 0;
666 break;
667 }
668 }
669 if(passOR){
670 metPhotonsOR.push_back(*pho_itr);
671 is_photon = 1;
672 }
673 }
674
675 //TauJets
676 ConstDataVector<TauJetContainer> metTausOR(SG::VIEW_ELEMENTS);
677 bool is_tau = 0;
678 for(taujet_itr = metTaus.begin(); taujet_itr != metTaus.end(); ++taujet_itr ) {
679 TLorentzVector tautlv = (*taujet_itr)->p4();
680 bool passOR = 1;
681 for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) {
682 if(tautlv.DeltaR((*ele_itr)->p4()) < 0.2) {
683 passOR = 0;
684 break;
685 }
686 }
687 for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr) {
688 if(tautlv.DeltaR((*pho_itr)->p4()) < 0.2) {
689 passOR = 0;
690 break;
691 }
692 }
693 if(passOR){
694 metTausOR.push_back(*taujet_itr);
695 is_tau = 1;
696 }
697 }
698
699 //Sum up the pT's of the objects
700 TLorentzVector el_tlv;
701 double sum_el = 0;
702 for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr ) {
703 el_tlv += (*ele_itr)->p4();
704 sum_el += (*ele_itr)->pt();
705 }
706
707 TLorentzVector mu_tlv;
708 double sum_mu = 0;
709 for(mu_itr = metMuons.begin(); mu_itr != metMuons.end(); ++mu_itr ) {
710 mu_tlv += (*mu_itr)->p4();
711 sum_mu += (*mu_itr)->pt();
712 }
713
714 TLorentzVector tau_tlv;
715 double sum_tau = 0;
716 for(taujet_itr = metTausOR.begin(); taujet_itr != metTausOR.end(); ++taujet_itr ) {
717 tau_tlv += (*taujet_itr)->p4();
718 sum_tau += (*taujet_itr)->pt();
719 }
720
721 TLorentzVector photon_tlv;
722 double sum_photon = 0;
723 for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr ) {
724 photon_tlv += (*pho_itr)->p4();
725 sum_photon += (*pho_itr)->pt();
726 }
727
728 for (const auto& type : m_types){
729 ToolHandle<IJetUpdateJvt>* jvtTool(nullptr);
730 double JvtCut = 0.59;
731 if (type == "AntiKt4EMPFlow"){
732 JvtCut = 0.2;
733 jvtTool = &m_jvtToolPFlow;
734 }
735 else if (type == "AntiKt4EMTopo"){
736 jvtTool = &m_jvtToolEM;
737 }
738
739 if(jvtTool == nullptr){
740 ATH_MSG_ERROR("Unrecognized jet container: " << type << "Jets");
741 return StatusCode::FAILURE;
742 }
743
744 // Retrieve Jets
745 std::string name_jet = type + "Jets";
746 const xAOD::JetContainer* jets = nullptr;
747 ATH_CHECK( evtStore()->retrieve(jets,name_jet) );
748 if (!jets) {
749 ATH_MSG_ERROR ( "Failed to retrieve Jet container: " << name_jet << ". Exiting." );
750 return StatusCode::FAILURE;
751 }
752 SG::Decorator<float> NewJvtDec("NewJvt");
753 for(auto jet : *jets) {
754 float newjvt = (*jvtTool)->updateJvt(*jet);
755 NewJvtDec(*jet) = newjvt;
756 }
757 ConstDataVector<JetContainer> metJets(SG::VIEW_ELEMENTS);
758 for(const auto jet : *jets) {
759 metJets.push_back(jet);
760 }
761 //Overlap Removal
762 ConstDataVector<JetContainer> metJetsOR(SG::VIEW_ELEMENTS);
763 bool is_jet = 0;
764 for(jetc_itr = metJets.begin(); jetc_itr != metJets.end(); ++jetc_itr ) {
765 TLorentzVector jettlv = (*jetc_itr)->p4();
766 bool passOR = 1;
767 for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) {
768 if(jettlv.DeltaR((*ele_itr)->p4()) < 0.2) {
769 passOR = 0;
770 break;
771 }
772 }
773 for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr) {
774 if(jettlv.DeltaR((*pho_itr)->p4()) < 0.2) {
775 passOR = 0;
776 break;
777 }
778 }
779 for(taujet_itr = metTausOR.begin(); taujet_itr != metTausOR.end(); ++taujet_itr) {
780 if(jettlv.DeltaR((*taujet_itr)->p4()) < 0.2) {
781 passOR = 0;
782 break;
783 }
784 }
785 if(passOR){
786 metJetsOR.push_back(*jetc_itr);
787 is_jet = 1;
788 }
789 }
790
791 TLorentzVector jet_tlv;
792 double sum_jet = 0;
793 for(jetc_itr = metJetsOR.begin(); jetc_itr != metJetsOR.end(); ++jetc_itr ) {
794 jet_tlv += (*jetc_itr)->p4();
795 sum_jet += (*jetc_itr)->pt();
796 }
797
798 // Fill MET_Ref
799 std::string name_met = "MET_Reference_" + type;
800 const xAOD::MissingETContainer* met_Ref = nullptr;
801 // We're not building METReference anymore in derivations
802
803 if(m_doMETRefPlots){
804
805 // Retrieve Reference MET
806 ATH_CHECK( evtStore()->retrieve(met_Ref, name_met) );
807 if (!met_Ref) {
808 ATH_MSG_ERROR ("Couldn't retrieve " << name_met);
809 return StatusCode::FAILURE;
810 }
811
812 ATH_MSG_INFO( " MET_Ref_" << type << ":" );
813 for(const auto it : *met_Ref) {
814 const std::string& name = it->name();
815 if(name == "RefEle"){
816 (m_MET_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
817 (m_MET_Ref_x[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
818 (m_MET_Ref_y[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
819 (m_MET_Ref_phi[type]).at(0)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
820 (m_MET_Ref_sum[type]).at(0)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
821 }
822 if(name == "RefGamma"){
823 (m_MET_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
824 (m_MET_Ref_x[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
825 (m_MET_Ref_y[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
826 (m_MET_Ref_phi[type]).at(1)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
827 (m_MET_Ref_sum[type]).at(1)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
828 }
829 if(name == "RefTau"){
830 (m_MET_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
831 (m_MET_Ref_x[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
832 (m_MET_Ref_y[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
833 (m_MET_Ref_phi[type]).at(2)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
834 (m_MET_Ref_sum[type]).at(2)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
835 }
836 if(name == "Muons"){
837 (m_MET_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
838 (m_MET_Ref_x[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
839 (m_MET_Ref_y[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
840 (m_MET_Ref_phi[type]).at(3)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
841 (m_MET_Ref_sum[type]).at(3)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
842 }
843 if(name == "RefJet"){
844 (m_MET_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
845 (m_MET_Ref_x[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
846 (m_MET_Ref_y[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
847 (m_MET_Ref_phi[type]).at(4)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
848 (m_MET_Ref_sum[type]).at(4)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
849 }
850 if(name == "SoftClus"){
851 (m_MET_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
852 (m_MET_Ref_x[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
853 (m_MET_Ref_y[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
854 (m_MET_Ref_phi[type]).at(5)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
855 (m_MET_Ref_sum[type]).at(5)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
856 }
857 if(name == "PVSoftTrk"){
858 (m_MET_Ref[type]).at(6)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
859 (m_MET_Ref_x[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
860 (m_MET_Ref_y[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
861 (m_MET_Ref_phi[type]).at(6)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
862 (m_MET_Ref_sum[type]).at(6)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
863 }
864 if(name == "FinalTrk"){
865 (m_MET_Ref[type]).at(7)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
866 (m_MET_Ref_x[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
867 (m_MET_Ref_y[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
868 (m_MET_Ref_phi[type]).at(7)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
869 (m_MET_Ref_sum[type]).at(7)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
870 }
871 if(name == "FinalClus"){
872 (m_MET_Ref[type]).at(8)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight);
873 (m_MET_Ref_x[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight);
874 (m_MET_Ref_y[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight);
875 (m_MET_Ref_phi[type]).at(8)->Fill((*met_Ref)[name.c_str()]->phi(), weight);
876 (m_MET_Ref_sum[type]).at(8)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight);
877 }
878 }
879 }
880
881 //Prepare Rebuilding MET
882 ATH_MSG_INFO( " Rebuilding MET_" << type );
883 MissingETContainer* met_Reb = new MissingETContainer();
884 if( evtStore()->record(met_Reb,("MET_Rebuilt"+type).c_str()).isFailure() ) {
885 ATH_MSG_ERROR("Unable to record MissingETContainer: MET_Rebuilt_" << type);
886 return StatusCode::FAILURE;
887 }
889 if( evtStore()->record(met_RebAux,("MET_Rebuilt"+type+"Aux").c_str()).isFailure() ) {
890 ATH_MSG_ERROR("Unable to record MissingETAuxContainer: MET_Rebuilt" << type);
891 return StatusCode::FAILURE;
892 }
893 met_Reb->setStore(met_RebAux);
894
895 m_mapname = "METAssoc_"+type;
896 m_corename = "MET_Core_"+type;
897 const MissingETAssociationMap* metMap = nullptr;
898 if( evtStore()->retrieve(metMap, m_mapname).isFailure() ) {
899 ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_mapname);
900 return StatusCode::SUCCESS;
901 }
902 MissingETAssociationHelper metHelper(metMap);
903 const MissingETContainer* coreMet(nullptr);
904 if( evtStore()->retrieve(coreMet, m_corename).isFailure() ) {
905 ATH_MSG_WARNING("Unable to retrieve MissingETContainer: " << m_corename);
906 return StatusCode::SUCCESS;
907 }
908
909 ATH_MSG_INFO( " MET_Rebuilt_" << type << ":" );
910 //Select and flag objects for final MET building ***************************
911 if( type.find("PFlow") != std::string::npos) m_metmaker = &m_metmakerPFlow;
913
914 // Electrons
915 if( (*m_metmaker)->rebuildMET("RefEle", xAOD::Type::Electron, met_Reb, metElectrons.asDataVector(), metHelper).isFailure() ) {
916 ATH_MSG_ERROR("Failed to build electron term.");
917 return StatusCode::FAILURE;
918 }
919
920 // Photons
921 if( (*m_metmaker)->rebuildMET("RefGamma", xAOD::Type::Photon, met_Reb, metPhotons.asDataVector(), metHelper).isFailure() ) {
922 ATH_MSG_ERROR("Failed to build photon term.");
923 return StatusCode::FAILURE;
924 }
925
926 // Taus
927 if( (*m_metmaker)->rebuildMET("RefTau", xAOD::Type::Tau, met_Reb,metTaus.asDataVector(),metHelper).isFailure() ){
928 ATH_MSG_ERROR("Failed to build tau term.");
929 return StatusCode::FAILURE;
930 }
931
932 // Muons
933 if( (*m_metmaker)->rebuildMET("Muons", xAOD::Type::Muon, met_Reb, metMuons.asDataVector(), metHelper).isFailure() ) {
934 ATH_MSG_ERROR("Failed to build muon term.");
935 return StatusCode::FAILURE;
936 }
937
938 // Jets
939 if( (*m_metmaker)->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Reb, jets, coreMet, metHelper, true).isFailure() ) {
940 ATH_MSG_ERROR("Failed to build jet and soft terms.");
941 return StatusCode::FAILURE;
942 }
944 if((*met_Reb)["PVSoftTrk"]) trksource = (*met_Reb)["PVSoftTrk"]->source();
945 if( met::buildMETSum("FinalTrk", met_Reb, trksource).isFailure() ){
946 ATH_MSG_ERROR("Building MET FinalTrk sum failed.");
947 return StatusCode::FAILURE;
948 }
950 if (type == "AntiKt4EMTopo") clsource = static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::EMTopo);
952
953 if((*met_Reb)["SoftClus"]) clsource = (*met_Reb)["SoftClus"]->source();
954 if( met::buildMETSum("FinalClus", met_Reb, clsource).isFailure() ) {
955 ATH_MSG_ERROR("Building MET FinalClus sum failed.");
956 return StatusCode::FAILURE;
957 }
958
959 // Fill MET_Reb
960 for(const auto it : *met_Reb) {
961 std::string name = it->name();
962 if(name == "RefEle"){
963 (m_MET_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
964 (m_MET_Reb_x[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
965 (m_MET_Reb_y[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
966 (m_MET_Reb_phi[type]).at(0)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
967 (m_MET_Reb_sum[type]).at(0)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
968 }
969 if(name == "RefGamma"){
970 (m_MET_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
971 (m_MET_Reb_x[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
972 (m_MET_Reb_y[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
973 (m_MET_Reb_phi[type]).at(1)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
974 (m_MET_Reb_sum[type]).at(1)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
975 }
976 if(name == "RefTau"){
977 (m_MET_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
978 (m_MET_Reb_x[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
979 (m_MET_Reb_y[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
980 (m_MET_Reb_phi[type]).at(2)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
981 (m_MET_Reb_sum[type]).at(2)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
982 }
983 if(name == "Muons"){
984 (m_MET_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
985 (m_MET_Reb_x[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
986 (m_MET_Reb_y[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
987 (m_MET_Reb_phi[type]).at(3)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
988 (m_MET_Reb_sum[type]).at(3)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
989 }
990 if(name == "RefJet"){
991 (m_MET_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
992 (m_MET_Reb_x[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
993 (m_MET_Reb_y[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
994 (m_MET_Reb_phi[type]).at(4)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
995 (m_MET_Reb_sum[type]).at(4)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
996 }
997 if(name == "SoftClus"){
998 (m_MET_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
999 (m_MET_Reb_x[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
1000 (m_MET_Reb_y[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
1001 (m_MET_Reb_phi[type]).at(5)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
1002 (m_MET_Reb_sum[type]).at(5)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
1003 }
1004 if(name == "PVSoftTrk"){
1005 (m_MET_Reb[type]).at(6)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
1006 (m_MET_Reb_x[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
1007 (m_MET_Reb_y[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
1008 (m_MET_Reb_phi[type]).at(6)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
1009 (m_MET_Reb_sum[type]).at(6)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
1010 }
1011 if(name == "FinalTrk"){
1012 (m_MET_Reb[type]).at(7)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
1013 (m_MET_Reb_x[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
1014 (m_MET_Reb_y[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
1015 (m_MET_Reb_phi[type]).at(7)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
1016 (m_MET_Reb_sum[type]).at(7)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
1017 }
1018 if(name == "FinalClus"){
1019 (m_MET_Reb[type]).at(8)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight);
1020 (m_MET_Reb_x[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight);
1021 (m_MET_Reb_y[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight);
1022 (m_MET_Reb_phi[type]).at(8)->Fill((*met_Reb)[name.c_str()]->phi(), weight);
1023 (m_MET_Reb_sum[type]).at(8)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight);
1024 }
1025 }
1026
1027 //Fill MET Angles
1028 ATH_MSG_INFO( " MET_Angles :" );
1029
1030 double leadPt = 0., subleadPt = 0., leadPhi = 0., subleadPhi = 0.;
1031
1032 for (auto jet_itr = jets->begin(); jet_itr != jets->end(); ++jet_itr) {
1033 if ((*jet_itr)->pt() > leadPt && Accept(*jet_itr,JvtCut,jvtTool)) {
1034 subleadPt = leadPt;
1035 subleadPhi = leadPhi;
1036 leadPt = (*jet_itr)->pt();
1037 leadPhi = (*jet_itr)->phi();
1038 }
1039 else if ((*jet_itr)->pt() > subleadPt && Accept(*jet_itr,JvtCut,jvtTool)) {
1040 subleadPt = (*jet_itr)->pt();
1041 subleadPhi = (*jet_itr)->phi();
1042 }
1043 }
1044
1045 if(m_doMETRefPlots){
1046 const auto & dPhiRef = m_MET_dPhi_Ref[type];
1047 const auto * pClus = (*met_Ref)["FinalClus"];
1048 const auto * pTrk = (*met_Ref)["FinalTrk"];
1049 if (!pTrk or !pClus){
1050 ATH_MSG_ERROR("Dereference of 'Ref' pClus or pTrk");
1051 return StatusCode::FAILURE;
1052 }
1053
1054 dPhiRef.at(0)->Fill( -remainder( leadPhi - pClus->phi(), 2*M_PI ), weight );
1055 dPhiRef.at(1)->Fill( -remainder( subleadPhi - pClus->phi(), 2*M_PI ), weight );
1056 dPhiRef.at(3)->Fill( -remainder( leadPhi - pTrk->phi(), 2*M_PI ), weight );
1057 dPhiRef.at(4)->Fill( -remainder( subleadPhi - pTrk->phi(), 2*M_PI ), weight );
1058 }
1059 const auto & dPhiReb = m_MET_dPhi_Reb[type];
1060 const auto * pClus = (*met_Reb)["FinalClus"];
1061 const auto * pTrk = (*met_Reb)["FinalTrk"];
1062 if (!pTrk or !pClus){
1063 ATH_MSG_ERROR("Dereference of 'Reb' pClus or pTrk");
1064 return StatusCode::FAILURE;
1065 }
1066 dPhiReb.at(0)->Fill( -remainder( leadPhi - pClus->phi(), 2*M_PI ), weight );
1067 dPhiReb.at(1)->Fill( -remainder( subleadPhi - pClus->phi(), 2*M_PI ), weight );
1068 dPhiReb.at(3)->Fill( -remainder( leadPhi - pTrk->phi(), 2*M_PI ), weight );
1069 dPhiReb.at(4)->Fill( -remainder( subleadPhi - pTrk->phi(), 2*M_PI ), weight );
1070
1071 leadPt = 0.; leadPhi = 0.;
1072
1073 xAOD::MuonContainer::const_iterator muon_itr = muons->begin();
1074 xAOD::MuonContainer::const_iterator muon_end = muons->end();
1075
1076 for( ; muon_itr != muon_end; ++muon_itr ) {
1077 if((*muon_itr)->pt() > leadPt) {
1078 leadPt = (*muon_itr)->pt();
1079 leadPhi = (*muon_itr)->phi();
1080 }
1081 }
1082
1083 xAOD::ElectronContainer::const_iterator electron_itr = electrons->begin();
1085
1086 for( ; electron_itr != electron_end; ++electron_itr ) {
1087 if((*electron_itr)->pt() > leadPt) {
1088 leadPt = (*electron_itr)->pt();
1089 leadPhi = (*electron_itr)->phi();
1090 }
1091 }
1092
1093 (m_MET_dPhi_Reb[type]).at(2)->Fill( -remainder( leadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight );
1094 (m_MET_dPhi_Reb[type]).at(5)->Fill( -remainder( leadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight );
1095
1096 if(m_doMETRefPlots){
1097
1098 (m_MET_dPhi_Ref[type]).at(2)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight );
1099 (m_MET_dPhi_Ref[type]).at(5)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight );
1100
1101 //Fill Correlation Plots
1102 //Reference
1103 for(const auto it : *met_Ref) {
1104 const std::string& name = it->name();
1105 if(name == "RefEle"){
1106 (m_MET_CorrFinalTrk_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1107 (m_MET_CorrFinalClus_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1108 }
1109 if(name == "RefGamma"){
1110 (m_MET_CorrFinalTrk_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1111 (m_MET_CorrFinalClus_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1112 }
1113 if(name == "RefTau"){
1114 (m_MET_CorrFinalTrk_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1115 (m_MET_CorrFinalClus_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1116 }
1117 if(name == "Muons"){
1118 (m_MET_CorrFinalTrk_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1119 (m_MET_CorrFinalClus_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1120 }
1121 if(name == "RefJet"){
1122 (m_MET_CorrFinalTrk_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1123 (m_MET_CorrFinalClus_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1124 }
1125 if(name == "PVSoftTrk"){
1126 (m_MET_CorrFinalTrk_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight);
1127 }
1128 if(name == "SoftClus"){
1129 (m_MET_CorrFinalClus_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight);
1130 }
1131 }
1132 }
1133
1134 //Rebuilt
1135
1136 for(const auto it : *met_Reb) {
1137 std::string name = it->name();
1138 if(name == "RefEle"){
1139 (m_MET_CorrFinalTrk_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1140 (m_MET_CorrFinalClus_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1141 }
1142 if(name == "RefGamma"){
1143 (m_MET_CorrFinalTrk_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1144 (m_MET_CorrFinalClus_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1145 }
1146 if(name == "RefTau"){
1147 (m_MET_CorrFinalTrk_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1148 (m_MET_CorrFinalClus_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1149 }
1150 if(name == "Muons"){
1151 (m_MET_CorrFinalTrk_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1152 (m_MET_CorrFinalClus_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1153 }
1154 if(name == "RefJet"){
1155 (m_MET_CorrFinalTrk_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1156 (m_MET_CorrFinalClus_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1157 }
1158 if(name == "PVSoftTrk"){
1159 (m_MET_CorrFinalTrk_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight);
1160 }
1161 if(name == "SoftClus"){
1162 (m_MET_CorrFinalClus_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight);
1163 }
1164 }
1165
1166 // Fill Resolution
1167 if(m_doTruth){
1168 ATH_MSG_INFO( " Resolution:" );
1169 if(m_doMETRefPlots){
1170 (m_MET_Resolution_Ref[type]).at(0)->Fill(((*met_Ref)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight);
1171 (m_MET_Resolution_Ref[type]).at(1)->Fill(((*met_Ref)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight);
1172 (m_MET_Resolution_Ref[type]).at(2)->Fill(((*met_Ref)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight);
1173 (m_MET_Resolution_Ref[type]).at(3)->Fill(((*met_Ref)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight);
1174 }
1175 (m_MET_Resolution_Reb[type]).at(0)->Fill(((*met_Reb)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight);
1176 (m_MET_Resolution_Reb[type]).at(1)->Fill(((*met_Reb)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight);
1177 (m_MET_Resolution_Reb[type]).at(2)->Fill(((*met_Reb)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight);
1178 (m_MET_Resolution_Reb[type]).at(3)->Fill(((*met_Reb)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight);
1179 }
1180
1181 //Fill MET significance
1182 if( (*met_Reb)["FinalClus"]->sumet() != 0) (m_MET_Significance_Reb[type]).at(0)->Fill((*met_Reb)["FinalClus"]->met()/sqrt((*met_Reb)["FinalClus"]->sumet()*1000.), weight);
1183 if( (*met_Reb)["FinalTrk"]->sumet() != 0) (m_MET_Significance_Reb[type]).at(1)->Fill((*met_Reb)["FinalTrk"]->met()/sqrt((*met_Reb)["FinalTrk"]->sumet()*1000.), weight);
1184
1185 TLorentzVector target_tlv;
1186 if(m_doMETRefPlots){
1187 //Fill MET Significance
1188 ATH_MSG_INFO( " MET_significance:" );
1189 if( (*met_Ref)["FinalClus"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(0)->Fill((*met_Ref)["FinalClus"]->met()/sqrt((*met_Ref)["FinalClus"]->sumet()*1000.), weight);
1190 if( (*met_Ref)["FinalTrk"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(1)->Fill((*met_Ref)["FinalTrk"]->met()/sqrt((*met_Ref)["FinalTrk"]->sumet()*1000.), weight);
1191
1192 //Fill Diff histograms
1193 for(const auto it : *met_Ref) {
1194 if(it->name() == "RefEle"){
1195 if(is_electron or (it->sumet() > 0)){
1196 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1197 (m_MET_Diff_Ref[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight);
1198 (m_MET_Diff_Ref_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight);
1199 (m_MET_Diff_Ref_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight);
1200 (m_MET_Diff_Ref_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight);
1201 (m_MET_Diff_Ref_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight);
1202 }
1203 }
1204 if(it->name() == "RefGamma"){
1205 if(is_photon or (it->sumet() > 0)){
1206 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1207 (m_MET_Diff_Ref[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight);
1208 (m_MET_Diff_Ref_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight);
1209 (m_MET_Diff_Ref_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight);
1210 (m_MET_Diff_Ref_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight);
1211 (m_MET_Diff_Ref_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight);
1212 }
1213 }
1214 if(it->name() == "RefTau"){
1215 if(is_tau or (it->sumet() > 0)){
1216 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1217 (m_MET_Diff_Ref[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight);
1218 (m_MET_Diff_Ref_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight);
1219 (m_MET_Diff_Ref_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight);
1220 (m_MET_Diff_Ref_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight);
1221 (m_MET_Diff_Ref_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight);
1222 }
1223 }
1224 if(it->name() == "Muons"){
1225 if(is_muon or (it->sumet() > 0)){
1226 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1227 (m_MET_Diff_Ref[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight);
1228 (m_MET_Diff_Ref_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight);
1229 (m_MET_Diff_Ref_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight);
1230 (m_MET_Diff_Ref_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight);
1231 (m_MET_Diff_Ref_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight);
1232 }
1233 }
1234 if(it->name() == "RefJet"){
1235 if(is_jet or (it->sumet() > 0)){
1236 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1237 (m_MET_Diff_Ref[type]).at(4)->Fill((target_tlv.Pt() - jet_tlv.Pt())/1000., weight);
1238 (m_MET_Diff_Ref_x[type]).at(4)->Fill((target_tlv.Px() - jet_tlv.Px())/1000., weight);
1239 (m_MET_Diff_Ref_y[type]).at(4)->Fill((target_tlv.Py() - jet_tlv.Py())/1000., weight);
1240 (m_MET_Diff_Ref_phi[type]).at(4)->Fill(jet_tlv.DeltaPhi(target_tlv), weight);
1241 (m_MET_Diff_Ref_sum[type]).at(4)->Fill((it->sumet() - sum_jet)/1000., weight);
1242 }
1243 }
1244 }
1245 }
1246
1247 // For rebuilt MET add only jets with pT>20e3 and JVT cut
1248 TLorentzVector jetReb_tlv;
1249 double sum_jetReb = 0;
1250 for(const auto jet : metJetsOR) {
1251 if(Accept(jet, JvtCut, jvtTool)) {
1252 jetReb_tlv += jet->p4();
1253 sum_jetReb += jet->pt();
1254 }
1255 }
1256
1257 for(const auto it : *met_Reb) {
1258 if(it->name() == "RefEle"){
1259 if(is_electron or (it->sumet() > 0)){
1260 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1261 (m_MET_Diff_Reb[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight);
1262 (m_MET_Diff_Reb_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight);
1263 (m_MET_Diff_Reb_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight);
1264 (m_MET_Diff_Reb_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight);
1265 (m_MET_Diff_Reb_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight);
1266 }
1267 }
1268 if(it->name() == "RefGamma"){
1269 if(is_photon or (it->sumet() > 0)){
1270 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1271 (m_MET_Diff_Reb[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight);
1272 (m_MET_Diff_Reb_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight);
1273 (m_MET_Diff_Reb_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight);
1274 (m_MET_Diff_Reb_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight);
1275 (m_MET_Diff_Reb_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight);
1276 }
1277 }
1278 if(it->name() == "RefTau"){
1279 if(is_tau or (it->sumet() > 0)){
1280 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1281 (m_MET_Diff_Reb[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight);
1282 (m_MET_Diff_Reb_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight);
1283 (m_MET_Diff_Reb_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight);
1284 (m_MET_Diff_Reb_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight);
1285 (m_MET_Diff_Reb_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight);
1286 }
1287 }
1288 if(it->name() == "Muons"){
1289 if(is_muon or (it->sumet() > 0)){
1290 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1291 (m_MET_Diff_Reb[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight);
1292 (m_MET_Diff_Reb_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight);
1293 (m_MET_Diff_Reb_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight);
1294 (m_MET_Diff_Reb_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight);
1295 (m_MET_Diff_Reb_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight);
1296 }
1297 }
1298 if(it->name() == "RefJet"){
1299 if(is_jet or (it->sumet() > 0)){
1300 target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met());
1301 (m_MET_Diff_Reb[type]).at(4)->Fill((target_tlv.Pt() - jetReb_tlv.Pt())/1000., weight);
1302 (m_MET_Diff_Reb_x[type]).at(4)->Fill((target_tlv.Px() - jetReb_tlv.Px())/1000., weight);
1303 (m_MET_Diff_Reb_y[type]).at(4)->Fill((target_tlv.Py() - jetReb_tlv.Py())/1000., weight);
1304 (m_MET_Diff_Reb_phi[type]).at(4)->Fill(jetReb_tlv.DeltaPhi(target_tlv), weight);
1305 (m_MET_Diff_Reb_sum[type]).at(4)->Fill((it->sumet() - sum_jetReb)/1000., weight);
1306 }
1307 }
1308 }
1309
1310 if(type == "AntiKt4EMTopo") {
1311 //Calo MET
1312 //const xAOD::JetContainer* emptyjets = 0;
1313 ConstDataVector<JetContainer> metJetsEmpty(SG::VIEW_ELEMENTS);
1314 MissingETContainer* met_Calo = new MissingETContainer();
1315 if( evtStore()->record(met_Calo,("MET_Calo"+type).c_str()).isFailure() ) {
1316 ATH_MSG_ERROR("Unable to record MissingETContainer: MET_Calo_" << type);
1317 return StatusCode::FAILURE;
1318 }
1319 MissingETAuxContainer* met_CaloAux = new MissingETAuxContainer();
1320 if( evtStore()->record(met_CaloAux,("MET_Calo"+type+"Aux").c_str()).isFailure() ) {
1321 ATH_MSG_ERROR("Unable to record MissingETAuxContainer: MET_Calo" << type);
1322 return StatusCode::FAILURE;
1323 }
1324 met_Calo->setStore(met_CaloAux);
1325 MissingETAssociationHelper metHelper(metMap);
1326 if( (*m_metmaker)->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Calo, metJetsEmpty.asDataVector(), coreMet, metHelper, true).isFailure() ) {
1327 ATH_MSG_ERROR("Failed to build jet and soft terms.");
1328 return StatusCode::FAILURE;
1329 }
1330
1331 if((*met_Calo)["SoftClus"]) clsource = (*met_Calo)["SoftClus"]->source();
1332 if( met::buildMETSum("FinalClus", met_Calo, clsource).isFailure() ) {
1333 ATH_MSG_ERROR("Building MET FinalClus sum failed.");
1334 return StatusCode::FAILURE;
1335 }
1336
1337 m_MET_Calo->Fill((*met_Calo)["FinalClus"]->met()/1000., weight);
1338 m_MET_Calo_x->Fill((*met_Calo)["FinalClus"]->mpx()/1000., weight);
1339 m_MET_Calo_y->Fill((*met_Calo)["FinalClus"]->mpy()/1000., weight);
1340 m_MET_Calo_phi->Fill((*met_Calo)["FinalClus"]->phi(), weight);
1341 m_MET_Calo_sum->Fill((*met_Calo)["FinalClus"]->sumet()/1000., weight);
1342
1343 }
1344
1345 }
1346
1347 //Currently we don't store MET_Track in the derivations
1348 //if MET_Ref not present, then we also dont have MET_Track
1349 if(m_doMETRefPlots){
1350
1351 //Retrieve MET Track
1352 const xAOD::MissingETContainer* met_Track = nullptr;
1353 ATH_CHECK( evtStore()->retrieve(met_Track,"MET_Track") );
1354 if (!met_Track) {
1355 ATH_MSG_ERROR ( "Failed to retrieve MET_Track. Exiting." );
1356 return StatusCode::FAILURE;
1357 }
1358
1359 // Fill MET Track
1360 ATH_MSG_INFO( " MET_Track:" );
1361
1362 m_MET_Track->Fill((*met_Track)["Track"]->met()/1000., weight);
1363 m_MET_Track_x->Fill((*met_Track)["Track"]->mpx()/1000., weight);
1364 m_MET_Track_y->Fill((*met_Track)["Track"]->mpy()/1000., weight);
1365 m_MET_Track_phi->Fill((*met_Track)["Track"]->phi(), weight);
1366 m_MET_Track_sum->Fill((*met_Track)["Track"]->sumet()/1000., weight);
1367
1368 const xAOD::VertexContainer *vxCont = nullptr;
1369 ATH_CHECK( evtStore()->retrieve(vxCont, "PrimaryVertices") );
1370 for(const auto vx : *vxCont) {
1371 int N = vx->index();
1372 const std::string name = "PVTrack_vx"+std::to_string(N);
1373 if(vx->vertexType()!=xAOD::VxType::NoVtx) {
1374 if(vx->vertexType()==xAOD::VxType::PriVtx) {
1375 m_MET_PVTrack_Nominal->Fill((*met_Track)[name]->met()/1000., weight);
1376 m_MET_PVTrack_Nominal_x->Fill((*met_Track)[name]->mpx()/1000., weight);
1377 m_MET_PVTrack_Nominal_y->Fill((*met_Track)[name]->mpy()/1000., weight);
1378 m_MET_PVTrack_Nominal_phi->Fill((*met_Track)[name]->phi(), weight);
1379 m_MET_PVTrack_Nominal_sum->Fill((*met_Track)[name]->sumet()/1000., weight);
1380 } else {
1381 m_MET_PVTrack_Pileup->Fill((*met_Track)[name]->met()/1000., weight);
1382 m_MET_PVTrack_Pileup_x->Fill((*met_Track)[name]->mpx()/1000., weight);
1383 m_MET_PVTrack_Pileup_y->Fill((*met_Track)[name]->mpy()/1000., weight);
1384 m_MET_PVTrack_Pileup_phi->Fill((*met_Track)[name]->phi(), weight);
1385 m_MET_PVTrack_Pileup_sum->Fill((*met_Track)[name]->sumet()/1000., weight);
1386 }
1387 }
1388 }
1389 }
1390
1391 return StatusCode::SUCCESS;
1392 }
#define M_PI
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
static Double_t taus
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::iterator< ConstDataVector > iterator
The iterator for this type.
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:861
ToolHandle< IMETMaker > m_metmakerPFlow
Definition PhysValMET.h:161
ToolHandle< IJetUpdateJvt > m_jvtToolEM
Definition PhysValMET.h:158
ToolHandle< IJetUpdateJvt > m_jvtToolPFlow
Definition PhysValMET.h:159
ToolHandle< IMETMaker > m_metmakerTopo
Definition PhysValMET.h:160
bool Accept(const xAOD::Electron *el)
std::vector< std::string > remainder(const std::vector< std::string > &v1, const std::vector< std::string > &v2)
uint64_t bitmask_t
Type for status word bit mask.
constexpr std::size_t N
SG::Decorator< T, ALLOC > Decorator
Helper class to provide type-safe access to aux data, specialized for JaggedVecElt.
Definition AuxElement.h:576
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
StatusCode buildMETSum(const std::string &totalName, xAOD::MissingETContainer *metCont)
@ Photon
The object is a photon.
Definition ObjectType.h:47
@ Muon
The object is a muon.
Definition ObjectType.h:48
@ Electron
The object is an electron.
Definition ObjectType.h:46
@ Tau
The object is a tau (jet).
Definition ObjectType.h:49
@ PriVtx
Primary vertex.
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
EventInfo_v1 EventInfo
Definition of the latest event info version.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
MissingETContainer_v1 MissingETContainer
MissingETAuxContainer_v1 MissingETAuxContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
MissingETAssociationMap_v1 MissingETAssociationMap
Version control by type defintion.
@ Track
Indicator for MET contribution from reconstructed charged particle tracks.
@ EMTopo
Indicator for MET contribution from TopoClusters with EM (basic signal) calibration applied.
@ UnknownSignal
Unknown signal contribution.

◆ fillHists()

StatusCode ManagedMonitorToolBase::fillHists ( const EventContext & ctx)
virtualinherited

Calls fillHists( bool, bool, bool ); if an eventBlock,lumiBlock, or run has turned over, calls procHists( bool, bool, bool ) and bookHists( bool, bool, bool ).

Implements IMonitorToolBase.

Definition at line 656 of file ManagedMonitorToolBase.cxx.

658{
659
660 if (m_d->m_warnAboutMissingInitialize) {
661 m_d->m_warnAboutMissingInitialize = false;
662 msg(MSG::WARNING) << "ManagedMonitorToolBase::initialize() never called from reimplementation!" << endmsg;
663 }
664
665
666 bool isNewEventsBlock = ( m_procNEventsProp > 0 && ((m_nEvents % m_procNEventsProp) == 1) && m_haveClearedLastEventBlock );
667 if (isNewEventsBlock) m_haveClearedLastEventBlock = false;
668
669 m_newLowStat = false;
670 m_newLumiBlock = false;
671 m_newRun = false;
672
673 m_newLowStatInterval = false;
674 m_newMedStatInterval = false;
675 m_newHigStatInterval = false;
676
677 m_useTrigger = ( (m_triggerChainProp != "" || m_triggerGroupProp != "") && (!m_trigDecTool.empty()) );
678
679 if( m_manager != 0 ) {
680 m_newLumiBlock = ( (m_lastLumiBlock != m_manager->lumiBlockNumber()) || m_manager->forkedProcess());
681 m_newRun = ( m_lastRun != m_manager->runNumber() );
682
683 if(m_newRun) {
684 m_newLumiBlock = true;
685 isNewEventsBlock = true;
686 }
687
688 m_newEventsBlock = isNewEventsBlock;
689
690 if( m_newLumiBlock ) {
691 // check if a new LB interval has started
692 // lowest lumiBlockNumber() is 1
693 // m_lastLowStatInterval is -1 initially
694 int currentLB = m_manager->lumiBlockNumber();
695 int LBsLowStat = m_manager->getLBsLowStat();
696 int LBsMedStat = m_manager->getLBsMedStat();
697 int LBsHigStat = m_manager->getLBsHigStat();
698
699 if( LBsLowStat*LBsMedStat*LBsHigStat == 0) {
700 msg(MSG::WARNING) << "zero LBs requested for interval" << endmsg;
701 }
702 else {
703 if( ((currentLB-1)/LBsLowStat) != m_lastLowStatInterval ) m_newLowStatInterval = true;
704 if( ((currentLB-1)/LBsMedStat) != m_lastMedStatInterval ) m_newMedStatInterval = true;
705 if( ((currentLB-1)/LBsHigStat) != m_lastHigStatInterval ) m_newHigStatInterval = true;
706 }
707 }
708
709 // Allow inheriting classes the option of using the lastLumiBloc/lastRun values
710 // before updating them
711 }
712
713
714 StatusCode sc0( StatusCode::SUCCESS );
715 StatusCode sc1( StatusCode::SUCCESS );
716 StatusCode sc2( StatusCode::SUCCESS );
717 StatusCode sc3( StatusCode::SUCCESS );
718
719 // Set end of LowStat, LumiBlock and Run variables
720 // These are needed to be used in procHistograms().
725
726 // just duplicates m_newLowStatInterval
728
730 ATH_MSG_DEBUG("Interval transition processing");
731 // Process histograms from the previous lumiBlock/run
732 if( m_nEvents != 1 ) {
733 m_d->benchPreProcHistograms();
734 sc0 = procHistograms();
735 m_d->benchPostProcHistograms();
736 }
737 // Re-book new histograms
738 m_d->benchPreBookHistograms();
739
741 sc1 = bookHistograms();
743 } else {
744 std::vector<Interval_t> intervals_to_process;
745 if (m_newEventsBlock) intervals_to_process.push_back(eventsBlock);
746 if (m_newLumiBlock) intervals_to_process.push_back(lumiBlock);
747 if (m_newLowStatInterval) intervals_to_process.push_back(lowStat);
748 if (m_newRun) intervals_to_process.push_back(run);
749 for (const auto interval: intervals_to_process) {
751 sc1 = regManagedGraphs(m_templateGraphs[interval]);
752 sc1 = regManagedTrees(m_templateTrees[interval]);
753 }
754 }
755 for (const auto& interval: std::vector<Interval_t>{ eventsBlock, lumiBlock, lowStat, run }) {
756 for (const auto& it: m_templateHistograms[interval]) {
757 // is histogram too small in x axis for LB range?
758 if (it.m_group.histo_mgmt() == ATTRIB_X_VS_LB) {
759 //ATH_MSG_WARNING("We are rebinning for " << it.m_templateHist->GetName());
760 while ( it.m_templateHist->GetXaxis()->GetXmax() <= AthenaMonManager::lumiBlockNumber() ) {
761 it.m_templateHist->LabelsInflate("X");
762 }
763 }
764 }
765 for (auto& it: m_templateEfficiencies[interval]) {
766 if (it.m_group.histo_mgmt() == ATTRIB_X_VS_LB) {
767 // get the underlying passed and total TH1's from the TEfficiency
768 TH1* passedHist = it.m_templateHist->GetCopyPassedHisto();
769 TH1* totalHist = it.m_templateHist->GetCopyTotalHisto();
770 // inflate them until they exceed the lumi-block number
771 while (passedHist->GetXaxis()->GetXmax() <= AthenaMonManager::lumiBlockNumber() ) {
772 passedHist->LabelsInflate("X");
773 totalHist->LabelsInflate("X");
774 }
775 // Replace them in the TEfficiency. First one has force ("f") option, since the
776 // histograms will not be consistent. This is corrected in the next line, so we
777 // do check for consistency then.
778 it.m_templateHist->SetPassedHistogram(*passedHist, "f");
779 it.m_templateHist->SetTotalHistogram(*totalHist, " ");
780 delete passedHist; // not owned by THistSvc, so need to be deleted.
781 delete totalHist;
782 }
783 }
784 }
785
786 if (auto streamname = dynamic_cast<OfflineStream*>(streamNameFunction())) {
787 streamname->updateRunLB();
788 }
789
791
792 m_d->benchPostBookHistograms();
793
794 }//end if new RUN/LB/Block
795
796 // check filters
797 bool filterresult(true);
798 if (! m_DQFilterTools.empty()) {
799 ToolHandleArray<IDQFilterTool>::const_iterator ifilter(m_DQFilterTools.begin()), filterend(m_DQFilterTools.end());
800 for (; filterresult && (ifilter != filterend);
801 ++ifilter) {
802 filterresult = (filterresult && (*ifilter)->accept(ctx));
803 }
804 }
805
806
807 // ...and fill as normal
808 if(filterresult &&
812 ATH_MSG_DEBUG("Passed trigger, presumably");
813 m_d->benchPreFillHistograms();
814 fillHistograms(ctx).ignore();
816 m_d->benchPostFillHistograms();
817 ++m_nEvents;
818 } else { ATH_MSG_DEBUG("Failed trigger, presumably"); }
819
821 if( m_newLumiBlock && (m_nEventsIgnoreTrigger != 1) ) {
823 }
824 if( m_manager != 0 ) {
825 m_lastRun = m_manager->runNumber();
826 if( m_newLumiBlock ) {
827 m_lastLumiBlock = m_manager->lumiBlockNumber();
828
829 int LBsLowStat = m_manager->getLBsLowStat();
830 int LBsMedStat = m_manager->getLBsMedStat();
831 int LBsHigStat = m_manager->getLBsHigStat();
832 if( LBsLowStat*LBsMedStat*LBsHigStat > 0) {
836 }
837 }
838 }
839
840 return StatusCode::SUCCESS;
841}
#define endmsg
MsgStream & msg() const
static unsigned int lumiBlockNumber()
StatusCode regManagedTrees(std::vector< MgmtParams< TTree > > &templateTrees)
ToolHandleArray< IDQFilterTool > m_DQFilterTools
virtual StatusCode fillHistograms(const EventContext &ctx)
An inheriting class should either override this function or fillHists().
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
std::vector< std::string > m_vTrigGroupNames
std::map< Interval_t, std::vector< MgmtParams< TH1 > > > m_templateHistograms
PublicToolHandle< Trig::ITrigDecisionTool > m_trigDecTool
StatusCode regManagedGraphs(std::vector< MgmtParams< TGraph > > &templateGraphs)
std::map< Interval_t, std::vector< MgmtParams< TGraph > > > m_templateGraphs
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
std::vector< std::string > m_vTrigChainNames
std::map< Interval_t, std::vector< MgmtParams< TTree > > > m_templateTrees
std::map< Interval_t, std::vector< MgmtParams< TEfficiency > > > m_templateEfficiencies
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
StatusCode regManagedHistograms(std::vector< MgmtParams< TH1 > > &templateHistograms)
virtual bool trigChainsArePassed(std::vector< std::string > &)
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ finalHists()

StatusCode ManagedMonitorToolBase::finalHists ( )
virtualinherited

Calls procHists( true, true, true ).

Implements IMonitorToolBase.

Definition at line 1153 of file ManagedMonitorToolBase.cxx.

1155{
1156
1157 // This assumes that the end of a file will naturally end a run, which is not always true.
1158 // A merging application run afterwards should be able to put parts of a run together.
1159 if( m_nEvents != 1 ) {
1160 m_d->benchPreProcHistograms();
1161
1162 // Set end flags for the LowStat, LumiBlock and Run variables.
1163 // This is needed to be used in the procHistograms method below.
1164 m_endOfEventsBlock = true;
1165 m_endOfLowStat = true;
1166 m_endOfLumiBlock = true;
1167 m_endOfRun = true;
1168
1170
1171 m_d->benchPostProcHistograms();
1172 return sc;
1173 }
1174 return StatusCode::SUCCESS;
1175}
static Double_t sc

◆ get_nEvents()

unsigned int ManagedMonitorToolBase::get_nEvents ( ) const
inlineprotectedinherited

Definition at line 620 of file ManagedMonitorToolBase.h.

620 {
621 return m_nEvents;
622 }

◆ get_procNEventsProp()

long ManagedMonitorToolBase::get_procNEventsProp ( ) const
inlineprotectedinherited

Definition at line 624 of file ManagedMonitorToolBase.h.

624 {
625 return m_procNEventsProp;
626 }

◆ getHist() [1/4]

StatusCode ManagedMonitorToolBase::getHist ( TH1 *& h,
const std::string & hName,
const MonGroup & group )
virtualinherited

Returns a TH1 via the pointer passed as the first argument.

The histogram name, without the leading path or stream name, must be given as the second argument.

Definition at line 1310 of file ManagedMonitorToolBase.cxx.

1312{
1313 std::string streamName = streamNameFunction()->getStreamName( this, group, hName );
1314 return m_THistSvc->getHist( streamName, h );
1315}

◆ getHist() [2/4]

StatusCode ManagedMonitorToolBase::getHist ( TH1 *& h,
const std::string & hName,
const std::string & system,
Interval_t interval )
virtualinherited

Returns a TH1 via the pointer passed as the first argument.

The histogram name, without the leading path or stream name, must be given as the second argument.

Definition at line 1300 of file ManagedMonitorToolBase.cxx.

1303{
1304 MonGroup group( this, system, interval );
1305 return getHist( h, hName, group );
1306}
virtual StatusCode getHist(TH1 *&h, const std::string &hName, const std::string &system, Interval_t interval)
Returns a TH1 via the pointer passed as the first argument.

◆ getHist() [3/4]

StatusCode ManagedMonitorToolBase::getHist ( TH2 *& h,
const std::string & hName,
const MonGroup & group )
virtualinherited

Returns a TH2 via the pointer passed as the first argument.

The histogram name, without the leading path or stream name, must be given as the second argument.

Definition at line 1329 of file ManagedMonitorToolBase.cxx.

1331{
1332 std::string streamName = streamNameFunction()->getStreamName( this, group, hName );
1333 return m_THistSvc->getHist( streamName, h );
1334}

◆ getHist() [4/4]

StatusCode ManagedMonitorToolBase::getHist ( TH2 *& h,
const std::string & hName,
const std::string & system,
Interval_t interval )
virtualinherited

Returns a TH2 via the pointer passed as the first argument.

The histogram name, without the leading path or stream name, must be given as the second argument.

Definition at line 1319 of file ManagedMonitorToolBase.cxx.

1322{
1323 MonGroup group( this, system, interval );
1324 return getHist( h, hName, group );
1325}

◆ getNewStreamNameFcn()

ManagedMonitorToolBase::StreamNameFcn * ManagedMonitorToolBase::getNewStreamNameFcn ( ) const
protectedvirtualinherited

Definition at line 2029 of file ManagedMonitorToolBase.cxx.

2031{
2032 StreamNameFcn* fcn(0);
2033
2034 switch( m_environment ) {
2036 fcn = new NoOutputStream();
2037 break;
2039 fcn = new OnlineStream();
2040 break;
2042 fcn = new DefaultStream( m_fileKey );
2043 break;
2049 default:
2051 }
2052
2053 return fcn;
2054}
A function-object base class allowing the specific implementation of getStreamName to be decided at r...
AthenaMonManager::Environment_t m_environment
AthenaMonManager::DataType_t m_dataType

◆ initialize()

StatusCode MissingEtDQA::PhysValMET::initialize ( )
virtual

Reimplemented from ManagedMonitorToolBase.

Definition at line 114 of file PhysValMET.cxx.

115 {
116 ATH_MSG_INFO ("Initializing " << name() << "...");
118
119 m_names.clear();
120 m_names["RefEle"] = "Electron term";
121 m_names["RefGamma"] = "Photon term";
122 m_names["RefTau"] = "Tau term";
123 m_names["Muons"] = "Muon term";
124 m_names["RefJet"] = "Jet term";
125 m_names["SoftClus"] = "Cluster-based soft term";
126 m_names["PVSoftTrk"] = "Track-based soft term (PV-matched)";
127 m_names["FinalTrk"] = "Total MET with TST";
128 m_names["FinalClus"] = "Total MET with CST";
129 m_names["Track"] = "Track MET, loose selection";
130 m_names["PVTrack_Nominal"] = "Track MET for highest sum p_{T}^{2} PV";
131 m_names["PVTrack_Pileup"] = "Track MET for each pileup vertex";
132
133 m_types.clear();
134 m_types.emplace_back("AntiKt4EMTopo");
135 m_types.emplace_back("AntiKt4EMPFlow");
136
137 m_terms.clear();
138 m_terms.emplace_back("RefEle");
139 m_terms.emplace_back("RefGamma");
140 m_terms.emplace_back("RefTau");
141 m_terms.emplace_back("Muons");
142 m_terms.emplace_back("RefJet");
143 m_terms.emplace_back("SoftClus");
144 m_terms.emplace_back("PVSoftTrk");
145 m_terms.emplace_back("FinalTrk");
146 m_terms.emplace_back("FinalClus");
147
148 ATH_MSG_INFO("Retrieving tools...");
149
150 ATH_CHECK( m_metmakerTopo.retrieve() );
151 ATH_CHECK( m_metmakerPFlow.retrieve() );
152 ATH_CHECK( m_muonSelTool.retrieve() );
153 ATH_CHECK( m_elecSelLHTool.retrieve() );
154 ATH_CHECK( m_photonSelIsEMTool.retrieve() );
155 ATH_CHECK( m_tauSelTool.retrieve() );
156 ATH_CHECK( m_jvtToolEM.retrieve() );
157 ATH_CHECK( m_jvtToolPFlow.retrieve() );
158 m_MET_Ref.clear();
159 m_MET_Ref_x.clear();
160 m_MET_Ref_y.clear();
161 m_MET_Ref_phi.clear();
162 m_MET_Ref_sum.clear();
163 m_MET_Diff_Ref.clear();
164 m_MET_Diff_Ref_x.clear();
165 m_MET_Diff_Ref_y.clear();
166 m_MET_Diff_Ref_phi.clear();
167 m_MET_Diff_Ref_sum.clear();
168 m_MET_Cumu_Ref.clear();
169 m_MET_Resolution_Ref.clear();
171 m_MET_dPhi_Ref.clear();
174 m_MET_Reb.clear();
175 m_MET_Reb_x.clear();
176 m_MET_Reb_y.clear();
177 m_MET_Reb_phi.clear();
178 m_MET_Reb_sum.clear();
179 m_MET_Diff_Reb.clear();
180 m_MET_Diff_Reb_x.clear();
181 m_MET_Diff_Reb_y.clear();
182 m_MET_Diff_Reb_phi.clear();
183 m_MET_Diff_Reb_sum.clear();
184 m_MET_Cumu_Reb.clear();
185 m_MET_Resolution_Reb.clear();
187 m_MET_dPhi_Reb.clear();
190
191 return StatusCode::SUCCESS;
192 }

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & IMonitorToolBase::interfaceID ( )
inlinestaticinherited

Definition at line 30 of file IMonitorToolBase.h.

30{ return IID_IMonitorToolBase; }
static const InterfaceID IID_IMonitorToolBase("IMonitorToolBase", 1, 0)

◆ intervalEnumToString()

std::string ManagedMonitorToolBase::intervalEnumToString ( Interval_t interval)
staticinherited

Converts a Interval_t to a string of the same name.

Definition at line 452 of file ManagedMonitorToolBase.cxx.

454{
455 std::string str("file");
456
457 switch( interval ) {
458 case all:
459 str = "all";
460 break;
461 case fill:
462 str = "fill";
463 break;
464 case run:
465 str = "run";
466 break;
467 case lowStat:
468 str = "lowStat";
469 break;
470 case medStat:
471 str = "medStat";
472 break;
473 case higStat:
474 str = "higStat";
475 break;
476 case lumiBlock:
477 str = "lumiBlock";
478 break;
479 case eventsBlock:
480 str = "eventsBlock";
481 break;
482 case file:
483 str = "file";
484 break;
485 default:
486 str = "unknown";
487 }
488
489 return str;
490}

◆ intervalStringToEnum()

ManagedMonitorToolBase::Interval_t ManagedMonitorToolBase::intervalStringToEnum ( const std::string & str)
staticinherited

Converts a string to the corresponding Interval_t.

Definition at line 494 of file ManagedMonitorToolBase.cxx.

496{
497 std::string lcstr( strToLower(str) );
498
499 if( lcstr == "all" )
500 return all;
501 else if( lcstr == "fill" )
502 return fill;
503 else if( lcstr == "run" )
504 return run;
505 else if( lcstr == "lowStat" )
506 return lowStat;
507 else if( lcstr == "medStat" )
508 return medStat;
509 else if( lcstr == "higStat" )
510 return higStat;
511 else if( lcstr == "lumiBlock" )
512 return lumiBlock;
513 else if( lcstr == "eventsBlock" )
514 return eventsBlock;
515 else if( lcstr == "file" )
516 return file;
517
518 if( Imp::s_svcLocator ) {
519 SmartIF<IMessageSvc> ms{Imp::s_svcLocator.load()->service( "MessageSvc" )};
520 if( ms.isValid() ) {
521 MsgStream log( ms, "ManagedMonitorToolBase::intervalStringToEnum()" );
522 log << MSG::WARNING << "Unknown ManagedMonitorToolBase::Interval_t \""
523 << str << "\", returning \"file\"" << endmsg;
524 }
525 }
526
527 return file;
528}
static std::atomic< ISvcLocator * > s_svcLocator

◆ lbAverageInteractionsPerCrossing()

float ManagedMonitorToolBase::lbAverageInteractionsPerCrossing ( const EventContext & ctx) const
virtualinherited

Average mu, i.e.

<mu>

Definition at line 1583 of file ManagedMonitorToolBase.cxx.

1585{
1586 if (!m_lumiDataKey.empty()) {
1587 SG::ReadCondHandle<LuminosityCondData> lumi (m_lumiDataKey, ctx);
1588 return lumi->lbAverageInteractionsPerCrossing();
1589 } else {
1590 ATH_MSG_DEBUG("Warning: lbAverageInteractionsPerCrossing() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1591 return -1.0;
1592 }
1593 // not reached
1594}
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey

◆ lbAverageLivefraction()

float ManagedMonitorToolBase::lbAverageLivefraction ( const EventContext & ctx) const
virtualinherited

Average luminosity livefraction.

Definition at line 1648 of file ManagedMonitorToolBase.cxx.

1650{
1652 return 1.0;
1653
1654 if (!m_trigLiveFractionDataKey.empty()) {
1655 SG::ReadCondHandle<TrigLiveFractionCondData> live (m_trigLiveFractionDataKey, ctx);
1656 return live->lbAverageLiveFraction();
1657 } else {
1658 ATH_MSG_DEBUG("Warning: lbAverageLivefraction() - luminosity not availble (i.e. EnableLumi = False)");
1659 return -1.0;
1660 }
1661 // not reached
1662}
SG::ReadCondHandleKey< TrigLiveFractionCondData > m_trigLiveFractionDataKey

◆ lbAverageLuminosity()

float ManagedMonitorToolBase::lbAverageLuminosity ( const EventContext & ctx) const
virtualinherited

Average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).

Definition at line 1617 of file ManagedMonitorToolBase.cxx.

1619{
1620 if (!m_lumiDataKey.empty()) {
1621 SG::ReadCondHandle<LuminosityCondData> lumi (m_lumiDataKey, ctx);
1622 return lumi->lbAverageLuminosity();
1623 } else {
1624 ATH_MSG_DEBUG("Warning: lbAverageLuminosity() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1625 return -1.0;
1626 }
1627 // not reached
1628}

◆ lbDuration()

double ManagedMonitorToolBase::lbDuration ( const EventContext & ctx) const
virtualinherited

Luminosity block time (in seconds).

Definition at line 1699 of file ManagedMonitorToolBase.cxx.

1701{
1703 return m_defaultLBDuration;
1704 }
1705 if (!m_lbDurationDataKey.empty()) {
1706 SG::ReadCondHandle<LBDurationCondData> dur (m_lbDurationDataKey, ctx);
1707 return dur->lbDuration();
1708 } else {
1709 ATH_MSG_DEBUG("Warning: lbDuration() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1710 return m_defaultLBDuration;
1711 }
1712 // not reached
1713}
SG::ReadCondHandleKey< LBDurationCondData > m_lbDurationDataKey

◆ lbInteractionsPerCrossing()

float ManagedMonitorToolBase::lbInteractionsPerCrossing ( const EventContext & ctx) const
virtualinherited

Instantaneous number of interactions, i.e.

mu

Definition at line 1598 of file ManagedMonitorToolBase.cxx.

1600{
1601 if (!m_lumiDataKey.empty()) {
1602 SG::ReadCondHandle<LuminosityCondData> lumi (m_lumiDataKey, ctx);
1603 float muToLumi = lumi->muToLumi();
1604 if (muToLumi > 0) {
1605 return lumi->lbLuminosityPerBCIDVector().at (ctx.eventID().bunch_crossing_id()) / muToLumi;
1606 }
1607 return 0;
1608 } else {
1609 ATH_MSG_DEBUG("Warning: lbInteractionsPerCrossing() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1610 return -1.0;
1611 }
1612 // not reached
1613}

◆ lbLuminosityPerBCID()

float ManagedMonitorToolBase::lbLuminosityPerBCID ( const EventContext & ctx) const
virtualinherited

Instantaneous luminosity.

Definition at line 1632 of file ManagedMonitorToolBase.cxx.

1634{
1635 if (!m_lumiDataKey.empty()) {
1636 SG::ReadCondHandle<LuminosityCondData> lumi (m_lumiDataKey, ctx);
1637 return lumi->lbLuminosityPerBCIDVector().at (ctx.eventID().bunch_crossing_id());
1638 } else {
1639 ATH_MSG_DEBUG("Warning: lbLuminosityPerBCID() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1640 return -1.0;
1641 }
1642 // not reached
1643}

◆ lbLumiWeight()

double ManagedMonitorToolBase::lbLumiWeight ( const EventContext & ctx) const
virtualinherited

Average Integrated Luminosity Live Fraction.

Definition at line 1684 of file ManagedMonitorToolBase.cxx.

1686{
1687 if (!m_lumiDataKey.empty()) {
1689 } else{
1690 ATH_MSG_DEBUG("Warning: lbLumiWeight() - luminosity tools are not retrieved or turned on (i.e. EnableLumi = False)");
1691 return -1.0;
1692 }
1693 // not reached
1694}
virtual double lbDuration(const EventContext &ctx) const
Luminosity block time (in seconds).
virtual float lbAverageLivefraction(const EventContext &ctx) const
Average luminosity livefraction.
virtual float lbAverageLuminosity(const EventContext &ctx) const
Average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).

◆ livefractionPerBCID()

float ManagedMonitorToolBase::livefractionPerBCID ( const EventContext & ctx) const
virtualinherited

Livefraction per bunch crossing ID.

Definition at line 1666 of file ManagedMonitorToolBase.cxx.

1668{
1670 return 1.0;
1671
1672 if (!m_trigLiveFractionDataKey.empty()) {
1673 SG::ReadCondHandle<TrigLiveFractionCondData> live (m_trigLiveFractionDataKey, ctx);
1674 return live->l1LiveFractionVector().at (ctx.eventID().bunch_crossing_id());
1675 } else {
1676 ATH_MSG_DEBUG("Warning: livefractionPerBCID() - luminosity retrieved available (i.e. EnableLumi = False)");
1677 return -1.0;
1678 }
1679 // not reached
1680}

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ newEventsBlockFlag()

bool ManagedMonitorToolBase::newEventsBlockFlag ( ) const
inlineprotectedinherited

Definition at line 720 of file ManagedMonitorToolBase.h.

720{ return m_newEventsBlock; }

◆ newHigStatIntervalFlag()

bool ManagedMonitorToolBase::newHigStatIntervalFlag ( ) const
inlineprotectedinherited

Definition at line 716 of file ManagedMonitorToolBase.h.

716{ return m_newHigStatInterval; }

◆ newLowStatFlag()

bool ManagedMonitorToolBase::newLowStatFlag ( ) const
inlineprotectedinherited

Definition at line 717 of file ManagedMonitorToolBase.h.

717{ return m_newLowStat; }

◆ newLowStatIntervalFlag()

bool ManagedMonitorToolBase::newLowStatIntervalFlag ( ) const
inlineprotectedinherited

Flag functions allowing clients to determine when to book new and process old histograms; values are updated by fillHists() based on counting lumiBlocks, and are correctly set when fillHistograms(), bookHistograms() and procHistograms() are called.

Definition at line 714 of file ManagedMonitorToolBase.h.

714{ return m_newLowStatInterval; }

◆ newLumiBlockFlag()

bool ManagedMonitorToolBase::newLumiBlockFlag ( ) const
inlineprotectedinherited

Definition at line 718 of file ManagedMonitorToolBase.h.

718{ return m_newLumiBlock; }

◆ newMedStatIntervalFlag()

bool ManagedMonitorToolBase::newMedStatIntervalFlag ( ) const
inlineprotectedinherited

Definition at line 715 of file ManagedMonitorToolBase.h.

715{ return m_newMedStatInterval; }

◆ newRunFlag()

bool ManagedMonitorToolBase::newRunFlag ( ) const
inlineprotectedinherited

Definition at line 719 of file ManagedMonitorToolBase.h.

719{ return m_newRun; }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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 ManagedMonitorToolBase::parseList ( const std::string & line,
std::vector< std::string > & result )
protectedinherited

Definition at line 1985 of file ManagedMonitorToolBase.cxx.

1986 {
1987 std::string item;
1988 std::stringstream ss(line);
1989
1990 if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "ManagedMonitorToolBase::parseList:";
1991
1992 while ( std::getline(ss, item, ',') ) {
1993 std::stringstream iss(item); // remove
1994 iss >> item; // whitespace
1995 if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " " << item;
1996 result.push_back(item);
1997 }
1998
1999 msg(MSG::DEBUG) << endmsg;
2000 return StatusCode::SUCCESS;
2001}
static Double_t ss
bool msgLvl(const MSG::Level lvl) const

◆ preSelector()

bool ManagedMonitorToolBase::preSelector ( )
virtualinherited

Implements IMonitorToolBase.

Definition at line 1571 of file ManagedMonitorToolBase.cxx.

1573{
1574 if( m_preScaleProp > 1 ) {
1575 return ( (m_nEvents % m_preScaleProp) == 1 );
1576 }
1577 return true;
1578}

◆ procHistograms()

StatusCode MissingEtDQA::PhysValMET::procHistograms ( )
virtual

An inheriting class should either override this function or finalHists().

Reimplemented from ManagedMonitorToolBase.

Definition at line 1394 of file PhysValMET.cxx.

1395 {
1396 if (m_detailLevel < 10){ //don't do anything if histograms not booked & filled
1397 return StatusCode::SUCCESS;
1398 }
1399 ATH_MSG_INFO ("Finalising hists " << name() << "...");
1400 for (const auto& type : m_types){
1401 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Reb[type]).size(); ++i) {
1402 if (m_doMETRefPlots){
1403 (m_MET_Ref[type]).at(i)->Sumw2();
1404 (m_MET_Ref_x[type]).at(i)->Sumw2();
1405 (m_MET_Ref_y[type]).at(i)->Sumw2();
1406 (m_MET_Ref_phi[type]).at(i)->Sumw2();
1407 (m_MET_Ref_sum[type]).at(i)->Sumw2();
1408 }
1409 (m_MET_Reb[type]).at(i)->Sumw2();
1410 (m_MET_Reb_x[type]).at(i)->Sumw2();
1411 (m_MET_Reb_y[type]).at(i)->Sumw2();
1412 (m_MET_Reb_phi[type]).at(i)->Sumw2();
1413 (m_MET_Reb_sum[type]).at(i)->Sumw2();
1414 }
1415
1416 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Diff_Reb[type]).size(); ++i) {
1417 if (m_doMETRefPlots){
1418 (m_MET_Diff_Ref[type]).at(i)->Sumw2();
1419 (m_MET_Diff_Ref_x[type]).at(i)->Sumw2();
1420 (m_MET_Diff_Ref_y[type]).at(i)->Sumw2();
1421 (m_MET_Diff_Ref_phi[type]).at(i)->Sumw2();
1422 (m_MET_Diff_Ref_sum[type]).at(i)->Sumw2();
1423 }
1424 (m_MET_Diff_Reb[type]).at(i)->Sumw2();
1425 (m_MET_Diff_Reb_x[type]).at(i)->Sumw2();
1426 (m_MET_Diff_Reb_y[type]).at(i)->Sumw2();
1427 (m_MET_Diff_Reb_phi[type]).at(i)->Sumw2();
1428 (m_MET_Diff_Reb_sum[type]).at(i)->Sumw2();
1429 }
1430
1431 for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalTrk_Reb[type]).size(); ++i) {
1432 if (m_doMETRefPlots){
1433 (m_MET_CorrFinalTrk_Ref[type]).at(i)->Sumw2();
1434 }
1435 (m_MET_CorrFinalTrk_Reb[type]).at(i)->Sumw2();
1436 }
1437
1438 for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalClus_Reb[type]).size(); ++i) {
1439 if (m_doMETRefPlots){
1440 (m_MET_CorrFinalClus_Ref[type]).at(i)->Sumw2();
1441 }
1442 (m_MET_CorrFinalClus_Reb[type]).at(i)->Sumw2();
1443 }
1444
1445 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Significance_Reb[type]).size(); ++i) {
1446 if (m_doMETRefPlots){
1447 (m_MET_Significance_Ref[type]).at(i)->Sumw2();
1448 }
1449 (m_MET_Significance_Reb[type]).at(i)->Sumw2();
1450 }
1451
1452 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Resolution_Reb[type]).size(); ++i) {
1453 if (m_doMETRefPlots){
1454 (m_MET_Resolution_Ref[type]).at(i)->Sumw2();
1455 }
1456 (m_MET_Resolution_Reb[type]).at(i)->Sumw2();
1457 }
1458
1459 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_dPhi_Ref[type]).size(); ++i) {
1460 if (m_doMETRefPlots){
1461 (m_MET_dPhi_Ref[type]).at(i)->Sumw2();
1462 }
1463 (m_MET_dPhi_Reb[type]).at(i)->Sumw2();
1464 }
1465
1466 int nBins = (m_MET_Reb[type]).at(7)->GetNbinsX();
1467 for(int i=1;i<=nBins;i++){
1468 double err;
1469 if (m_doMETRefPlots){
1470 (m_MET_Cumu_Ref[type]).at(0)->SetBinContent(i, (m_MET_Ref[type]).at(8)->IntegralAndError(i,nBins+1,err));
1471 (m_MET_Cumu_Ref[type]).at(0)->SetBinError(i, err);
1472 (m_MET_Cumu_Ref[type]).at(1)->SetBinContent(i, (m_MET_Ref[type]).at(7)->IntegralAndError(i,nBins+1,err));
1473 (m_MET_Cumu_Ref[type]).at(1)->SetBinError(i, err);
1474 }
1475 (m_MET_Cumu_Reb[type]).at(0)->SetBinContent(i, (m_MET_Reb[type]).at(8)->IntegralAndError(i,nBins+1,err));
1476 (m_MET_Cumu_Reb[type]).at(0)->SetBinError(i, err);
1477 (m_MET_Cumu_Reb[type]).at(1)->SetBinContent(i, (m_MET_Reb[type]).at(7)->IntegralAndError(i,nBins+1,err));
1478 (m_MET_Cumu_Reb[type]).at(1)->SetBinError(i, err);
1479 }
1480 for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Cumu_Ref[type]).size(); ++i) {
1481 if (m_doMETRefPlots){
1482 m_MET_Cumu_Ref[type].at(i)->Scale(1./(m_MET_Cumu_Ref[type]).at(i)->GetBinContent(1));
1483 }
1484 m_MET_Cumu_Reb[type].at(i)->Scale(1./(m_MET_Cumu_Reb[type]).at(i)->GetBinContent(1));
1485 }
1486
1487 }
1488
1489 if (m_doMETRefPlots){
1490 m_MET_Track->Sumw2();
1491 m_MET_Track_x->Sumw2();
1492 m_MET_Track_y->Sumw2();
1493 m_MET_Track_phi->Sumw2();
1494 m_MET_Track_sum->Sumw2();
1495 m_MET_PVTrack_Nominal->Sumw2();
1496 m_MET_PVTrack_Nominal_x->Sumw2();
1497 m_MET_PVTrack_Nominal_y->Sumw2();
1500 m_MET_PVTrack_Pileup->Sumw2();
1501 m_MET_PVTrack_Pileup_x->Sumw2();
1502 m_MET_PVTrack_Pileup_y->Sumw2();
1503 m_MET_PVTrack_Pileup_phi->Sumw2();
1504 m_MET_PVTrack_Pileup_sum->Sumw2();
1505 }
1506
1507 m_MET_Calo->Sumw2();
1508 m_MET_Calo_x->Sumw2();
1509 m_MET_Calo_y->Sumw2();
1510 m_MET_Calo_phi->Sumw2();
1511 m_MET_Calo_sum->Sumw2();
1512
1513 return StatusCode::SUCCESS;
1514 }

◆ regEfficiency()

StatusCode ManagedMonitorToolBase::regEfficiency ( TEfficiency * e,
const MonGroup & group )
virtualinherited

Registers a TEfficiency to be included in the output stream using logical parameters that describe the plot.

Definition at line 1337 of file ManagedMonitorToolBase.cxx.

1337 {
1338 if (!e)
1339 return StatusCode::FAILURE;
1340
1341 TGraph* g = reinterpret_cast<TGraph*>(e);
1342 std::string name = e->GetName();
1343
1344 // MANAGED
1345 if ( group.histo_mgmt() != ATTRIB_UNMANAGED ) {
1346 // warn about not using merge algorithms
1347 if (group.histo_mgmt() == ATTRIB_X_VS_LB && group.merge().empty()) {
1348 ATH_MSG_WARNING("HEY! Attempting to register "<<name<<" as a per-LB histogram, but not setting the merge algorithm! Use \"merge\", at least.");
1349 }
1350 // add the efficiency to rebooking vector
1351 if (m_supportedIntervalsForRebooking.count(group.interval())) {
1352 m_templateEfficiencies[group.interval()].push_back( MgmtParams<TEfficiency>(e, group) );
1353 } else {
1354 ATH_MSG_ERROR("Attempt to book managed graph " << name << " with invalid interval type " << intervalEnumToString(group.interval()));
1355 return StatusCode::FAILURE;
1356 }
1357
1358 MonGroup group_unmanaged( this, group.system(), group.interval(), ATTRIB_UNMANAGED, group.chain(), group.merge());
1359 std::string streamName = streamNameFunction()->getStreamName( this, group_unmanaged, name, false );
1360 registerMetadata(streamName, name, group).ignore();
1361 return m_THistSvc->regGraph( streamName, g );
1362 } else {
1363 // UNMANAGED
1364 if( m_manager != 0 ) {
1365 std::string genericName = NoOutputStream().getStreamName( this, group, name );
1366 m_manager->writeAndDelete( genericName );
1367 m_manager->passOwnership( e, genericName );
1368 }
1369
1370 std::string streamName = streamNameFunction()->getStreamName( this, group, name, false );
1371 StatusCode smd = registerMetadata(streamName, name, group);
1372 if (smd != StatusCode::SUCCESS)
1373 return StatusCode::FAILURE;
1374
1375 return m_THistSvc->regGraph( streamName, g );
1376 }
1377}
virtual std::string getStreamName(const ManagedMonitorToolBase *tool, const MonGroup &group, const std::string &objName, bool usePreviousInterval=false)
A function that converts a MonGroup of logical parameters into a physical output stream name.
std::set< Interval_t > m_supportedIntervalsForRebooking
StatusCode registerMetadata(const std::string &streamName, const std::string &hName, const MonGroup &group)
static std::string intervalEnumToString(Interval_t interval)
Converts a Interval_t to a string of the same name.
str smd
Definition defineDB.py:34

◆ regGraph() [1/2]

StatusCode ManagedMonitorToolBase::regGraph ( TGraph * g,
const MonGroup & group )
virtualinherited

Registers a TGraph to be included in the output stream using logical parameters that describe the graph.

Definition at line 1391 of file ManagedMonitorToolBase.cxx.

1393{
1394 if (!g)
1395 return StatusCode::FAILURE;
1396
1397 // This part of the code deals with MANAGED type
1398 if ( group.histo_mgmt() != ATTRIB_UNMANAGED ) {
1399 // Create an unmanaged group based on the original MonGroup instance passed
1400 // This is needed because managed graph is presented as a number of unmanaged
1401 // graphs (one per each interval)
1402 MonGroup group_unmanaged( this, group.system(), group.interval(), ATTRIB_UNMANAGED, group.chain(), group.merge());
1403
1404 if (m_supportedIntervalsForRebooking.count(group.interval())) {
1405 m_templateGraphs[group.interval()].push_back( MgmtParams<TGraph>(g, group_unmanaged) );
1406 } else {
1407 ATH_MSG_ERROR("Attempt to book managed graph " << g->GetName() << " with invalid interval type " << intervalEnumToString(group.interval()));
1408 return StatusCode::FAILURE;
1409 }
1410
1411 std::string name = g->GetName();
1412 std::string streamName = streamNameFunction()->getStreamName( this, group_unmanaged, name, false );
1413 registerMetadata(streamName, name, group).ignore();
1414 return m_THistSvc->regGraph( streamName, g );
1415 }
1416
1417 // This part of the code deals with UNMANAGED type
1418 std::string gName = g->GetName();
1419
1420 if( m_manager != 0 ) {
1421 std::string genericName = NoOutputStream().getStreamName( this, group, gName );
1422 m_manager->writeAndDelete( genericName );
1423 m_manager->passOwnership( g, genericName );
1424 }
1425
1426 std::string streamName = streamNameFunction()->getStreamName( this, group, gName, false );
1427
1428 StatusCode smd = registerMetadata(streamName, gName, group);
1429 if (smd != StatusCode::SUCCESS) return StatusCode::FAILURE;
1430
1431 return m_THistSvc->regGraph( streamName, g );
1432}

◆ regGraph() [2/2]

StatusCode ManagedMonitorToolBase::regGraph ( TGraph * g,
const std::string & system,
Interval_t interval,
MgmtAttr_t histo_mgmt = ATTRIB_MANAGED,
const std::string & chain = "",
const std::string & merge = "" )
virtualinherited

Registers a TGraph to be included in the output stream using logical parameters that describe the graph.

Definition at line 1381 of file ManagedMonitorToolBase.cxx.

1384{
1385 MonGroup group( this, system, interval, histo_mgmt, chain, merge );
1386 return regGraph( g, group );
1387}
virtual StatusCode regGraph(TGraph *g, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
Registers a TGraph to be included in the output stream using logical parameters that describe the gra...

◆ regHist() [1/2]

StatusCode ManagedMonitorToolBase::regHist ( TH1 * h,
const MonGroup & group )
virtualinherited

Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical parameters that describe the histogram.

A histogram is passed via reference to a pointer.

Definition at line 1247 of file ManagedMonitorToolBase.cxx.

1249{
1250 if (!h)
1251 return StatusCode::FAILURE;
1252
1253 // This part of the code deals with MANAGED type
1254 if ( group.histo_mgmt() != ATTRIB_UNMANAGED ) {
1255 /*
1256 Create an unmanaged group based on the original MonGroup instance passed
1257 It is needed because managed histogram is presented as a number of unmanaged
1258 histograms (one per each interval)
1259 Update (PUEO) - I don't think it actually matters, and need to keep
1260 track of "proper" attribute for X_VS_LB
1261 */
1262
1263 if (group.histo_mgmt() == ATTRIB_X_VS_LB && group.merge().empty()) {
1264 ATH_MSG_WARNING("HEY! You're attempting to register " << h->GetName() << " as a per-LB histogram, but you're not setting the merge algorithm! This is a SUPER-BAD idea! Use \"merge\", at least.");
1265 }
1266
1267 if (m_supportedIntervalsForRebooking.count(group.interval())) {
1268 m_templateHistograms[group.interval()].push_back( MgmtParams<TH1>(h, group) );
1269 } else {
1270 ATH_MSG_ERROR("Attempt to book managed histogram " << h->GetName() << " with invalid interval type " << intervalEnumToString(group.interval()));
1271 return StatusCode::FAILURE;
1272 }
1273
1274 std::string hName = h->GetName();
1275 MonGroup group_unmanaged( this, group.system(), group.interval(), ATTRIB_UNMANAGED, group.chain(), group.merge());
1276 std::string streamName = streamNameFunction()->getStreamName( this, group_unmanaged, hName, false );
1277 registerMetadata(streamName, hName, group).ignore();
1278 return m_THistSvc->regHist( streamName, h );
1279 }
1280
1281 // This part of the code deals with UNMANAGED type
1282 std::string hName = h->GetName();
1283
1284 if( m_manager != 0 ) {
1285 std::string genericName = NoOutputStream().getStreamName( this, group, hName );
1286 m_manager->writeAndDelete( genericName );
1287 m_manager->passOwnership( h, genericName );
1288 }
1289
1290 std::string streamName = streamNameFunction()->getStreamName( this, group, hName, false );
1291
1292 StatusCode smd = registerMetadata(streamName, hName, group);
1293 if (smd != StatusCode::SUCCESS) return StatusCode::FAILURE;
1294
1295 return m_THistSvc->regHist( streamName, h );
1296}

◆ regHist() [2/2]

StatusCode ManagedMonitorToolBase::regHist ( TH1 * h,
const std::string & system,
Interval_t interval,
MgmtAttr_t histo_mgmt = ATTRIB_MANAGED,
const std::string & chain = "",
const std::string & merge = "" )
virtualinherited

Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical parameters that describe the histogram.

Definition at line 1238 of file ManagedMonitorToolBase.cxx.

1241{
1242 MonGroup group( this, system, interval, histo_mgmt, chain, merge );
1243 return regHist( h, group );
1244}

◆ registerMetadata()

StatusCode ManagedMonitorToolBase::registerMetadata ( const std::string & streamName,
const std::string & hName,
const MonGroup & group )
protectedinherited

Definition at line 844 of file ManagedMonitorToolBase.cxx.

846 {
848 TTree* metadata(0);
849 std::string mdStreamName( streamName );
850 size_t found=mdStreamName.rfind('/');
851
852 if ( found != std::string::npos )
853 mdStreamName.replace( found, mdStreamName.length(), "/metadata" );
854
855 MDMap_t::iterator i = m_metadataMap.find( mdStreamName );
856 if( i == m_metadataMap.end() ) {
857 metadata = new TTree( "metadata", "Monitoring Metadata" );
858 if (! metadata) return StatusCode::FAILURE;
859 StatusCode scmd = m_THistSvc->regTree( mdStreamName, metadata );
860 if (scmd == StatusCode::FAILURE) return StatusCode::FAILURE;
861 i = m_metadataMap.emplace( mdStreamName, new OutputMetadata(metadata) ).first;
862 }
863
864 i->second->fill( hName, group.interval(), group.chain(), group.merge() );
865 }
866 return StatusCode::SUCCESS;
867}

◆ regManagedEfficiencies()

StatusCode ManagedMonitorToolBase::regManagedEfficiencies ( std::vector< MgmtParams< TEfficiency > > & templateEfficiencies)
protectedinherited

Definition at line 1038 of file ManagedMonitorToolBase.cxx.

1038 {
1039 bool allIsOk = true;
1040 for( auto& it : templateEfficiencies ) {
1041 // get components of MgmtParams and copy efficiency
1042 MonGroup group = it.m_group;
1043 TEfficiency* theEfficiency = it.m_templateHist;
1044 TEfficiency* e = static_cast<TEfficiency*>(theEfficiency->Clone());
1045 int nbins = theEfficiency->GetTotalHistogram()->GetNbinsX();
1046 int xlow = theEfficiency->GetTotalHistogram()->GetXaxis()->GetXmin();
1047 int xhigh = theEfficiency->GetTotalHistogram()->GetXaxis()->GetXmax();
1048 e->SetBins(nbins,xlow,xhigh); // reset histogram
1049 std::string name = e->GetName();
1050
1051 // make TGraph casts of TEfficiencies
1052 TGraph* theGraph = reinterpret_cast<TGraph*>(theEfficiency);
1053 TGraph* g = reinterpret_cast<TGraph*>(e);
1054
1055 // Get the streamName for the previous interval
1056 std::string streamName = streamNameFunction()->getStreamName( this, group, name, true );
1057
1058 // RE-REGISTER
1059 // 1) De-register the original graph with the THistSvc
1060 StatusCode sc1 = m_THistSvc->deReg( theGraph );
1061 if (sc1 == StatusCode::FAILURE) allIsOk = false;
1062 // 2) Fix THistSvc->deReg for TGraphs
1063 bool doneCleaning = false;
1064 std::string directoryName = streamNameFunction()->getDirectoryName( this, group, name, true );
1065 TSeqCollection *filelist=gROOT->GetListOfFiles();
1066 for (int i=0; i<filelist->GetEntries(); i++) {
1067 ATH_MSG_DEBUG( "List of files: " << filelist->At(i)->GetName());
1068 TFile* file = static_cast<TFile*>(filelist->At(i));
1069 StatusCode sc2 = THistSvc_deReg_fixTGraph(file, theGraph, directoryName);
1070 if (sc2 == StatusCode::SUCCESS) doneCleaning = true;
1071 }
1072 // 3) Check if TGraph fix has been applied successfully
1073 if (!doneCleaning) {
1074 ATH_MSG_ERROR("THistSvc_deReg_fixTGraph: failed to apply TGraph fix for the THist Svc!");
1075 allIsOk = false;
1076 }
1077 // 4) Register cloned histogram under previous interval streamName
1078 StatusCode sc3 = m_THistSvc->regGraph( streamName, g );
1079 if (sc3 == StatusCode::FAILURE)
1080 allIsOk = false;
1081
1082 // get streamname for interval
1083 streamName = streamNameFunction()->getStreamName( this, group, name, false );
1084 // store metadata
1085 StatusCode smd = registerMetadata(streamName, name, group);
1086 if (smd != StatusCode::SUCCESS) allIsOk = false;
1087 // Re-register the original graph
1088 StatusCode sc4 = m_THistSvc->regGraph( streamName, theGraph );
1089 if (sc4 == StatusCode::FAILURE) allIsOk = false;
1090 }
1091
1092 if (!allIsOk) return StatusCode::FAILURE;
1093 return StatusCode::SUCCESS;
1094}
virtual std::string getDirectoryName(const ManagedMonitorToolBase *tool, const MonGroup &group, const std::string &objName, const bool usePreviousInterval)=0
A function that returns TDirectory path in a file that corresponds to a given MonGroup and object nam...
StatusCode THistSvc_deReg_fixTGraph(TFile *file, TGraph *theGraph, std::string &directoryName)
Fixes THistSvc->deReg(obj) when obj is TGraph instance.
filelist
print ("Checking files %s..." % fullfile)
Definition envutil.py:133

◆ regManagedGraphs()

StatusCode ManagedMonitorToolBase::regManagedGraphs ( std::vector< MgmtParams< TGraph > > & templateGraphs)
protectedinherited

Definition at line 967 of file ManagedMonitorToolBase.cxx.

969{
970 // See the description for the regManagedHistograms method
971 bool allIsOk = true;
972
973 for( std::vector< MgmtParams<TGraph> >::iterator it = templateGraphs.begin(); it != templateGraphs.end(); ++it ) {
974 MonGroup group = (*it).m_group;
975
976 // Get a handle to the graph
977 TGraph* theGraph = (*it).m_templateHist;
978
979 // Clone the graph
980 TGraph* g = static_cast<TGraph*>(theGraph->Clone());
981 theGraph->Set(0); // equivalent to Reset() for TH1
982
983 // Get name
984 std::string gName = g->GetName();
985
986 // Get the streamName for the previous interval
987 std::string streamName = streamNameFunction()->getStreamName( this, group, gName, true );
988
989 // De-register the original graph with the THistSvc
990 StatusCode sc1 = m_THistSvc->deReg( theGraph );
991 if (sc1 == StatusCode::FAILURE)
992 allIsOk = false;
993
994 // *** begin ***
995 // Fix THistSvc->deReg for TGraphs
996 bool doneCleaning = false;
997 std::string directoryName = streamNameFunction()->getDirectoryName( this, group, gName, true );
998 TSeqCollection *filelist=gROOT->GetListOfFiles();
999 for (int i=0; i<filelist->GetEntries(); i++) {
1000 ATH_MSG_DEBUG( "List of files: " << filelist->At(i)->GetName());
1001 TFile* file = static_cast<TFile*>(filelist->At(i));
1002 StatusCode sc2 = THistSvc_deReg_fixTGraph(file, theGraph, directoryName);
1003 if (sc2 == StatusCode::SUCCESS)
1004 doneCleaning = true;
1005 }
1006
1007 // Check if TGraph fix has been applied successfully
1008 if (!doneCleaning) {
1009 ATH_MSG_ERROR("THistSvc_deReg_fixTGraph: failed to apply TGraph fix for the THist Svc!");
1010 allIsOk = false;
1011 }
1012 // *** end ***
1013
1014 // Register clonned histogram under previous interval streamName
1015 StatusCode sc3 = m_THistSvc->regGraph( streamName, g );
1016 if (sc3 == StatusCode::FAILURE)
1017 allIsOk = false;
1018
1019 // Get streamName for the current interval
1020 streamName = streamNameFunction()->getStreamName( this, group, gName, false );
1021 // Register metadata information with the current interval streamname
1022 StatusCode smd = registerMetadata(streamName, gName, group);
1023 if (smd != StatusCode::SUCCESS)
1024 allIsOk = false;
1025
1026 // Re-register the original graph with the current interval streamName
1027 StatusCode sc4 = m_THistSvc->regGraph( streamName, theGraph );
1028 if (sc4 == StatusCode::FAILURE)
1029 allIsOk = false;
1030
1031 }
1032
1033 if (!allIsOk) return StatusCode::FAILURE;
1034
1035 return StatusCode::SUCCESS;
1036}

◆ regManagedHistograms()

StatusCode ManagedMonitorToolBase::regManagedHistograms ( std::vector< MgmtParams< TH1 > > & templateHistograms)
protectedinherited

Definition at line 870 of file ManagedMonitorToolBase.cxx.

872{
873 // The method registers histograms with the THistSvc and saves them to file.
874
875 // The funky business with registering and deregistering the histogram is needed
876 // to get the correct directory when saving histograms. THistSvc deals with ROOT
877 // to set up proper TDirectory, so we rely on it.
878 // E.g.
879 // m_THistSvc->regHist( streamName, h ): sets the correct TDirectory with streamName
880 // m_THistSvc->deReg( h ) - deregister from THistSvc otherwise THistSvc will try to save it
881 // at the end of execution
882 // use passownership of the histogram and save it to file
883 // m_manager->passOwnership( h, genericName );
884 // m_manager->writeAndDelete( genericName );
885 bool allIsOk = true;
886
887 for( std::vector< MgmtParams<TH1> >::iterator it = templateHistograms.begin(); it != templateHistograms.end(); ++it ) {
888 MonGroup& group = (*it).m_group;
889
890 // Get a handle to the histogram
891 TH1* theHist = (*it).m_templateHist;
892
893 // Clone the histogram
894 TH1* h = static_cast<TH1*>(theHist->Clone());
895 theHist->Reset();
896
897 // Get name
898 std::string hName = h->GetName();
899
900 // Get the streamName for the previous interval
901 std::string streamName = streamNameFunction()->getStreamName( this, group, hName, true );
902
903 // Register the histogram with the THistSvc
904 StatusCode sc1 = m_THistSvc->deReg( theHist );
905 if (sc1 == StatusCode::FAILURE) allIsOk = false;
906
907 // Register clonned histogram under previous interval streamName
908 StatusCode sc2 = m_THistSvc->regHist( streamName, h );
909 if (sc2 == StatusCode::FAILURE) allIsOk = false;
910
911 if( m_manager != 0 ) {
912 std::string genericName = NoOutputStream().getStreamName( this, group, hName );
913 m_manager->passOwnership( h, genericName );
914 m_manager->writeAndDelete( genericName );
915 }
916
917 // Get streamName for the current interval
918 streamName = streamNameFunction()->getStreamName( this, group, hName, false );
919 // Register metadata information with the current interval streamname
920 StatusCode smd = registerMetadata(streamName, hName, group);
921 if (smd != StatusCode::SUCCESS) allIsOk = false;
922
923 // Re-register the original histogram with the current interval streamName
924 StatusCode sc3 = m_THistSvc->regHist( streamName, theHist );
925 if (sc3 == StatusCode::FAILURE) allIsOk = false;
926
927 }
928
929 if (!allIsOk) return StatusCode::FAILURE;
930
931 return StatusCode::SUCCESS;
932}

◆ regManagedTrees()

StatusCode ManagedMonitorToolBase::regManagedTrees ( std::vector< MgmtParams< TTree > > & templateTrees)
protectedinherited

Definition at line 1098 of file ManagedMonitorToolBase.cxx.

1100{
1101 // See the description for the regManagedHistograms method
1102 bool allIsOk = true;
1103
1104 for( std::vector< MgmtParams<TTree> >::iterator it = templateTrees.begin(); it != templateTrees.end(); ++it ) {
1105 MonGroup group = (*it).m_group;
1106
1107 // Get a handle to the original tree
1108 TTree* theTree = (*it).m_templateHist;
1109
1110 // Clone the tree
1111 TTree* t = static_cast<TTree*>(theTree->Clone());
1112 theTree->Reset();
1113
1114 // Dumping the tree
1115 std::string name = t->GetName();
1116
1117 // Get the streamName for the previous interval
1118 std::string streamName = streamNameFunction()->getStreamName( this, group, name, true );
1119
1120 // De-register original tree with the THistSvc
1121 StatusCode sc1 = m_THistSvc->deReg( theTree );
1122 if (sc1 == StatusCode::FAILURE) allIsOk = false;
1123
1124 // Register clonned tree under previous interval streamName
1125 StatusCode sc2 = m_THistSvc->regTree( streamName, t );
1126 if (sc2 == StatusCode::FAILURE) allIsOk = false;
1127
1128 if( m_manager != 0 ) {
1129 std::string genericName = NoOutputStream().getStreamName( this, group, name );
1130 m_manager->passOwnership( t, genericName );
1131 m_manager->writeAndDelete( genericName );
1132 }
1133
1134 // Get streamName for the current interval
1135 streamName = streamNameFunction()->getStreamName( this, group, name, false );
1136 // Register metadata information with the current interval streamname
1137 StatusCode smd = registerMetadata(streamName, name, group);
1138 if (smd != StatusCode::SUCCESS) allIsOk = false;
1139
1140 // Re-register the original graph with the current interval streamName
1141 StatusCode sc3 = m_THistSvc->regTree( streamName, theTree );
1142 if (sc3 == StatusCode::FAILURE) allIsOk = false;
1143
1144 }
1145
1146 if (!allIsOk) return StatusCode::FAILURE;
1147
1148 return StatusCode::SUCCESS;
1149}

◆ regTree() [1/2]

StatusCode ManagedMonitorToolBase::regTree ( TTree * t,
const MonGroup & group )
virtualinherited

Registers a TTree to be included in the output stream using logical parameters that describe it.

Definition at line 1446 of file ManagedMonitorToolBase.cxx.

1448{
1449
1450 // This part of the code deals with MANAGED type
1451 if ( group.histo_mgmt() != ATTRIB_UNMANAGED ) {
1452 // Create an unmanaged group based on the original MonGroup instance passed
1453 // This is needed because managed tree is presented as a number of unmanaged
1454 // trees (one per each interval)
1455 MonGroup group_unmanaged( this, group.system(), group.interval(), ATTRIB_UNMANAGED, group.chain(), group.merge());
1456
1457 if (m_supportedIntervalsForRebooking.count(group.interval())) {
1458 m_templateTrees[group.interval()].push_back( MgmtParams<TTree>(t, group_unmanaged) );
1459 } else {
1460 ATH_MSG_ERROR("Attempt to book managed tree " << t->GetName() << " with invalid interval type " << intervalEnumToString(group.interval()));
1461 return StatusCode::FAILURE;
1462 }
1463
1464 std::string name = t->GetName();
1465 std::string genericName = NoOutputStream().getStreamName( this, group_unmanaged, name );
1466 std::string streamName = streamNameFunction()->getStreamName( this, group_unmanaged, name, false );
1467 registerMetadata(streamName, name, group).ignore();
1468 return m_THistSvc->regTree( streamName, t );
1469 }
1470
1471
1472 // This part of the code deals with UNMANAGED type
1473 std::string tName = t->GetName();
1474
1475 if( m_manager != 0 ) {
1476 std::string genericName = NoOutputStream().getStreamName( this, group, tName );
1477 m_manager->writeAndDelete( genericName );
1478 m_manager->passOwnership( t, genericName );
1479 }
1480
1481 std::string streamName = streamNameFunction()->getStreamName( this, group, tName, false );
1482
1483 StatusCode smd = registerMetadata(streamName, tName, group);
1484 if (smd != StatusCode::SUCCESS) return StatusCode::FAILURE;
1485
1486 return m_THistSvc->regTree( streamName, t );
1487}

◆ regTree() [2/2]

StatusCode ManagedMonitorToolBase::regTree ( TTree * t,
const std::string & system,
Interval_t interval,
MgmtAttr_t histo_mgmt = ATTRIB_MANAGED,
const std::string & chain = "",
const std::string & merge = "" )
virtualinherited

Registers a TTree to be included in the output stream using logical parameters that describe it.

Definition at line 1436 of file ManagedMonitorToolBase.cxx.

1439{
1440 MonGroup group( this, system, interval, histo_mgmt, chain, merge );
1441 return regTree( t, group );
1442}
virtual StatusCode regTree(TTree *t, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
Registers a TTree to be included in the output stream using logical parameters that describe it.

◆ 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< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 368 of file AthCommonDataStore.h.

369 {
370 h.renounce();
372 }
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< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 352 of file AthCommonDataStore.h.

352 {
354 }

◆ runStat()

StatusCode ManagedMonitorToolBase::runStat ( )
virtualinherited

This implementation does nothing; equivalent functionality may be provided by procHists( true, true, true ).

Implements IMonitorToolBase.

Definition at line 1553 of file ManagedMonitorToolBase.cxx.

1555{
1556 return StatusCode::SUCCESS;
1557}

◆ setMonManager()

void ManagedMonitorToolBase::setMonManager ( AthenaMonManager * manager)
virtualinherited

Takes a pointer to a managing object to get information from it when needed.

Definition at line 1220 of file ManagedMonitorToolBase.cxx.

1222{
1223 ATH_MSG_DEBUG( "ManagedMonitorToolBase::setMonManager():");
1225 if( m_manager != 0 ) {
1226 ATH_MSG_DEBUG( " --> Setting manager");
1227 m_managerNameProp = m_manager->name();
1228 m_fileKey = m_manager->fileKey();
1229 m_dataType = m_manager->dataType();
1230 m_environment = m_manager->environment();
1231 delete m_streamNameFcn;
1233 }
1234 ATH_MSG_DEBUG( " --> Exiting successfully");
1235}
virtual StreamNameFcn * getNewStreamNameFcn() const

◆ setupOutputStreams()

StatusCode ManagedMonitorToolBase::setupOutputStreams ( std::vector< std::string > Mapping = std::vector<std::string>())
virtualinherited

This implementation does nothing—streams in this class should be managed by the AthenaMonManager.

Consider using MonitorToolBase for user-managed streams.

Implements IMonitorToolBase.

Definition at line 1542 of file ManagedMonitorToolBase.cxx.

1544{
1545 // All instances should write to the stream(s) defined by the
1546 // AthenaMonManager.
1547
1548 return StatusCode::SUCCESS;
1549}

◆ streamNameFunction()

ManagedMonitorToolBase::StreamNameFcn * ManagedMonitorToolBase::streamNameFunction ( )
virtualinherited

Returns the function object that converts logical paramters into a physical stream name.

Definition at line 437 of file ManagedMonitorToolBase.cxx.

439{
440 if( m_streamNameFcn == 0 ) {
441 msg(MSG::ERROR) << "!! streamNameFunction() has not been initialized !!" << endmsg;
442 msg(MSG::ERROR) << " --> neither ManagedMonitorToolBase::initialize() nor" << endmsg;
443 msg(MSG::ERROR) << " --> ManagedMonitorToolBase::setMonManager() has been called." << endmsg;
444 msg(MSG::ERROR) << " --> Correct configuration cannot be guaranteed from this point." << endmsg;
446 }
447 return m_streamNameFcn;
448}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, and AthCheckedComponent<::AthAlgTool >.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ THistSvc_deReg_fixTGraph()

StatusCode ManagedMonitorToolBase::THistSvc_deReg_fixTGraph ( TFile * file,
TGraph * theGraph,
std::string & directoryName )
protectedinherited

Fixes THistSvc->deReg(obj) when obj is TGraph instance.

Read more in source file about this bug.

Definition at line 935 of file ManagedMonitorToolBase.cxx.

937{
938 // THistSvc employs TDirectory Append method when registering TGraph.
939 // When deReg is used to de-register TGraph object, THistSvc only removes the object
940 // from its internal management but forgets to delete from TDirectory.
941 // The current method fixes this problem by removing the TGraph object manually
942 // after THistSvc->deReg(TGraph* obj) is called.
943
944 // Saves and restores gFile and gDirectory
946
947 // This check is true when TGraph object is removed successfully
948 bool graphRemoved = false;
949
950 file->cd("/");
951 TDirectory* dir = file->GetDirectory(directoryName.c_str());
952 if (dir != 0) {
953 dir->cd();
954 TObject* obj = dir->Remove(theGraph);
955 if (obj != 0)
956 graphRemoved = true;
957 }
958
959 if (!graphRemoved) {
960 return StatusCode::FAILURE;
961 }
962
963 return StatusCode::SUCCESS;
964}

◆ trigChainsArePassed()

bool ManagedMonitorToolBase::trigChainsArePassed ( std::vector< std::string > & vTrigNames)
protectedvirtualinherited

Definition at line 1966 of file ManagedMonitorToolBase.cxx.

1968{
1969 ATH_MSG_DEBUG( "ManagedMonitorToolBase::trigChainsArePassed:");
1970
1971 for(unsigned int i=0; i<vTrigNames.size(); i++) {
1972 if( m_trigDecTool->isPassed(vTrigNames[i]) ) {
1973 ATH_MSG_DEBUG( " + \"" << vTrigNames[i] << "\" passed, returning \'true\'");
1974 return true;
1975 }
1976 else {
1977 ATH_MSG_DEBUG( " - \"" << vTrigNames[i] << "\" did not pass");
1978 }
1979 }
1980
1981 return false;
1982}

◆ updateTriggersForGroups()

void ManagedMonitorToolBase::updateTriggersForGroups ( std::vector< std::string > & vTrigChainNames)
protectedinherited

Definition at line 2004 of file ManagedMonitorToolBase.cxx.

2005 {
2006 for (size_t i = 0; i < vTrigChainNames.size(); ++i) {
2007 std::string& thisName = vTrigChainNames[i];
2008 if (thisName.compare(0, 9, "CATEGORY_") ==0) {
2009 ATH_MSG_DEBUG("Found a trigger category: " << thisName << ". We will unpack it.");
2010 std::vector<std::string> triggers = m_trigTranslator->translate(thisName.substr(9,std::string::npos));
2011 std::ostringstream oss;
2012 oss << "(";
2013 for (size_t itrig = 0; itrig < triggers.size(); ++itrig) {
2014 if (itrig != 0) {
2015 oss << "|";
2016 }
2017 oss << triggers[itrig];
2018 }
2019 oss << ")";
2020 // replace with new value
2021 std::string newval = oss.str();
2022 ATH_MSG_DEBUG("Replaced with " << newval);
2023 vTrigChainNames[i] = std::move(newval);
2024 }
2025 }
2026}
PublicToolHandle< ITriggerTranslatorTool > m_trigTranslator

◆ updateVHKA()

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

Definition at line 298 of file AthCommonDataStore.h.

298 {
299 for (auto &a : m_vhka) {
301 for (auto k : keys) {
302 k->setOwner(this);
303 }
304 }
305 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeAndDelete()

StatusCode ManagedMonitorToolBase::writeAndDelete ( TH1 * h,
const MonGroup & group )
virtualinherited

Write out histogram and delete it.

Definition at line 1491 of file ManagedMonitorToolBase.cxx.

1492 {
1493 if (!h)
1494 return StatusCode::FAILURE;
1495
1496 std::string hName = h->GetName();
1497
1498 if( m_manager != 0 ) {
1499 std::string genericName = NoOutputStream().getStreamName( this, group, hName );
1500 m_manager->writeAndDelete( genericName );
1501 }
1502 return StatusCode::SUCCESS;
1503}

Member Data Documentation

◆ m_bookHistogramsInitial

bool ManagedMonitorToolBase::m_bookHistogramsInitial
privateinherited

Definition at line 800 of file ManagedMonitorToolBase.h.

◆ m_corename

std::string MissingEtDQA::PhysValMET::m_corename
private

Definition at line 95 of file PhysValMET.h.

◆ m_d

Imp* ManagedMonitorToolBase::m_d
privateinherited

Definition at line 807 of file ManagedMonitorToolBase.h.

◆ m_dataType

AthenaMonManager::DataType_t ManagedMonitorToolBase::m_dataType
protectedinherited

Definition at line 745 of file ManagedMonitorToolBase.h.

◆ m_dataTypeStr

std::string ManagedMonitorToolBase::m_dataTypeStr
protectedinherited

Definition at line 741 of file ManagedMonitorToolBase.h.

◆ m_defaultLBDuration

float ManagedMonitorToolBase::m_defaultLBDuration
privateinherited

Definition at line 802 of file ManagedMonitorToolBase.h.

◆ m_detailLevel

unsigned int ManagedMonitorToolBase::m_detailLevel
protectedinherited

Definition at line 743 of file ManagedMonitorToolBase.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 381 of file AthCommonDataStore.h.

◆ m_dir_met

std::vector<std::string> MissingEtDQA::PhysValMET::m_dir_met
private

Definition at line 153 of file PhysValMET.h.

◆ m_doMETRefPlots

bool MissingEtDQA::PhysValMET::m_doMETRefPlots
private

Definition at line 84 of file PhysValMET.h.

◆ m_doTruth

bool MissingEtDQA::PhysValMET::m_doTruth
private

Definition at line 82 of file PhysValMET.h.

◆ m_DQFilterTools

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

Definition at line 756 of file ManagedMonitorToolBase.h.

756{this,"FilterTools",{}};

◆ m_eleColl

std::string MissingEtDQA::PhysValMET::m_eleColl
private

Definition at line 90 of file PhysValMET.h.

◆ m_elecSelLHTool

ToolHandle<IAsgElectronLikelihoodTool> MissingEtDQA::PhysValMET::m_elecSelLHTool {this, "ElectronLHSelectionTool", "", "Electron likelihood selection tool"}
private

Definition at line 156 of file PhysValMET.h.

156{this, "ElectronLHSelectionTool", "", "Electron likelihood selection tool"};

◆ m_endOfEventsBlock

bool ManagedMonitorToolBase::m_endOfEventsBlock
privateinherited

Definition at line 730 of file ManagedMonitorToolBase.h.

◆ m_endOfLowStat

bool ManagedMonitorToolBase::m_endOfLowStat
privateinherited

Definition at line 730 of file ManagedMonitorToolBase.h.

◆ m_endOfLumiBlock

bool ManagedMonitorToolBase::m_endOfLumiBlock
privateinherited

Definition at line 730 of file ManagedMonitorToolBase.h.

◆ m_endOfRun

bool ManagedMonitorToolBase::m_endOfRun
privateinherited

Definition at line 730 of file ManagedMonitorToolBase.h.

◆ m_environment

AthenaMonManager::Environment_t ManagedMonitorToolBase::m_environment
protectedinherited

Definition at line 746 of file ManagedMonitorToolBase.h.

◆ m_environmentStr

std::string ManagedMonitorToolBase::m_environmentStr
protectedinherited

Definition at line 742 of file ManagedMonitorToolBase.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 378 of file AthCommonDataStore.h.

◆ m_fileKey

std::string ManagedMonitorToolBase::m_fileKey
protectedinherited

Definition at line 740 of file ManagedMonitorToolBase.h.

◆ m_gammaColl

std::string MissingEtDQA::PhysValMET::m_gammaColl
private

Definition at line 91 of file PhysValMET.h.

◆ m_haveClearedLastEventBlock

bool ManagedMonitorToolBase::m_haveClearedLastEventBlock
protectedinherited

Definition at line 773 of file ManagedMonitorToolBase.h.

◆ m_inputIsDAOD

bool MissingEtDQA::PhysValMET::m_inputIsDAOD
private

Definition at line 83 of file PhysValMET.h.

◆ m_jvtToolEM

ToolHandle<IJetUpdateJvt> MissingEtDQA::PhysValMET::m_jvtToolEM {this, "JVTToolEMTopo", "", "JVT tool for EMTopo jets"}
private

Definition at line 158 of file PhysValMET.h.

158{this, "JVTToolEMTopo", "", "JVT tool for EMTopo jets"};

◆ m_jvtToolPFlow

ToolHandle<IJetUpdateJvt> MissingEtDQA::PhysValMET::m_jvtToolPFlow {this, "JVTToolEMPFlow", "", "JVT tool forEMPFlow jets"}
private

Definition at line 159 of file PhysValMET.h.

159{this, "JVTToolEMPFlow", "", "JVT tool forEMPFlow jets"};

◆ m_lastHigStatInterval

int ManagedMonitorToolBase::m_lastHigStatInterval
protectedinherited

Definition at line 768 of file ManagedMonitorToolBase.h.

◆ m_lastLowStatInterval

int ManagedMonitorToolBase::m_lastLowStatInterval
protectedinherited

Definition at line 768 of file ManagedMonitorToolBase.h.

◆ m_lastLumiBlock

unsigned int ManagedMonitorToolBase::m_lastLumiBlock
protectedinherited

Definition at line 766 of file ManagedMonitorToolBase.h.

◆ m_lastMedStatInterval

int ManagedMonitorToolBase::m_lastMedStatInterval
protectedinherited

Definition at line 768 of file ManagedMonitorToolBase.h.

◆ m_lastRun

unsigned int ManagedMonitorToolBase::m_lastRun
protectedinherited

Definition at line 767 of file ManagedMonitorToolBase.h.

◆ m_lbDurationDataKey

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

Definition at line 795 of file ManagedMonitorToolBase.h.

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

◆ m_lumiDataKey

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

Definition at line 793 of file ManagedMonitorToolBase.h.

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

◆ m_manager

AthenaMonManager* ManagedMonitorToolBase::m_manager
protectedinherited

Definition at line 736 of file ManagedMonitorToolBase.h.

◆ m_managerNameProp

std::string ManagedMonitorToolBase::m_managerNameProp
protectedinherited

Definition at line 738 of file ManagedMonitorToolBase.h.

◆ m_mapname

std::string MissingEtDQA::PhysValMET::m_mapname
private

Definition at line 94 of file PhysValMET.h.

◆ m_MET_Calo

TH1D* MissingEtDQA::PhysValMET::m_MET_Calo = nullptr
private

Definition at line 117 of file PhysValMET.h.

◆ m_MET_Calo_phi

TH1D * MissingEtDQA::PhysValMET::m_MET_Calo_phi = nullptr
private

Definition at line 117 of file PhysValMET.h.

◆ m_MET_Calo_sum

TH1D * MissingEtDQA::PhysValMET::m_MET_Calo_sum = nullptr
private

Definition at line 117 of file PhysValMET.h.

◆ m_MET_Calo_x

TH1D * MissingEtDQA::PhysValMET::m_MET_Calo_x = nullptr
private

Definition at line 117 of file PhysValMET.h.

◆ m_MET_Calo_y

TH1D * MissingEtDQA::PhysValMET::m_MET_Calo_y = nullptr
private

Definition at line 117 of file PhysValMET.h.

◆ m_MET_CorrFinalClus_Reb

std::map<std::string,std::vector<TH2D*> > MissingEtDQA::PhysValMET::m_MET_CorrFinalClus_Reb
private

Definition at line 151 of file PhysValMET.h.

◆ m_MET_CorrFinalClus_Ref

std::map<std::string,std::vector<TH2D*> > MissingEtDQA::PhysValMET::m_MET_CorrFinalClus_Ref
private

Definition at line 135 of file PhysValMET.h.

◆ m_MET_CorrFinalTrk_Reb

std::map<std::string,std::vector<TH2D*> > MissingEtDQA::PhysValMET::m_MET_CorrFinalTrk_Reb
private

Definition at line 150 of file PhysValMET.h.

◆ m_MET_CorrFinalTrk_Ref

std::map<std::string,std::vector<TH2D*> > MissingEtDQA::PhysValMET::m_MET_CorrFinalTrk_Ref
private

Definition at line 134 of file PhysValMET.h.

◆ m_MET_Cumu_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Cumu_Reb
private

Definition at line 146 of file PhysValMET.h.

◆ m_MET_Cumu_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Cumu_Ref
private

Definition at line 130 of file PhysValMET.h.

◆ m_MET_Diff_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Reb
private

Definition at line 141 of file PhysValMET.h.

◆ m_MET_Diff_Reb_phi

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Reb_phi
private

Definition at line 144 of file PhysValMET.h.

◆ m_MET_Diff_Reb_sum

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Reb_sum
private

Definition at line 145 of file PhysValMET.h.

◆ m_MET_Diff_Reb_x

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Reb_x
private

Definition at line 142 of file PhysValMET.h.

◆ m_MET_Diff_Reb_y

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Reb_y
private

Definition at line 143 of file PhysValMET.h.

◆ m_MET_Diff_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Ref
private

Definition at line 125 of file PhysValMET.h.

◆ m_MET_Diff_Ref_phi

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Ref_phi
private

Definition at line 128 of file PhysValMET.h.

◆ m_MET_Diff_Ref_sum

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Ref_sum
private

Definition at line 129 of file PhysValMET.h.

◆ m_MET_Diff_Ref_x

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Ref_x
private

Definition at line 126 of file PhysValMET.h.

◆ m_MET_Diff_Ref_y

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Diff_Ref_y
private

Definition at line 127 of file PhysValMET.h.

◆ m_MET_dPhi_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_dPhi_Reb
private

Definition at line 149 of file PhysValMET.h.

◆ m_MET_dPhi_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_dPhi_Ref
private

Definition at line 133 of file PhysValMET.h.

◆ m_MET_PVTrack_Nominal

TH1D* MissingEtDQA::PhysValMET::m_MET_PVTrack_Nominal = nullptr
private

Definition at line 115 of file PhysValMET.h.

◆ m_MET_PVTrack_Nominal_phi

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Nominal_phi = nullptr
private

Definition at line 115 of file PhysValMET.h.

◆ m_MET_PVTrack_Nominal_sum

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Nominal_sum = nullptr
private

Definition at line 115 of file PhysValMET.h.

◆ m_MET_PVTrack_Nominal_x

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Nominal_x = nullptr
private

Definition at line 115 of file PhysValMET.h.

◆ m_MET_PVTrack_Nominal_y

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Nominal_y = nullptr
private

Definition at line 115 of file PhysValMET.h.

◆ m_MET_PVTrack_Pileup

TH1D* MissingEtDQA::PhysValMET::m_MET_PVTrack_Pileup = nullptr
private

Definition at line 116 of file PhysValMET.h.

◆ m_MET_PVTrack_Pileup_phi

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Pileup_phi = nullptr
private

Definition at line 116 of file PhysValMET.h.

◆ m_MET_PVTrack_Pileup_sum

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Pileup_sum = nullptr
private

Definition at line 116 of file PhysValMET.h.

◆ m_MET_PVTrack_Pileup_x

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Pileup_x = nullptr
private

Definition at line 116 of file PhysValMET.h.

◆ m_MET_PVTrack_Pileup_y

TH1D * MissingEtDQA::PhysValMET::m_MET_PVTrack_Pileup_y = nullptr
private

Definition at line 116 of file PhysValMET.h.

◆ m_MET_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Reb
private

Definition at line 136 of file PhysValMET.h.

◆ m_MET_Reb_phi

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Reb_phi
private

Definition at line 139 of file PhysValMET.h.

◆ m_MET_Reb_sum

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Reb_sum
private

Definition at line 140 of file PhysValMET.h.

◆ m_MET_Reb_x

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Reb_x
private

Definition at line 137 of file PhysValMET.h.

◆ m_MET_Reb_y

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Reb_y
private

Definition at line 138 of file PhysValMET.h.

◆ m_MET_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Ref
private

Definition at line 120 of file PhysValMET.h.

◆ m_MET_Ref_phi

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Ref_phi
private

Definition at line 123 of file PhysValMET.h.

◆ m_MET_Ref_sum

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Ref_sum
private

Definition at line 124 of file PhysValMET.h.

◆ m_MET_Ref_x

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Ref_x
private

Definition at line 121 of file PhysValMET.h.

◆ m_MET_Ref_y

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Ref_y
private

Definition at line 122 of file PhysValMET.h.

◆ m_MET_Resolution_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Resolution_Reb
private

Definition at line 147 of file PhysValMET.h.

◆ m_MET_Resolution_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Resolution_Ref
private

Definition at line 131 of file PhysValMET.h.

◆ m_MET_Significance_Reb

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Significance_Reb
private

Definition at line 148 of file PhysValMET.h.

◆ m_MET_Significance_Ref

std::map<std::string,std::vector<TH1D*> > MissingEtDQA::PhysValMET::m_MET_Significance_Ref
private

Definition at line 132 of file PhysValMET.h.

◆ m_MET_Track

TH1D* MissingEtDQA::PhysValMET::m_MET_Track = nullptr
private

Definition at line 114 of file PhysValMET.h.

◆ m_MET_Track_phi

TH1D * MissingEtDQA::PhysValMET::m_MET_Track_phi = nullptr
private

Definition at line 114 of file PhysValMET.h.

◆ m_MET_Track_sum

TH1D * MissingEtDQA::PhysValMET::m_MET_Track_sum = nullptr
private

Definition at line 114 of file PhysValMET.h.

◆ m_MET_Track_x

TH1D * MissingEtDQA::PhysValMET::m_MET_Track_x = nullptr
private

Definition at line 114 of file PhysValMET.h.

◆ m_MET_Track_y

TH1D * MissingEtDQA::PhysValMET::m_MET_Track_y = nullptr
private

Definition at line 114 of file PhysValMET.h.

◆ m_metadataMap

MDMap_t ManagedMonitorToolBase::m_metadataMap
protectedinherited

Definition at line 734 of file ManagedMonitorToolBase.h.

◆ m_metmaker

ToolHandle<IMETMaker>* MissingEtDQA::PhysValMET::m_metmaker
private

Definition at line 163 of file PhysValMET.h.

◆ m_metmakerPFlow

ToolHandle<IMETMaker> MissingEtDQA::PhysValMET::m_metmakerPFlow {this, "METMakerPFlow", "", "METMaker for EMPFlow jets"}
private

Definition at line 161 of file PhysValMET.h.

161{this, "METMakerPFlow", "", "METMaker for EMPFlow jets"};

◆ m_metmakerTopo

ToolHandle<IMETMaker> MissingEtDQA::PhysValMET::m_metmakerTopo {this, "METMakerTopo", "", "METMaker for EMTopo jets"}
private

Definition at line 160 of file PhysValMET.h.

160{this, "METMakerTopo", "", "METMaker for EMTopo jets"};

◆ m_muonColl

std::string MissingEtDQA::PhysValMET::m_muonColl
private

Definition at line 93 of file PhysValMET.h.

◆ m_muonSelTool

ToolHandle<CP::IMuonSelectionTool> MissingEtDQA::PhysValMET::m_muonSelTool {this, "MuonSelectionTool", "", "Muon selection tool"}
private

Definition at line 155 of file PhysValMET.h.

155{this, "MuonSelectionTool", "", "Muon selection tool"};

◆ m_names

std::map<std::string,std::string> MissingEtDQA::PhysValMET::m_names
private

Definition at line 111 of file PhysValMET.h.

◆ m_nEvents

unsigned int ManagedMonitorToolBase::m_nEvents
protectedinherited

Definition at line 770 of file ManagedMonitorToolBase.h.

◆ m_nEventsIgnoreTrigger

unsigned int ManagedMonitorToolBase::m_nEventsIgnoreTrigger
protectedinherited

Definition at line 771 of file ManagedMonitorToolBase.h.

◆ m_newEventsBlock

bool ManagedMonitorToolBase::m_newEventsBlock
privateinherited

Definition at line 729 of file ManagedMonitorToolBase.h.

◆ m_newHigStatInterval

bool ManagedMonitorToolBase::m_newHigStatInterval
privateinherited

Definition at line 727 of file ManagedMonitorToolBase.h.

◆ m_newLowStat

bool ManagedMonitorToolBase::m_newLowStat
privateinherited

Definition at line 728 of file ManagedMonitorToolBase.h.

◆ m_newLowStatInterval

bool ManagedMonitorToolBase::m_newLowStatInterval
privateinherited

Definition at line 727 of file ManagedMonitorToolBase.h.

◆ m_newLumiBlock

bool ManagedMonitorToolBase::m_newLumiBlock
privateinherited

Definition at line 728 of file ManagedMonitorToolBase.h.

◆ m_newMedStatInterval

bool ManagedMonitorToolBase::m_newMedStatInterval
privateinherited

Definition at line 727 of file ManagedMonitorToolBase.h.

◆ m_newRun

bool ManagedMonitorToolBase::m_newRun
privateinherited

Definition at line 728 of file ManagedMonitorToolBase.h.

◆ m_nLumiBlocks

unsigned int ManagedMonitorToolBase::m_nLumiBlocks
protectedinherited

Definition at line 772 of file ManagedMonitorToolBase.h.

◆ m_path

std::string ManagedMonitorToolBase::m_path
protectedinherited

Definition at line 759 of file ManagedMonitorToolBase.h.

◆ m_photonSelIsEMTool

ToolHandle<IAsgPhotonIsEMSelector> MissingEtDQA::PhysValMET::m_photonSelIsEMTool {this, "PhotonIsEMSelectionTool" , "", "Photon selection tool"}
private

Definition at line 157 of file PhysValMET.h.

157{this, "PhotonIsEMSelectionTool" , "", "Photon selection tool"};

◆ m_preScaleProp

long ManagedMonitorToolBase::m_preScaleProp
protectedinherited

Definition at line 760 of file ManagedMonitorToolBase.h.

◆ m_procNEventsProp

long ManagedMonitorToolBase::m_procNEventsProp
protectedinherited

Definition at line 758 of file ManagedMonitorToolBase.h.

◆ m_streamNameFcn

StreamNameFcn* ManagedMonitorToolBase::m_streamNameFcn
protectedinherited

Definition at line 748 of file ManagedMonitorToolBase.h.

◆ m_supportedIntervalsForRebooking

std::set<Interval_t> ManagedMonitorToolBase::m_supportedIntervalsForRebooking
privateinherited

Definition at line 803 of file ManagedMonitorToolBase.h.

◆ m_tauColl

std::string MissingEtDQA::PhysValMET::m_tauColl
private

Definition at line 92 of file PhysValMET.h.

◆ m_tauSelTool

ToolHandle<TauAnalysisTools::ITauSelectionTool> MissingEtDQA::PhysValMET::m_tauSelTool {this, "TauSelectionTool", "", "Tau selection tool"}
private

Definition at line 162 of file PhysValMET.h.

162{this, "TauSelectionTool", "", "Tau selection tool"};

◆ m_templateEfficiencies

std::map< Interval_t, std::vector< MgmtParams<TEfficiency> > > ManagedMonitorToolBase::m_templateEfficiencies
protectedinherited

Definition at line 604 of file ManagedMonitorToolBase.h.

◆ m_templateGraphs

std::map< Interval_t, std::vector< MgmtParams<TGraph> > > ManagedMonitorToolBase::m_templateGraphs
protectedinherited

Definition at line 596 of file ManagedMonitorToolBase.h.

◆ m_templateHistograms

std::map< Interval_t, std::vector< MgmtParams<TH1> > > ManagedMonitorToolBase::m_templateHistograms
protectedinherited

Definition at line 592 of file ManagedMonitorToolBase.h.

◆ m_templateTrees

std::map< Interval_t, std::vector< MgmtParams<TTree> > > ManagedMonitorToolBase::m_templateTrees
protectedinherited

Definition at line 600 of file ManagedMonitorToolBase.h.

◆ m_terms

std::vector<std::string> MissingEtDQA::PhysValMET::m_terms
private

Definition at line 108 of file PhysValMET.h.

◆ m_THistSvc

ServiceHandle<ITHistSvc> ManagedMonitorToolBase::m_THistSvc
protectedinherited

Definition at line 750 of file ManagedMonitorToolBase.h.

◆ m_trigDecTool

PublicToolHandle<Trig::ITrigDecisionTool> ManagedMonitorToolBase::m_trigDecTool {this, "TrigDecisionTool",""}
protectedinherited

Definition at line 752 of file ManagedMonitorToolBase.h.

752{this, "TrigDecisionTool",""};

◆ m_triggerChainProp

std::string ManagedMonitorToolBase::m_triggerChainProp
protectedinherited

Definition at line 761 of file ManagedMonitorToolBase.h.

◆ m_triggerGroupProp

std::string ManagedMonitorToolBase::m_triggerGroupProp
protectedinherited

Definition at line 762 of file ManagedMonitorToolBase.h.

◆ m_trigLiveFractionDataKey

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

Definition at line 797 of file ManagedMonitorToolBase.h.

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

◆ m_trigTranslator

PublicToolHandle<ITriggerTranslatorTool> ManagedMonitorToolBase::m_trigTranslator {this,"TriggerTranslatorTool",""}
protectedinherited

Definition at line 754 of file ManagedMonitorToolBase.h.

754{this,"TriggerTranslatorTool",""};

◆ m_types

std::vector<std::string> MissingEtDQA::PhysValMET::m_types
private

Definition at line 105 of file PhysValMET.h.

◆ m_useLumi

bool ManagedMonitorToolBase::m_useLumi
privateinherited

Definition at line 801 of file ManagedMonitorToolBase.h.

◆ m_useTrigger

bool ManagedMonitorToolBase::m_useTrigger
protectedinherited

Definition at line 764 of file ManagedMonitorToolBase.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 387 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 386 of file AthCommonDataStore.h.

◆ m_vTrigChainNames

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

Definition at line 608 of file ManagedMonitorToolBase.h.

◆ m_vTrigGroupNames

std::vector<std::string> ManagedMonitorToolBase::m_vTrigGroupNames
protectedinherited

Definition at line 608 of file ManagedMonitorToolBase.h.


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