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

Creates Pi0 clusters (Pi0 Finder). More...

#include <TauPi0ClusterCreator.h>

Inheritance diagram for TauPi0ClusterCreator:
Collaboration diagram for TauPi0ClusterCreator:

Public Member Functions

 TauPi0ClusterCreator (const std::string &name)
virtual ~TauPi0ClusterCreator ()=default
virtual StatusCode executeTool (xAOD::TauJet &pTau, const EventContext &ctx, xAOD::PFOContainer &neutralPFOContainer, xAOD::PFOContainer &hadronicClusterPFOContainer, const xAOD::CaloClusterContainer &pi0CaloClusContainer) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &) const override
 Execute - called for each tau candidate.
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, CaloConstCellContainer &, boost::dynamic_bitset<> &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, const xAOD::VertexContainer *) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::VertexContainer &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::TauTrackContainer &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::CaloClusterContainer &, xAOD::PFOContainer &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::PFOContainer &, xAOD::PFOContainer &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::PFOContainer &) const override
virtual StatusCode executeTool (xAOD::TauJet &, const EventContext &, xAOD::ParticleContainer &, xAOD::PFOContainer &) const override
virtual StatusCode initialize () override
 Tool initializer.
virtual StatusCode eventInitialize () override
 Event initializer - called at the beginning of each event.
virtual StatusCode eventFinalize () override
 Event finalizer - called at the end of each event.
virtual StatusCode finalize () override
 Finalizer.
std::string find_file (const std::string &fname) const
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

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

Protected Attributes

Gaudi::Property< bool > m_in_trigger {this, "inTrigger", false, "Indicate if the tool is running on trigger"}
Gaudi::Property< bool > m_in_AOD {this, "inAOD", false, "Indicate if the tool is running on AOD"}
Gaudi::Property< bool > m_in_EleRM {this, "inEleRM", false, "Indicate if the tool is running on EleRM routine"}
Gaudi::Property< std::string > m_tauRecToolsTag {this, "calibFolder", "tauRecTools/R22_preprod", "CVMFS path to the tau calibration folder"}

Private Types

typedef ServiceHandle< StoreGateSvc > StoreGateSvc_t

Private Member Functions

StatusCode configureNeutralPFO (const xAOD::CaloCluster &cluster, const xAOD::CaloClusterContainer &pi0ClusterContainer, const xAOD::TauJet &tau, const std::vector< const xAOD::PFO * > &shotPFOs, const std::map< unsigned, const xAOD::CaloCluster * > &shotsInCluster, xAOD::PFO &neutralPFO) const
 Configure the neutral PFO.
StatusCode configureHadronicPFO (const xAOD::CaloVertexedTopoCluster &cluster, double clusterEnergyHad, xAOD::PFO &hadronicPFO) const
 Configure the haronic PFO.
std::map< unsigned, const xAOD::CaloCluster * > getShotToClusterMap (const std::vector< const xAOD::PFO * > &shotVector, std::vector< const xAOD::CaloCluster * > &goodpi0Vecor) const
std::vector< unsigned > getShotsMatchedToCluster (const std::vector< const xAOD::PFO * > &shotVector, const std::map< unsigned, const xAOD::CaloCluster * > &clusterToShotMap, const xAOD::CaloCluster &pi0Cluster) const
int getNPhotons (const std::vector< const xAOD::PFO * > &shotVector, const std::vector< unsigned > &shotsInCluster) const
void getClusterVariables (const xAOD::CaloCluster &cluster, std::vector< int > &nPosECells, float &coreEnergyEM1, std::vector< float > &deltaEtaFirstMom, std::vector< float > &secondEtaWRTClusterPositionInLayer) const
 eta moment in PS, EM1 and EM2 w.r.t cluster eta
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< double > m_clusterEtCut {this, "ClusterEtCut", 0.5 * Gaudi::Units::GeV, "Et threshould for pi0 candidate clusters"}
Gaudi::Property< double > m_maxDeltaRNeutral {this, "MaxDeltaRNeutral", 0.2, "max DeltaR for pi0-tau association"}
Gaudi::Property< double > m_maxDeltaRJetClust {this, "MaxDeltaRJetClust", 0.4, "max DeltaR for vertexed cluster-tau association"}
Gaudi::Property< double > m_recoFromAOD {this, "RecoFromAOD", false, "Flag if the reconstruction is happening at AOD-level"}
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

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 376 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TauPi0ClusterCreator()

TauPi0ClusterCreator::TauPi0ClusterCreator ( const std::string & name)

Definition at line 15 of file TauPi0ClusterCreator.cxx.

15 :
16 TauRecToolBase(name) {
17}
TauRecToolBase(const std::string &name)

◆ ~TauPi0ClusterCreator()

virtual TauPi0ClusterCreator::~TauPi0ClusterCreator ( )
virtualdefault

Member Function Documentation

◆ configureHadronicPFO()

StatusCode TauPi0ClusterCreator::configureHadronicPFO ( const xAOD::CaloVertexedTopoCluster & cluster,
double clusterEnergyHad,
xAOD::PFO & hadronicPFO ) const
private

Configure the haronic PFO.

Definition at line 404 of file TauPi0ClusterCreator.cxx.

406 {
407 double clusterPtHad = clusterEnergyHad/std::cosh(cluster.eta());
408 hadronicPFO.setP4(clusterPtHad, cluster.eta(), cluster.phi(), 0.);
409
410 return StatusCode::SUCCESS;
411}
virtual double phi() const final
The azimuthal angle ( ) of the particle.
virtual double eta() const final
The pseudorapidity ( ) of the particle.
void setP4(const FourMom_t &vec)
set the 4-vec
Definition PFO_v1.cxx:107

◆ configureNeutralPFO()

StatusCode TauPi0ClusterCreator::configureNeutralPFO ( const xAOD::CaloCluster & cluster,
const xAOD::CaloClusterContainer & pi0ClusterContainer,
const xAOD::TauJet & tau,
const std::vector< const xAOD::PFO * > & shotPFOs,
const std::map< unsigned, const xAOD::CaloCluster * > & shotsInCluster,
xAOD::PFO & neutralPFO ) const
private

Configure the neutral PFO.

Definition at line 299 of file TauPi0ClusterCreator.cxx.

304 {
305 // Set the properties of the PFO
306 // -- Default value
307 neutralPFO.setBDTPi0Score(-9999.);
308 neutralPFO.setCharge(0);
309 neutralPFO.setAttribute<int>(xAOD::PFODetails::PFOAttributes::nPi0Proto, -1);
310
311 // -- CENTER_MAG
312 double CENTER_MAG = 0.0;
314 ATH_MSG_WARNING("Couldn't retrieve CENTER_MAG moment. Set it to 0.");
315 }
316 neutralPFO.setCenterMag( static_cast<float>(CENTER_MAG));
317
318 // -- Number of photons
319 std::vector<unsigned> shotsInCluster = getShotsMatchedToCluster(shotPFOs, shotToClusterMap, cluster);
320 int NHitsInEM1 = getNPhotons(shotPFOs, shotsInCluster);
321 neutralPFO.setAttribute<int>(xAOD::PFODetails::PFOAttributes::cellBased_NHitsInEM1, NHitsInEM1);
322
323 // -- Energy at each layer
324 float eEM1 = cluster.eSample(CaloSampling::EMB1) + cluster.eSample(CaloSampling::EME1);
325 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_energy_EM1, eEM1);
326
327 float eEM2 = cluster.eSample(CaloSampling::EMB2) + cluster.eSample(CaloSampling::EME2);
328 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_energy_EM2, eEM2);
329
330 //-- Get variables
331 std::vector<float> deltaEtaFirstMom (3, 0.);
332 std::vector<float> deltaEtaSecondMom (3, 0.);
333 std::vector<int> nPosECells(3, 0);
334 float EM1CoreFrac = 0.;
335
336 getClusterVariables(cluster, nPosECells, EM1CoreFrac, deltaEtaFirstMom, deltaEtaSecondMom);
337
338 // -- Number of positive cells in each layer
339 neutralPFO.setAttribute<int>(xAOD::PFODetails::PFOAttributes::cellBased_NPosECells_PS, nPosECells.at(0));
340 neutralPFO.setAttribute<int>(xAOD::PFODetails::PFOAttributes::cellBased_NPosECells_EM1, nPosECells.at(1));
341 neutralPFO.setAttribute<int>(xAOD::PFODetails::PFOAttributes::cellBased_NPosECells_EM2, nPosECells.at(2));
342
343 // -- Core Fraction of the energy in EM1
344 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_EM1CoreFrac, EM1CoreFrac);
345
346 // -- First moment of deltaEta(cluster, cell) in EM1 and EM2
347 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_firstEtaWRTClusterPosition_EM1, deltaEtaFirstMom.at(1));
348 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_firstEtaWRTClusterPosition_EM2, deltaEtaFirstMom.at(2));
349
350 // -- Second moment of deltaEta(cluster, cell) in EM1 and EM2
351 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_secondEtaWRTClusterPosition_EM1, deltaEtaSecondMom.at(1));
352 neutralPFO.setAttribute<float>(xAOD::PFODetails::PFOAttributes::cellBased_secondEtaWRTClusterPosition_EM2, deltaEtaSecondMom.at(2));
353
354 // -- Retrieve cluster moments
355 using Moment = xAOD::CaloCluster::MomentType;
356 using Attribute = xAOD::PFODetails::PFOAttributes;
357 const std::array< std::pair<Moment, Attribute>, 12> momentAttributePairs {{
358 {Moment::FIRST_ETA, Attribute::cellBased_FIRST_ETA},
359 {Moment::SECOND_R, Attribute::cellBased_SECOND_R},
360 {Moment::SECOND_LAMBDA, Attribute::cellBased_SECOND_LAMBDA},
361 {Moment::DELTA_PHI, Attribute::cellBased_DELTA_PHI},
362 {Moment::DELTA_THETA, Attribute::cellBased_DELTA_THETA},
363 {Moment::CENTER_LAMBDA, Attribute::cellBased_CENTER_LAMBDA},
364 {Moment::LATERAL, Attribute::cellBased_LATERAL},
365 {Moment::LONGITUDINAL, Attribute::cellBased_LONGITUDINAL},
366 {Moment::ENG_FRAC_EM, Attribute::cellBased_ENG_FRAC_EM},
367 {Moment::ENG_FRAC_MAX, Attribute::cellBased_ENG_FRAC_MAX},
368 {Moment::ENG_FRAC_CORE, Attribute::cellBased_ENG_FRAC_CORE},
369 {Moment::SECOND_ENG_DENS, Attribute::cellBased_SECOND_ENG_DENS}
370 }};
371
372 for (const auto& [moment, attribute] : momentAttributePairs) {
373 double value = 0.0;
374 if (! cluster.retrieveMoment(moment, value)) {
375 ATH_MSG_WARNING("Cound not retrieve " << moment);
376 }
377 neutralPFO.setAttribute(attribute, static_cast<float>(value));
378 }
379
380 // -- Element link to the cluster
381 ElementLink<xAOD::CaloClusterContainer> clusElementLink;
382 clusElementLink.toContainedElement(pi0ClusterContainer, &cluster);
383 neutralPFO.setClusterLink( clusElementLink );
384
385 // -- Element link to the shots
386 std::vector<ElementLink<xAOD::IParticleContainer>> shotlinks;
387 for (unsigned index = 0; index < shotsInCluster.size(); ++index) {
388 auto& shotPFOElementLink = tau.shotPFOLinks().at(shotsInCluster.at(index));
389 ElementLink<xAOD::IParticleContainer> shotElementLink( shotPFOElementLink.dataID(), shotPFOElementLink.index() );
390 if (!shotElementLink.isValid()) {
391 ATH_MSG_WARNING("Created an invalid element link to xAOD::PFO");
392 }
393 shotlinks.push_back(shotElementLink);
394 }
395 if(!neutralPFO.setAssociatedParticleLinks( xAOD::PFODetails::TauShot,shotlinks)) {
396 ATH_MSG_WARNING("Couldn't add shot links to neutral PFO!");
397 }
398
399 return StatusCode::SUCCESS;
400}
#define ATH_MSG_WARNING(x,...)
void getClusterVariables(const xAOD::CaloCluster &cluster, std::vector< int > &nPosECells, float &coreEnergyEM1, std::vector< float > &deltaEtaFirstMom, std::vector< float > &secondEtaWRTClusterPositionInLayer) const
eta moment in PS, EM1 and EM2 w.r.t cluster eta
std::vector< unsigned > getShotsMatchedToCluster(const std::vector< const xAOD::PFO * > &shotVector, const std::map< unsigned, const xAOD::CaloCluster * > &clusterToShotMap, const xAOD::CaloCluster &pi0Cluster) const
int getNPhotons(const std::vector< const xAOD::PFO * > &shotVector, const std::vector< unsigned > &shotsInCluster) const
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
float eSample(const CaloSample sampling) const
MomentType
Enums to identify different moments.
@ CENTER_MAG
Cluster Centroid ( ).
void setAttribute(PFODetails::PFOAttributes AttributeType, const T &anAttribute)
Set a PFO Variable via enum - overwrite is allowed.
bool setAssociatedParticleLinks(PFODetails::PFOParticleType ParticleType, const std::vector< ElementLink< IParticleContainer > > &theParticles)
Set a vector of PFO constituent particle types via enum - overwrite is allowed.
Definition PFO_v1.cxx:600
bool setClusterLink(const ElementLink< xAOD::CaloClusterContainer > &theCluster)
Set a cluster constituent - does NOT append to existing container.
Definition PFO_v1.cxx:549
void setCenterMag(float CenterMag)
set CenterMag moment needed for vertex correction
void setBDTPi0Score(float BDTPi0Score)
set BDT Score used to classify clusters as Pi0 like or not
void setCharge(float charge)
set charge of PFO
str index
Definition DeMoScan.py:362
bool CENTER_MAG(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ eventFinalize()

StatusCode TauRecToolBase::eventFinalize ( )
overridevirtualinherited

Event finalizer - called at the end of each event.

Implements ITauToolBase.

Definition at line 123 of file TauRecToolBase.cxx.

123 {
124 return StatusCode::SUCCESS;
125}

◆ eventInitialize()

StatusCode TauRecToolBase::eventInitialize ( )
overridevirtualinherited

Event initializer - called at the beginning of each event.

Implements ITauToolBase.

Definition at line 36 of file TauRecToolBase.cxx.

36 {
37 return StatusCode::SUCCESS;
38}

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ executeTool() [1/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext &  ) const
overridevirtual

Execute - called for each tau candidate.

Reimplemented from TauRecToolBase.

Definition at line 43 of file TauRecToolBase.cxx.

42 {
43 ATH_MSG_ERROR("function not implemented");
44 return StatusCode::FAILURE;
45}
#define ATH_MSG_ERROR(x,...)

◆ executeTool() [2/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
CaloConstCellContainer & ,
boost::dynamic_bitset<> &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 49 of file TauRecToolBase.cxx.

56 {
57 ATH_MSG_ERROR("function not implemented");
58 return StatusCode::FAILURE;
59}

◆ executeTool() [3/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
const xAOD::VertexContainer *  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 54 of file TauRecToolBase.cxx.

64 {
65 ATH_MSG_ERROR("function not implemented");
66 return StatusCode::FAILURE;
67}

◆ executeTool() [4/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::CaloClusterContainer & ,
xAOD::PFOContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 66 of file TauRecToolBase.cxx.

86 {
87 ATH_MSG_ERROR("function not implemented");
88 return StatusCode::FAILURE;
89}

◆ executeTool() [5/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::ParticleContainer & ,
xAOD::PFOContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 86 of file TauRecToolBase.cxx.

118 {
119 ATH_MSG_ERROR("function not implemented");
120 return StatusCode::FAILURE;
121}

◆ executeTool() [6/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::PFOContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 82 of file TauRecToolBase.cxx.

110 {
111 ATH_MSG_ERROR("function not implemented");
112 return StatusCode::FAILURE;
113}

◆ executeTool() [7/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::PFOContainer & ,
xAOD::PFOContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 77 of file TauRecToolBase.cxx.

103 {
104 ATH_MSG_ERROR("function not implemented");
105 return StatusCode::FAILURE;
106}

◆ executeTool() [8/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::TauTrackContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 62 of file TauRecToolBase.cxx.

78 {
79 ATH_MSG_ERROR("function not implemented");
80 return StatusCode::FAILURE;
81}

◆ executeTool() [9/10]

StatusCode TauRecToolBase::executeTool ( xAOD::TauJet & ,
const EventContext & ,
xAOD::VertexContainer &  ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 58 of file TauRecToolBase.cxx.

71 {
72 ATH_MSG_ERROR("function not implemented");
73 return StatusCode::FAILURE;
74}

◆ executeTool() [10/10]

StatusCode TauPi0ClusterCreator::executeTool ( xAOD::TauJet & pTau,
const EventContext & ctx,
xAOD::PFOContainer & neutralPFOContainer,
xAOD::PFOContainer & hadronicClusterPFOContainer,
const xAOD::CaloClusterContainer & pi0CaloClusContainer ) const
overridevirtual

Reimplemented from TauRecToolBase.

Definition at line 20 of file TauPi0ClusterCreator.cxx.

24 {
25
26 // Any tau needs to have PFO vectors. Set empty vectors before nTrack cut
27 std::vector<ElementLink<xAOD::PFOContainer>> empty;
28 tau.setProtoNeutralPFOLinks(empty);
29 tau.setHadronicPFOLinks(empty);
30
31 // only need pi0s and shots for 0-5 prong taus
33 return StatusCode::SUCCESS;
34 }
35
36 // Retrieve Ecal1 shots and match them to clusters
37 std::vector<const xAOD::PFO*> shotPFOs;
38
39 unsigned nShots = tau.nShotPFOs();
40 for (unsigned index=0; index<nShots; ++index) {
41 const xAOD::PFO* shotPFO = tau.shotPFO(index);
42 shotPFOs.push_back(shotPFO);
43 }
44
45 // We will always perform the vertex correction
46 const xAOD::Vertex* vertex = tau.vertex();
47
48 // Tau custom PFO reconstruction is only used in offline reconstrution
49 TLorentzVector tauAxis = tauRecTools::getTauAxis(tau);
50
51 // Preselect the pi0s clusters
52 std::vector<const xAOD::CaloCluster*> good_pi0s;
53 for (TLorentzVector clusterP4;const xAOD::CaloCluster* cluster: pi0ClusterContainer){
54 if (vertex) {
55 xAOD::CaloVertexedTopoCluster vertexedCluster(*cluster, vertex->position());
56 clusterP4 = vertexedCluster.p4();
57 }
58 else {
59 clusterP4 = cluster->p4();
60 }
61 // Clusters must have enough energy, and within 0.4 cone of the tau candidate
62 if ((clusterP4.Pt() < m_clusterEtCut) || (clusterP4.DeltaR(tauAxis) > m_maxDeltaRJetClust)) continue;
63
64 good_pi0s.push_back(cluster);
65 }
66
67 // Map shot to the pi0 cluster
68 std::map<unsigned, const xAOD::CaloCluster*> shotToClusterMap = getShotToClusterMap(shotPFOs, good_pi0s);
69
70 // Loop over preselected pi0 clusters, and create neutral PFOs
71 for (TLorentzVector clusterP4;const xAOD::CaloCluster* cluster: good_pi0s){
72 if (vertex) {
73 xAOD::CaloVertexedTopoCluster vertexedCluster(*cluster, vertex->position());
74 clusterP4 = vertexedCluster.p4();
75 }
76 else {
77 clusterP4 = cluster->p4();
78 }
79
80 // Create the neutral PFOs
81 xAOD::PFO* neutralPFO = new xAOD::PFO();
82 neutralPFOContainer.push_back(neutralPFO);
83
84 // -- Set the PFO four momentum corrected w.r.t. the tau vertex
85 neutralPFO->setP4(clusterP4.Pt(), clusterP4.Eta(), clusterP4.Phi(), 0.);
86
87 // Add the link to the tau candidate
88 ElementLink<xAOD::PFOContainer> PFOElementLink;
89 PFOElementLink.toContainedElement(neutralPFOContainer, neutralPFO);
90 tau.addProtoNeutralPFOLink(PFOElementLink);
91
92 ATH_CHECK(configureNeutralPFO(*cluster, pi0ClusterContainer, tau, shotPFOs, shotToClusterMap, *neutralPFO));
93 }
94
95 // Loop over clusters from jet seed, and create hadronic PFOs
96 std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusterList = tau.vertexedClusters();
97 for (const xAOD::CaloVertexedTopoCluster& vertexedCluster : vertexedClusterList){
98 TLorentzVector clusterP4 = vertexedCluster.p4();
99
100 // Clusters must have positive energy, and within 0.2 cone of the tau candidate
101 if((clusterP4.E()<=0.) || (clusterP4.DeltaR(tauAxis) > m_maxDeltaRNeutral) ) continue;
102
103 double clusterEnergyHad = 0.;
104
105 const xAOD::CaloCluster& cluster = vertexedCluster.clust();
106 const CaloClusterCellLink* cellLinks = cluster.getCellLinks();
107 if (!cellLinks) {
108 if (!m_recoFromAOD)
109 ATH_MSG_WARNING("The cell links of the tau cluster is unavailable.");
110 else
111 ATH_MSG_DEBUG("The cell links of the tau cluster is unavailable due to reconstruction from AOD");
112
113 continue;
114 }
115 CaloClusterCellLink::const_iterator cellLink = cellLinks->begin();
116 for (; cellLink != cellLinks->end(); ++cellLink) {
117 const CaloCell* cell = static_cast<const CaloCell*>(*cellLink);
118
119 int sampling = cell->caloDDE()->getSampling();
120 if (sampling < 8) continue;
121
122 // TODO: what is the weight for EMTopo
123 double cellEnergy = cell->e() * cellLink.weight();
124 clusterEnergyHad += cellEnergy;
125 }
126
127 // Energy in Had Calorimeter must be positive
128 if(clusterEnergyHad <= 0.) continue;
129
130 // Create the hadrnic PFO
131 xAOD::PFO* hadronicPFO = new xAOD::PFO();
132 hadronicPFOContainer.push_back(hadronicPFO);
133
134 // Add element link from tau to hadronic PFO
135 ElementLink<xAOD::PFOContainer> PFOElementLink;
136 PFOElementLink.toContainedElement( hadronicPFOContainer, hadronicPFO );
137 tau.addHadronicPFOLink( PFOElementLink );
138
139 ATH_CHECK(configureHadronicPFO(vertexedCluster, clusterEnergyHad, *hadronicPFO));
140 }
141
142 return StatusCode::SUCCESS;
143}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
static const Attributes_t empty
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Gaudi::Property< double > m_maxDeltaRJetClust
StatusCode configureNeutralPFO(const xAOD::CaloCluster &cluster, const xAOD::CaloClusterContainer &pi0ClusterContainer, const xAOD::TauJet &tau, const std::vector< const xAOD::PFO * > &shotPFOs, const std::map< unsigned, const xAOD::CaloCluster * > &shotsInCluster, xAOD::PFO &neutralPFO) const
Configure the neutral PFO.
Gaudi::Property< double > m_clusterEtCut
Gaudi::Property< double > m_recoFromAOD
StatusCode configureHadronicPFO(const xAOD::CaloVertexedTopoCluster &cluster, double clusterEnergyHad, xAOD::PFO &hadronicPFO) const
Configure the haronic PFO.
Gaudi::Property< double > m_maxDeltaRNeutral
std::map< unsigned, const xAOD::CaloCluster * > getShotToClusterMap(const std::vector< const xAOD::PFO * > &shotVector, std::vector< const xAOD::CaloCluster * > &goodpi0Vecor) const
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version).
bool doPi0andShots(const xAOD::TauJet &tau)
Determines whether pi0s and shots should be built for a tau candidate.
TLorentzVector getTauAxis(const xAOD::TauJet &tau, bool doVertexCorrection=true)
Return the four momentum of the tau axis The tau axis is widely used to select clusters and cells in ...
PFO_v1 PFO
Definition of the current "pfo version".
Definition PFO.h:17
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ 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

◆ finalize()

StatusCode TauRecToolBase::finalize ( )
overridevirtualinherited

Finalizer.

Implements ITauToolBase.

Reimplemented in PanTau::PanTauProcessor.

Definition at line 127 of file TauRecToolBase.cxx.

127 {
128 return StatusCode::SUCCESS;
129}

◆ find_file()

std::string TauRecToolBase::find_file ( const std::string & fname) const
inherited

Definition at line 19 of file TauRecToolBase.cxx.

19 {
20 std::string full_path;
21 //offline calib files are in GroupData
22 //online calib files are in release
23 full_path = PathResolverFindCalibFile(m_tauRecToolsTag+"/"+fname);
24 if(full_path.empty()) full_path = PathResolverFindCalibFile(fname);
25 return full_path;
26}
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Gaudi::Property< std::string > m_tauRecToolsTag

◆ getClusterVariables()

void TauPi0ClusterCreator::getClusterVariables ( const xAOD::CaloCluster & cluster,
std::vector< int > & nPosECells,
float & coreEnergyEM1,
std::vector< float > & deltaEtaFirstMom,
std::vector< float > & secondEtaWRTClusterPositionInLayer ) const
private

eta moment in PS, EM1 and EM2 w.r.t cluster eta

Definition at line 242 of file TauPi0ClusterCreator.cxx.

246 {
247
248 float totalEnergyEM1 = 0.;
249 std::vector<float> totalEnergy (3, 0.);
250
251 const CaloClusterCellLink* cellLinks = cluster.getCellLinks();
252 CaloClusterCellLink::const_iterator cellLink = cellLinks->begin();
253 for (; cellLink != cellLinks->end(); ++cellLink) {
254 const CaloCell* cell = static_cast<const CaloCell*>(*cellLink);
255
256 // Only consider PS, EM1, and EM2
257 int sampling = cell->caloDDE()->getSampling();
258 int layer = sampling%4;
259 if (layer >= 3) continue;
260
261 // Only consider positive cells
262 float cellEnergy_weighted = cell->e() * cellLink.weight();
263 if (cellEnergy_weighted <= 0) continue;
264
265 ++nPosECells[layer];
266
267 float deltaEta = cell->eta() - cluster.eta();
268
269 deltaEtaFirstMom[layer] += deltaEta * cellEnergy_weighted;
270 deltaEtaSecondMom[layer] += deltaEta * deltaEta * cellEnergy_weighted;
271 totalEnergy[layer] += cellEnergy_weighted;
272
273 // calculate coreEnergyEM1
274 if (sampling != 1 && sampling != 5) continue;
275
276 totalEnergyEM1 += cellEnergy_weighted;
277 float deltaPhi = P4Helpers::deltaPhi(cell->phi(), cluster.phi());
278
279 // Core region: [0.05, 0.05/8]
280 if(std::abs(deltaPhi) > 0.05 || std::abs(deltaEta) > 2 * 0.025/8.) continue;
281 coreEnergyEM1 += cellEnergy_weighted;
282 }
283
284 for (int layer=0; layer < 3; ++layer) {
285 if (totalEnergy[layer] != 0.) {
286 deltaEtaFirstMom[layer]/=std::abs(totalEnergy[layer]);
287 deltaEtaSecondMom[layer]/=std::abs(totalEnergy[layer]);
288 }
289 else {
290 deltaEtaFirstMom[layer]=0.;
291 deltaEtaSecondMom[layer]=0.;
292 }
293 }
294
295 coreEnergyEM1 = (totalEnergyEM1 > 0.) ? coreEnergyEM1/totalEnergyEM1 : 0.;
296
297}
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition P4Helpers.h:66
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition P4Helpers.h:34
@ layer
Definition HitInfo.h:79

◆ 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::Event 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::Event, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getName()

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

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

This is a bit of a special one. StoreGateSvc and xAOD::Event 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::Event, 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 }

◆ getNPhotons()

int TauPi0ClusterCreator::getNPhotons ( const std::vector< const xAOD::PFO * > & shotVector,
const std::vector< unsigned > & shotsInCluster ) const
private

Definition at line 226 of file TauPi0ClusterCreator.cxx.

227 {
228 int totalPhotons = 0;
229
230 for (unsigned index = 0; index < shotsInCluster.size(); ++index) {
231 int nPhotons = 0;
232 const xAOD::PFO* shotPFO = shotPFOs.at(shotsInCluster.at(index));
233 if (! shotPFO->attribute(xAOD::PFODetails::PFOAttributes::tauShots_nPhotons, nPhotons)) {
234 ATH_MSG_WARNING("Can't find NHitsInEM1. Set it to 0.");
235 }
236 totalPhotons += nPhotons;
237 }
238
239 return totalPhotons;
240}
bool attribute(PFODetails::PFOAttributes AttributeType, T &anAttribute) const
get a PFO Variable via enum

◆ getProperty()

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

Get one of the tool's properties.

◆ getShotsMatchedToCluster()

std::vector< unsigned > TauPi0ClusterCreator::getShotsMatchedToCluster ( const std::vector< const xAOD::PFO * > & shotVector,
const std::map< unsigned, const xAOD::CaloCluster * > & clusterToShotMap,
const xAOD::CaloCluster & pi0Cluster ) const
private

Definition at line 207 of file TauPi0ClusterCreator.cxx.

209 {
210 std::vector<unsigned> shotsMatchedToCluster;
211
212 // Loop over the shots, and select those matched to the cluster
213 for (unsigned index = 0; index < shotPFOs.size(); ++index) {
214 auto iterator = shotToClusterMap.find(index);
215 if (iterator == shotToClusterMap.end()) continue;
216 if (iterator->second != &pi0Cluster) continue;
217
218 shotsMatchedToCluster.push_back(index);
219 }
220
221 return shotsMatchedToCluster;
222}
void iterator

◆ getShotToClusterMap()

std::map< unsigned, const xAOD::CaloCluster * > TauPi0ClusterCreator::getShotToClusterMap ( const std::vector< const xAOD::PFO * > & shotVector,
std::vector< const xAOD::CaloCluster * > & goodpi0Vecor ) const
private

Definition at line 147 of file TauPi0ClusterCreator.cxx.

148 {
149 std::map<unsigned, const xAOD::CaloCluster*> shotToClusterMap;
150 for (unsigned index = 0; index < shotPFOs.size(); ++index) {
151 const xAOD::PFO* shotPFO = shotPFOs.at(index);
152
153 int seedHashInt = -1;
154 if (!shotPFO->attribute(xAOD::PFODetails::PFOAttributes::tauShots_seedHash, seedHashInt)) {
155 ATH_MSG_WARNING("Couldn't find seed hash. Set it to -1, no cluster will be associated to shot.");
156 }
157 const IdentifierHash seedHash = static_cast<const IdentifierHash>(seedHashInt);
158
159 float weightInCluster = -1.;
160 float weightInPreviousCluster = -1;
161
162 // Loop over custom pi0 clusters, and map shot to the cluster
163 for (const xAOD::CaloCluster* cluster: goodPi0s){
164
165 weightInCluster = -1.;
166
167 const CaloClusterCellLink* cellLinks = cluster->getCellLinks();
168 CaloClusterCellLink::const_iterator cellLink = cellLinks->begin();
169 for (; cellLink != cellLinks->end(); ++cellLink) {
170 const CaloCell* cell = static_cast<const CaloCell*>(*cellLink);
171
172 // Check if seed cell is in cluster.
173 if (cell->caloDDE()->calo_hash() != seedHash) continue;
174
175 weightInCluster = cellLink.weight();
176 // found cell, no need to loop over other cells
177 break;
178 }
179
180 if (weightInCluster < 0) continue;
181
182 // Check if cell was already found in a previous cluster
183 if (weightInPreviousCluster < 0) {
184 // Cell not found in a previous cluster.
185 // Have to check whether cell is shared with other cluster
186 shotToClusterMap[index] = cluster;
187 weightInPreviousCluster = weightInCluster;
188 }
189 else {
190 // Cell has been found in a previous cluster
191 // assign shot to this cluster if it has larger weight for the cell
192 // otherwise the shots keeps assigned to the previous cluster
193 if (weightInCluster > weightInPreviousCluster) {
194 shotToClusterMap[index] = cluster;
195 }
196
197 break;
198 }
199 }
200 }
201
202 return shotToClusterMap;
203}

◆ inAOD()

bool TauRecToolBase::inAOD ( ) const
inlineprotectedinherited

Definition at line 116 of file TauRecToolBase.h.

116{ return m_in_AOD; }
Gaudi::Property< bool > m_in_AOD

◆ inEleRM()

bool TauRecToolBase::inEleRM ( ) const
inlineprotectedinherited

Definition at line 117 of file TauRecToolBase.h.

117{ return m_in_EleRM; }
Gaudi::Property< bool > m_in_EleRM

◆ initialize()

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

◆ inTrigger()

bool TauRecToolBase::inTrigger ( ) const
inlineprotectedinherited

Definition at line 115 of file TauRecToolBase.h.

115{ return m_in_trigger; }
Gaudi::Property< bool > m_in_trigger

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg_level_name()

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

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

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

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

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

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

Definition at line 101 of file AsgTool.cxx.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ print()

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

◆ renounce()

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

Definition at line 368 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 352 of file AthCommonDataStore.h.

352 {
354 }

◆ sysInitialize()

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

Perform system initialization for an algorithm.

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

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 298 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_clusterEtCut

Gaudi::Property<double> TauPi0ClusterCreator::m_clusterEtCut {this, "ClusterEtCut", 0.5 * Gaudi::Units::GeV, "Et threshould for pi0 candidate clusters"}
private

Definition at line 79 of file TauPi0ClusterCreator.h.

79{this, "ClusterEtCut", 0.5 * Gaudi::Units::GeV, "Et threshould for pi0 candidate clusters"};

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 381 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 378 of file AthCommonDataStore.h.

◆ m_in_AOD

Gaudi::Property<bool> TauRecToolBase::m_in_AOD {this, "inAOD", false, "Indicate if the tool is running on AOD"}
protectedinherited

Definition at line 105 of file TauRecToolBase.h.

105{this, "inAOD", false, "Indicate if the tool is running on AOD"};

◆ m_in_EleRM

Gaudi::Property<bool> TauRecToolBase::m_in_EleRM {this, "inEleRM", false, "Indicate if the tool is running on EleRM routine"}
protectedinherited

Definition at line 106 of file TauRecToolBase.h.

106{this, "inEleRM", false, "Indicate if the tool is running on EleRM routine"};

◆ m_in_trigger

Gaudi::Property<bool> TauRecToolBase::m_in_trigger {this, "inTrigger", false, "Indicate if the tool is running on trigger"}
protectedinherited

Definition at line 104 of file TauRecToolBase.h.

104{this, "inTrigger", false, "Indicate if the tool is running on trigger"};

◆ m_maxDeltaRJetClust

Gaudi::Property<double> TauPi0ClusterCreator::m_maxDeltaRJetClust {this, "MaxDeltaRJetClust", 0.4, "max DeltaR for vertexed cluster-tau association"}
private

Definition at line 81 of file TauPi0ClusterCreator.h.

81{this, "MaxDeltaRJetClust", 0.4, "max DeltaR for vertexed cluster-tau association"};

◆ m_maxDeltaRNeutral

Gaudi::Property<double> TauPi0ClusterCreator::m_maxDeltaRNeutral {this, "MaxDeltaRNeutral", 0.2, "max DeltaR for pi0-tau association"}
private

Definition at line 80 of file TauPi0ClusterCreator.h.

80{this, "MaxDeltaRNeutral", 0.2, "max DeltaR for pi0-tau association"};

◆ m_recoFromAOD

Gaudi::Property<double> TauPi0ClusterCreator::m_recoFromAOD {this, "RecoFromAOD", false, "Flag if the reconstruction is happening at AOD-level"}
private

Definition at line 82 of file TauPi0ClusterCreator.h.

82{this, "RecoFromAOD", false, "Flag if the reconstruction is happening at AOD-level"};

◆ m_tauRecToolsTag

Gaudi::Property<std::string> TauRecToolBase::m_tauRecToolsTag {this, "calibFolder", "tauRecTools/R22_preprod", "CVMFS path to the tau calibration folder"}
protectedinherited

Definition at line 107 of file TauRecToolBase.h.

107{this, "calibFolder", "tauRecTools/R22_preprod", "CVMFS path to the tau calibration folder"};

◆ m_varHandleArraysDeclared

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

Definition at line 387 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 386 of file AthCommonDataStore.h.


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