ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
met::ColumnarMETMaker Class Reference

#include <ColumnarMETMaker.h>

Inheritance diagram for met::ColumnarMETMaker:
Collaboration diagram for met::ColumnarMETMaker:

Public Member Functions

 ColumnarMETMaker (const std::string &name)
 Constructor with parameters: More...
 
virtual ~ColumnarMETMaker ()
 Destructor: More...
 
virtual StatusCode initialize () override final
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode rebuildMET (const std::string &metKey, xAOD::Type::ObjectType metType, xAOD::MissingETContainer *metCont, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale) const override final
 
StatusCode rebuildMET (const std::string &metKey, xAOD::Type::ObjectType metType, columnar::MutableMetRange metCont, columnar::ParticleRange collection, columnar::MetAssociationHelper<> helper, MissingETBase::UsageHandler::Policy objScale) const
 
virtual StatusCode rebuildMET (xAOD::MissingET *met, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale) const override final
 
StatusCode rebuildMET (columnar::MutableMetId met, columnar::ParticleRange collection, columnar::MetAssociationHelper<> helper, MissingETBase::UsageHandler::Policy objScale) const
 
virtual StatusCode rebuildMET (xAOD::MissingET *met, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy p, bool removeOverlap, MissingETBase::UsageHandler::Policy objScale) const override final
 
StatusCode rebuildMET (columnar::MutableMetId met, columnar::ParticleRange collection, columnar::MetAssociationHelper<> helper, MissingETBase::UsageHandler::Policy p, bool removeOverlap, MissingETBase::UsageHandler::Policy objScale) const
 
virtual StatusCode rebuildJetMET (const std::string &metJetKey, const std::string &softClusKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
 
StatusCode rebuildJetMET (const std::string &metJetKey, const std::string &softClusKey, const std::string &softTrkKey, columnar::MutableMetRange metCont, columnar::JetRange jets, columnar::Met1Range metCoreCont, columnar::MetAssociationHelper<> helper, bool doJetJVT) const
 
virtual StatusCode rebuildJetMET (const std::string &metJetKey, const std::string &metSoftKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
 
StatusCode rebuildJetMET (const std::string &metJetKey, const std::string &metSoftKey, columnar::MutableMetRange metCont, columnar::JetRange jets, columnar::Met1Range metCoreCont, columnar::MetAssociationHelper<> helper, bool doJetJVT) const
 
virtual StatusCode rebuildJetMET (xAOD::MissingET *metJet, const xAOD::JetContainer *jets, xAOD::MissingETAssociationHelper &helper, xAOD::MissingET *metSoftClus, const xAOD::MissingET *coreSoftClus, xAOD::MissingET *metSoftTrk, const xAOD::MissingET *coreSoftTrk, bool doJetJVT, bool tracksForHardJets=false, std::vector< const xAOD::IParticle * > *softConst=0) const override final
 
StatusCode rebuildJetMET (columnar::MutableMetId metJet, columnar::MutableMetRange metCont, columnar::JetRange jets, columnar::MetAssociationHelper<> helper, columnar::OptMutableMetId metSoftClus, columnar::OptMet1Id coreSoftClus, columnar::OptMutableMetId metSoftTrk, columnar::OptMet1Id coreSoftTrk, bool doJetJVT, bool tracksForHardJets=false, std::vector< const xAOD::IParticle * > *softConst=0) const
 
virtual StatusCode rebuildTrackMET (const std::string &metJetKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
 
StatusCode rebuildTrackMET (const std::string &metJetKey, const std::string &softTrkKey, columnar::MutableMetRange metCont, columnar::JetRange jets, columnar::Met1Range metCoreCont, columnar::MetAssociationHelper<> helper, bool doJetJVT) const
 
virtual StatusCode rebuildTrackMET (xAOD::MissingET *metJet, const xAOD::JetContainer *jets, xAOD::MissingETAssociationHelper &helper, xAOD::MissingET *metSoftTrk, const xAOD::MissingET *coreSoftTrk, bool doJetJVT) const override final
 
StatusCode rebuildTrackMET (columnar::MutableMetId metJet, columnar::MutableMetRange metCont, columnar::JetRange jets, columnar::MetAssociationHelper<> helper, columnar::MutableMetId metSoftTrk, columnar::Met1Id coreSoftTrk, bool doJetJVT) const
 
virtual StatusCode markInvisible (const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont) const override final
 
StatusCode markInvisible (columnar::ParticleRange collection, columnar::MetAssociationHelper<> helper, columnar::MutableMetRange metCont) const
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool acceptTrack (const xAOD::TrackParticle *trk, const xAOD::Vertex *vx) const
 
const xAOD::VertexgetPV () const
 
 ColumnarMETMaker ()
 Default constructor: More...
 
void callEvents (columnar::EventContextRange events) const override
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadHandleKey< xAOD::VertexContainerm_PVkey
 
float m_missObjWarningPtThreshold
 
bool m_jetCorrectPhi {}
 
double m_jetMinEfrac {}
 
double m_jetMinWeightedPt {}
 
std::string m_jetConstitScaleMom
 
std::string m_jetJvtMomentName
 
std::string m_jetRejectionDec
 
double m_CenJetPtCut {}
 
double m_FwdJetPtCut {}
 
double m_JvtCut {}
 
double m_JvtPtMax {}
 
double m_JetEtaMax {}
 
double m_JetEtaForw {}
 
std::string m_jetSelection
 
std::string m_JvtWP
 
double m_customCenJetPtCut {}
 
double m_customFwdJetPtCut {}
 
double m_customJvtPtMax {}
 
std::string m_customJvtWP
 
bool m_doPFlow {}
 
bool m_doSoftTruth {}
 
bool m_doConstJet {}
 
bool m_useGhostMuons {}
 
bool m_doRemoveMuonJets {}
 
bool m_doRemoveElecTrks {}
 
bool m_doRemoveElecTrksEM {}
 
bool m_doSetMuonJetEMScale {}
 
bool m_skipSystematicJetSelection {}
 
bool m_muEloss {}
 
bool m_orCaloTaggedMuon {}
 
bool m_greedyPhotons {}
 
bool m_veryGreedyPhotons {}
 
int m_jetTrkNMuOlap {}
 
double m_jetWidthMuOlap {}
 
double m_jetPsEMuOlap {}
 
double m_jetEmfMuOlap {}
 
double m_jetTrkPtMuPt {}
 
double m_muIDPTJetPtRatioMuOlap {}
 
ToolHandle< InDet::IInDetTrackSelectionToolm_trkseltool
 
ToolHandle< IAsgSelectionToolm_JvtTool
 
columnar::MutableMetAccessor< columnar::ObjectColumnm_outputMetHandle {*this, "OutputMET"}
 
columnar::Met1Accessor< columnar::ObjectColumnm_inputMetHandle {*this, "METCore"}
 
columnar::ColumnAccessor< columnar::ContainerId::metAssociation, columnar::ObjectColumnm_metAssocHandle {*this, "MetAssoc"}
 
columnar::ParticleAccessor< columnar::ObjectColumnm_particlesHandle {*this, "Particles"}
 
columnar::JetAccessor< columnar::ObjectColumnm_jetsHandle {*this, "Jets"}
 
columnar::ElectronAccessor< columnar::ObjectColumnm_electronsHandle {*this, "Electrons"}
 
columnar::PhotonAccessor< columnar::ObjectColumnm_photonsHandle {*this, "Photons"}
 
columnar::MuonAccessor< columnar::ObjectColumnm_muonsHandle {*this, "Muons"}
 
columnar::MutableMetAccessor< std::string > m_outputMetNameAcc {*this, "name"}
 
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::mutableMetm_outputMetMapAcc {*this}
 
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::mutableMetm_outputMetMomAcc {*this}
 
columnar::Met1Accessor< std::string > m_inputMetNameAcc {*this, "name"}
 
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::met1m_inputMetMapAcc {*this}
 
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::met1m_inputMetMomAcc {*this}
 
columnar::Met1Accessor< MissingETBase::Types::bitmask_tm_inputMetSourceAcc {*this, "source"}
 
columnar::MetAssocationAccessors m_assocAcc {*this}
 
columnar::MetHelpers::InputMomentumAccessors m_inputMomAcc {*this}
 
Gaudi::Property< std::string > m_inputPreselectionName {this, "inputPreselection", ""}
 
std::optional< columnar::ParticleAccessor< char > > m_inputPreselectionAcc
 
columnar::ParticleAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > m_inputMuonTypeAcc {*this, "muonType", {.isOptional = true}}
 
columnar::MetHelpers::ObjectTypeAccessor< columnar::ContainerId::particlem_inputObjTypeAcc {*this, "objectType"}
 
columnar::MetHelpers::ObjectWeightDecorator m_outputMetWeightDecRegular {*this, "", true}
 
columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jetm_jetMomAcc {*this}
 
columnar::JetAccessor< float > m_acc_emf {*this, "EMFrac"}
 
columnar::JetAccessor< float > m_acc_psf {*this, "PSFrac"}
 
columnar::JetAccessor< float > m_acc_width {*this, "Width"}
 
columnar::JetAccessor< std::vector< int > > m_acc_trkN {*this, "NumTrkPt500"}
 
columnar::JetAccessor< std::vector< float > > m_acc_trksumpt {*this, "SumPtTrkPt500"}
 
columnar::JetAccessor< std::vector< float > > m_acc_sampleE {*this, "EnergyPerSampling"}
 
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomAcc
 
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomFixedAcc
 
std::optional< columnar::JetAccessor< char > > m_acc_jetRejectionDec
 
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jetm_jetOutputMetWeightDecRegular {*this, "", true}
 
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jetm_jetOutputMetWeightDecSoft {*this, "Soft", false}
 
columnar::ElectronAccessor< columnar::RetypeColumn< double, float > > m_electronPtAcc {*this, "pt"}
 
Gaudi::Property< unsigned > m_columnarOperation {this, "columnarOperation", 0}
 
Gaudi::Property< std::string > m_columnarTermName {this, "columnarTermName", ""}
 
Gaudi::Property< unsigned > m_columnarParticleType {this, "columnarParticleType", 0}
 
Gaudi::Property< std::string > m_columnarJetKey {this, "columnarJetKey", ""}
 
Gaudi::Property< std::string > m_columnarSoftClusKey {this, "columnarSoftClusKey", ""}
 
Gaudi::Property< bool > m_columnarDoJetJVT {this, "columnarDoJetJVT", false}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 49 of file ColumnarMETMaker.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

◆ ColumnarMETMaker() [1/2]

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

Constructor with parameters:

Definition at line 79 of file ColumnarMETMaker.cxx.

79  :
80  AsgTool(name),
81  m_PVkey("PrimaryVertices"),
82  m_trkseltool(""),
83  m_JvtTool("", this)
84  {
85  //
86  // Property declaration
87  //
88  declareProperty("JetJvtMomentName", m_jetJvtMomentName = "Jvt" );
89  declareProperty("JetRejectionDec", m_jetRejectionDec = "" );
90  declareProperty("JetMinEFrac", m_jetMinEfrac = 0.0 );
91  declareProperty("JetMinWeightedPt", m_jetMinWeightedPt = 20.0e3 );
92  declareProperty("JetConstitScaleMom", m_jetConstitScaleMom = "JetConstitScaleMomentum");
93  declareProperty("CorrectJetPhi", m_jetCorrectPhi = false );
94  declareProperty("DoPFlow", m_doPFlow = false );
95  declareProperty("DoSoftTruth", m_doSoftTruth = false );
96  declareProperty("DoJetTruth", m_doConstJet = false );
97 
98  declareProperty("JetSelection", m_jetSelection = "Tight" );
99  declareProperty("JetEtaMax", m_JetEtaMax = 4.5 );
100  declareProperty("JetEtaForw", m_JetEtaForw = 2.5 );
101  declareProperty("CustomCentralJetPt", m_customCenJetPtCut = 20e3 );
102  declareProperty("CustomForwardJetPt", m_customFwdJetPtCut = 20e3 );
103  declareProperty("CustomJetJvtPtMax", m_customJvtPtMax = 60e3 );
104  declareProperty("CustomJetJvtWP", m_customJvtWP = "FixedEffPt" );
105 
106  declareProperty("DoMuonEloss", m_muEloss = false );
107  declareProperty("ORCaloTaggedMuons", m_orCaloTaggedMuon = true );
108  declareProperty("GreedyPhotons", m_greedyPhotons = false );
109  declareProperty("VeryGreedyPhotons", m_veryGreedyPhotons = false );
110 
111  declareProperty("UseGhostMuons", m_useGhostMuons = false );
112  declareProperty("DoRemoveMuonJets", m_doRemoveMuonJets = true );
113  declareProperty("DoSetMuonJetEMScale", m_doSetMuonJetEMScale = true );
114 
115  declareProperty("DoRemoveElecTrks", m_doRemoveElecTrks = true );
116  declareProperty("DoRemoveElecTrksEM", m_doRemoveElecTrksEM = false );
117 
118  declareProperty("skipSystematicJetSelection", m_skipSystematicJetSelection = false,
119  "EXPERIMENTAL: whether to use simplified OR based on nominal jets "
120  "and for jet-related systematics only. "
121  "WARNING: this property is strictly for doing physics studies of the feasibility "
122  "of this OR scheme, it should not be used in a regular analysis");
123 
124  // muon overlap variables (expert use only)
125  declareProperty("JetTrkNMuOlap", m_jetTrkNMuOlap = 5 );
126  declareProperty("JetWidthMuOlap", m_jetWidthMuOlap = 0.1 );
127  declareProperty("JetPsEMuOlap", m_jetPsEMuOlap = 2.5e3 );
128  declareProperty("JetEmfMuOlap", m_jetEmfMuOlap = 0.9 );
129  declareProperty("JetTrkPtMuPt", m_jetTrkPtMuPt = 0.8 );
130  declareProperty("muIDPTJetPtRatioMuOlap", m_muIDPTJetPtRatioMuOlap = 2.0 );
131 
132  declareProperty("MissingObjWarnThreshold", m_missObjWarningPtThreshold = 7.0e3 );
133 
134  declareProperty("TrackSelectorTool", m_trkseltool );
135  declareProperty("JvtSelTool", m_JvtTool );
136  }

◆ ~ColumnarMETMaker()

met::ColumnarMETMaker::~ColumnarMETMaker ( )
virtualdefault

Destructor:

◆ ColumnarMETMaker() [2/2]

met::ColumnarMETMaker::ColumnarMETMaker ( )
private

Default constructor:

Member Function Documentation

◆ acceptTrack()

bool met::ColumnarMETMaker::acceptTrack ( const xAOD::TrackParticle trk,
const xAOD::Vertex vx 
) const
private

Definition at line 1220 of file ColumnarMETMaker.cxx.

1221  {
1222  return static_cast<bool>(m_trkseltool->accept( *trk, vx ));
1223  }

◆ callEvents()

void met::ColumnarMETMaker::callEvents ( columnar::EventContextRange  events) const
overrideprivate

Definition at line 1243 of file ColumnarMETMaker.cxx.

1244  {
1246  {
1247  auto met = m_outputMetHandle (event);
1248  auto metcore = m_inputMetHandle (event);
1249  auto metassoc = m_metAssocHandle (event);
1250  if (m_columnarOperation.value() == 0u)
1251  {
1254  throw std::runtime_error ("Failed to rebuild MET");
1255  } else if (m_columnarOperation.value() == 1u)
1256  {
1257  auto jets = m_jetsHandle (event);
1258  if (rebuildJetMET (m_columnarJetKey.value(), m_columnarSoftClusKey.value(), met, jets, metcore, m_assocAcc(metassoc), m_columnarDoJetJVT.value()).isFailure())
1259  throw std::runtime_error ("Failed to rebuild jet MET");
1260  } else if (m_columnarOperation.value() == 2u)
1261  {
1262  auto jets = m_jetsHandle (event);
1263  if (rebuildTrackMET (m_columnarJetKey.value(), m_columnarSoftClusKey.value(), met, jets, metcore, m_assocAcc(metassoc), m_columnarDoJetJVT.value()).isFailure())
1264  throw std::runtime_error ("Failed to rebuild track MET");
1265  } else
1266  {
1267  throw std::runtime_error ("Unknown columnar operation");
1268  }
1269  }
1270  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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

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

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

◆ getPV()

const xAOD::Vertex * met::ColumnarMETMaker::getPV ( ) const
private

Definition at line 1225 of file ColumnarMETMaker.cxx.

1225  {
1226 
1228 
1229  if(!h_PV.isValid()) {
1230  ATH_MSG_WARNING("Unable to retrieve primary vertex container PrimaryVertices");
1231  return nullptr;
1232  }
1233  ATH_MSG_DEBUG("Successfully retrieved primary vertex container");
1234  if(h_PV->empty()) ATH_MSG_WARNING("Event has no primary vertices!");
1235  for(const xAOD::Vertex* vx : *h_PV) {
1236  if(vx->vertexType()==xAOD::VxType::PriVtx) return vx;
1237  }
1238  return nullptr;
1239  }

◆ initialize()

StatusCode met::ColumnarMETMaker::initialize ( )
finaloverridevirtual

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.

Definition at line 145 of file ColumnarMETMaker.cxx.

146  {
147  ATH_MSG_INFO ("Initializing " << name() << "...");
148 
149  ATH_MSG_INFO("Use jet selection criterion: " << m_jetSelection << " PFlow: " << m_doPFlow);
150  if (m_jetSelection == "Loose") { m_CenJetPtCut = 20e3; m_FwdJetPtCut = 20e3; m_JvtWP = "FixedEffPt"; m_JvtPtMax = 60e3; }
151  else if (m_jetSelection == "Tight") { m_CenJetPtCut = 20e3; m_FwdJetPtCut = 30e3; m_JvtWP = "FixedEffPt"; m_JvtPtMax = 60e3; }
152  else if (m_jetSelection == "Tighter"){ m_CenJetPtCut = 20e3; m_FwdJetPtCut = 35e3; m_JvtWP = "FixedEffPt"; m_JvtPtMax = 60e3; }
153  else if (m_jetSelection == "Tenacious"){ m_CenJetPtCut = 20e3; m_FwdJetPtCut = 40e3; m_JvtWP = "FixedEffPt"; m_JvtPtMax = 60e3; }
154  else if (m_jetSelection == "Tier0") { m_CenJetPtCut = 0; m_FwdJetPtCut = 0; m_JvtWP = "None"; }
155  else if (m_jetSelection == "Expert") {
156  ATH_MSG_INFO("Custom jet selection configured. *** FOR EXPERT USE ONLY ***");
161  }
162  else if (m_jetSelection == "HRecoil") {
163  ATH_MSG_INFO("Jet selection for hadronic recoil calculation is configured.");
164  m_CenJetPtCut = 9999e3;
165  m_FwdJetPtCut = 9999e3;
166  m_JetEtaMax = 5;
167  m_JvtWP = "None";
168  }
169  else {
170  if (m_jetSelection == "Default") ATH_MSG_WARNING( "WARNING: Default is now deprecated" );
171  ATH_MSG_ERROR( "Error: No available jet selection found! Please update JetSelection in ColumnarMETMaker. Choose one: Loose, Tight (recommended), Tighter, Tenacious" );
172  return StatusCode::FAILURE;
173  }
174 
175  if (!m_trkseltool.empty()) ATH_CHECK( m_trkseltool.retrieve() );
176 
177  if (m_JvtWP != "None"){
178  if (m_JvtTool.empty()) {
179  asg::AsgToolConfig config_jvt ("CP::NNJvtSelectionTool/JvtSelTool");
180  ATH_CHECK(config_jvt.setProperty("WorkingPoint", m_JvtWP));
181  ATH_CHECK(config_jvt.setProperty("JvtMomentName", "NNJvt"));
182  ATH_CHECK(config_jvt.setProperty("MaxPtForJvt", m_JvtPtMax));
183  ATH_CHECK(config_jvt.makePrivateTool(m_JvtTool));
184  }
185  ATH_CHECK(m_JvtTool.retrieve());
186  }
187 
188  // ReadHandleKey(s)
189  ATH_CHECK( m_PVkey.initialize() );
190 
191  // configurable accessors
192  if (!m_jetRejectionDec.empty()) {
193  m_acc_jetRejectionDec.emplace (*this, m_jetRejectionDec);
194  ATH_MSG_INFO("Applying additional jet rejection criterium in MET calculation: " << m_jetRejectionDec);
195  }
196 
197  ATH_MSG_INFO("Suppressing warnings of objects missing in METAssociationMap for objects with pT < " << m_missObjWarningPtThreshold/1e3 << " GeV.");
198 
199  // overlap removal simplification?
201  ATH_MSG_INFO("Requesting simplified overlap removal procedure in MET calculation");
202  }
203 
204  if (!m_inputPreselectionName.empty()) {
206  }
207  if (!m_jetConstitScaleMom.empty()) {
209  m_jetConstitScaleMomFixedAcc.emplace(*this, "JetConstitScaleMomentum");
210  }
211  return StatusCode::SUCCESS;
212  }

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

◆ markInvisible() [1/2]

StatusCode met::ColumnarMETMaker::markInvisible ( columnar::ParticleRange  collection,
columnar::MetAssociationHelper<>  helper,
columnar::MutableMetRange  metCont 
) const

Definition at line 1212 of file ColumnarMETMaker.cxx.

1215  {
1216  columnar::MutableMetId met = m_outputMetMapAcc.fillMET (metCont, "Invisibles", invisSource);
1218  }

◆ markInvisible() [2/2]

StatusCode met::ColumnarMETMaker::markInvisible ( const xAOD::IParticleContainer collection,
xAOD::MissingETAssociationHelper helper,
xAOD::MissingETContainer metCont 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 1196 of file ColumnarMETMaker.cxx.

1199  {
1200  if (!collection) {
1201  ATH_MSG_ERROR("No object container provided for marking invisible");
1202  return StatusCode::FAILURE;
1203  }
1204  if (!metCont) {
1205  ATH_MSG_ERROR("No MET container provided for marking invisible");
1206  return StatusCode::FAILURE;
1207  }
1208 
1210  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

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

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

void asg::AsgTool::print ( ) const
virtualinherited

◆ rebuildJetMET() [1/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( columnar::MutableMetId  metJet,
columnar::MutableMetRange  metCont,
columnar::JetRange  jets,
columnar::MetAssociationHelper<>  helper,
columnar::OptMutableMetId  metSoftClus,
columnar::OptMet1Id  coreSoftClus,
columnar::OptMutableMetId  metSoftTrk,
columnar::OptMet1Id  coreSoftTrk,
bool  doJetJVT,
bool  tracksForHardJets = false,
std::vector< const xAOD::IParticle * > *  softConst = 0 
) const

Definition at line 625 of file ColumnarMETMaker.cxx.

635  {
636  if(softConst && m_trkseltool.empty() && !m_doPFlow && !m_doSoftTruth) {
637  ATH_MSG_WARNING( "Requested soft track element links, but no track selection tool supplied.");
638  }
639  const xAOD::Vertex *pv = softConst?getPV():nullptr;
640 
641  if(helper.map().empty()) {
642  ATH_MSG_WARNING("Incomplete association map received. Cannot rebuild MET.");
643  ATH_MSG_WARNING("Note: ColumnarMETMaker should only be run on events containing at least one PV");
644  return StatusCode::SUCCESS;
645  }
646 
647  if(doJetJVT && m_JvtWP == "None"){
648  ATH_MSG_WARNING("rebuildJetMET requested JVT, which is inconsistent with jet selection " << m_jetSelection << ". Ignoring JVT.");
649  doJetJVT = false;
650  }
651 
652  ATH_MSG_VERBOSE("Building MET jet term " << metJet(m_outputMetNameAcc));
653  if(!metSoftClus && !metSoftTrk) {
654  ATH_MSG_WARNING("Neither soft cluster nor soft track term has been supplied!");
655  return StatusCode::SUCCESS;
656  }
657  static const SG::AuxElement::ConstAccessor<std::vector<ElementLink<IParticleContainer> > > acc_softConst("softConstituents");
658  std::optional<columnar::MetHelpers::ObjectWeightHandle<columnar::ContainerId::mutableMet,columnar::ContainerId::jet>> metSoftClusLinks;
659  if(metSoftClus) {
660  metSoftClusLinks.emplace(*this,m_jetOutputMetWeightDecSoft,metSoftClus.value(),jets);
661  if(!coreSoftClus) {
662  ATH_MSG_ERROR("Soft cluster term provided without a core term!");
663  return StatusCode::FAILURE;
664  }
665  ATH_MSG_VERBOSE("Building MET soft cluster term " << metSoftClus.value()(m_outputMetNameAcc));
666  ATH_MSG_VERBOSE("Core soft cluster mpx " << m_inputMetMomAcc.mpx(coreSoftClus.value())
667  << ", mpy " << m_inputMetMomAcc.mpy(coreSoftClus.value())
668  << " sumet " << m_inputMetMomAcc.sumet(coreSoftClus.value()));
669  m_outputMetMomAcc.addMet (metSoftClus.value(), m_inputMetMomAcc, coreSoftClus.value());
670  // Fill a vector with the soft constituents, if one was provided.
671  // For now, only setting up to work with those corresponding to the jet constituents.
672  // Can expand if needed.
673  if(softConst && acc_softConst.isAvailable(*coreSoftClus.getXAODObject())) {
674  for(const auto& constit : acc_softConst(*coreSoftClus.getXAODObject())) {
675  softConst->push_back(*constit);
676  }
677  ATH_MSG_DEBUG(softConst->size() << " soft constituents from core term");
678  }
679  }
680  std::optional<columnar::MetHelpers::ObjectWeightHandle<columnar::ContainerId::mutableMet,columnar::ContainerId::jet>> metSoftTrkLinks;
681  if(metSoftTrk) {
682  metSoftTrkLinks.emplace(*this,m_jetOutputMetWeightDecSoft,metSoftTrk.value(),jets);
683  if(!coreSoftTrk) {
684  ATH_MSG_ERROR("Soft track term provided without a core term!");
685  return StatusCode::FAILURE;
686  }
687  ATH_MSG_VERBOSE("Building MET soft track term " << metSoftTrk.value()(m_outputMetNameAcc));
688  ATH_MSG_VERBOSE("Core soft track mpx " << m_inputMetMomAcc.mpx(coreSoftTrk.value())
689  << ", mpy " << m_inputMetMomAcc.mpy(coreSoftTrk.value())
690  << " sumet " << m_inputMetMomAcc.sumet(coreSoftTrk.value()));
691  m_outputMetMomAcc.addMet (metSoftTrk.value(), m_inputMetMomAcc, coreSoftTrk.value());
692  if(softConst && acc_softConst.isAvailable(*coreSoftTrk.getXAODObject()) && !m_doPFlow && !m_doSoftTruth) {
693  for(const auto& constit : acc_softConst(*coreSoftTrk.getXAODObject())) {
694  softConst->push_back(*constit);
695  }
696  ATH_MSG_DEBUG(softConst->size() << " soft constituents from trk core term");
697  }
698  }
699 
701 
702  // Get the hashed key of this jet, if we can. Though his only works if
703  // 1. the container is an owning container, and not just a view;
704  // 2. the container is in the event store already.
705  // Since we will be creating ElementLink-s to these jets later on in the
706  // code, and it should work in AnalysisBase, only the first one of these
707  // is checked. Since the code can not work otherwise.
708 
710  for(auto jet : jets) {
711  auto originalJet = jetsOriginals.getOriginal(jet);
712  auto assoc = helper.getJetAssociation(originalJet);
713  if(!assoc || m_assocAcc.isMisc(*assoc)) {
714  ATH_MSG_WARNING( "Jet without association found!" );
715  continue;
716  }
717 
719  // retrieve nominal calibrated jet
720  if (acc_nominalObject.isAvailable(jet.getXAODObject())){
721  ATH_MSG_VERBOSE( "Jet pt before nominal replacement = " << m_jetMomAcc.pt(jet));
722  jet = *static_cast<const xAOD::Jet*>(*acc_nominalObject(jet.getXAODObject()));
723  }
724  else
725  ATH_MSG_ERROR("No nominal calibrated jet available for jet " << jet << ". Cannot simplify overlap removal!");
726  }
727  ATH_MSG_VERBOSE( "Jet pt = " << m_jetMomAcc.pt(jet));
728 
729  bool selected = (std::abs(m_jetMomAcc.eta(jet))<m_JetEtaForw && m_jetMomAcc.pt(jet)>m_CenJetPtCut) || (std::abs(m_jetMomAcc.eta(jet))>=m_JetEtaForw && m_jetMomAcc.pt(jet)>m_FwdJetPtCut );
730  bool JVT_reject(false);
731  bool isMuFSRJet(false);
732 
733  // Apply a cut on the maximum jet eta. This restricts jets to those with calibration. Excluding more forward jets was found to have a minimal impact on the MET in Zee events
734  if (m_JetEtaMax > 0.0 && std::abs(m_jetMomAcc.eta(jet)) > m_JetEtaMax)
735  JVT_reject = true;
736 
737  if(doJetJVT) {
738  // intrinsically checks that is within range to apply Jvt requirement
739  JVT_reject = !bool(m_JvtTool->accept(&jet.getXAODObject()));
740  ATH_MSG_VERBOSE("Jet " << (JVT_reject ? "fails" : "passes") <<" JVT selection");
741  }
742 
743  // if defined apply additional jet criterium
744  if (m_acc_jetRejectionDec && (*m_acc_jetRejectionDec)(jet)==0) JVT_reject = true;
745  bool hardJet(false);
746  MissingETBase::Types::constvec_t calvec = helper.overlapCalVec(*assoc);
747  bool caloverlap = false;
748  caloverlap = calvec.ce()>0;
749  ATH_MSG_DEBUG("Jet " << jet << " is " << ( caloverlap ? "" : "non-") << "overlapping");
750 
751  if(m_veryGreedyPhotons && caloverlap) {
752  for(const auto object : m_assocAcc.objects(*assoc)) {
753  // Correctly handle this jet if we're using very greedy photons
754  if (object && object.getXAODObject()->type() == xAOD::Type::Photon) hardJet = true;
755  }
756  }
757 
758  xAOD::JetFourMom_t constjet;
759  double constSF(1);
761  constjet = m_assocAcc.getAlternateConstVec(*assoc);
762  } else {
763  constjet = m_jetConstitScaleMomAcc.value().jetP4(jet);//grab a constituent scale added by the JetMomentTool/JetConstitFourMomTool.cxx
765  constSF = denom>1e-9 ? constjet.E()/denom : 0.;
766  ATH_MSG_VERBOSE("Scale const jet by factor " << constSF);
767  calvec *= constSF;
768  }
769  double jpx = constjet.Px();
770  double jpy = constjet.Py();
771  double jpt = constjet.Pt();
772  double opx = jpx - calvec.cpx();
773  double opy = jpy - calvec.cpy();
774 
775  columnar::OptMutableMetId met_muonEloss;
777  // Get a term to hold the Eloss corrections
778  met_muonEloss = m_outputMetMapAcc.getRequired(metCont, "MuonEloss");
779  if(!met_muonEloss) {
780  ATH_MSG_WARNING("Attempted to apply muon Eloss correction, but corresponding MET term does not exist!");
781  return StatusCode::FAILURE;
782  }
783  }
784 
785  float total_eloss(0);
786  MissingETBase::Types::bitmask_t muons_selflags(0);
787  std::vector<columnar::MuonId> muons_in_jet;
788  std::vector<columnar::ElectronId> electrons_in_jet;
789  bool passJetForEl=false;
790  if(m_useGhostMuons) { // for backwards-compatibility
791  if(!acc_ghostMuons.isAvailable(jet.getXAODObject())){
792  ATH_MSG_ERROR("Ghost muons requested but not found!");
793  return StatusCode::FAILURE;
794  }
795  for(const auto& el : acc_ghostMuons(jet.getXAODObject())) {
796  if(!el.isValid()){
797  ATH_MSG_ERROR("Invalid element link to ghost muon! Quitting.");
798  return StatusCode::FAILURE;
799  }
800  muons_in_jet.push_back(*static_cast<const xAOD::Muon*>(*el));
801  }
802  }
803  for(const auto obj : m_assocAcc.objects(*assoc)) {
804  if(!obj) continue;
805  if(!m_useGhostMuons && obj.isContainer<columnar::ContainerId::muon>()) {
806  auto mu_test = obj.tryGetVariant<columnar::ContainerId::muon>().value();
807  ATH_MSG_VERBOSE("Muon " << mu_test << " found in jet " << jet);
810  if(acc_originalObject.isAvailable(mu_test.getXAODObject())) mu_test = *static_cast<const xAOD::Muon*>(*acc_originalObject(mu_test.getXAODObject()));
811  }
812  if(helper.objSelected(mu_test)) { //
813  muons_in_jet.push_back(mu_test);
814  ATH_MSG_VERBOSE("Muon is selected by MET.");
815  }
816  }
817  } else if(m_doRemoveElecTrks && obj.isContainer<columnar::ContainerId::electron>()) {
818  auto el_test = obj.tryGetVariant<columnar::ContainerId::electron>().value();
819  ATH_MSG_VERBOSE("Electron " << el_test << " found in jet " << jet);
821  if(acc_originalObject.isAvailable(el_test.getXAODObject())) el_test = *static_cast<const xAOD::Electron*>(*acc_originalObject(el_test.getXAODObject()));
822  }
823  if(helper.objSelected(*assoc,el_test)){
824  if(el_test(m_electronPtAcc)>90.0e3) { // only worry about high-pt electrons?
825  electrons_in_jet.push_back(el_test);
826  ATH_MSG_VERBOSE("High-pt electron is selected by MET.");
827  }
828  }
829  }
830  }
831  if(m_doRemoveElecTrks) {
832  MissingETBase::Types::constvec_t initialTrkMom = m_assocAcc.jetTrkVec(*assoc);
833  float jet_ORtrk_sumpt = helper.overlapTrkVec(*assoc).sumpt();
834  float jet_all_trk_pt = initialTrkMom.sumpt();
835  float jet_unique_trk_pt = jet_all_trk_pt - jet_ORtrk_sumpt;
838  for(const auto& elec : electrons_in_jet) {
839  el_calvec += m_assocAcc.calVec(*assoc,elec);
840  el_trkvec += m_assocAcc.trkVec(*assoc,&elec.getXAODObject());
841  }
842  float el_cal_pt = el_calvec.cpt();
843  float el_trk_pt = el_trkvec.cpt();
844  ATH_MSG_VERBOSE("Elec trk: " << el_trk_pt
845  << " jetalltrk: " << jet_all_trk_pt
846  << " jetORtrk: " << jet_ORtrk_sumpt
847  << " electrk-jetORtrk: " << (el_trk_pt-jet_ORtrk_sumpt)
848  << " elec cal: " << el_cal_pt
849  << " jetalltrk-electrk: " << (jet_all_trk_pt-el_trk_pt)
850  << " jetalltrk-jetORtrk: " << (jet_all_trk_pt-jet_ORtrk_sumpt) );
851  // Want to use the jet calo measurement if we had at least one electron
852  // and the jet has a lot of residual track pt
853  // Is the cut appropriate?
854  if(el_trk_pt>1e-9 && jet_unique_trk_pt>10.0e3) passJetForEl=true;
855  } // end ele-track removal
856 
857  for(auto mu_in_jet : muons_in_jet) {
858  float mu_Eloss = acc_Eloss(mu_in_jet.getXAODObject());
859 
860  if(!JVT_reject) {
861  if (m_doRemoveMuonJets) {
862  // need to investigate how this is affected by the recording of muon clusters in the map
863  float mu_id_pt = mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle) ? mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle)->pt() : 0.;
864  float jet_trk_sumpt = m_acc_trksumpt.isAvailable(jet) && this->getPV() ? m_acc_trksumpt(jet)[this->getPV()->index()] : 0.;
865 
866  // missed the muon, so we should add it back
867  if(0.9999*mu_id_pt>jet_trk_sumpt)
868  jet_trk_sumpt+=mu_id_pt;
869  float jet_trk_N = m_acc_trkN.isAvailable(jet) && this->getPV() ? m_acc_trkN(jet)[this->getPV()->index()] : 0.;
870  ATH_MSG_VERBOSE("Muon has ID pt " << mu_id_pt);
871  ATH_MSG_VERBOSE("Jet has pt " << m_jetMomAcc.pt(jet) << ", trk sumpt " << jet_trk_sumpt << ", trk N " << jet_trk_N);
872  bool jet_from_muon = mu_id_pt>1e-9 && jet_trk_sumpt>1e-9 && (m_jetMomAcc.pt(jet)/mu_id_pt < m_muIDPTJetPtRatioMuOlap && mu_id_pt/jet_trk_sumpt>m_jetTrkPtMuPt) && jet_trk_N<m_jetTrkNMuOlap;
873  if(jet_from_muon) {
874  ATH_MSG_VERBOSE("Jet is from muon -- remove.");
875  JVT_reject = true;
876  }
877  }
878 
879  if (m_doSetMuonJetEMScale) {
880  // need to investigate how this is affected by the recording of muon clusters in the map
881  float mu_id_pt = mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle) ? mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle)->pt() : 0.;
882  float jet_trk_sumpt = m_acc_trksumpt.isAvailable(jet) && this->getPV() ? m_acc_trksumpt(jet)[this->getPV()->index()] : 0.;
883  // missed the muon, so we should add it back
884  if(0.9999*mu_id_pt>jet_trk_sumpt)
885  jet_trk_sumpt+=mu_id_pt;
886  float jet_trk_N = m_acc_trkN.isAvailable(jet) && this->getPV() ? m_acc_trkN(jet)[this->getPV()->index()] : 0.;
887 
888  float jet_psE = 0.;
889  if (m_acc_psf.isAvailable(jet)){
890  jet_psE = m_acc_psf(jet);
891  } else if (m_acc_sampleE.isAvailable(jet)){
892  jet_psE = m_acc_sampleE(jet)[0] + m_acc_sampleE(jet)[4];
893  } else {
894  ATH_MSG_ERROR("Jet PS fraction or sampling energy must be available to calculate MET with doSetMuonJetEMScale");
895  return StatusCode::FAILURE;
896  }
897 
898  bool jet_from_muon = jet_trk_sumpt>1e-9 && jet_trk_N<3 && mu_id_pt / jet_trk_sumpt > m_jetTrkPtMuPt && m_acc_emf(jet)>m_jetEmfMuOlap && m_acc_width(jet)<m_jetWidthMuOlap && jet_psE>m_jetPsEMuOlap;
899  ATH_MSG_VERBOSE("Muon has ID pt " << mu_id_pt);
900  ATH_MSG_VERBOSE("Jet has trk sumpt " << jet_trk_sumpt << ", trk N " << jet_trk_N << ", PS E " << jet_psE << ", width " << m_acc_width(jet) << ", emfrac " << m_acc_emf(jet));
901 
902  if(jet_from_muon) {
903  ATH_MSG_VERBOSE("Jet is from muon -- set to EM scale and subtract Eloss.");
904  // Using constjet now because we focus on AntiKt4EMTopo.
905  // Probably not a massive difference to LC, but PF needs some consideration
906  ATH_MSG_VERBOSE("Jet e: " << constjet.E() << ", mu Eloss: " << mu_Eloss);
907  float elosscorr = mu_Eloss >= constjet.e() ? 0. : 1.-mu_Eloss/constjet.e();
908  // Effectively, take the unique fraction of the jet times the eloss-corrected fraction
909  // This might in some cases oversubtract, but should err on the side of undercounting the jet contribution
910  opx *= elosscorr;
911  opy *= elosscorr;
912  ATH_MSG_VERBOSE(" Jet eloss factor " << elosscorr << ", final pt: " << sqrt(opx*opx+opy*opy));
913  // Don't treat this jet normally. Instead, just add to the Eloss term
914  isMuFSRJet = true;
915  }
916  }
917  } // end muon-jet overlap-removal
918 
919  switch(mu_in_jet.getXAODObject().energyLossType()) {
920  case xAOD::Muon::Parametrized:
921  case xAOD::Muon::MOP:
922  case xAOD::Muon::Tail:
923  case xAOD::Muon::FSRcandidate:
924  case xAOD::Muon::NotIsolated:
925  // For now don't differentiate the behaviour
926  // Remove the Eloss assuming the parameterised value
927  // The correction is limited to the selected clusters
928  total_eloss += mu_Eloss;
929  muons_selflags |= (1<<m_assocAcc.findIndex(*assoc,mu_in_jet));
930  }
931  }
932  ATH_MSG_VERBOSE("Muon selection flags: " << muons_selflags);
933  ATH_MSG_VERBOSE("Muon total eloss: " << total_eloss);
934 
936  // borrowed from overlapCalVec
937  for(size_t iKey = 0; iKey < m_assocAcc.sizeCal(*assoc); iKey++) {
938  bool selector = (muons_selflags & m_assocAcc.calkey(*assoc)[iKey]);
939  if(selector) mu_calovec += m_assocAcc.calVec(*assoc,iKey);
940  ATH_MSG_VERBOSE("This key: " << m_assocAcc.calkey(*assoc)[iKey] << ", selector: " << selector);
941  }
942  ATH_MSG_VERBOSE("Mu calovec pt, no Eloss: " << mu_calovec.cpt());
943  if(m_muEloss) mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.ce()));
944  ATH_MSG_VERBOSE("Mu calovec pt, with Eloss: " << mu_calovec.cpt());
945 
946  // re-add calo components of muons beyond Eloss correction
947  ATH_MSG_VERBOSE("Jet " << jet << " const pT before OR " << jpt);
948  ATH_MSG_VERBOSE("Jet " << jet << " const pT after OR " << sqrt(opx*opx+opy*opy));
949  opx += mu_calovec.cpx();
950  opy += mu_calovec.cpy();
951  double opt = sqrt( opx*opx+opy*opy );
952  ATH_MSG_VERBOSE("Jet " << jet << " const pT diff after OR readding muon clusters " << opt-jpt);
953  double uniquefrac = 1. - (calvec.ce() - mu_calovec.ce()) / constjet.E();
954  ATH_MSG_VERBOSE( "Jet constscale px, py, pt, E = " << jpx << ", " << jpy << ", " << jpt << ", " << constjet.E() );
955  ATH_MSG_VERBOSE( "Jet overlap E = " << calvec.ce() - mu_calovec.ce() );
956  ATH_MSG_VERBOSE( "Jet OR px, py, pt, E = " << opx << ", " << opy << ", " << opt << ", " << constjet.E() - calvec.ce() );
957 
958  if(isMuFSRJet) {
959  if(!met_muonEloss){
960  ATH_MSG_ERROR("Attempted to apply muon Eloss correction, but corresponding MET term does not exist!");
961  return StatusCode::FAILURE;
962  }
963  m_outputMetMomAcc.addParticle(met_muonEloss.value(),opx,opy,opt);
964  continue;
965  }
966 
967  if(selected && !JVT_reject) {
968  if(!caloverlap) {
969  // add jet full four-vector
970  hardJet = true;
971  if (!tracksForHardJets) {
972  if(m_doConstJet)
973  m_outputMetMomAcc.addParticle(metJet,jpx,jpy,jpt);
974  else
976  }
977  }
978  else if((uniquefrac>m_jetMinEfrac || passJetForEl) && opt>m_jetMinWeightedPt){
979  // add jet corrected for overlaps if sufficient unique fraction
980  hardJet = true;
981  if(!tracksForHardJets) {
982  if(m_jetCorrectPhi) {
983  if (m_doConstJet)
984  m_outputMetMomAcc.addParticle(metJet,opx,opy,opt);
985  else {
986  double jesF = m_jetMomAcc.pt(jet) / jpt;
987  m_outputMetMomAcc.addParticle(metJet,opx*jesF,opy*jesF,opt*jesF);
988  }
989  } else {
990  if (m_doConstJet)
991  m_outputMetMomAcc.addParticle(metJet,uniquefrac*jpx,uniquefrac*jpy,uniquefrac*jpt);
992  else{
993  if(passJetForEl && m_doRemoveElecTrksEM)
994  m_outputMetMomAcc.addParticle(metJet,opx,opy,opt);
995  else
996  m_outputMetMomAcc.addParticle(metJet,uniquefrac*m_jetMomAcc.px(jet),uniquefrac*m_jetMomAcc.py(jet),uniquefrac*m_jetMomAcc.pt(jet));
997  }
998  }
999  }
1000  }
1001  } // hard jet selection
1002 
1003  if(hardJet){
1004  ATH_MSG_VERBOSE("Jet added at full scale");
1005  metJetWeights.emplace_back(jet, uniquefrac);
1006  } else {
1007  if(metSoftClus && !JVT_reject) {
1008  // add fractional contribution
1009  ATH_MSG_VERBOSE("Jet added at const scale");
1010  if (std::abs(m_jetMomAcc.eta(jet))<2.5 || !(coreSoftClus.value()(m_inputMetSourceAcc)&MissingETBase::Source::Region::Central)) {
1011  metSoftClusLinks->emplace_back (jet, uniquefrac);
1012  m_outputMetMomAcc.addParticle(metSoftClus.value(),opx,opy,opt);
1013  }
1014 
1015  // Fill a vector with the soft constituents, if one was provided.
1016  // For now, only setting up to work with those corresponding to the jet constituents.
1017  // Can expand if needed.
1018  // This ignores overlap removal.
1019  //
1020  if(softConst) {
1021  for(size_t iConst=0; iConst<jet.getXAODObject().numConstituents(); ++iConst) {
1022  const IParticle* constit = jet.getXAODObject().rawConstituent(iConst);
1023  softConst->push_back(constit);
1024  }
1025  }
1026  }
1027  } // hard jet or CST
1028 
1029  if(!metSoftTrk || (hardJet && !tracksForHardJets)) continue;
1030 
1031  // use jet tracks
1032  // remove any tracks already used by other objects
1033  MissingETBase::Types::constvec_t trkvec = helper.overlapTrkVec(*assoc);
1035  if(jettrkvec.ce()>1e-9) {
1036  jpx = jettrkvec.cpx();
1037  jpy = jettrkvec.cpy();
1038  jpt = jettrkvec.sumpt();
1039  jettrkvec -= trkvec;
1040  opx = jettrkvec.cpx();
1041  opy = jettrkvec.cpy();
1042  opt = jettrkvec.sumpt();
1043  ATH_MSG_VERBOSE( "Jet track px, py, sumpt = " << jpx << ", " << jpy << ", " << jpt );
1044  ATH_MSG_VERBOSE( "Jet OR px, py, sumpt = " << opx << ", " << opy << ", " << opt );
1045  } else {
1046  opx = opy = opt = 0;
1047  ATH_MSG_VERBOSE( "This jet has no associated tracks" );
1048  }
1049  if (hardJet) m_outputMetMomAcc.addParticle(metJet,opx,opy,opt);
1050  else if (std::abs(m_jetMomAcc.eta(jet))<2.5 || !(coreSoftTrk.value()(m_inputMetSourceAcc)&MissingETBase::Source::Region::Central)) {
1051  m_outputMetMomAcc.addParticle(metSoftTrk.value(),opx,opy,opt);
1052  // Don't need to add if already done for softclus.
1053  if(!metSoftClus) {
1054  if (metSoftTrkLinks) metSoftTrkLinks->emplace_back (jet, uniquefrac);
1055  }
1056 
1057  // Fill a vector with the soft constituents, if one was provided.
1058  // For now, only setting up to work with those corresponding to the jet constituents.
1059  // Can expand if needed.
1060  // This ignores overlap removal.
1061  //
1062  if(softConst && !m_doPFlow && !m_doSoftTruth) {
1063  std::vector<const IParticle*> jettracks;
1064  jet.getXAODObject().getAssociatedObjects<IParticle>(xAOD::JetAttribute::GhostTrack,jettracks);
1065  for(size_t iConst=0; iConst<jettracks.size(); ++iConst) {
1066  const TrackParticle* pTrk = static_cast<const TrackParticle*>(jettracks[iConst]);
1067  if (acceptTrack(pTrk,pv)) softConst->push_back(pTrk);
1068  }
1069  }
1070  }
1071  } // jet loop
1072 
1073  ATH_MSG_DEBUG("Number of selected jets: " << metJetWeights.size());
1074 
1075  if(metSoftTrk) {
1076  ATH_MSG_DEBUG("Number of softtrk jets: " << metSoftTrkLinks->size());
1077  }
1078 
1079  if(metSoftClus) {
1080  ATH_MSG_DEBUG("Number of softclus jets: " << metSoftClusLinks->size());
1081  }
1082 
1083  if(softConst) ATH_MSG_DEBUG(softConst->size() << " soft constituents from core term + jets");
1084 
1085  auto assoc = helper.getMiscAssociation();
1086  if(!assoc) return StatusCode::SUCCESS;
1087 
1088  if(metSoftTrk) {
1089  // supplement track term with any tracks associated to isolated muons
1090  // these are recorded in the misc association
1091  MissingETBase::Types::constvec_t trkvec = helper.overlapTrkVec(*assoc);
1092  double opx = trkvec.cpx();
1093  double opy = trkvec.cpy();
1094  double osumpt = trkvec.sumpt();
1095  ATH_MSG_VERBOSE( "Misc track px, py, sumpt = " << opx << ", " << opy << ", " << osumpt );
1096  m_outputMetMomAcc.addParticle(metSoftTrk.value(),opx,opy,osumpt);
1097  ATH_MSG_VERBOSE("Final soft track mpx " << m_outputMetMomAcc.mpx(metSoftTrk.value())
1098  << ", mpy " << m_outputMetMomAcc.mpy(metSoftTrk.value())
1099  << " sumet " << m_outputMetMomAcc.sumet(metSoftTrk.value()));
1100  }
1101 
1102  if(metSoftClus) {
1103  // supplement cluster term with any clusters associated to isolated e/gamma
1104  // these are recorded in the misc association
1105  float total_eloss(0.);
1106  MissingETBase::Types::bitmask_t muons_selflags(0);
1107  MissingETBase::Types::constvec_t calvec = helper.overlapCalVec(*assoc);
1108  double opx = calvec.cpx();
1109  double opy = calvec.cpy();
1110  double osumpt = calvec.sumpt();
1111  for(const auto objId : m_assocAcc.objects(*assoc)) {
1112  auto *obj = objId.getXAODObject();
1113  if (!obj || obj->type() != xAOD::Type::Muon) continue;
1114  const xAOD::Muon* mu_test(static_cast<const xAOD::Muon*>(obj));
1115  if(acc_originalObject.isAvailable(*mu_test)) mu_test = static_cast<const xAOD::Muon*>(*acc_originalObject(*mu_test));
1116  if(helper.objSelected(mu_test)) { //
1117  float mu_Eloss = acc_Eloss(*mu_test);
1118  switch(mu_test->energyLossType()) {
1119  case xAOD::Muon::Parametrized:
1120  case xAOD::Muon::MOP:
1121  case xAOD::Muon::Tail:
1122  case xAOD::Muon::FSRcandidate:
1123  case xAOD::Muon::NotIsolated:
1124  // For now don't differentiate the behaviour
1125  // Remove the Eloss assuming the parameterised value
1126  // The correction is limited to the selected clusters
1127  total_eloss += mu_Eloss;
1128  muons_selflags |= (1<<m_assocAcc.findIndex(*assoc,mu_test));
1129  }
1130  ATH_MSG_VERBOSE("Mu index " << mu_test->index());
1131  }
1132  }
1133  ATH_MSG_VERBOSE("Mu selection flags " << muons_selflags);
1134  ATH_MSG_VERBOSE("Mu total eloss " << total_eloss);
1135 
1137  // borrowed from overlapCalVec
1138  for(size_t iKey = 0; iKey < m_assocAcc.sizeCal(*assoc); iKey++) {
1139  bool selector = (muons_selflags & m_assocAcc.calkey(*assoc)[iKey]);
1140  ATH_MSG_VERBOSE("This key: " << m_assocAcc.calkey(*assoc)[iKey] << ", selector: " << selector
1141  << " this calvec E: " << m_assocAcc.calVec(*assoc,iKey).ce());
1142  if(selector) mu_calovec += m_assocAcc.calVec(*assoc,iKey);
1143  }
1144  if(m_muEloss){
1145  mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.ce()));
1146  opx += mu_calovec.cpx();
1147  opy += mu_calovec.cpy();
1148  osumpt += mu_calovec.sumpt();
1149  }
1150  ATH_MSG_VERBOSE("Mu cluster sumpt " << mu_calovec.sumpt());
1151 
1152  ATH_MSG_VERBOSE( "Misc cluster px, py, sumpt = " << opx << ", " << opy << ", " << osumpt );
1153  m_outputMetMomAcc.addParticle(metSoftClus.value(),opx,opy,osumpt);
1154  ATH_MSG_VERBOSE("Final soft cluster mpx " << m_outputMetMomAcc.mpx(metSoftClus.value())
1155  << ", mpy " << m_outputMetMomAcc.mpy(metSoftClus.value())
1156  << " sumet " << m_outputMetMomAcc.sumet(metSoftClus.value()));
1157  }
1158 
1159  return StatusCode::SUCCESS;
1160  }

◆ rebuildJetMET() [2/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( const std::string &  metJetKey,
const std::string &  metSoftKey,
columnar::MutableMetRange  metCont,
columnar::JetRange  jets,
columnar::Met1Range  metCoreCont,
columnar::MetAssociationHelper<>  helper,
bool  doJetJVT 
) const

Definition at line 461 of file ColumnarMETMaker.cxx.

468  {
469  ATH_MSG_VERBOSE("Rebuild jet term: " << metJetKey << " and soft term: " << softKey);
470 
471  columnar::MutableMetId metJet {m_outputMetMapAcc.fillMET (metCont, metJetKey, MissingETBase::Source::jet())};
472 
473  columnar::OptMet1Id coreSoftClus, coreSoftTrk;
474  columnar::OptMutableMetId metSoftClus, metSoftTrk;
475 
476  columnar::OptMet1Id coreSoft = m_inputMetMapAcc(metCoreCont,softKey+"Core");
477  if(!coreSoft) {
478  ATH_MSG_WARNING("Invalid soft term key supplied: " << softKey);
479  return StatusCode::FAILURE;
480  }
482  coreSoftTrk = coreSoft;
483 
484  metSoftTrk = m_outputMetMapAcc.fillMET (metCont, softKey, coreSoftTrk.value()(m_inputMetSourceAcc));
485  } else {
486  coreSoftClus = coreSoft;
487 
488  metSoftClus = m_outputMetMapAcc.fillMET (metCont, softKey, coreSoftClus.value()(m_inputMetSourceAcc));
489  }
490 
491  return rebuildJetMET(metJet, metCont, jets, helper,
492  metSoftClus, coreSoftClus,
493  metSoftTrk, coreSoftTrk,
494  doJetJVT);
495  }

◆ rebuildJetMET() [3/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( const std::string &  metJetKey,
const std::string &  metSoftKey,
xAOD::MissingETContainer metCont,
const xAOD::JetContainer jets,
const xAOD::MissingETContainer metCoreCont,
xAOD::MissingETAssociationHelper helper,
bool  doJetJVT 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 439 of file ColumnarMETMaker.cxx.

446  {
447  if (!metCont || !metCoreCont)
448  {
449  ATH_MSG_ERROR("No MET container provided");
450  return StatusCode::FAILURE;
451  }
452  if (!jets)
453  {
454  ATH_MSG_ERROR("No input collection provided for MET term \"" << metJetKey << "\" and soft term: " << softKey);
455  return StatusCode::FAILURE;
456  }
457 
458  return rebuildJetMET(metJetKey,softKey,columnar::MutableMetRange(*metCont),columnar::JetRange(*jets),columnar::Met1Range(*metCoreCont),m_assocAcc(helper),doJetJVT);
459  }

◆ rebuildJetMET() [4/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( const std::string &  metJetKey,
const std::string &  softClusKey,
const std::string &  softTrkKey,
columnar::MutableMetRange  metCont,
columnar::JetRange  jets,
columnar::Met1Range  metCoreCont,
columnar::MetAssociationHelper<>  helper,
bool  doJetJVT 
) const

Definition at line 568 of file ColumnarMETMaker.cxx.

576  {
577 
578  ATH_MSG_VERBOSE("Create Jet MET " << metJetKey);
579  columnar::MutableMetId metJet {m_outputMetMapAcc.fillMET (metCont, metJetKey, MissingETBase::Source::jet())};
580  ATH_MSG_VERBOSE("Create SoftClus MET " << softClusKey);
581  auto coreSoftClus = m_inputMetMapAcc(metCoreCont,softClusKey+"Core");
582  ATH_MSG_VERBOSE("Create SoftTrk MET " << softTrkKey);
583  auto coreSoftTrk = m_inputMetMapAcc(metCoreCont,softTrkKey+"Core");
584  if(!coreSoftClus) {
585  ATH_MSG_WARNING("Invalid cluster soft term key supplied: " << softClusKey);
586  return StatusCode::FAILURE;
587  }
588  if(!coreSoftTrk) {
589  ATH_MSG_WARNING("Invalid track soft term key supplied: " << softTrkKey);
590  return StatusCode::FAILURE;
591  }
592  columnar::MutableMetId metSoftClus {m_outputMetMapAcc.fillMET (metCont, softClusKey, m_inputMetSourceAcc(coreSoftClus.value()))};
593 
594  columnar::MutableMetId metSoftTrk {m_outputMetMapAcc.fillMET (metCont, softTrkKey, m_inputMetSourceAcc(coreSoftTrk.value()))};
595 
596  return rebuildJetMET(metJet, metCont, jets, helper,
597  metSoftClus, coreSoftClus,
598  metSoftTrk, coreSoftTrk,
599  doJetJVT);
600  }

◆ rebuildJetMET() [5/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( const std::string &  metJetKey,
const std::string &  softClusKey,
const std::string &  softTrkKey,
xAOD::MissingETContainer metCont,
const xAOD::JetContainer jets,
const xAOD::MissingETContainer metCoreCont,
xAOD::MissingETAssociationHelper helper,
bool  doJetJVT 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 545 of file ColumnarMETMaker.cxx.

553  {
554  if (!metCont)
555  {
556  ATH_MSG_ERROR("No MET container provided");
557  return StatusCode::FAILURE;
558  }
559  if (!jets)
560  {
561  ATH_MSG_ERROR("No input collection provided for MET term \"" << metJetKey << "\" and soft term: " << softClusKey << " and " << softTrkKey);
562  return StatusCode::FAILURE;
563  }
564 
565  return rebuildJetMET(metJetKey,softClusKey,softTrkKey,columnar::MutableMetRange(*metCont),columnar::JetRange(*jets),columnar::Met1Range(*metCoreCont),m_assocAcc(helper),doJetJVT);
566  }

◆ rebuildJetMET() [6/6]

StatusCode met::ColumnarMETMaker::rebuildJetMET ( xAOD::MissingET metJet,
const xAOD::JetContainer jets,
xAOD::MissingETAssociationHelper helper,
xAOD::MissingET metSoftClus,
const xAOD::MissingET coreSoftClus,
xAOD::MissingET metSoftTrk,
const xAOD::MissingET coreSoftTrk,
bool  doJetJVT,
bool  tracksForHardJets = false,
std::vector< const xAOD::IParticle * > *  softConst = 0 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 602 of file ColumnarMETMaker.cxx.

611  {
612  if(!metJet || !jets) {
613  ATH_MSG_ERROR("Invalid pointer supplied for "
614  << "MET (" << metJet << ") or "
615  << "jet collection (" << jets << ").");
616  return StatusCode::FAILURE;
617  }
618  columnar::MutableMetRange metCont (*static_cast<MissingETContainer*>(metJet->container()));
620  columnar::OptMutableMetId(metSoftClus), columnar::OptMet1Id (coreSoftClus),
621  columnar::OptMutableMetId(metSoftTrk), columnar::OptMet1Id (coreSoftTrk),
622  doJetJVT, tracksForHardJets, softConst);
623  }

◆ rebuildMET() [1/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( columnar::MutableMetId  met,
columnar::ParticleRange  collection,
columnar::MetAssociationHelper<>  helper,
MissingETBase::UsageHandler::Policy  objScale 
) const

Definition at line 299 of file ColumnarMETMaker.cxx.

303  {
305  bool removeOverlap = true;
306  if (m_inputObjTypeAcc(collection) == xAOD::Type::Muon) {
308  removeOverlap = false;
309  }
312  return rebuildMET(met,collection,helper,p,removeOverlap,objScale);
313  }

◆ rebuildMET() [2/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( columnar::MutableMetId  met,
columnar::ParticleRange  collection,
columnar::MetAssociationHelper<>  helper,
MissingETBase::UsageHandler::Policy  p,
bool  removeOverlap,
MissingETBase::UsageHandler::Policy  objScale 
) const

Definition at line 331 of file ColumnarMETMaker.cxx.

336  {
337  if(helper.map().empty()) {
338  ATH_MSG_WARNING("Incomplete association map received. Cannot rebuild MET.");
339  ATH_MSG_WARNING("Note: ColumnarMETMaker should only be run on events containing at least one PV");
340  return StatusCode::SUCCESS;
341  }
342  ATH_MSG_VERBOSE("Building MET term " << met(m_outputMetNameAcc));
344 
345  if(collection.empty()) return StatusCode::SUCCESS;
346  columnar::MetHelpers::OriginalObjectHandle collectionOriginals(*this,collection);
347 
348  if(collectionOriginals.isShallowCopy() && collectionOriginals.originalInputs()) {
349  ATH_MSG_WARNING("Shallow copy provided without \"originalObjectLinks\" decoration! "
350  << "Overlap removal cannot be done. "
351  << "Will not compute this term.");
352  ATH_MSG_WARNING("Please apply xAOD::setOriginalObjectLink() from xAODBase/IParticleHelpers.h");
353  return StatusCode::SUCCESS;
354  }
355  ATH_MSG_VERBOSE("Original inputs? " << collectionOriginals.originalInputs());
356  for(const auto obj : collection) {
358  bool selected = false;
359  auto orig = collectionOriginals.getOriginal(obj);
360  auto assocs = helper.getAssociations(orig);
361  if(assocs.empty()) {
362  std::string message = "Object is not in association map. Did you make a deep copy but fail to set the \"originalObjectLinks\" decoration? "
363  "If not, Please apply xAOD::setOriginalObjectLink() from xAODBase/IParticleHelpers.h";
364  // Avoid warnings for leptons with pT below threshold for association map
367  } else {
369  }
370  // if this is an uncalibrated electron below the threshold, then we put it into the soft term
372  metWeights.emplace_back( obj, 0 );
373  message = "Missing an electron from the MET map. Included as a track in the soft term. pT: " + std::to_string(m_inputMomAcc.pt(obj)/1e3) + " GeV";
376  } else {
378  }
379  continue;
380  } else {
381  ATH_MSG_ERROR("Missing an object: " << m_inputObjTypeAcc(orig) << " pT: " << m_inputMomAcc.pt(obj)/1e3 << " GeV, may be duplicated in the soft term.");
382  }
383  }
384 
385  // If the object has already been selected and processed, ignore it.
386  if(helper.objSelected(orig)) continue;
387  selected = helper.selectIfNoOverlaps(orig,p) || !removeOverlap;
388  ATH_MSG_VERBOSE(m_inputObjTypeAcc(obj) << " (" << orig <<") with pt " << m_inputMomAcc.pt(obj)
389  << " is " << ( selected ? "non-" : "") << "overlapping");
390 
391  // Greedy photon options: set selection flags
393  for(auto assoc : assocs){
394  auto indices = m_assocAcc.overlapIndices(assoc,orig);
395  auto allObjects = m_assocAcc.objects(assoc);
396  for (size_t index : indices){
397  const xAOD::IParticle* thisObj = allObjects[index].getXAODObject();
398  if(!thisObj) continue;
399  if ((thisObj->type() == xAOD::Type::Jet && m_veryGreedyPhotons) ||
400  thisObj->type() == xAOD::Type::Electron)
401  helper.setObjSelectionFlag(assoc, thisObj, true);
402  }
403  }
404  }
405 
406  //Do special overlap removal for calo tagged muons
407  if(m_orCaloTaggedMuon && !removeOverlap && m_inputObjTypeAcc(orig)==xAOD::Type::Muon && m_inputMuonTypeAcc.getOptional(orig)==xAOD::Muon::CaloTagged) {
408  for (decltype(auto) assoc : assocs) {
409  auto ind = m_assocAcc.overlapIndices(assoc,orig);
410  auto allObjects = m_assocAcc.objects(assoc);
411  for (size_t indi = 0; indi < ind.size(); indi++) if (allObjects[ind[indi]]) {
412  if (allObjects[ind[indi]].isContainer<columnar::ContainerId::electron>()
413  && helper.objSelected(assoc, ind[indi])) {
414  selected = false;
415  break;
416  }
417  }
418  }
419  }
420  // Don't overlap remove muons, but flag the non-overlapping muons to take out their tracks from jets
421  // Removed eloss from here -- clusters already flagged.
422  // To be handled in rebuildJetMET
423  if(selected) {
425  ATH_MSG_VERBOSE("Add object with pt " << m_inputMomAcc.pt(obj));
427  } else {
428  MissingETBase::Types::constvec_t constvec = helper.getConstVec(obj,objScale);
429  ATH_MSG_VERBOSE("Add truth object with pt " << constvec.cpt());
430  m_outputMetMomAcc.addParticle (met, constvec.cpx(),constvec.cpy(),constvec.cpt());
431  }
432  metWeights.emplace_back( obj, 1. );
433  }
434  }
435  ATH_MSG_DEBUG("Built met term " << met(m_outputMetNameAcc) << ", with magnitude " << m_outputMetMomAcc.met(met));
436  return StatusCode::SUCCESS;
437  }

◆ rebuildMET() [3/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( const std::string &  metKey,
xAOD::Type::ObjectType  metType,
columnar::MutableMetRange  metCont,
columnar::ParticleRange  collection,
columnar::MetAssociationHelper<>  helper,
MissingETBase::UsageHandler::Policy  objScale 
) const

Definition at line 238 of file ColumnarMETMaker.cxx.

244  {
246  switch(metType) {
248  metSource = MissingETBase::Source::electron();
249  break;
250  case xAOD::Type::Photon:
251  metSource = MissingETBase::Source::photon();
252  break;
253  case xAOD::Type::Tau:
254  metSource = MissingETBase::Source::tau();
255  break;
256  case xAOD::Type::Muon:
257  metSource = MissingETBase::Source::muon();
258  break;
259  case xAOD::Type::Jet:
260  ATH_MSG_WARNING("Incorrect use of rebuildMET -- use rebuildJetMET for RefJet term");
261  return StatusCode::FAILURE;
262  default:
263  ATH_MSG_WARNING("Invalid object type provided: " << metType);
264  return StatusCode::FAILURE;
265  }
266 
267  columnar::MutableMetId met = m_outputMetMapAcc.fillMET (metCont, metKey, metSource);
268 
269  // If muon eloss corrections are required, create a new term to hold these if it doesn't already exist
270  if(metType==xAOD::Type::Muon && (m_muEloss || m_doSetMuonJetEMScale)) {
271  if (m_outputMetMapAcc.tryCreateIfMissing (metCont, "MuonEloss", MissingETBase::Source::Type::Muon | MissingETBase::Source::Category::Calo) != StatusCode::SUCCESS) {
272  ATH_MSG_ERROR("failed to create Muon Eloss MET term");
273  return StatusCode::FAILURE;
274  }
275  }
276 
277  return rebuildMET(met,collection,helper,objScale);
278  }

◆ rebuildMET() [4/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( const std::string &  metKey,
xAOD::Type::ObjectType  metType,
xAOD::MissingETContainer metCont,
const xAOD::IParticleContainer collection,
xAOD::MissingETAssociationHelper helper,
MissingETBase::UsageHandler::Policy  objScale 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 217 of file ColumnarMETMaker.cxx.

223  {
224  if (!metCont)
225  {
226  ATH_MSG_ERROR("No MET container provided");
227  return StatusCode::FAILURE;
228  }
229  if (!collection)
230  {
231  ATH_MSG_ERROR("No input collection provided for MET term \"" << metKey << "\"");
232  return StatusCode::FAILURE;
233  }
234 
235  return rebuildMET(metKey,metType,columnar::MutableMetRange (*metCont),columnar::ParticleRange (*collection),m_assocAcc(helper),objScale);
236  }

◆ rebuildMET() [5/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( xAOD::MissingET met,
const xAOD::IParticleContainer collection,
xAOD::MissingETAssociationHelper helper,
MissingETBase::UsageHandler::Policy  objScale 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 280 of file ColumnarMETMaker.cxx.

284  {
285  if (!met)
286  {
287  ATH_MSG_ERROR("No MET object provided");
288  return StatusCode::FAILURE;
289  }
290  if (!collection)
291  {
292  ATH_MSG_ERROR("No input collection provided for MET term \"" << met->name() << "\"");
293  return StatusCode::FAILURE;
294  }
295 
297  }

◆ rebuildMET() [6/6]

StatusCode met::ColumnarMETMaker::rebuildMET ( xAOD::MissingET met,
const xAOD::IParticleContainer collection,
xAOD::MissingETAssociationHelper helper,
MissingETBase::UsageHandler::Policy  p,
bool  removeOverlap,
MissingETBase::UsageHandler::Policy  objScale 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 315 of file ColumnarMETMaker.cxx.

320  {
321  if(!met || !collection) {
322  ATH_MSG_ERROR("Invalid pointer supplied for "
323  << "MET (" << met << ") or "
324  << "collection (" << collection << ").");
325  return StatusCode::FAILURE;
326  }
327 
328  return rebuildMET(columnar::MutableMetId(*met),columnar::ParticleRange (*collection),m_assocAcc(helper),p,removeOverlap,objScale);
329  }

◆ rebuildTrackMET() [1/4]

StatusCode met::ColumnarMETMaker::rebuildTrackMET ( columnar::MutableMetId  metJet,
columnar::MutableMetRange  metCont,
columnar::JetRange  jets,
columnar::MetAssociationHelper<>  helper,
columnar::MutableMetId  metSoftTrk,
columnar::Met1Id  coreSoftTrk,
bool  doJetJVT 
) const

Definition at line 1185 of file ColumnarMETMaker.cxx.

1191  {
1192  return rebuildJetMET(metJet,metCont,jets,helper,std::nullopt,nullptr,metSoftTrk,coreSoftTrk,doJetJVT,true);
1193  }

◆ rebuildTrackMET() [2/4]

StatusCode met::ColumnarMETMaker::rebuildTrackMET ( const std::string &  metJetKey,
const std::string &  softTrkKey,
columnar::MutableMetRange  metCont,
columnar::JetRange  jets,
columnar::Met1Range  metCoreCont,
columnar::MetAssociationHelper<>  helper,
bool  doJetJVT 
) const

Definition at line 519 of file ColumnarMETMaker.cxx.

526  {
527  ATH_MSG_VERBOSE("Rebuild jet term: " << metJetKey << " and soft term: " << softKey);
528 
530 
531  columnar::OptMet1Id coreSoft = m_inputMetMapAcc(metCoreCont,softKey+"Core");
532  if(!coreSoft) {
533  ATH_MSG_WARNING("Invalid soft term key supplied: " << softKey);
534  return StatusCode::FAILURE;
535  }
536  auto coreSoftTrk = coreSoft.value();
537 
538  columnar::MutableMetId metSoftTrk {m_outputMetMapAcc.fillMET (metCont, softKey, coreSoftTrk(m_inputMetSourceAcc))};
539 
540  return rebuildTrackMET(metJet, metCont, jets, helper,
541  metSoftTrk, coreSoftTrk,
542  doJetJVT);
543  }

◆ rebuildTrackMET() [3/4]

StatusCode met::ColumnarMETMaker::rebuildTrackMET ( const std::string &  metJetKey,
const std::string &  softTrkKey,
xAOD::MissingETContainer metCont,
const xAOD::JetContainer jets,
const xAOD::MissingETContainer metCoreCont,
xAOD::MissingETAssociationHelper helper,
bool  doJetJVT 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 497 of file ColumnarMETMaker.cxx.

504  {
505  if (!metCont)
506  {
507  ATH_MSG_ERROR("No MET container provided");
508  return StatusCode::FAILURE;
509  }
510  if (!jets)
511  {
512  ATH_MSG_ERROR("No input collection provided for MET term \"" << metJetKey << "\" and soft term: " << softKey);
513  return StatusCode::FAILURE;
514  }
515 
516  return rebuildTrackMET(metJetKey,softKey,columnar::MutableMetRange(*metCont),columnar::JetRange(*jets),columnar::Met1Range(*metCoreCont),m_assocAcc(helper),doJetJVT);
517  }

◆ rebuildTrackMET() [4/4]

StatusCode met::ColumnarMETMaker::rebuildTrackMET ( xAOD::MissingET metJet,
const xAOD::JetContainer jets,
xAOD::MissingETAssociationHelper helper,
xAOD::MissingET metSoftTrk,
const xAOD::MissingET coreSoftTrk,
bool  doJetJVT 
) const
finaloverridevirtual

Implements IMETMaker.

Definition at line 1162 of file ColumnarMETMaker.cxx.

1167  {
1168  if (!metJet) {
1169  ATH_MSG_ERROR("No MET object provided for track MET rebuilding");
1170  return StatusCode::FAILURE;
1171  }
1172  if (!metSoftTrk) {
1173  ATH_MSG_ERROR("No MET object provided for soft track MET rebuilding");
1174  return StatusCode::FAILURE;
1175  }
1176  if (!jets) {
1177  ATH_MSG_ERROR("No jet container provided for track MET rebuilding");
1178  return StatusCode::FAILURE;
1179  }
1180 
1181  columnar::MutableMetRange metCont (*static_cast<MissingETContainer*>(metJet->container()));
1182  return rebuildJetMET(columnar::MutableMetId(*metJet),metCont,columnar::JetRange(*jets),m_assocAcc(helper),std::nullopt,nullptr,columnar::MutableMetId(*metSoftTrk),coreSoftTrk,doJetJVT,true);
1183  }

◆ 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();
383  PBASE::renounce (h);
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  {
365  handlesArray.renounce();
366  }

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

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_acc_emf

columnar::JetAccessor<float> met::ColumnarMETMaker::m_acc_emf {*this, "EMFrac"}
private

Definition at line 307 of file ColumnarMETMaker.h.

◆ m_acc_jetRejectionDec

std::optional<columnar::JetAccessor<char> > met::ColumnarMETMaker::m_acc_jetRejectionDec
private

Definition at line 316 of file ColumnarMETMaker.h.

◆ m_acc_psf

columnar::JetAccessor<float> met::ColumnarMETMaker::m_acc_psf {*this, "PSFrac"}
private

Definition at line 308 of file ColumnarMETMaker.h.

◆ m_acc_sampleE

columnar::JetAccessor<std::vector<float> > met::ColumnarMETMaker::m_acc_sampleE {*this, "EnergyPerSampling"}
private

Definition at line 312 of file ColumnarMETMaker.h.

◆ m_acc_trkN

columnar::JetAccessor<std::vector<int> > met::ColumnarMETMaker::m_acc_trkN {*this, "NumTrkPt500"}
private

Definition at line 310 of file ColumnarMETMaker.h.

◆ m_acc_trksumpt

columnar::JetAccessor<std::vector<float> > met::ColumnarMETMaker::m_acc_trksumpt {*this, "SumPtTrkPt500"}
private

Definition at line 311 of file ColumnarMETMaker.h.

◆ m_acc_width

columnar::JetAccessor<float> met::ColumnarMETMaker::m_acc_width {*this, "Width"}
private

Definition at line 309 of file ColumnarMETMaker.h.

◆ m_assocAcc

columnar::MetAssocationAccessors met::ColumnarMETMaker::m_assocAcc {*this}
private

Definition at line 296 of file ColumnarMETMaker.h.

◆ m_CenJetPtCut

double met::ColumnarMETMaker::m_CenJetPtCut {}
private

Definition at line 235 of file ColumnarMETMaker.h.

◆ m_columnarDoJetJVT

Gaudi::Property<bool> met::ColumnarMETMaker::m_columnarDoJetJVT {this, "columnarDoJetJVT", false}
private

Definition at line 328 of file ColumnarMETMaker.h.

◆ m_columnarJetKey

Gaudi::Property<std::string> met::ColumnarMETMaker::m_columnarJetKey {this, "columnarJetKey", ""}
private

Definition at line 326 of file ColumnarMETMaker.h.

◆ m_columnarOperation

Gaudi::Property<unsigned> met::ColumnarMETMaker::m_columnarOperation {this, "columnarOperation", 0}
private

Definition at line 323 of file ColumnarMETMaker.h.

◆ m_columnarParticleType

Gaudi::Property<unsigned> met::ColumnarMETMaker::m_columnarParticleType {this, "columnarParticleType", 0}
private

Definition at line 325 of file ColumnarMETMaker.h.

◆ m_columnarSoftClusKey

Gaudi::Property<std::string> met::ColumnarMETMaker::m_columnarSoftClusKey {this, "columnarSoftClusKey", ""}
private

Definition at line 327 of file ColumnarMETMaker.h.

◆ m_columnarTermName

Gaudi::Property<std::string> met::ColumnarMETMaker::m_columnarTermName {this, "columnarTermName", ""}
private

Definition at line 324 of file ColumnarMETMaker.h.

◆ m_customCenJetPtCut

double met::ColumnarMETMaker::m_customCenJetPtCut {}
private

Definition at line 244 of file ColumnarMETMaker.h.

◆ m_customFwdJetPtCut

double met::ColumnarMETMaker::m_customFwdJetPtCut {}
private

Definition at line 244 of file ColumnarMETMaker.h.

◆ m_customJvtPtMax

double met::ColumnarMETMaker::m_customJvtPtMax {}
private

Definition at line 245 of file ColumnarMETMaker.h.

◆ m_customJvtWP

std::string met::ColumnarMETMaker::m_customJvtWP
private

Definition at line 246 of file ColumnarMETMaker.h.

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

bool met::ColumnarMETMaker::m_doConstJet {}
private

Definition at line 250 of file ColumnarMETMaker.h.

◆ m_doPFlow

bool met::ColumnarMETMaker::m_doPFlow {}
private

Definition at line 248 of file ColumnarMETMaker.h.

◆ m_doRemoveElecTrks

bool met::ColumnarMETMaker::m_doRemoveElecTrks {}
private

Definition at line 254 of file ColumnarMETMaker.h.

◆ m_doRemoveElecTrksEM

bool met::ColumnarMETMaker::m_doRemoveElecTrksEM {}
private

Definition at line 255 of file ColumnarMETMaker.h.

◆ m_doRemoveMuonJets

bool met::ColumnarMETMaker::m_doRemoveMuonJets {}
private

Definition at line 253 of file ColumnarMETMaker.h.

◆ m_doSetMuonJetEMScale

bool met::ColumnarMETMaker::m_doSetMuonJetEMScale {}
private

Definition at line 256 of file ColumnarMETMaker.h.

◆ m_doSoftTruth

bool met::ColumnarMETMaker::m_doSoftTruth {}
private

Definition at line 249 of file ColumnarMETMaker.h.

◆ m_electronPtAcc

columnar::ElectronAccessor<columnar::RetypeColumn<double,float> > met::ColumnarMETMaker::m_electronPtAcc {*this, "pt"}
private

Definition at line 321 of file ColumnarMETMaker.h.

◆ m_electronsHandle

columnar::ElectronAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_electronsHandle {*this, "Electrons"}
private

Definition at line 283 of file ColumnarMETMaker.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_FwdJetPtCut

double met::ColumnarMETMaker::m_FwdJetPtCut {}
private

Definition at line 235 of file ColumnarMETMaker.h.

◆ m_greedyPhotons

bool met::ColumnarMETMaker::m_greedyPhotons {}
private

Definition at line 261 of file ColumnarMETMaker.h.

◆ m_inputMetHandle

columnar::Met1Accessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_inputMetHandle {*this, "METCore"}
private

Definition at line 279 of file ColumnarMETMaker.h.

◆ m_inputMetMapAcc

columnar::MetHelpers::MapLookupAccessor<columnar::ContainerId::met1> met::ColumnarMETMaker::m_inputMetMapAcc {*this}
private

Definition at line 292 of file ColumnarMETMaker.h.

◆ m_inputMetMomAcc

columnar::MetHelpers::MetMomentumAccessors<columnar::ContainerId::met1> met::ColumnarMETMaker::m_inputMetMomAcc {*this}
private

Definition at line 293 of file ColumnarMETMaker.h.

◆ m_inputMetNameAcc

columnar::Met1Accessor<std::string> met::ColumnarMETMaker::m_inputMetNameAcc {*this, "name"}
private

Definition at line 291 of file ColumnarMETMaker.h.

◆ m_inputMetSourceAcc

columnar::Met1Accessor<MissingETBase::Types::bitmask_t> met::ColumnarMETMaker::m_inputMetSourceAcc {*this, "source"}
private

Definition at line 294 of file ColumnarMETMaker.h.

◆ m_inputMomAcc

columnar::MetHelpers::InputMomentumAccessors met::ColumnarMETMaker::m_inputMomAcc {*this}
private

Definition at line 298 of file ColumnarMETMaker.h.

◆ m_inputMuonTypeAcc

columnar::ParticleAccessor<columnar::RetypeColumn<xAOD::Muon::MuonType,std::uint16_t> > met::ColumnarMETMaker::m_inputMuonTypeAcc {*this, "muonType", {.isOptional = true}}
private

Definition at line 301 of file ColumnarMETMaker.h.

◆ m_inputObjTypeAcc

columnar::MetHelpers::ObjectTypeAccessor<columnar::ContainerId::particle> met::ColumnarMETMaker::m_inputObjTypeAcc {*this, "objectType"}
private

Definition at line 302 of file ColumnarMETMaker.h.

◆ m_inputPreselectionAcc

std::optional<columnar::ParticleAccessor<char> > met::ColumnarMETMaker::m_inputPreselectionAcc
private

Definition at line 300 of file ColumnarMETMaker.h.

◆ m_inputPreselectionName

Gaudi::Property<std::string> met::ColumnarMETMaker::m_inputPreselectionName {this, "inputPreselection", ""}
private

Definition at line 299 of file ColumnarMETMaker.h.

◆ m_jetConstitScaleMom

std::string met::ColumnarMETMaker::m_jetConstitScaleMom
private

Definition at line 231 of file ColumnarMETMaker.h.

◆ m_jetConstitScaleMomAcc

std::optional<columnar::MetHelpers::InputMomentumAccessors<columnar::ContainerId::jet> > met::ColumnarMETMaker::m_jetConstitScaleMomAcc
private

Definition at line 314 of file ColumnarMETMaker.h.

◆ m_jetConstitScaleMomFixedAcc

std::optional<columnar::MetHelpers::InputMomentumAccessors<columnar::ContainerId::jet> > met::ColumnarMETMaker::m_jetConstitScaleMomFixedAcc
private

Definition at line 315 of file ColumnarMETMaker.h.

◆ m_jetCorrectPhi

bool met::ColumnarMETMaker::m_jetCorrectPhi {}
private

Definition at line 228 of file ColumnarMETMaker.h.

◆ m_jetEmfMuOlap

double met::ColumnarMETMaker::m_jetEmfMuOlap {}
private

Definition at line 268 of file ColumnarMETMaker.h.

◆ m_JetEtaForw

double met::ColumnarMETMaker::m_JetEtaForw {}
private

Definition at line 238 of file ColumnarMETMaker.h.

◆ m_JetEtaMax

double met::ColumnarMETMaker::m_JetEtaMax {}
private

Definition at line 237 of file ColumnarMETMaker.h.

◆ m_jetJvtMomentName

std::string met::ColumnarMETMaker::m_jetJvtMomentName
private

Definition at line 232 of file ColumnarMETMaker.h.

◆ m_jetMinEfrac

double met::ColumnarMETMaker::m_jetMinEfrac {}
private

Definition at line 229 of file ColumnarMETMaker.h.

◆ m_jetMinWeightedPt

double met::ColumnarMETMaker::m_jetMinWeightedPt {}
private

Definition at line 230 of file ColumnarMETMaker.h.

◆ m_jetMomAcc

columnar::MetHelpers::InputMomentumAccessors<columnar::ContainerId::jet> met::ColumnarMETMaker::m_jetMomAcc {*this}
private

Definition at line 306 of file ColumnarMETMaker.h.

◆ m_jetOutputMetWeightDecRegular

columnar::MetHelpers::ObjectWeightDecorator<columnar::ContainerId::mutableMet,columnar::ContainerId::jet> met::ColumnarMETMaker::m_jetOutputMetWeightDecRegular {*this, "", true}
private

Definition at line 318 of file ColumnarMETMaker.h.

◆ m_jetOutputMetWeightDecSoft

columnar::MetHelpers::ObjectWeightDecorator<columnar::ContainerId::mutableMet,columnar::ContainerId::jet> met::ColumnarMETMaker::m_jetOutputMetWeightDecSoft {*this, "Soft", false}
private

Definition at line 319 of file ColumnarMETMaker.h.

◆ m_jetPsEMuOlap

double met::ColumnarMETMaker::m_jetPsEMuOlap {}
private

Definition at line 267 of file ColumnarMETMaker.h.

◆ m_jetRejectionDec

std::string met::ColumnarMETMaker::m_jetRejectionDec
private

Definition at line 233 of file ColumnarMETMaker.h.

◆ m_jetSelection

std::string met::ColumnarMETMaker::m_jetSelection
private

Definition at line 240 of file ColumnarMETMaker.h.

◆ m_jetsHandle

columnar::JetAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_jetsHandle {*this, "Jets"}
private

Definition at line 282 of file ColumnarMETMaker.h.

◆ m_jetTrkNMuOlap

int met::ColumnarMETMaker::m_jetTrkNMuOlap {}
private

Definition at line 265 of file ColumnarMETMaker.h.

◆ m_jetTrkPtMuPt

double met::ColumnarMETMaker::m_jetTrkPtMuPt {}
private

Definition at line 269 of file ColumnarMETMaker.h.

◆ m_jetWidthMuOlap

double met::ColumnarMETMaker::m_jetWidthMuOlap {}
private

Definition at line 266 of file ColumnarMETMaker.h.

◆ m_JvtCut

double met::ColumnarMETMaker::m_JvtCut {}
private

Definition at line 236 of file ColumnarMETMaker.h.

◆ m_JvtPtMax

double met::ColumnarMETMaker::m_JvtPtMax {}
private

Definition at line 236 of file ColumnarMETMaker.h.

◆ m_JvtTool

ToolHandle<IAsgSelectionTool> met::ColumnarMETMaker::m_JvtTool
private

Definition at line 273 of file ColumnarMETMaker.h.

◆ m_JvtWP

std::string met::ColumnarMETMaker::m_JvtWP
private

Definition at line 241 of file ColumnarMETMaker.h.

◆ m_metAssocHandle

columnar::ColumnAccessor<columnar::ContainerId::metAssociation,columnar::ObjectColumn> met::ColumnarMETMaker::m_metAssocHandle {*this, "MetAssoc"}
private

Definition at line 280 of file ColumnarMETMaker.h.

◆ m_missObjWarningPtThreshold

float met::ColumnarMETMaker::m_missObjWarningPtThreshold
private

Definition at line 226 of file ColumnarMETMaker.h.

◆ m_muEloss

bool met::ColumnarMETMaker::m_muEloss {}
private

Definition at line 259 of file ColumnarMETMaker.h.

◆ m_muIDPTJetPtRatioMuOlap

double met::ColumnarMETMaker::m_muIDPTJetPtRatioMuOlap {}
private

Definition at line 270 of file ColumnarMETMaker.h.

◆ m_muonsHandle

columnar::MuonAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_muonsHandle {*this, "Muons"}
private

Definition at line 285 of file ColumnarMETMaker.h.

◆ m_orCaloTaggedMuon

bool met::ColumnarMETMaker::m_orCaloTaggedMuon {}
private

Definition at line 260 of file ColumnarMETMaker.h.

◆ m_outputMetHandle

columnar::MutableMetAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_outputMetHandle {*this, "OutputMET"}
private

Definition at line 278 of file ColumnarMETMaker.h.

◆ m_outputMetMapAcc

columnar::MetHelpers::MapLookupAccessor<columnar::ContainerId::mutableMet> met::ColumnarMETMaker::m_outputMetMapAcc {*this}
private

Definition at line 288 of file ColumnarMETMaker.h.

◆ m_outputMetMomAcc

columnar::MetHelpers::MetMomentumAccessors<columnar::ContainerId::mutableMet> met::ColumnarMETMaker::m_outputMetMomAcc {*this}
private

Definition at line 289 of file ColumnarMETMaker.h.

◆ m_outputMetNameAcc

columnar::MutableMetAccessor<std::string> met::ColumnarMETMaker::m_outputMetNameAcc {*this, "name"}
private

Definition at line 287 of file ColumnarMETMaker.h.

◆ m_outputMetWeightDecRegular

columnar::MetHelpers::ObjectWeightDecorator met::ColumnarMETMaker::m_outputMetWeightDecRegular {*this, "", true}
private

Definition at line 304 of file ColumnarMETMaker.h.

◆ m_particlesHandle

columnar::ParticleAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_particlesHandle {*this, "Particles"}
private

Definition at line 281 of file ColumnarMETMaker.h.

◆ m_photonsHandle

columnar::PhotonAccessor<columnar::ObjectColumn> met::ColumnarMETMaker::m_photonsHandle {*this, "Photons"}
private

Definition at line 284 of file ColumnarMETMaker.h.

◆ m_PVkey

SG::ReadHandleKey<xAOD::VertexContainer> met::ColumnarMETMaker::m_PVkey
private

Definition at line 223 of file ColumnarMETMaker.h.

◆ m_skipSystematicJetSelection

bool met::ColumnarMETMaker::m_skipSystematicJetSelection {}
private

Definition at line 257 of file ColumnarMETMaker.h.

◆ m_trkseltool

ToolHandle<InDet::IInDetTrackSelectionTool> met::ColumnarMETMaker::m_trkseltool
private

Definition at line 272 of file ColumnarMETMaker.h.

◆ m_useGhostMuons

bool met::ColumnarMETMaker::m_useGhostMuons {}
private

Definition at line 252 of file ColumnarMETMaker.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_veryGreedyPhotons

bool met::ColumnarMETMaker::m_veryGreedyPhotons {}
private

Definition at line 262 of file ColumnarMETMaker.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:
met::ColumnarMETMaker::m_columnarJetKey
Gaudi::Property< std::string > m_columnarJetKey
Definition: ColumnarMETMaker.h:326
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
met::ColumnarMETMaker::m_orCaloTaggedMuon
bool m_orCaloTaggedMuon
Definition: ColumnarMETMaker.h:260
columnar::ContainerId::muon
Definition: MuonDef.h:19
MissingETContainer
Definition: Reconstruction/MissingETEvent/MissingETEvent/MissingETContainer.h:22
met::ColumnarMETMaker::markInvisible
virtual StatusCode markInvisible(const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont) const override final
Definition: ColumnarMETMaker.cxx:1196
met::ColumnarMETMaker::m_acc_psf
columnar::JetAccessor< float > m_acc_psf
Definition: ColumnarMETMaker.h:308
met::ColumnarMETMaker::m_jetConstitScaleMomFixedAcc
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomFixedAcc
Definition: ColumnarMETMaker.h:315
columnar::MetAssocationAccessors::objects
auto objects(AssocId assoc) const
Definition: MetAssociation.h:250
met::ColumnarMETMaker::m_jetWidthMuOlap
double m_jetWidthMuOlap
Definition: ColumnarMETMaker.h:266
columnar::MetAssocationAccessors::hasAlternateConstVec
bool hasAlternateConstVec(AssocId assoc) const
Definition: MetAssociation.h:293
met::ColumnarMETMaker::m_assocAcc
columnar::MetAssocationAccessors m_assocAcc
Definition: ColumnarMETMaker.h:296
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
met::ColumnarMETMaker::m_muIDPTJetPtRatioMuOlap
double m_muIDPTJetPtRatioMuOlap
Definition: ColumnarMETMaker.h:270
met::ColumnarMETMaker::m_particlesHandle
columnar::ParticleAccessor< columnar::ObjectColumn > m_particlesHandle
Definition: ColumnarMETMaker.h:281
MissingETBase::Source::muon
static Types::bitmask_t muon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed muons.
Definition: MissingETBase.h:250
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:407
met::ColumnarMETMaker::rebuildJetMET
virtual StatusCode rebuildJetMET(const std::string &metJetKey, const std::string &softClusKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
Definition: ColumnarMETMaker.cxx:545
MissingETBase::UsageHandler::PhysicsObject
@ PhysicsObject
Physics object based.
Definition: MissingETCompositionBase.h:187
met::ColumnarMETMaker::m_outputMetMapAcc
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::mutableMet > m_outputMetMapAcc
Definition: ColumnarMETMaker.h:288
MissingETBase::UsageHandler::TruthParticle
@ TruthParticle
Truth particle based.
Definition: MissingETCompositionBase.h:189
met::ColumnarMETMaker::m_jetTrkPtMuPt
double m_jetTrkPtMuPt
Definition: ColumnarMETMaker.h:269
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
met::ColumnarMETMaker::m_acc_trkN
columnar::JetAccessor< std::vector< int > > m_acc_trkN
Definition: ColumnarMETMaker.h:310
make_coralServer_rep.opt
opt
Definition: make_coralServer_rep.py:19
met::ColumnarMETMaker::m_inputMetHandle
columnar::Met1Accessor< columnar::ObjectColumn > m_inputMetHandle
Definition: ColumnarMETMaker.h:279
columnar::MetHelpers::OriginalObjectHandle
Definition: MetInput.h:71
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
index
Definition: index.py:1
met::ColumnarMETMaker::m_outputMetHandle
columnar::MutableMetAccessor< columnar::ObjectColumn > m_outputMetHandle
Definition: ColumnarMETMaker.h:278
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
MissingETBase::Source::electron
static Types::bitmask_t electron(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed electrons.
Definition: MissingETBase.h:229
columnar::getXAODObject
xAODContainer & getXAODObject() const noexcept
Definition: ObjectRange.h:147
MissingETBase::Source::track
static Types::bitmask_t track(Region reg=Region::FullAcceptance)
Bit mask for MET term from Track signal objects.
Definition: MissingETBase.h:291
met::ColumnarMETMaker::m_inputMetMomAcc
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::met1 > m_inputMetMomAcc
Definition: ColumnarMETMaker.h:293
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
columnar::MetHelpers::InputMomentumAccessors::px
float px(ObjectId< CI, CM > object) const
Definition: MetInput.h:58
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::IParticle::type
virtual Type::ObjectType type() const =0
The type of the object as a simple enumeration.
columnar::MetHelpers::ObjectWeightHandle
a "handle" for recording object weights via ObjectWeightDecorator
Definition: MetOutput.h:70
met::ColumnarMETMaker::m_outputMetMomAcc
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::mutableMet > m_outputMetMomAcc
Definition: ColumnarMETMaker.h:289
MissingETBase::Source::Region::Central
@ Central
Indicator for MET contribution from the central region.
met::ColumnarMETMaker::m_greedyPhotons
bool m_greedyPhotons
Definition: ColumnarMETMaker.h:261
met::ColumnarMETMaker::m_columnarSoftClusKey
Gaudi::Property< std::string > m_columnarSoftClusKey
Definition: ColumnarMETMaker.h:327
athena.value
value
Definition: athena.py:124
met::ColumnarMETMaker::m_customJvtPtMax
double m_customJvtPtMax
Definition: ColumnarMETMaker.h:245
met::ColumnarMETMaker::m_trkseltool
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkseltool
Definition: ColumnarMETMaker.h:272
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
columnar::OptObjectId
a class representing a single optional object (electron, muons, etc.)
Definition: ContainerId.h:177
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
met::ColumnarMETMaker::m_doRemoveElecTrks
bool m_doRemoveElecTrks
Definition: ColumnarMETMaker.h:254
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
met::ColumnarMETMaker::m_doPFlow
bool m_doPFlow
Definition: ColumnarMETMaker.h:248
MissingETBase::Types::bitmask_t
uint64_t bitmask_t
Type for status word bit mask.
Definition: MissingETBase.h:39
met::ColumnarMETMaker::m_acc_trksumpt
columnar::JetAccessor< std::vector< float > > m_acc_trksumpt
Definition: ColumnarMETMaker.h:311
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
MissingETBase::UsageHandler::OnlyCluster
@ OnlyCluster
CaloCluster based only.
Definition: MissingETCompositionBase.h:184
MissingETBase::Source::isTrackTerm
static bool isTrackTerm(Types::bitmask_t bits, Region reg=Region::FullAcceptance)
Definition: MissingETBase.h:404
met::ColumnarMETMaker::m_outputMetNameAcc
columnar::MutableMetAccessor< std::string > m_outputMetNameAcc
Definition: ColumnarMETMaker.h:287
columnar::ObjectRange
a class representing a continuous sequence of objects (a.k.a. a container)
Definition: ContainerId.h:175
columnar::MetHelpers::MetMomentumAccessors::met
double met(ObjectId< CI, CM > object) const
Definition: MetHelpers.h:183
ReweightUtils.message
message
Definition: ReweightUtils.py:15
met::ColumnarMETMaker::m_jetMinWeightedPt
double m_jetMinWeightedPt
Definition: ColumnarMETMaker.h:230
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
columnar::ContainerId::electron
Definition: EgammaDef.h:21
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
xAOD::MissingETAssociation_v1::ConstVec
Vector sum of constituents for subtractive overlap removal.
Definition: MissingETAssociation_v1.h:32
MissingETBase::Source::Type::Muon
@ Muon
Indicator for the MET term from reconstructed or MC truth muons.
met::ColumnarMETMaker::m_inputMetMapAcc
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::met1 > m_inputMetMapAcc
Definition: ColumnarMETMaker.h:292
met::ColumnarMETMaker::m_columnarParticleType
Gaudi::Property< unsigned > m_columnarParticleType
Definition: ColumnarMETMaker.h:325
met::ColumnarMETMaker::rebuildTrackMET
virtual StatusCode rebuildTrackMET(const std::string &metJetKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
Definition: ColumnarMETMaker.cxx:497
met::ColumnarMETMaker::m_jetOutputMetWeightDecSoft
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jet > m_jetOutputMetWeightDecSoft
Definition: ColumnarMETMaker.h:319
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
columnar::MetAssocationAccessors::calkey
decltype(auto) calkey(AssocId assoc) const
Definition: MetAssociation.h:188
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
met::ColumnarMETMaker::m_jetSelection
std::string m_jetSelection
Definition: ColumnarMETMaker.h:240
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
met::ColumnarMETMaker::m_acc_sampleE
columnar::JetAccessor< std::vector< float > > m_acc_sampleE
Definition: ColumnarMETMaker.h:312
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:115
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
met::ColumnarMETMaker::m_muEloss
bool m_muEloss
Definition: ColumnarMETMaker.h:259
met::ColumnarMETMaker::m_JvtPtMax
double m_JvtPtMax
Definition: ColumnarMETMaker.h:236
met::ColumnarMETMaker::m_CenJetPtCut
double m_CenJetPtCut
Definition: ColumnarMETMaker.h:235
met::ColumnarMETMaker::m_jetConstitScaleMom
std::string m_jetConstitScaleMom
Definition: ColumnarMETMaker.h:231
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
columnar::MetAssocationAccessors::isMisc
ColumnAccessor< ContainerId::metAssociation, char, CM > isMisc
Definition: MetAssociation.h:166
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
met::ColumnarMETMaker::m_customCenJetPtCut
double m_customCenJetPtCut
Definition: ColumnarMETMaker.h:244
met::ColumnarMETMaker::getPV
const xAOD::Vertex * getPV() const
Definition: ColumnarMETMaker.cxx:1225
met::ColumnarMETMaker::m_jetsHandle
columnar::JetAccessor< columnar::ObjectColumn > m_jetsHandle
Definition: ColumnarMETMaker.h:282
met::ColumnarMETMaker::m_inputMetSourceAcc
columnar::Met1Accessor< MissingETBase::Types::bitmask_t > m_inputMetSourceAcc
Definition: ColumnarMETMaker.h:294
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
met::ColumnarMETMaker::m_acc_jetRejectionDec
std::optional< columnar::JetAccessor< char > > m_acc_jetRejectionDec
Definition: ColumnarMETMaker.h:316
met::ColumnarMETMaker::m_inputMomAcc
columnar::MetHelpers::InputMomentumAccessors m_inputMomAcc
Definition: ColumnarMETMaker.h:298
met
Definition: IMETSignificance.h:24
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
asg::AsgToolConfig
an object that can create a AsgTool
Definition: AsgToolConfig.h:22
met::ColumnarMETMaker::m_missObjWarningPtThreshold
float m_missObjWarningPtThreshold
Definition: ColumnarMETMaker.h:226
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
columnar::MetAssocationAccessors::calVec
ConstVec calVec(AssocId assoc, const xAOD::IParticle *pPart) const
Definition: MetAssociation.h:194
columnar::ColumnarModeXAOD::isXAOD
static constexpr bool isXAOD
Whether this is the xAOD mode.
Definition: ColumnarDef.h:17
met::ColumnarMETMaker::m_acc_emf
columnar::JetAccessor< float > m_acc_emf
Definition: ColumnarMETMaker.h:307
columnar::MetHelpers::MetMomentumAccessors::sumet
AccessorTemplate< CI, float, CAM, CM > sumet
Definition: MetHelpers.h:181
MissingETBase::Source::jet
static Types::bitmask_t jet(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed jets.
Definition: MissingETBase.h:257
columnar::MetHelpers::MetMomentumAccessors::mpy
AccessorTemplate< CI, float, CAM, CM > mpy
Definition: MetHelpers.h:180
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
xAOD::MissingETAssociation_v1::ConstVec::cpy
float cpy() const
Returns .
xAOD::MissingETAssociation_v1::ConstVec::sumpt
float sumpt() const
Returns sum of component pt.
met::ColumnarMETMaker::m_electronPtAcc
columnar::ElectronAccessor< columnar::RetypeColumn< double, float > > m_electronPtAcc
Definition: ColumnarMETMaker.h:321
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
MissingETBase::Source::Category::Calo
@ Calo
Indicator for MET terms reconstructed from calorimeter signals alone.
met::ColumnarMETMaker::m_inputMuonTypeAcc
columnar::ParticleAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > m_inputMuonTypeAcc
Definition: ColumnarMETMaker.h:301
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
columnar::MetHelpers::MetMomentumAccessors::mpx
AccessorTemplate< CI, float, CAM, CM > mpx
Definition: MetHelpers.h:179
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
met::ColumnarMETMaker::m_PVkey
SG::ReadHandleKey< xAOD::VertexContainer > m_PVkey
Definition: ColumnarMETMaker.h:223
met::ColumnarMETMaker::m_veryGreedyPhotons
bool m_veryGreedyPhotons
Definition: ColumnarMETMaker.h:262
columnar::MetAssocationAccessors::jetTrkVec
ConstVec jetTrkVec(AssocId assoc) const
Definition: MetAssociation.h:244
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
compute_lumi.denom
denom
Definition: compute_lumi.py:76
met::ColumnarMETMaker::m_outputMetWeightDecRegular
columnar::MetHelpers::ObjectWeightDecorator m_outputMetWeightDecRegular
Definition: ColumnarMETMaker.h:304
met::ColumnarMETMaker::m_jetCorrectPhi
bool m_jetCorrectPhi
Definition: ColumnarMETMaker.h:228
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
met::ColumnarMETMaker::m_columnarTermName
Gaudi::Property< std::string > m_columnarTermName
Definition: ColumnarMETMaker.h:324
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
met::ColumnarMETMaker::m_skipSystematicJetSelection
bool m_skipSystematicJetSelection
Definition: ColumnarMETMaker.h:257
MissingETBase::UsageHandler::Policy
Policy
Policies on usage checks.
Definition: MissingETCompositionBase.h:182
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ContainerId.h:176
met::ColumnarMETMaker::m_columnarDoJetJVT
Gaudi::Property< bool > m_columnarDoJetJVT
Definition: ColumnarMETMaker.h:328
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
met::ColumnarMETMaker::m_inputPreselectionAcc
std::optional< columnar::ParticleAccessor< char > > m_inputPreselectionAcc
Definition: ColumnarMETMaker.h:300
met::ColumnarMETMaker::m_jetEmfMuOlap
double m_jetEmfMuOlap
Definition: ColumnarMETMaker.h:268
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MissingETBase::Source::tau
static Types::bitmask_t tau(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed tau leptons.
Definition: MissingETBase.h:243
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
met::ColumnarMETMaker::m_columnarOperation
Gaudi::Property< unsigned > m_columnarOperation
Definition: ColumnarMETMaker.h:323
columnar::MetAssocationAccessors::overlapIndices
auto overlapIndices(AssocId assoc) const
Definition: MetAssociation.h:253
MissingETBase::UsageHandler::OnlyTrack
@ OnlyTrack
Track based only.
Definition: MissingETCompositionBase.h:185
columnar::MetAssocationAccessors::sizeCal
std::size_t sizeCal(AssocId assoc) const
Definition: MetAssociation.h:185
met::ColumnarMETMaker::m_jetRejectionDec
std::string m_jetRejectionDec
Definition: ColumnarMETMaker.h:233
met::ColumnarMETMaker::m_useGhostMuons
bool m_useGhostMuons
Definition: ColumnarMETMaker.h:252
xAOD::Electron_v1
Definition: Electron_v1.h:34
columnar::MetAssocationAccessors::trkVec
ConstVec trkVec(AssocId assoc, const xAOD::IParticle *pPart) const
Definition: MetAssociation.h:221
MissingETBase::UsageHandler::ParticleFlow
@ ParticleFlow
Particle Flow Object based.
Definition: MissingETCompositionBase.h:188
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
met::ColumnarMETMaker::m_jetPsEMuOlap
double m_jetPsEMuOlap
Definition: ColumnarMETMaker.h:267
Muon
struct TBPatternUnitContext Muon
columnar::MetHelpers::MetMomentumAccessors::addMet
void addMet(ObjectId< CI, CM > met, const MetMomentumAccessors< CI2, CM > &momAcc, ObjectId< CI2, CM > metSource) const requires(isMutable)
Definition: MetHelpers.h:197
met::ColumnarMETMaker::m_jetMomAcc
columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > m_jetMomAcc
Definition: ColumnarMETMaker.h:306
met::ColumnarMETMaker::m_inputPreselectionName
Gaudi::Property< std::string > m_inputPreselectionName
Definition: ColumnarMETMaker.h:299
columnar::MetAssocationAccessors::findIndex
std::size_t findIndex(AssocId assoc, const xAOD::IParticle *pPart) const
Definition: MetAssociation.h:271
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
DeMoScan.index
string index
Definition: DeMoScan.py:362
columnar::MetHelpers::InputMomentumAccessors::eta
ColumnAccessor< CI, RetypeColumn< double, float >, CM > eta
Definition: MetInput.h:49
a
TList * a
Definition: liststreamerinfos.cxx:10
python.selector.AtlRunQuerySelectorLhcOlc.selector
selector
Definition: AtlRunQuerySelectorLhcOlc.py:610
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
met::ColumnarMETMaker::m_inputObjTypeAcc
columnar::MetHelpers::ObjectTypeAccessor< columnar::ContainerId::particle > m_inputObjTypeAcc
Definition: ColumnarMETMaker.h:302
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::MissingETAssociation_v1::ConstVec::cpt
float cpt() const
Returns .
Definition: MissingETAssociation_v1.cxx:85
met::ColumnarMETMaker::m_JvtTool
ToolHandle< IAsgSelectionTool > m_JvtTool
Definition: ColumnarMETMaker.h:273
met::ColumnarMETMaker::m_JetEtaMax
double m_JetEtaMax
Definition: ColumnarMETMaker.h:237
met::ColumnarMETMaker::rebuildMET
virtual StatusCode rebuildMET(const std::string &metKey, xAOD::Type::ObjectType metType, xAOD::MissingETContainer *metCont, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale) const override final
Definition: ColumnarMETMaker.cxx:217
met::ColumnarMETMaker::m_doSoftTruth
bool m_doSoftTruth
Definition: ColumnarMETMaker.h:249
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
met::ColumnarMETMaker::m_doSetMuonJetEMScale
bool m_doSetMuonJetEMScale
Definition: ColumnarMETMaker.h:256
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
python.changerun.pv
pv
Definition: changerun.py:79
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
xAODType::Tau
@ Tau
The object is a tau (jet)
Definition: ObjectType.h:49
MissingETBase::Source::photon
static Types::bitmask_t photon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed photons.
Definition: MissingETBase.h:236
columnar::MetAssocationAccessors::getAlternateConstVec
xAOD::JetFourMom_t getAlternateConstVec(AssocId assoc) const
Definition: MetAssociation.h:299
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
met::ColumnarMETMaker::m_jetConstitScaleMomAcc
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomAcc
Definition: ColumnarMETMaker.h:314
SG::AuxElement::container
const SG::AuxVectorData * container() const
Return the container holding this element.
xAOD::MissingETAssociation_v1::ConstVec::cpx
float cpx() const
Returns .
columnar::MetHelpers::InputMomentumAccessors::py
float py(ObjectId< CI, CM > object) const
Definition: MetInput.h:60
met::ColumnarMETMaker::m_metAssocHandle
columnar::ColumnAccessor< columnar::ContainerId::metAssociation, columnar::ObjectColumn > m_metAssocHandle
Definition: ColumnarMETMaker.h:280
xAODType::ObjectType
ObjectType
Type of objects that have a representation in the xAOD EDM.
Definition: ObjectType.h:32
columnar::MetHelpers::InputMomentumAccessors::pt
ColumnAccessor< CI, RetypeColumn< double, float >, CM > pt
Definition: MetInput.h:48
met::ColumnarMETMaker::m_jetJvtMomentName
std::string m_jetJvtMomentName
Definition: ColumnarMETMaker.h:232
xAOD::JetAttribute::GhostTrack
@ GhostTrack
Definition: JetAttributes.h:252
python.PyAthena.obj
obj
Definition: PyAthena.py:132
met::ColumnarMETMaker::m_doRemoveElecTrksEM
bool m_doRemoveElecTrksEM
Definition: ColumnarMETMaker.h:255
SG::DataProxy
Definition: DataProxy.h:45
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
met::ColumnarMETMaker::acceptTrack
bool acceptTrack(const xAOD::TrackParticle *trk, const xAOD::Vertex *vx) const
Definition: ColumnarMETMaker.cxx:1220
met::ColumnarMETMaker::m_FwdJetPtCut
double m_FwdJetPtCut
Definition: ColumnarMETMaker.h:235
met::ColumnarMETMaker::m_customFwdJetPtCut
double m_customFwdJetPtCut
Definition: ColumnarMETMaker.h:244
xAOD::MissingETAssociation_v1::ConstVec::ce
float ce() const
Returns .
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
met::ColumnarMETMaker::m_doRemoveMuonJets
bool m_doRemoveMuonJets
Definition: ColumnarMETMaker.h:253
columnar::MetHelpers::MetMomentumAccessors::addParticle
void addParticle(ObjectId< CI, CM > met, float px, float py, float pt) const requires(isMutable)
Definition: MetHelpers.h:188
met::ColumnarMETMaker::m_jetTrkNMuOlap
int m_jetTrkNMuOlap
Definition: ColumnarMETMaker.h:265
met::ColumnarMETMaker::m_jetMinEfrac
double m_jetMinEfrac
Definition: ColumnarMETMaker.h:229
met::ColumnarMETMaker::m_customJvtWP
std::string m_customJvtWP
Definition: ColumnarMETMaker.h:246
met::ColumnarMETMaker::m_acc_width
columnar::JetAccessor< float > m_acc_width
Definition: ColumnarMETMaker.h:309
fitman.k
k
Definition: fitman.py:528
met::ColumnarMETMaker::m_JvtWP
std::string m_JvtWP
Definition: ColumnarMETMaker.h:241
met::ColumnarMETMaker::m_jetOutputMetWeightDecRegular
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jet > m_jetOutputMetWeightDecRegular
Definition: ColumnarMETMaker.h:318
met::ColumnarMETMaker::m_doConstJet
bool m_doConstJet
Definition: ColumnarMETMaker.h:250
met::ColumnarMETMaker::m_JetEtaForw
double m_JetEtaForw
Definition: ColumnarMETMaker.h:238