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

AthReentrantAlgorithm to associate Flow Elements (FEs) to Muons. More...

#include <PFMuonFlowElementAssoc.h>

Inheritance diagram for PFMuonFlowElementAssoc:
Collaboration diagram for PFMuonFlowElementAssoc:

Public Member Functions

 PFMuonFlowElementAssoc (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~PFMuonFlowElementAssoc ()
virtual StatusCode initialize ()
virtual StatusCode execute (const EventContext &ctx) const
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

std::pair< double, double > doMuonCellMatching (bool &isCellMatched, const xAOD::CaloCluster &FECluster, const xAOD::CaloCluster &muonCluster) const
 Function that flags whether the FE cluster has any cell that is also in the muon list of cells.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< xAOD::MuonContainerm_muonReadHandleKey {this,"MuonContainer","Muons","ReadHandleKey for Muons"}
SG::ReadHandleKey< xAOD::FlowElementContainerm_neutralFEReadHandleKey {this,"JetEtMissNeutralFlowElementContainer","JetETMissNeutralParticleFlowObjects","ReadHandleKey for neutral FlowElements"}
SG::ReadHandleKey< xAOD::FlowElementContainerm_chargedFEReadHandleKey {this,"JetEtMissChargedFlowElementContainer","JetETMissChargedParticleFlowObjects","ReadHandleKey for charged FlowElements"}
SG::WriteDecorHandleKey< xAOD::MuonContainerm_muonChargedFEWriteHandleKey {this,"MuonContainer_chargedFELinks",m_muonReadHandleKey,"chargedFELinks","WriteHandleKey for muon link to charged FlowElements"}
 Write key for adding charged Flow Element link decorations to muons.
SG::WriteDecorHandleKey< xAOD::FlowElementContainerm_ChargedFE_energy_match_muonWriteHandleKey {this,"FlowElementContainer_ChargedFE_ennergy_matched_muon",m_chargedFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"}
 Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of FlowElementContainer - EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::FlowElementContainerm_ChargedFEmuonWriteHandleKey {this,"JetETMissChargedFlowElements_FE_MuonLinks",m_chargedFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for Charged Flow Elements coupled to muons"}
 Write key for adding Muon link decorations to charged Flow Elements.
SG::WriteDecorHandleKey< xAOD::MuonContainerm_muonNeutralFEWriteHandleKey {this,"MuonContainer_neutralFELinks",m_muonReadHandleKey,"neutralFELinks","WriteHandleKey for muon links to neutral FlowElement"}
 Write key for adding neutral Flow Element link decorations to muons.
SG::WriteDecorHandleKey< xAOD::FlowElementContainerm_NeutralFEmuonWriteHandleKey {this,"JetETMissNeutralFlowElementContainer_FE_MuonLinks",m_neutralFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for neutral flow Elements to Muons"}
 Write key for adding Muon link decorations to neutral Flow Elements.
SG::WriteDecorHandleKey< xAOD::FlowElementContainerm_NeutralFE_efrac_match_muonWriteHandleKey {this,"FlowElementContainer_FE_efrac_matched_muon",m_neutralFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"}
 Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of FlowElementContainer - EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::MuonContainerm_muonNeutralFE_muon_efrac_WriteDecorHandleKey {this,"MuonContainer_muon_efrac_matched_FE",m_muonReadHandleKey,"muon_efrac_matched_FE","WriteHandleKey for the fraction of muon cluster energy used to match to neutral Flow Elements"}
 Write key for adding fraction of Muon cluster energy used in cell matching decoration of MuonContainer -EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::FlowElementContainerm_NeutralFEmuon_nMatches_WriteDecorHandleKey {this,"FlowElementContainer_nMatchedMuons",m_neutralFEReadHandleKey,"FE_nMatchedMuons","WriteHandleKey for the number of muons matched to a given neutral flow element"}
 Write key to count number of muons matched to a given neutral FE - EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::MuonContainerm_muon_ClusterInfo_deltaR_WriteDecorHandleKey {this,"MuonContainer_ClusterInfo_deltaR",m_muonReadHandleKey,"ClusterInfo_deltaR","WriteHandleKey for the delta R between the muon and it's associated calocluster"}
 Write key to measure dR between calo clusters and the muon -EXPERIMENTAL.
SG::ReadDecorHandleKey< xAOD::CaloClusterContainerm_ClustCollectionLinkKey {this,"ElementLinkName", "MuonClusterCollection.constituentClusterLinks"}
Gaudi::Property< bool > m_LinkNeutralFEClusters {this,"LinkNeutralFEClusters",false,"Toggle usage of linkage of Neutral FlowElements - false by default (EXPERIMENTAL)"}
 Gaudi Property to configure linkage of Neutral Flow Elements to Muon clusters (EXPERIMENTAL - default = False/OFF)
Gaudi::Property< bool > m_useMuonTopoClusters {this,"useMuonTopoClusters",false,"Toggle usage of linker of muon associated topoclusters to flow elements - false by default (EXPERIMENTAL)"}
 (EXPERIMENTAL) Gaudi Property to configure linkage of Neutral FEs to TopoClusters associated to Muons.
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

AthReentrantAlgorithm to associate Flow Elements (FEs) to Muons.

Associates tracks from charged flow elements to Muons only (otherwise links to NULL)

Definition at line 29 of file PFMuonFlowElementAssoc.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PFMuonFlowElementAssoc()

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

Definition at line 25 of file PFMuonFlowElementAssoc.cxx.

25 :
26 AthReentrantAlgorithm(name, pSvcLocator) {
27 // Declare the decoration keys
28}

◆ ~PFMuonFlowElementAssoc()

PFMuonFlowElementAssoc::~PFMuonFlowElementAssoc ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ doMuonCellMatching()

std::pair< double, double > PFMuonFlowElementAssoc::doMuonCellMatching ( bool & isCellMatched,
const xAOD::CaloCluster & FECluster,
const xAOD::CaloCluster & muonCluster ) const
private

Function that flags whether the FE cluster has any cell that is also in the muon list of cells.

If so the function sets isCellMatched to true and returns non-zero values of the sum of matched energy in the FE and muon clusters.

Definition at line 325 of file PFMuonFlowElementAssoc.cxx.

326 {
327
328 const CaloClusterCellLink* FECellLinks = FECluster.getCellLinks();
329 if (!FECellLinks && !m_useMuonTopoClusters) {
330 ATH_MSG_WARNING("Flow Element CaloCluster CaloClusterCellLink is nullptr");
331 return std::make_pair(0.0,0.0);
332 }
333
334 const CaloClusterCellLink* muonCellLinks = muonCluster.getCellLinks();
335 if (!muonCellLinks) {
336 ATH_MSG_WARNING("This Muon calo cluster does not have any cells associated to it");
337 return std::make_pair(0.0,0.0);
338 }
339
340 //sum of energy of FE cells that are matched
341 double FE_matchedCellEnergy = 0;
342 //sum of energy of muon cells that are matched
343 double muon_matchedCellEnergy = 0;
344
345 for (auto thisFECell : *FECellLinks){
346 Identifier FECellID = thisFECell->ID();
347 for (auto thisMuonCell : *muonCellLinks){
348 Identifier muonCellID = thisMuonCell->ID();
349 if (muonCellID == FECellID){
350 isCellMatched = true;
351 FE_matchedCellEnergy += thisFECell->e();
352 muon_matchedCellEnergy += thisMuonCell->e();
353 }//if FE cell is also a muon cell
354 }//loop on muon cells
355 }//loop on FE cluster cells
356
357 return std::make_pair(FE_matchedCellEnergy,muon_matchedCellEnergy);
358
359}
#define ATH_MSG_WARNING(x)
Gaudi::Property< bool > m_useMuonTopoClusters
(EXPERIMENTAL) Gaudi Property to configure linkage of Neutral FEs to TopoClusters associated to Muons...
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode PFMuonFlowElementAssoc::execute ( const EventContext & ctx) const
virtual

not all muons have a track. catch the nullptrs in this case and skip

In short, this feature is an experimental linker between neutral FEs and Muons either by the following:
Case 1) Retrieve the CaloCluster(s) from the muon, and get any topocluster(s) associated to those, then link the topoclusters to the

neutral FEs Case 2) Retrieve the CaloCluster(s) from the muon then link to the neutral FEs

This code is switched using two switches:
m_LinkNeutralFEClusters (turns on the experimental feature)
m_useMuonTopoClusters (True= Case 1, False = Case 2)

Definition at line 61 of file PFMuonFlowElementAssoc.cxx.

61 {
62 // WriteDecorHandles for the charged/neutral Flow Elements and Muons
63 // Links a Muon that has a track to a charged flow element if possible
64
65 ATH_MSG_VERBOSE("Started execute step");
66
67 // Get container for muons
68 SG::WriteDecorHandle<xAOD::MuonContainer, std::vector<FlowElementLink_t>> muonChargedFEWriteDecorHandle(m_muonChargedFEWriteHandleKey,
69 ctx);
70 SG::WriteDecorHandle<xAOD::MuonContainer, std::vector<FlowElementLink_t>> muonNeutralFEWriteDecorHandle(m_muonNeutralFEWriteHandleKey,
71 ctx);
72 // get container for charged flow elements
73 SG::WriteDecorHandle<xAOD::FlowElementContainer, std::vector<MuonLink_t>> ChargedFEmuonWriteDecorHandle(m_ChargedFEmuonWriteHandleKey,
74 ctx);
75 SG::WriteDecorHandle<xAOD::FlowElementContainer, std::vector<MuonLink_t>> NeutralFEmuonWriteDecorHandle(m_NeutralFEmuonWriteHandleKey,
76 ctx);
77
78 // extra container handles between neutral FE cluster and Muon CaloCluster - these are all for studies based on neutral Flow Element
79 // matching - All of these handles are experimental
80 SG::WriteDecorHandle<xAOD::FlowElementContainer, std::vector<double>> NeutralFE_efrac_match_muonWriteDecorHandle(
82 SG::WriteDecorHandle<xAOD::MuonContainer, std::vector<double>> muonNeutralFE_muon_efrac_WriteDecorHandle(
84 SG::WriteDecorHandle<xAOD::FlowElementContainer, int> NeutralFEmuon_nMatches_WriteDecorHandle(
86 SG::WriteDecorHandle<xAOD::MuonContainer, double> muon_ClusterInfo_deltaR_WriteDecorHandle(
88
89 // store readhandles for muon and charged flow elements
90 SG::ReadHandle<xAOD::MuonContainer> muonReadHandle(m_muonReadHandleKey, ctx); // readhandle for muon
91 SG::ReadHandle<xAOD::FlowElementContainer> ChargedFEReadHandle(m_chargedFEReadHandleKey, ctx);
92 SG::ReadHandle<xAOD::FlowElementContainer> NeutralFEReadHandle(m_neutralFEReadHandleKey, ctx);
93 SG::ReadDecorHandle<xAOD::CaloClusterContainer, std::vector<ElementLink<xAOD::CaloClusterContainer>>> acc_constClusterLinks(m_ClustCollectionLinkKey,ctx);
94 // now init some Flow element link containers
95 std::vector<std::vector<FlowElementLink_t>> muonChargedFEVec(muonReadHandle->size());
96 std::vector<std::vector<FlowElementLink_t>> muonNeutralFEVec(muonReadHandle->size());
97
98 // for neutral flow element studies
99 std::vector<std::vector<double>> muonNeutralFE_frac_cluster_energy_matched_Vec(muonReadHandle->size());
100
101 SG::WriteDecorHandle<xAOD::FlowElementContainer, std::vector<double> > chargedFE_energy_match_muonWriteHandle(m_ChargedFE_energy_match_muonWriteHandleKey,ctx);
102
103 // Loop over the Flow Elements
104
106 // CHARGED LOOP
108 for (const xAOD::FlowElement* FE : *ChargedFEmuonWriteDecorHandle) {
109 // get the track associated to the charged flow element (or at least the index of said track)
110 size_t FETrackIndex = FE->chargedObjects().at(0)->index();
111 // Init a vector of element links to muons
112 std::vector<MuonLink_t> FEMuonLinks;
113
114 //vector of fractions of FE cluster energy matched to muons
115 std::vector<double> FEMatchedClusterCellEnergies;
116 for (unsigned int counter = 0; counter < FE->otherObjects().size(); ++counter) FEMatchedClusterCellEnergies.push_back(0.0);
117
118 // loop over muons in container
119 for (const xAOD::Muon* muon : *muonChargedFEWriteDecorHandle) {
120 const xAOD::TrackParticle* muon_trk = muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);
122 if (!muon_trk) continue;
123 // skip muon matching if the following cases occur
124 int MuonType = muon->muonType();
125 int MuonAuthor = muon->author();
126 if (MuonType == xAOD::Muon::SiliconAssociatedForwardMuon) { // if muon is a forward muon, skip. Basically the tracks associated
127 // to this are the wrong type (InDetForwardTrackParticle instead of
128 // InDetTrackParticle), so the indices used would be wrong/generate
129 // spurious matches
130 ATH_MSG_DEBUG("Muon is identified as a forward muon, skipping");
131 continue;
132 }
133 if (MuonAuthor == xAOD::Muon::Author::STACO) { // remove muons primarily authored by STACO algorithm.
134 ATH_MSG_DEBUG("Muon is authored by STACO algorithm, skip");
135 continue;
136 }
137 size_t MuonTrkIndex = muon_trk->index();
138 if (MuonTrkIndex == FETrackIndex) {
139 // Add Muon element link to a vector
140 // index() is the unique index of the muon in the muon container
141 FEMuonLinks.emplace_back(*muonReadHandle, muon->index());
142 // Add flow element link to a vector
143 // index() is the unique index of the cFlowElement in the cFlowElementcontaine
144 muonChargedFEVec.at(muon->index()).emplace_back(*ChargedFEReadHandle, FE->index());
145 } // matching block
146
147 //if in mode where we can access calorimeter cells, then we will check if any of the clusters
148 //that this chargedFE has modified have calorimeter cells that match the muons calorimeter cells
149 //if so then we will decorate the charged FE with the fraction of cluster energy that was matched
151 const xAOD::CaloCluster* muonCluster = muon->cluster();
152 //these clusters are expected to be nullptr sometimes
153 if (!muonCluster) continue;
154 unsigned int counter = 0;
155 for (auto thisCluster : FE->otherObjects()){
156 const xAOD::CaloCluster* thisCaloCluster = dynamic_cast<const xAOD::CaloCluster*>(thisCluster);
157 bool isCellMatched = false;
158 std::pair <double,double> FEAndMuonMatchedCellEnergy = this->doMuonCellMatching(isCellMatched, *thisCaloCluster,*muonCluster);
159 FEMatchedClusterCellEnergies[counter] += FEAndMuonMatchedCellEnergy.first;
160 counter++;
161 }//loop over associated calorimeter clusters
162 }
163 }// end of muon loop
164
165 chargedFE_energy_match_muonWriteHandle(*FE) = FEMatchedClusterCellEnergies;
166
167 // Add vector of muon element links as decoration to FlowElement container
168 ChargedFEmuonWriteDecorHandle(*FE) = FEMuonLinks;
169 } // end of charged Flow Element loop
170
172 // Loop over Neutral FlowElements
174
184 ATH_MSG_VERBOSE("Experimental: Cluster Linkers between neutral FEs and Muons are used");
185 for (const xAOD::FlowElement* FE : *NeutralFEmuonWriteDecorHandle) {
186 int nMatchedFE = 0;
187 // get the index of the cluster corresponding to the Neutral FlowElements
188 ATH_MSG_DEBUG("P1");
189 ATH_MSG_DEBUG("FE with e, eta and phi" << FE->e() << ", " << FE->eta() << " and " << FE->phi());
190 const xAOD::IParticle* otherObject = FE->otherObjects().at(0);
191 //This is expected to happen for low energy FE - sometimes the linked cluster has E < 0 and
192 //is thinned away in the AOD
193 if (!otherObject){
194 ATH_MSG_DEBUG("No linked cluster for Neutral FE with E, eta and phi" << FE->e() << ", " << FE->eta() << " and " << FE->phi());
195 continue;
196 }
197 size_t FEclusterindex = otherObject->index();
198
199 // FE->otherObjects returns a vector of IParticles. We only want the first one
200 const xAOD::IParticle* FE_Iparticle = FE->otherObjects().at(0);
201
202 // dynamic cast to CaloCluster
203 const xAOD::CaloCluster* FE_cluster = dynamic_cast<const xAOD::CaloCluster*>(FE_Iparticle); // cast to CaloCluster
204
205 // debug for Negative energy cluster
206
207 double cluster_E = FE_cluster->p4().E();
208 bool neg_E_cluster = (cluster_E < 0.0);
209
210 // design the vector of ElementLinks
211 std::vector<MuonLink_t> FEMuonLinks;
212 std::vector<double> FE_efrac_clustermatch;
213 std::vector<double> Muon_efrac_clustermatch;
214 for (const xAOD::Muon* muon : *muonNeutralFEWriteDecorHandle) {
215 // Retrieve the ElementLink vector of clusters
216 const xAOD::CaloCluster* cluster = muon->cluster();
217 // de-ref the element link to retrieve the pointer to the original object
218 // check if the ElementLink is valid
219 if (!cluster) {
220 ATH_MSG_DEBUG("Muon has an invalid link to cluster");
221 continue;
222 }
224 // get the linker to the topo clusters
225 const std::vector<ElementLink<xAOD::CaloClusterContainer>>& linksToTopoClusters = acc_constClusterLinks(*cluster);
226 for (const ElementLink<xAOD::CaloClusterContainer>& TopoClusterLink : linksToTopoClusters) {
227 //This is expected to happen for low energy cluster - sometimes the linked cluster has E < 0 and
228 //is thinned away in the AOD
229 if (!TopoClusterLink.isValid()) {
230 ATH_MSG_DEBUG("Muon Calo cluster's TopoCluster link not found, skip");
231 continue;
232 }
233 const xAOD::CaloCluster* MuonTopoCluster = *TopoClusterLink; // de-ref the link to get the topo-cluster
234 size_t MuonTopoCluster_index = MuonTopoCluster->index();
235 if (MuonTopoCluster_index == FEclusterindex) {
236 // Add Muon element link to a vector
237 // index() is the unique index of the muon in the muon container
238 FEMuonLinks.emplace_back(*muonReadHandle, muon->index());
239 // index() is the unique index of the cFlowElement in the cFlowElementcontaine
240 muonNeutralFEVec.at(muon->index()).emplace_back(*NeutralFEReadHandle, FE->index());
241 ATH_MSG_VERBOSE("Got a match between NFE and Muon");
242 nMatchedFE++; // count number of matches between FE and muons
243 if (neg_E_cluster) ATH_MSG_ERROR("Muon cluster matched to negative E topocluster from FE");
244 } // check block of index matching
245 } // end of loop over element links
246 } // end of TopoCluster specific block
247 else { // case when we don't use Topoclusters, just match the caloclusters to the flow element
248 // if we don't match topoclusters, do something more complex:
249 // Retrieve cells in both the FE cluster and muon cluster
250 // Define the link as where at least one calo cell is shared between the FE cluster and the Muon Cluster
251
252 bool isCellMatched = false;
253 std::pair<double,double> FEAndMuonMatchedCellEnergy = this->doMuonCellMatching(isCellMatched, *FE_cluster,*cluster);
254
255 double FE_sum_matched_cellEnergy = FEAndMuonMatchedCellEnergy.first;
256 double Muon_sum_matched_cellEnergy = FEAndMuonMatchedCellEnergy.second;
257
258 double frac_FE_cluster_energy_matched = 0;
259 // retrieve total cluster energy from the FE cluster
260 double tot_FE_cluster_energy = FE_cluster->e();
261 if (tot_FE_cluster_energy != 0) { // ! div 0
262 frac_FE_cluster_energy_matched = FE_sum_matched_cellEnergy / tot_FE_cluster_energy;
263 }
264 double tot_muon_cluster_energy = cluster->e();
265 double frac_muon_cluster_energy_matched = 0;
266 if (tot_muon_cluster_energy != 0) {
267 frac_muon_cluster_energy_matched = Muon_sum_matched_cellEnergy / tot_muon_cluster_energy;
268 }
269 if (frac_FE_cluster_energy_matched > 0) {
270 ATH_MSG_VERBOSE("Fraction of FE cluster energy used in match: " << frac_FE_cluster_energy_matched << ", ismatched? "
271 << isCellMatched << "");
272 ATH_MSG_VERBOSE("Numerator and denominator are " << FE_sum_matched_cellEnergy << " and " << tot_FE_cluster_energy);
273 ATH_MSG_VERBOSE("Fraction of Muon cluster energy used in match: " << frac_muon_cluster_energy_matched << "");
274 }
275
276 if (isCellMatched) { // cell matched => Link the two objects.
277 // Add Muon element link to a vector
278 // index() is the unique index of the muon in the muon container
279 FEMuonLinks.emplace_back(*muonReadHandle, muon->index());
280 // index() is the unique index of the nFlowElement in the nFlowElementcontainer
281 muonNeutralFEVec.at(muon->index()).emplace_back(*NeutralFEReadHandle, FE->index());
282 // save the energy fraction used in the cluster matching - mostly for debug/extension studies
283 FE_efrac_clustermatch.push_back(frac_FE_cluster_energy_matched); // fraction of FE cluster energy matched
284 muonNeutralFE_frac_cluster_energy_matched_Vec.at(muon->index())
285 .push_back(frac_muon_cluster_energy_matched); // fraction of Muon cluster energy matched
286 nMatchedFE++; // count number of matches incrementally
287 if (neg_E_cluster) { ATH_MSG_ERROR("Muon cluster matched to negative E topocluster from FE"); }
288 }
289
290 } // end of calocluster specific block
291 // loop over caloclusters
292 } // loop over muons
293 NeutralFEmuon_nMatches_WriteDecorHandle(*FE) = nMatchedFE;
294 NeutralFEmuonWriteDecorHandle(*FE) = FEMuonLinks;
295 NeutralFE_efrac_match_muonWriteDecorHandle(*FE) = FE_efrac_clustermatch;
296 } // loop over neutral FE
297 } // end of the Gaudi check block
298
300 // WRITE OUTPUT: ADD HANDLES TO MUON CONTAINERS
302 // Add the vectors of the Flow Element Links as decoations to the muon container
303 for (const xAOD::Muon* muon : *muonChargedFEWriteDecorHandle) {
304 muonChargedFEWriteDecorHandle(*muon) = muonChargedFEVec.at(muon->index());
305 } // end of muon loop
306 if (m_LinkNeutralFEClusters) { // Experimental
307 for (const xAOD::Muon* muon : *muonNeutralFEWriteDecorHandle) {
308 if (!muonNeutralFEVec.empty()) {
309 muonNeutralFEWriteDecorHandle(*muon) = muonNeutralFEVec.at(muon->index());
310 muonNeutralFE_muon_efrac_WriteDecorHandle(*muon) = muonNeutralFE_frac_cluster_energy_matched_Vec.at(muon->index());
311 }
312 // For debug of the muon clusters used, add also: dR between caloclusters and number of caloclusters associated to each muon.
313 // retrieve element link again to cluster
314 // use elem link to retrieve container
315 const xAOD::CaloCluster* MuonCluster = muon->cluster();
316 // retrieve the vector of delta R between muon and its associated calo cluster.
317 muon_ClusterInfo_deltaR_WriteDecorHandle(*muon) = MuonCluster ? xAOD::P4Helpers::deltaR(MuonCluster,muon,false) : -1.;
318 }
319 } // end of experimental block
320 ATH_MSG_VERBOSE("Execute completed successfully");
321
322 return StatusCode::SUCCESS;
323}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
SG::WriteDecorHandleKey< xAOD::FlowElementContainer > m_ChargedFE_energy_match_muonWriteHandleKey
Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of Flow...
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonNeutralFE_muon_efrac_WriteDecorHandleKey
Write key for adding fraction of Muon cluster energy used in cell matching decoration of MuonContaine...
SG::WriteDecorHandleKey< xAOD::FlowElementContainer > m_NeutralFEmuon_nMatches_WriteDecorHandleKey
Write key to count number of muons matched to a given neutral FE - EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muon_ClusterInfo_deltaR_WriteDecorHandleKey
Write key to measure dR between calo clusters and the muon -EXPERIMENTAL.
SG::WriteDecorHandleKey< xAOD::FlowElementContainer > m_NeutralFE_efrac_match_muonWriteHandleKey
Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of Flow...
std::pair< double, double > doMuonCellMatching(bool &isCellMatched, const xAOD::CaloCluster &FECluster, const xAOD::CaloCluster &muonCluster) const
Function that flags whether the FE cluster has any cell that is also in the muon list of cells.
SG::ReadDecorHandleKey< xAOD::CaloClusterContainer > m_ClustCollectionLinkKey
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonNeutralFEWriteHandleKey
Write key for adding neutral Flow Element link decorations to muons.
SG::WriteDecorHandleKey< xAOD::FlowElementContainer > m_NeutralFEmuonWriteHandleKey
Write key for adding Muon link decorations to neutral Flow Elements.
SG::ReadHandleKey< xAOD::FlowElementContainer > m_neutralFEReadHandleKey
SG::WriteDecorHandleKey< xAOD::FlowElementContainer > m_ChargedFEmuonWriteHandleKey
Write key for adding Muon link decorations to charged Flow Elements.
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonChargedFEWriteHandleKey
Write key for adding charged Flow Element link decorations to muons.
SG::ReadHandleKey< xAOD::FlowElementContainer > m_chargedFEReadHandleKey
Gaudi::Property< bool > m_LinkNeutralFEClusters
Gaudi Property to configure linkage of Neutral Flow Elements to Muon clusters (EXPERIMENTAL - default...
SG::ReadHandleKey< xAOD::MuonContainer > m_muonReadHandleKey
size_t index() const
Return the index of this element within its container.
virtual double e() const
The total energy of the particle.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
FlowElement_v1 FlowElement
Definition of the current "pfo version".
Definition FlowElement.h:16
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version:

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

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

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ initialize()

StatusCode PFMuonFlowElementAssoc::initialize ( )
virtual

Definition at line 33 of file PFMuonFlowElementAssoc.cxx.

33 {
34 ATH_MSG_VERBOSE("Initializing " << name() << "...");
35
36 // Initialise the decoration keys
44
45 // init the experimental keys
49
50 // init ReadHandleKeys
51 ATH_CHECK(m_muonReadHandleKey.initialize());
54
55 ATH_MSG_VERBOSE("Initialization completed successfully");
56
57 return StatusCode::SUCCESS;
58}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ isClonable()

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

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

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_ChargedFE_energy_match_muonWriteHandleKey

SG::WriteDecorHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_ChargedFE_energy_match_muonWriteHandleKey {this,"FlowElementContainer_ChargedFE_ennergy_matched_muon",m_chargedFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"}
private

Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of FlowElementContainer - EXPERIMENTAL.

Definition at line 61 of file PFMuonFlowElementAssoc.h.

61{this,"FlowElementContainer_ChargedFE_ennergy_matched_muon",m_chargedFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"};

◆ m_ChargedFEmuonWriteHandleKey

SG::WriteDecorHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_ChargedFEmuonWriteHandleKey {this,"JetETMissChargedFlowElements_FE_MuonLinks",m_chargedFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for Charged Flow Elements coupled to muons"}
private

Write key for adding Muon link decorations to charged Flow Elements.

Definition at line 65 of file PFMuonFlowElementAssoc.h.

65{this,"JetETMissChargedFlowElements_FE_MuonLinks",m_chargedFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for Charged Flow Elements coupled to muons"};

◆ m_chargedFEReadHandleKey

SG::ReadHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_chargedFEReadHandleKey {this,"JetEtMissChargedFlowElementContainer","JetETMissChargedParticleFlowObjects","ReadHandleKey for charged FlowElements"}
private

Definition at line 55 of file PFMuonFlowElementAssoc.h.

55{this,"JetEtMissChargedFlowElementContainer","JetETMissChargedParticleFlowObjects","ReadHandleKey for charged FlowElements"};

◆ m_ClustCollectionLinkKey

SG::ReadDecorHandleKey<xAOD::CaloClusterContainer> PFMuonFlowElementAssoc::m_ClustCollectionLinkKey {this,"ElementLinkName", "MuonClusterCollection.constituentClusterLinks"}
private

Definition at line 85 of file PFMuonFlowElementAssoc.h.

85{this,"ElementLinkName", "MuonClusterCollection.constituentClusterLinks"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_LinkNeutralFEClusters

Gaudi::Property<bool> PFMuonFlowElementAssoc::m_LinkNeutralFEClusters {this,"LinkNeutralFEClusters",false,"Toggle usage of linkage of Neutral FlowElements - false by default (EXPERIMENTAL)"}
private

Gaudi Property to configure linkage of Neutral Flow Elements to Muon clusters (EXPERIMENTAL - default = False/OFF)

Definition at line 88 of file PFMuonFlowElementAssoc.h.

88{this,"LinkNeutralFEClusters",false,"Toggle usage of linkage of Neutral FlowElements - false by default (EXPERIMENTAL)"};

◆ m_muon_ClusterInfo_deltaR_WriteDecorHandleKey

SG::WriteDecorHandleKey<xAOD::MuonContainer> PFMuonFlowElementAssoc::m_muon_ClusterInfo_deltaR_WriteDecorHandleKey {this,"MuonContainer_ClusterInfo_deltaR",m_muonReadHandleKey,"ClusterInfo_deltaR","WriteHandleKey for the delta R between the muon and it's associated calocluster"}
private

Write key to measure dR between calo clusters and the muon -EXPERIMENTAL.

Definition at line 83 of file PFMuonFlowElementAssoc.h.

83{this,"MuonContainer_ClusterInfo_deltaR",m_muonReadHandleKey,"ClusterInfo_deltaR","WriteHandleKey for the delta R between the muon and it's associated calocluster"};

◆ m_muonChargedFEWriteHandleKey

SG::WriteDecorHandleKey<xAOD::MuonContainer> PFMuonFlowElementAssoc::m_muonChargedFEWriteHandleKey {this,"MuonContainer_chargedFELinks",m_muonReadHandleKey,"chargedFELinks","WriteHandleKey for muon link to charged FlowElements"}
private

Write key for adding charged Flow Element link decorations to muons.

Definition at line 58 of file PFMuonFlowElementAssoc.h.

58{this,"MuonContainer_chargedFELinks",m_muonReadHandleKey,"chargedFELinks","WriteHandleKey for muon link to charged FlowElements"};

◆ m_muonNeutralFE_muon_efrac_WriteDecorHandleKey

SG::WriteDecorHandleKey<xAOD::MuonContainer> PFMuonFlowElementAssoc::m_muonNeutralFE_muon_efrac_WriteDecorHandleKey {this,"MuonContainer_muon_efrac_matched_FE",m_muonReadHandleKey,"muon_efrac_matched_FE","WriteHandleKey for the fraction of muon cluster energy used to match to neutral Flow Elements"}
private

Write key for adding fraction of Muon cluster energy used in cell matching decoration of MuonContainer -EXPERIMENTAL.

Definition at line 77 of file PFMuonFlowElementAssoc.h.

77{this,"MuonContainer_muon_efrac_matched_FE",m_muonReadHandleKey,"muon_efrac_matched_FE","WriteHandleKey for the fraction of muon cluster energy used to match to neutral Flow Elements"};

◆ m_muonNeutralFEWriteHandleKey

SG::WriteDecorHandleKey<xAOD::MuonContainer> PFMuonFlowElementAssoc::m_muonNeutralFEWriteHandleKey {this,"MuonContainer_neutralFELinks",m_muonReadHandleKey,"neutralFELinks","WriteHandleKey for muon links to neutral FlowElement"}
private

Write key for adding neutral Flow Element link decorations to muons.

Definition at line 68 of file PFMuonFlowElementAssoc.h.

68{this,"MuonContainer_neutralFELinks",m_muonReadHandleKey,"neutralFELinks","WriteHandleKey for muon links to neutral FlowElement"};

◆ m_muonReadHandleKey

SG::ReadHandleKey<xAOD::MuonContainer> PFMuonFlowElementAssoc::m_muonReadHandleKey {this,"MuonContainer","Muons","ReadHandleKey for Muons"}
private

Definition at line 51 of file PFMuonFlowElementAssoc.h.

51{this,"MuonContainer","Muons","ReadHandleKey for Muons"};

◆ m_NeutralFE_efrac_match_muonWriteHandleKey

SG::WriteDecorHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_NeutralFE_efrac_match_muonWriteHandleKey {this,"FlowElementContainer_FE_efrac_matched_muon",m_neutralFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"}
private

Write key for adding fraction of nFlowElement cluster energy used in cell matching decoration of FlowElementContainer - EXPERIMENTAL.

Definition at line 74 of file PFMuonFlowElementAssoc.h.

74{this,"FlowElementContainer_FE_efrac_matched_muon",m_neutralFEReadHandleKey,"FE_efrac_matched_muon","WriteHandleKey for the fraction of neutral FlowElements cluster energy used to match to Muons"};

◆ m_NeutralFEmuon_nMatches_WriteDecorHandleKey

SG::WriteDecorHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_NeutralFEmuon_nMatches_WriteDecorHandleKey {this,"FlowElementContainer_nMatchedMuons",m_neutralFEReadHandleKey,"FE_nMatchedMuons","WriteHandleKey for the number of muons matched to a given neutral flow element"}
private

Write key to count number of muons matched to a given neutral FE - EXPERIMENTAL.

Definition at line 80 of file PFMuonFlowElementAssoc.h.

80{this,"FlowElementContainer_nMatchedMuons",m_neutralFEReadHandleKey,"FE_nMatchedMuons","WriteHandleKey for the number of muons matched to a given neutral flow element"};

◆ m_NeutralFEmuonWriteHandleKey

SG::WriteDecorHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_NeutralFEmuonWriteHandleKey {this,"JetETMissNeutralFlowElementContainer_FE_MuonLinks",m_neutralFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for neutral flow Elements to Muons"}
private

Write key for adding Muon link decorations to neutral Flow Elements.

Definition at line 71 of file PFMuonFlowElementAssoc.h.

71{this,"JetETMissNeutralFlowElementContainer_FE_MuonLinks",m_neutralFEReadHandleKey,"FE_MuonLinks","WriteHandleKey for neutral flow Elements to Muons"};

◆ m_neutralFEReadHandleKey

SG::ReadHandleKey<xAOD::FlowElementContainer> PFMuonFlowElementAssoc::m_neutralFEReadHandleKey {this,"JetEtMissNeutralFlowElementContainer","JetETMissNeutralParticleFlowObjects","ReadHandleKey for neutral FlowElements"}
private

Definition at line 53 of file PFMuonFlowElementAssoc.h.

53{this,"JetEtMissNeutralFlowElementContainer","JetETMissNeutralParticleFlowObjects","ReadHandleKey for neutral FlowElements"};

◆ m_useMuonTopoClusters

Gaudi::Property<bool> PFMuonFlowElementAssoc::m_useMuonTopoClusters {this,"useMuonTopoClusters",false,"Toggle usage of linker of muon associated topoclusters to flow elements - false by default (EXPERIMENTAL)"}
private

(EXPERIMENTAL) Gaudi Property to configure linkage of Neutral FEs to TopoClusters associated to Muons.

Only works with previous option set to True (m_LinkNeutralFEClusters). True: Link FEs to Topoclusters associated to Muons False: Link FEs to CaloClusters associated to Muons

Definition at line 95 of file PFMuonFlowElementAssoc.h.

95{this,"useMuonTopoClusters",false,"Toggle usage of linker of muon associated topoclusters to flow elements - false by default (EXPERIMENTAL)"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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