ATLAS Offline Software
Loading...
Searching...
No Matches
met::METAssociator Class Referenceabstract

#include <METAssociator.h>

Inheritance diagram for met::METAssociator:
Collaboration diagram for met::METAssociator:

Classes

struct  ConstitHolder

Public Member Functions

 METAssociator (const std::string &name)
virtual ~METAssociator ()
virtual StatusCode initialize () override
 Dummy implementation of the initialisation function.
virtual StatusCode execute (xAOD::MissingETContainer *metCont, xAOD::MissingETAssociationMap *metMap, const EventContext &ctx) const override
virtual void print () const
 Print the state of the tool.
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
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

virtual StatusCode executeTool (xAOD::MissingETContainer *metCont, xAOD::MissingETAssociationMap *metMap, const EventContext &ctx) const =0
StatusCode retrieveConstituents (met::METAssociator::ConstitHolder &constits, const EventContext &ctx) const
bool acceptTrack (const xAOD::TrackParticle *trk, const xAOD::Vertex *pv) const
bool isGoodEoverP (const xAOD::TrackParticle *trk) const
virtual StatusCode fillAssocMap (xAOD::MissingETAssociationMap *metMap, const xAOD::IParticleContainer *hardObjs, const EventContext &ctx) const
virtual StatusCode extractPFO (const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &pfolist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta, const EventContext &ctx) const =0
StatusCode GetUEcorr (const met::METAssociator::ConstitHolder &constits, std::vector< TLorentzVector > &v_clus, TLorentzVector &clus, TLorentzVector &HR, const float Drcone, const float MinDistCone, float &UEcorr) const
virtual StatusCode extractFE (const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta, const EventContext &ctx) const =0
virtual StatusCode extractFEHR (const xAOD::IParticle *, std::vector< const xAOD::IParticle * >, std::vector< const xAOD::IParticle * > &, const met::METAssociator::ConstitHolder &, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &, float &) const
virtual StatusCode extractTracks (const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &constlist, const met::METAssociator::ConstitHolder &constits) const =0
virtual StatusCode extractTopoClusters (const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &tclist, const met::METAssociator::ConstitHolder &constits, const EventContext &ctx) const =0
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.

Static Protected Member Functions

static bool greaterPt (const xAOD::IParticle *part1, const xAOD::IParticle *part2)
static bool greaterPtPFO (const xAOD::PFO *part1, const xAOD::PFO *part2)
static bool greaterPtFE (const xAOD::FlowElement *part1, const xAOD::FlowElement *part2)

Protected Attributes

ToolHandle< InDet::IInDetTrackSelectionToolm_trkseltool {this, "TrackSelectorTool", ""}
ToolHandle< xAOD::ITrackIsolationToolm_trkIsolationTool {this, "TrackIsolationTool", ""}
ToolHandle< xAOD::ICaloTopoClusterIsolationToolm_caloIsolationTool {this, "CaloIsolationTool", ""}
Gaudi::Property< std::string > m_neutralFELinksKey {this, "NeutralFELinksKey", "neutralGlobalFELinks"}
Gaudi::Property< std::string > m_chargedFELinksKey {this, "ChargedFELinksKey", "chargedGlobalFELinks"}
Gaudi::Property< std::string > m_neutralPFOLinksKey {this, "NeutralPFOLinksKey", "neutralpfoLinks"}
Gaudi::Property< std::string > m_chargedPFOLinksKey {this, "ChargedPFOLinksKey", "chargedpfoLinks"}
Gaudi::Property< boolm_usePFOLinks {this, "UsePFOLinks", false}
Gaudi::Property< boolm_useFELinks {this, "UseFELinks", false}
SG::ReadHandleKey< xAOD::VertexContainerm_pvcollKey {this,"PrimVxColl","PrimaryVertices","Primary Vertex Collection"}
SG::ReadHandleKey< xAOD::IParticleContainerm_clcollKey {this,"ClusColl","CaloCalTopoClusters","Topo cluster Collection"}
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trkcollKey {this,"TrkColl","InDetTrackParticles","Track particle Collection"}
SG::ReadHandleKey< xAOD::PFOContainerm_pfcollKey {this,"PFlowColl","","PFO Collection"}
SG::ReadHandleKey< xAOD::FlowElementContainerm_fecollKey {this,"FlowElementCollection","","FlowElement Collection (overrides PFO if not empty)"}
SG::ReadHandleKey< xAOD::IParticleContainerm_hybridContKey {this,"HybridKey","","Hybrid Collection"}
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_UEcorrPtDecorKey {this, "UEcorrPtDecorKey", "", "UE correction for each lepton"}
Gaudi::Property< boolm_recoil {this, "HRecoil", false, ""}
Gaudi::Property< boolm_pflow {this, "PFlow", false}
Gaudi::Property< boolm_useTracks {this, "UseTracks", true}
Gaudi::Property< boolm_useRapidity {this, "UseRapidity", false}
Gaudi::Property< boolm_useModifiedClus {this, "UseModifiedClus", false}
Gaudi::Property< boolm_cleanChargedPFO {this, "CleanCPFO", true}
Gaudi::Property< boolm_skipconst {this, "IgnoreJetConst", false}
Gaudi::Property< std::string > m_forcoll {this, "ForwardColl", ""}
Gaudi::Property< doublem_foreta {this, "ForwardDef", 2.5}
Gaudi::Property< doublem_cenTrackPtThr {this, "CentralTrackPtThr", 30e+3}
Gaudi::Property< doublem_forTrackPtThr {this, "ForwardTrackPtThr", 30e+3}

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

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

Private Attributes

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 48 of file METAssociator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ METAssociator() [1/2]

met::METAssociator::METAssociator ( const std::string & name)

Definition at line 53 of file METAssociator.cxx.

53 :
55 {
56 }
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition AsgTool.cxx:58

◆ ~METAssociator()

met::METAssociator::~METAssociator ( )
virtualdefault

◆ METAssociator() [2/2]

met::METAssociator::METAssociator ( )
private

Member Function Documentation

◆ acceptTrack()

bool met::METAssociator::acceptTrack ( const xAOD::TrackParticle * trk,
const xAOD::Vertex * pv ) const
protected

Definition at line 354 of file METAssociator.cxx.

355 {
356
357 if (!vx) return false;//in events with no pv, we will just reject all tracks, and therefore build only the calo MET
358 return static_cast<bool> (m_trkseltool->accept( *trk, vx ));
359 }
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkseltool

◆ 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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

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

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

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

◆ execute()

StatusCode met::METAssociator::execute ( xAOD::MissingETContainer * metCont,
xAOD::MissingETAssociationMap * metMap,
const EventContext & ctx ) const
overridevirtual

Implements IMETAssocToolBase.

Definition at line 124 of file METAssociator.cxx.

125 {
126 ATH_MSG_DEBUG ("In execute: " << name() << "...");
127 if(!metCont) {
128 ATH_MSG_WARNING("Invalid pointer to MissingETContainer supplied! Abort.");
129 return StatusCode::FAILURE;
130 }
131
132 if(!metMap) {
133 ATH_MSG_WARNING("Invalid pointer to MissingETAssociationMap supplied! Abort.");
134 return StatusCode::FAILURE;
135 }
136 if(m_pflow && !m_useTracks ){
137 ATH_MSG_WARNING("Attempting to build PFlow MET without a track collection.");
138 return StatusCode::FAILURE;
139 }
140
141 return this->executeTool(metCont, metMap, ctx);
142 }
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< bool > m_pflow
virtual StatusCode executeTool(xAOD::MissingETContainer *metCont, xAOD::MissingETAssociationMap *metMap, const EventContext &ctx) const =0
Gaudi::Property< bool > m_useTracks

◆ executeTool()

virtual StatusCode met::METAssociator::executeTool ( xAOD::MissingETContainer * metCont,
xAOD::MissingETAssociationMap * metMap,
const EventContext & ctx ) const
protectedpure virtual

◆ extractFE()

virtual StatusCode met::METAssociator::extractFE ( const xAOD::IParticle * obj,
std::vector< const xAOD::IParticle * > & felist,
const met::METAssociator::ConstitHolder & constits,
std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > & momenta,
const EventContext & ctx ) const
protectedpure virtual

◆ extractFEHR()

virtual StatusCode met::METAssociator::extractFEHR ( const xAOD::IParticle * ,
std::vector< const xAOD::IParticle * > ,
std::vector< const xAOD::IParticle * > & ,
const met::METAssociator::ConstitHolder & ,
std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > & ,
float &  ) const
inlineprotectedvirtual

Reimplemented in met::METEgammaAssociator, and met::METMuonAssociator.

Definition at line 149 of file METAssociator.h.

155 {return StatusCode::FAILURE;}

◆ extractPFO()

virtual StatusCode met::METAssociator::extractPFO ( const xAOD::IParticle * obj,
std::vector< const xAOD::IParticle * > & pfolist,
const met::METAssociator::ConstitHolder & constits,
std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > & momenta,
const EventContext & ctx ) const
protectedpure virtual

◆ extractTopoClusters()

virtual StatusCode met::METAssociator::extractTopoClusters ( const xAOD::IParticle * obj,
std::vector< const xAOD::IParticle * > & tclist,
const met::METAssociator::ConstitHolder & constits,
const EventContext & ctx ) const
protectedpure virtual

◆ extractTracks()

virtual StatusCode met::METAssociator::extractTracks ( const xAOD::IParticle * obj,
std::vector< const xAOD::IParticle * > & constlist,
const met::METAssociator::ConstitHolder & constits ) const
protectedpure virtual

◆ 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

◆ fillAssocMap()

StatusCode met::METAssociator::fillAssocMap ( xAOD::MissingETAssociationMap * metMap,
const xAOD::IParticleContainer * hardObjs,
const EventContext & ctx ) const
protectedvirtual

Reimplemented in met::METTruthAssociator.

Definition at line 278 of file METAssociator.cxx.

280 {
281 ConstitHolder constits;
282
283 if (retrieveConstituents(constits, ctx).isFailure()) {
284 ATH_MSG_DEBUG("Unable to retrieve constituent containers");
285 return StatusCode::FAILURE;
286 }
287
288 SG::WriteDecorHandle<xAOD::IParticleContainer, float> dec_UEcorr (m_UEcorrPtDecorKey, ctx);
289 std::vector<const IParticle*> constlist;
290 constlist.reserve(20);
291 std::vector<const IParticle*> hardObjs_tmp;
292 for(const auto *const obj : *hardObjs) {
293 hardObjs_tmp.push_back(obj);
294 }
295 std::sort(hardObjs_tmp.begin(),hardObjs_tmp.end(),greaterPt);
296
297 for(const auto& obj : hardObjs_tmp) {
298 if(obj->pt()<4e3 && obj->type()!=xAOD::Type::Muon){
299 if (m_pflow && !m_fecollKey.key().empty() && m_useTracks && m_recoil) { dec_UEcorr(*obj) = 0.f; }
300 continue;
301 }
302 constlist.clear();
303 ATH_MSG_VERBOSE( "Object type, pt, eta, phi = " << obj->type() << ", " << obj->pt() << ", " << obj->eta() << "," << obj->phi() );
304 if(m_pflow){
305 if(!m_fecollKey.key().empty()){
306 if(!m_useTracks){
307 ATH_MSG_ERROR("Attempting to build FlowElement MET without a track collection.");
308 return StatusCode::FAILURE;
309 }
310 std::map<const IParticle*, MissingETBase::Types::constvec_t> momentumOverride;
311 if(m_recoil){ // HR part:
312 float UEcorr_Pt = 0.; // Underlying event correction for HR
313 ATH_CHECK(extractFEHR(obj,hardObjs_tmp,constlist,constits,momentumOverride, UEcorr_Pt));
314 ATH_MSG_DEBUG("Energy correction is: " << UEcorr_Pt);
315 dec_UEcorr(*obj) = UEcorr_Pt;
316 }
317 else{ // MET part:
318 ATH_CHECK( this->extractFE(obj, constlist, constits, momentumOverride, ctx) );
319 }
320 MissingETComposition::insert(metMap, obj, constlist, momentumOverride);
321 }
322 else{
323 // Old PFO EDM
324 if(!m_useTracks){
325 ATH_MSG_DEBUG("Attempting to build PFlow without a track collection.");
326 return StatusCode::FAILURE;
327 }else{
328 std::map<const IParticle*,MissingETBase::Types::constvec_t> momentumOverride;
329 ATH_CHECK( this->extractPFO(obj,constlist,constits,momentumOverride, ctx) );
330 MissingETComposition::insert(metMap,obj,constlist,momentumOverride);
331 }
332 }
333 } else {
334 std::vector<const IParticle*> tclist;
335 tclist.reserve(20);
336 ATH_CHECK( this->extractTopoClusters(obj,tclist,constits, ctx) );
338 for(const auto& cl : tclist) {
339 // use index-parallelism to identify shallow copied constituents
340 constlist.push_back((*constits.tcCont)[cl->index()]);
341 }
342 } else {
343 constlist = tclist;
344 }
345 if(m_useTracks) ATH_CHECK( this->extractTracks(obj,constlist,constits) );
346 MissingETComposition::insert(metMap,obj,constlist);
347 }
348 }
349 return StatusCode::SUCCESS;
350 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
StatusCode retrieveConstituents(met::METAssociator::ConstitHolder &constits, const EventContext &ctx) const
virtual StatusCode extractPFO(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &pfolist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta, const EventContext &ctx) const =0
virtual StatusCode extractFEHR(const xAOD::IParticle *, std::vector< const xAOD::IParticle * >, std::vector< const xAOD::IParticle * > &, const met::METAssociator::ConstitHolder &, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &, float &) const
Gaudi::Property< bool > m_useModifiedClus
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_UEcorrPtDecorKey
static bool greaterPt(const xAOD::IParticle *part1, const xAOD::IParticle *part2)
virtual StatusCode extractTracks(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &constlist, const met::METAssociator::ConstitHolder &constits) const =0
virtual StatusCode extractTopoClusters(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &tclist, const met::METAssociator::ConstitHolder &constits, const EventContext &ctx) const =0
Gaudi::Property< bool > m_recoil
virtual StatusCode extractFE(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta, const EventContext &ctx) const =0
SG::ReadHandleKey< xAOD::FlowElementContainer > m_fecollKey
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
@ Muon
The object is a muon.
Definition ObjectType.h:48
static bool insert(MissingETComponentMap *pMap, const MissingET *pMET, const IParticle *pPart, MissingETBase::Types::weight_t weight=MissingETBase::Types::weight_t())
Insert contributing signal or physics object by pointer, with optional kinematic weight object.

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::TEvent, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::TEvent, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ GetUEcorr()

StatusCode met::METAssociator::GetUEcorr ( const met::METAssociator::ConstitHolder & constits,
std::vector< TLorentzVector > & v_clus,
TLorentzVector & clus,
TLorentzVector & HR,
const float Drcone,
const float MinDistCone,
float & UEcorr ) const
protected

Definition at line 424 of file METAssociator.cxx.

431 {
432 // 1. Get random phi
433 unsigned int seed = floor( clus.Pt() * Gaudi::Units::GeV );
434 TRandom3 hole;
435 hole.SetSeed(seed);
436
437 bool isNextToPart(true);
438 bool isNextToHR(true);
439 double phiRnd(0.);
440
441 int numOfRndTrials = 0; // Counter for trials to find random cone without overlaps
442 const int maxNumOfRndTrials = 100; // Max. number of trials to find random cone without overlaps
443
444 while(isNextToPart || isNextToHR ){
445 isNextToPart = false;
446 isNextToHR = true;
447
448 phiRnd = hole.Uniform( -std::numbers::pi, std::numbers::pi);
449 double dR = P4Helpers::deltaR( HR.Eta(), HR.Phi(), clus.Eta(), phiRnd );
450 if(dR > MinDistCone){
451 isNextToHR = false;
452 }
453
454 for(const auto& clus_j : v_clus) { // loop over leptons
455 dR = P4Helpers::deltaR( clus.Eta(), phiRnd, clus_j.Eta(), clus_j.Phi() );
456 if(dR < MinDistCone){
457 isNextToPart = true;
458 break;
459 }
460 } // swclus_j
461
462 numOfRndTrials++;
463 if(numOfRndTrials == maxNumOfRndTrials){ // check number of trials
464 UEcorr = 0.;
465 return StatusCode::SUCCESS;
466 }
467 } // while isNextToPart, isNextToHR
468
469 ATH_MSG_DEBUG("Found rnd phi: " << phiRnd);
470
471
472 // 2. Calculete UE correction
473 TLorentzVector tv_UEcorr; // TLV of UE correction (initialized with 0,0,0,0 automatically)
474 std::pair <double, double> eta_rndphi = std::make_pair(clus.Eta(), phiRnd); // pair of current cluser eta and random phi
475
476
477 // Calculate delta phi -> always the same angle so its sufficient to calculate it only once
478 float dphi_angle=P4Helpers::deltaPhi(clus.Phi(),eta_rndphi.second);
479
480 for(const auto fe_itr : *constits.feCont){ // loop over PFOs
481 if(fe_itr->pt() < 0 || fe_itr->e() < 0){ //sanity check
482 continue;
483 }
484
485 //remove charged FE that are not matched to the PV
486 const static SG::ConstAccessor<char> PVMatchedAcc("matchedToPV");
487 if(fe_itr->isCharged() && !PVMatchedAcc(*fe_itr)){
488 continue;
489 }
490
491 double dR = P4Helpers::deltaR( fe_itr->eta(), fe_itr->phi(), eta_rndphi.first, eta_rndphi.second );
492 if( dR < Drcone ){
493 // Rotate on dphi_angle
494 TLorentzVector tv_fe = fe_itr->p4();
495 tv_fe.RotateZ(dphi_angle);
496 tv_UEcorr += tv_fe; // summing PFOs of UE for correction
497 } // cone requirement
498 } // loop over PFOs
499
500 UEcorr = tv_UEcorr.Pt(); // Pt of UE correction
501
502 return StatusCode::SUCCESS;
503 }
static const SG::ConstAccessor< char > PVMatchedAcc("matchedToPV")
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
const xAOD::FlowElementContainer * feCont

◆ greaterPt()

bool met::METAssociator::greaterPt ( const xAOD::IParticle * part1,
const xAOD::IParticle * part2 )
inlinestaticprotected

Definition at line 163 of file METAssociator.h.

163 {
164 return part1->pt()>part2->pt();
165 }
virtual double pt() const =0
The transverse momentum ( ) of the particle.

◆ greaterPtFE()

bool met::METAssociator::greaterPtFE ( const xAOD::FlowElement * part1,
const xAOD::FlowElement * part2 )
inlinestaticprotected

Definition at line 172 of file METAssociator.h.

172 {
173 if (!(part1->isCharged()) && part2->isCharged()) return false;
174 if (part1->isCharged() && !(part2->isCharged())) return true;
175 return part1->pt() > part2->pt();
176 }
virtual double pt() const override

◆ greaterPtPFO()

bool met::METAssociator::greaterPtPFO ( const xAOD::PFO * part1,
const xAOD::PFO * part2 )
inlinestaticprotected

Definition at line 166 of file METAssociator.h.

166 {
167 if (part1->charge()==0 && part2->charge()!=0) return false;
168 if (part1->charge()!=0 && part2->charge()==0) return true;
169 if (part1->charge()==0 && part2->charge()==0) return part1->ptEM()>part2->ptEM();
170 return part1->pt()>part2->pt();
171 }
virtual double ptEM() const
get EM scale pt
Definition PFO_v1.cxx:204
float charge() const
get charge of PFO
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition PFO_v1.cxx:52

◆ initialize()

StatusCode met::METAssociator::initialize ( void )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Reimplemented in met::METEgammaAssociator, met::METElectronAssociator, met::METJetAssocTool, met::METMuonAssociator, met::METPhotonAssociator, met::METSoftAssociator, met::METTauAssociator, and met::METTruthAssociator.

Definition at line 65 of file METAssociator.cxx.

66 {
67 ATH_MSG_DEBUG ("Initializing " << name() << "...");
68
69 ATH_CHECK( m_trkseltool.retrieve() );
70 ATH_CHECK(m_trkIsolationTool.retrieve());
72
73 if(m_clcollKey.key() == "CaloCalTopoClusters") {
75 ATH_MSG_ERROR("Configured to use modified topocluster collection but \"CaloCalTopoClusters\" collection specified!");
76 return StatusCode::FAILURE;
77 } else {
78 ATH_MSG_INFO("Configured to use standard topocluster collection.");
79 }
80 } else {
82 ATH_MSG_INFO("Configured to use modified topocluster collection \"" << m_clcollKey.key() << "\".");
83 } else {
84 ATH_MSG_ERROR("Configured to use topocluster collection \"" << m_clcollKey.key() << "\", but modified clusters flag not set!");
85 return StatusCode::FAILURE;
86 }
87 }
88 //initialise read handle keys
89 ATH_CHECK( m_pvcollKey.initialize(m_useTracks));
91
92 ATH_CHECK(m_fecollKey.initialize(m_pflow && !m_fecollKey.key().empty()));
93 ATH_CHECK( m_pfcollKey.initialize(m_pflow && m_fecollKey.key().empty()));
94 if(m_pflow){
95 if(!m_fecollKey.key().empty()){
96 ATH_MSG_INFO("Configured to use FlowElement collection \"" << m_fecollKey.key() << "\".");
97 }
98 else{
99 ATH_MSG_INFO("Configured to use PFlow collection \"" << m_pfcollKey.key() << "\".");
100 if(m_pfcollKey.key() == "JetETMissParticleFlowObjects") {
101 ATH_MSG_ERROR("Configured to use standard pflow collection \"" << m_pfcollKey.key() << "\".");
102 ATH_MSG_ERROR("This is no longer supported -- please use the CHSParticleFlowObjects collection, which has the four-vector corrections built in.");
103 return StatusCode::FAILURE;
104 }
105 }
106 }
107
108 ATH_CHECK( m_clcollKey.initialize(!m_skipconst || m_forcoll.value().empty()));
109
110 std::string hybridname = "Etmiss";
111 hybridname += m_clcollKey.key();
112 hybridname += m_foreta.value();
113 hybridname += m_forcoll.value();
114 ATH_CHECK( m_hybridContKey.assign(hybridname)); // FIXME Keys should be properly assigned during the configuration
115 ATH_CHECK( m_hybridContKey.initialize(m_skipconst && !m_forcoll.value().empty()));
116
118 if (!m_recoil && !m_UEcorrPtDecorKey.key().empty()) {
120 }
121 return StatusCode::SUCCESS;
122 }
#define ATH_MSG_INFO(x)
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)
SG::ReadHandleKey< xAOD::PFOContainer > m_pfcollKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trkcollKey
SG::ReadHandleKey< xAOD::VertexContainer > m_pvcollKey
Gaudi::Property< std::string > m_forcoll
ToolHandle< xAOD::ICaloTopoClusterIsolationTool > m_caloIsolationTool
Gaudi::Property< bool > m_skipconst
Gaudi::Property< double > m_foreta
SG::ReadHandleKey< xAOD::IParticleContainer > m_hybridContKey
ToolHandle< xAOD::ITrackIsolationTool > m_trkIsolationTool
SG::ReadHandleKey< xAOD::IParticleContainer > m_clcollKey

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

◆ isGoodEoverP()

bool met::METAssociator::isGoodEoverP ( const xAOD::TrackParticle * trk) const
protected

Definition at line 362 of file METAssociator.cxx.

363 {
364
365 if( (fabs(trk->eta())<1.5 && trk->pt()>m_cenTrackPtThr) ||
366 (fabs(trk->eta())>=1.5 && trk->pt()>m_forTrackPtThr) ) {
367
368 // Get relative error on qoverp
369 float Rerr = Amg::error(trk->definingParametersCovMatrix(),4)/fabs(trk->qOverP());
370 ATH_MSG_VERBOSE( "Track momentum error (%): " << Rerr*100 );
371
372 // first compute track and calo isolation variables
373 float ptcone20 = 0., isolfrac = 0., etcone10 = 0., EoverP = 0.;
374 // ptcone
375 TrackIsolation trkIsoResult;
376 std::vector<Iso::IsolationType> trkIsoCones;
377 trkIsoCones.push_back(xAOD::Iso::IsolationType::ptcone20);
378 xAOD::TrackCorrection trkIsoCorr;
380 m_trkIsolationTool->trackIsolation(trkIsoResult,
381 *trk,
382 trkIsoCones,
383 trkIsoCorr);
384 ptcone20 = !trkIsoResult.ptcones.empty() ? trkIsoResult.ptcones[0] : 0;
385 isolfrac = ptcone20/trk->pt();
386 // etcone
387 CaloIsolation caloIsoResult;
388 std::vector<Iso::IsolationType> caloIsoCones;
389 // We can't actually configure the tool to give etcone10, so instead we have to compute etcone20,
390 // applying the core cone correction.
391 // Then, we retrieve the correction value, which is etcone10, rather than the isolation value
392 caloIsoCones.push_back(xAOD::Iso::IsolationType::etcone20);
393 xAOD::CaloCorrection caloIsoCorr_coreCone;
394 caloIsoCorr_coreCone.calobitset.set(xAOD::Iso::IsolationCaloCorrection::coreCone); // this is etcone10
395 m_caloIsolationTool->caloTopoClusterIsolation(caloIsoResult,
396 *trk,
397 caloIsoCones,
398 caloIsoCorr_coreCone);
399 if(!caloIsoResult.etcones.empty()) {
400 // retrieve the correction value for the core cone
402 } else {
403 ATH_MSG_WARNING("isGoodEoverP: Failed to retrieve the isolation core correction (etcone10)! Setting etcone10=0");
404 etcone10 = 0.;
405 }
406 EoverP = etcone10/trk->pt();
408 ATH_MSG_VERBOSE( "Track isolation fraction: " << isolfrac );
409 ATH_MSG_VERBOSE( "Track E/P = " << EoverP );
410
411 if(isolfrac<0.1) {
412 // isolated track cuts
413 if(Rerr>0.4) return false;
414 else if (EoverP<0.65 && ((EoverP>0.1 && Rerr>0.05) || Rerr>0.1)) return false;
415 } else {
416 // non-isolated track cuts
417 float trkptsum = ptcone20+trk->pt();
418 if(etcone10/trkptsum<0.6 && trk->pt()/trkptsum>0.6) return false;
419 }
420 }
421 return true;
422 }
Gaudi::Property< double > m_forTrackPtThr
Gaudi::Property< double > m_cenTrackPtThr
const ParametersCovMatrix_t definingParametersCovMatrix() const
Returns the 5x5 symmetric matrix containing the defining parameters covariance matrix.
float qOverP() const
Returns the parameter.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
@ TrackIsolation
tracker isolation (ptcone30)
@ etcone20
Calorimeter isolation.
@ ptcone20
Track isolation.
setRcore setEtHad setFside pt
Iso::IsolationCaloCorrectionBitset calobitset
Iso::IsolationTrackCorrectionBitset trackbitset

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

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

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

◆ print()

◆ 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 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ retrieveConstituents()

StatusCode met::METAssociator::retrieveConstituents ( met::METAssociator::ConstitHolder & constits,
const EventContext & ctx ) const
protected

Definition at line 144 of file METAssociator.cxx.

145 {
146 ATH_MSG_DEBUG ("In execute: " << name() << "...");
147 if (!m_skipconst || m_forcoll.value().empty()) { // FIXME m_clcollKey.value().empty() ???
148
149 SG::ReadHandle<IParticleContainer> topoclusterCont(m_clcollKey, ctx);
150 if (!topoclusterCont.isValid()) {
151 ATH_MSG_WARNING("Unable to retrieve topocluster container " << m_clcollKey.key() << " for overlap removal");
152 return StatusCode::FAILURE;
153 }
154 constits.tcCont=topoclusterCont.cptr();
155 ATH_MSG_DEBUG("Successfully retrieved topocluster collection");
156 } else {
157 std::string hybridname = "Etmiss";
158 hybridname += m_clcollKey.key();
159 hybridname += m_foreta.value();
160 hybridname += m_forcoll.value();
161
162 SG::ReadHandle<IParticleContainer> hybridCont(m_hybridContKey, ctx);
163 if( hybridCont.isValid()) {
164 constits.tcCont=hybridCont.cptr();
165 } else {
166 ATH_MSG_WARNING("Trying to do something currently unsupported- lets abort");
167 return StatusCode::FAILURE;
168 // Trying to do this using write handles (need to get some input here)
169 /*std::unique_ptr<ConstDataVector<IParticleContainer>> hybridCont = std::make_unique<ConstDataVector<IParticleContainer>>();
170 SG::WriteHandle<ConstDataVector<IParticleContainer>> hybridContHandle(hybridname, ctx);
171
172 StatusCode sc = hybridContHandle.record(std::make_unique<ConstDataVector<IParticleContainer>>(*hybridCont));
173
174 if (sc.isFailure()) {
175 ATH_MSG_WARNING("Unable to record container");
176 return StatusCode::SUCCESS;
177
178 }*/
179
180 /*SG::ReadHandle<IParticleContainer> centCont(m_clcoll, ctx);
181 if (!centCont.isValid()) {
182 ATH_MSG_WARNING("Unable to retrieve central container " << m_clcoll << " for overlap removal");
183 return StatusCode::FAILURE;
184 }
185
186 SG::ReadHandle<IParticleContainer> forCont(m_forcoll, ctx);
187 if (!forCont.isValid()) {
188 ATH_MSG_WARNING("Unable to retrieve forward container " << m_forcoll << " for overlap removal");
189 return StatusCode::FAILURE;
190 }
191 ConstDataVector<IParticleContainer> *hybridCont = new ConstDataVector<IParticleContainer>(SG::VIEW_ELEMENTS);
192
193 const IParticleContainer* centCont=0;
194 if( evtStore()->retrieve(centCont, m_clcoll).isFailure() ) {
195 ATH_MSG_WARNING("Unable to retrieve central container " << m_clcoll << " for overlap removal");
196 return StatusCode::FAILURE;
197 }
198
199 const IParticleContainer* forCont=0;
200 if( evtStore()->retrieve(forCont, m_forcoll).isFailure() ) {
201 ATH_MSG_WARNING("Unable to retrieve forward container " << m_forcoll << " for overlap removal");
202 return StatusCode::FAILURE;
203 }
204
205 for(const auto clus : *centCont) if (fabs(clus->eta())<m_foreta) hybridCont->push_back(clus);
206 for(const auto clus : *forCont) if (fabs(clus->eta())>=m_foreta) hybridCont->push_back(clus);
207 ATH_CHECK( evtStore()->record(hybridCont,hybridname));
208 constits.tcCont = hybridCont->asDataVector();
209 */
210 }
211 }
212
213 if( !m_useTracks){
214 //if you want to skip tracks, set the track collection empty manually
215 ATH_MSG_DEBUG("Skipping tracks");
216 }else{
217 SG::ReadHandle<VertexContainer> vxCont(m_pvcollKey, ctx);
218 if (!vxCont.isValid()) {
219 ATH_MSG_WARNING("Unable to retrieve primary vertex container " << m_pvcollKey.key());
220 //this is actually really bad. If it's empty that's okay
221 return StatusCode::FAILURE;
222 }
223
224 ATH_MSG_DEBUG("Successfully retrieved primary vertex container");
225 ATH_MSG_DEBUG("Container holds " << vxCont->size() << " vertices");
226
227 for(const auto *const vx : *vxCont) {
228 ATH_MSG_VERBOSE( "Testing vertex " << vx->index() );
229 if(vx->vertexType()==VxType::PriVtx)
230 {constits.pv = vx; break;}
231 }
232 if(!constits.pv) {
233 ATH_MSG_DEBUG("Failed to find primary vertex! Reject all tracks.");
234 } else {
235 ATH_MSG_VERBOSE("Primary vertex has z = " << constits.pv->z());
236 }
237
238 constits.trkCont=nullptr;
239 ATH_MSG_DEBUG("Retrieving Track collection " << m_trkcollKey.key());
240 SG::ReadHandle<TrackParticleContainer> trCont(m_trkcollKey, ctx);
241 if (!trCont.isValid()) {
242 ATH_MSG_WARNING("Unable to retrieve track particle container");
243 return StatusCode::FAILURE;
244 }
245 constits.trkCont=trCont.cptr();
246
247 if(m_pflow){
248 if(!m_fecollKey.key().empty()){
249 ATH_MSG_DEBUG("Retrieving FlowElement collection " << m_fecollKey.key());
250 constits.feCont = nullptr;
251 SG::ReadHandle<xAOD::FlowElementContainer> feCont(m_fecollKey, ctx);
252 if (!feCont.isValid()) {
253 ATH_MSG_ERROR("Unable to retrieve FlowElement container "<< m_fecollKey.key());
254 return StatusCode::FAILURE;
255 }
256 constits.feCont=feCont.cptr();
257 }
258 else{
259 ATH_MSG_DEBUG("Retrieving PFlow collection " << m_pfcollKey.key());
260 constits.pfoCont = nullptr;
261 SG::ReadHandle<PFOContainer> pfCont(m_pfcollKey, ctx);
262 if (!pfCont.isValid()) {
263 ATH_MSG_WARNING("Unable to PFlow object container");
264 return StatusCode::FAILURE;
265 }
266 constits.pfoCont=pfCont.cptr();
267 }
268 }//pflow
269 }//retrieve track/pfo containers
270
271 return StatusCode::SUCCESS;
272 }
float z() const
Returns the z position.
@ PriVtx
Primary vertex.
const xAOD::IParticleContainer * tcCont
const xAOD::PFOContainer * pfoCont
const xAOD::TrackParticleContainer * trkCont

◆ 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 >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_caloIsolationTool

ToolHandle<xAOD::ICaloTopoClusterIsolationTool> met::METAssociator::m_caloIsolationTool {this, "CaloIsolationTool", ""}
protected

Definition at line 83 of file METAssociator.h.

83{this, "CaloIsolationTool", ""};

◆ m_cenTrackPtThr

Gaudi::Property<double> met::METAssociator::m_cenTrackPtThr {this, "CentralTrackPtThr", 30e+3}
protected

Definition at line 114 of file METAssociator.h.

114{this, "CentralTrackPtThr", 30e+3};

◆ m_chargedFELinksKey

Gaudi::Property<std::string> met::METAssociator::m_chargedFELinksKey {this, "ChargedFELinksKey", "chargedGlobalFELinks"}
protected

Definition at line 86 of file METAssociator.h.

86{this, "ChargedFELinksKey", "chargedGlobalFELinks"};

◆ m_chargedPFOLinksKey

Gaudi::Property<std::string> met::METAssociator::m_chargedPFOLinksKey {this, "ChargedPFOLinksKey", "chargedpfoLinks"}
protected

Definition at line 88 of file METAssociator.h.

88{this, "ChargedPFOLinksKey", "chargedpfoLinks"};

◆ m_clcollKey

SG::ReadHandleKey<xAOD::IParticleContainer> met::METAssociator::m_clcollKey {this,"ClusColl","CaloCalTopoClusters","Topo cluster Collection"}
protected

Definition at line 93 of file METAssociator.h.

93{this,"ClusColl","CaloCalTopoClusters","Topo cluster Collection"};

◆ m_cleanChargedPFO

Gaudi::Property<bool> met::METAssociator::m_cleanChargedPFO {this, "CleanCPFO", true}
protected

Definition at line 108 of file METAssociator.h.

108{this, "CleanCPFO", true};

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fecollKey

SG::ReadHandleKey<xAOD::FlowElementContainer> met::METAssociator::m_fecollKey {this,"FlowElementCollection","","FlowElement Collection (overrides PFO if not empty)"}
protected

Definition at line 96 of file METAssociator.h.

96{this,"FlowElementCollection","","FlowElement Collection (overrides PFO if not empty)"};

◆ m_forcoll

Gaudi::Property<std::string> met::METAssociator::m_forcoll {this, "ForwardColl", ""}
protected

Definition at line 111 of file METAssociator.h.

111{this, "ForwardColl", ""};

◆ m_foreta

Gaudi::Property<double> met::METAssociator::m_foreta {this, "ForwardDef", 2.5}
protected

Definition at line 112 of file METAssociator.h.

112{this, "ForwardDef", 2.5};

◆ m_forTrackPtThr

Gaudi::Property<double> met::METAssociator::m_forTrackPtThr {this, "ForwardTrackPtThr", 30e+3}
protected

Definition at line 115 of file METAssociator.h.

115{this, "ForwardTrackPtThr", 30e+3};

◆ m_hybridContKey

SG::ReadHandleKey<xAOD::IParticleContainer> met::METAssociator::m_hybridContKey {this,"HybridKey","","Hybrid Collection"}
protected

Definition at line 97 of file METAssociator.h.

97{this,"HybridKey","","Hybrid Collection"};

◆ m_neutralFELinksKey

Gaudi::Property<std::string> met::METAssociator::m_neutralFELinksKey {this, "NeutralFELinksKey", "neutralGlobalFELinks"}
protected

Definition at line 85 of file METAssociator.h.

85{this, "NeutralFELinksKey", "neutralGlobalFELinks"};

◆ m_neutralPFOLinksKey

Gaudi::Property<std::string> met::METAssociator::m_neutralPFOLinksKey {this, "NeutralPFOLinksKey", "neutralpfoLinks"}
protected

Definition at line 87 of file METAssociator.h.

87{this, "NeutralPFOLinksKey", "neutralpfoLinks"};

◆ m_pfcollKey

SG::ReadHandleKey<xAOD::PFOContainer> met::METAssociator::m_pfcollKey {this,"PFlowColl","","PFO Collection"}
protected

Definition at line 95 of file METAssociator.h.

95{this,"PFlowColl","","PFO Collection"};

◆ m_pflow

Gaudi::Property<bool> met::METAssociator::m_pflow {this, "PFlow", false}
protected

Definition at line 104 of file METAssociator.h.

104{this, "PFlow", false};

◆ m_pvcollKey

SG::ReadHandleKey<xAOD::VertexContainer> met::METAssociator::m_pvcollKey {this,"PrimVxColl","PrimaryVertices","Primary Vertex Collection"}
protected

Definition at line 92 of file METAssociator.h.

92{this,"PrimVxColl","PrimaryVertices","Primary Vertex Collection"};

◆ m_recoil

Gaudi::Property<bool> met::METAssociator::m_recoil {this, "HRecoil", false, ""}
protected

Definition at line 102 of file METAssociator.h.

102{this, "HRecoil", false, ""};

◆ m_skipconst

Gaudi::Property<bool> met::METAssociator::m_skipconst {this, "IgnoreJetConst", false}
protected

Definition at line 110 of file METAssociator.h.

110{this, "IgnoreJetConst", false};

◆ m_trkcollKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> met::METAssociator::m_trkcollKey {this,"TrkColl","InDetTrackParticles","Track particle Collection"}
protected

Definition at line 94 of file METAssociator.h.

94{this,"TrkColl","InDetTrackParticles","Track particle Collection"};

◆ m_trkIsolationTool

ToolHandle<xAOD::ITrackIsolationTool> met::METAssociator::m_trkIsolationTool {this, "TrackIsolationTool", ""}
protected

Definition at line 82 of file METAssociator.h.

82{this, "TrackIsolationTool", ""};

◆ m_trkseltool

ToolHandle<InDet::IInDetTrackSelectionTool> met::METAssociator::m_trkseltool {this, "TrackSelectorTool", ""}
protected

Definition at line 81 of file METAssociator.h.

81{this, "TrackSelectorTool", ""};

◆ m_UEcorrPtDecorKey

SG::WriteDecorHandleKey<xAOD::IParticleContainer> met::METAssociator::m_UEcorrPtDecorKey {this, "UEcorrPtDecorKey", "", "UE correction for each lepton"}
protected

Definition at line 99 of file METAssociator.h.

99{this, "UEcorrPtDecorKey", "", "UE correction for each lepton"};

◆ m_useFELinks

Gaudi::Property<bool> met::METAssociator::m_useFELinks {this, "UseFELinks", false}
protected

Definition at line 90 of file METAssociator.h.

90{this, "UseFELinks", false};

◆ m_useModifiedClus

Gaudi::Property<bool> met::METAssociator::m_useModifiedClus {this, "UseModifiedClus", false}
protected

Definition at line 107 of file METAssociator.h.

107{this, "UseModifiedClus", false};

◆ m_usePFOLinks

Gaudi::Property<bool> met::METAssociator::m_usePFOLinks {this, "UsePFOLinks", false}
protected

Definition at line 89 of file METAssociator.h.

89{this, "UsePFOLinks", false};

◆ m_useRapidity

Gaudi::Property<bool> met::METAssociator::m_useRapidity {this, "UseRapidity", false}
protected

Definition at line 106 of file METAssociator.h.

106{this, "UseRapidity", false};

◆ m_useTracks

Gaudi::Property<bool> met::METAssociator::m_useTracks {this, "UseTracks", true}
protected

Definition at line 105 of file METAssociator.h.

105{this, "UseTracks", true};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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