ATLAS Offline Software
PanTauSeed.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PANTAUALGS_PANTAUSEED_H
6 #define PANTAUALGS_PANTAUSEED_H
7 
8 
9 #include <vector>
10 #include <string>
11 
12 #include "xAODBase/IParticle.h"
13 
15 #include "PanTauAlgs/TauFeature.h"
16 
17 
18 #include "xAODTau/TauJet.h"
19 
20 namespace PanTau {
21 
22 
23 
24  class PanTauSeed : public xAOD::IParticle {
25  // IParticle implementation as in
26  // http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Event/xAOD/xAODEgamma/xAODEgamma/versions/Egamma_v1.h
27  // http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Event/xAOD/xAODEgamma/Root/Egamma_v1.cxx
28 
29  public:
30 
31  //enumeration to describe technical status of the seed
32  // i.e. numTrack ok? pT ok? etc...
34  t_NoValidInputTau, //use this when there's no substructure info available
35  t_NoConstituentsAtAll, //use when no constituent was found
36  t_NoSelectedConstituents, //use when no constituent passes the cuts (all below pT, none in cone...)
37  t_BadPtValue, //for cases when pT is not in the range of any BDT PT bin
40  };
41 
42  // enumeration to describe extended PanTau decay mode (number of tracks, pi0 tagged neutrals and other neutrals)
55  t_ExtMode11shots = 12 // for taus which have been classified as 1p1n but have >2 shots
56  };
57 
58  static int getDecayMode(int nCharged, int nNeutral);
59  static std::string getDecayModeName(int decayMode);
60 
61  PanTauSeed();
62  ~PanTauSeed();
63  PanTauSeed(const PanTauSeed& seed);
64  PanTauSeed& operator=(const PanTauSeed& seed);
65 
66 
70 
72  virtual double pt() const;
73 
75  virtual double eta() const;
76 
78  virtual double phi() const;
79 
81  virtual double m() const;
82 
84  virtual double e() const;
85 
87  virtual double rapidity() const;
88 
91 
93  virtual FourMom_t p4() const;
94 
96  virtual xAOD::Type::ObjectType type() const;
97 
98 
100  void setP4(float pt, float eta, float phi, float m);
101 
103  void setPt(float pt);
104 
106  void setEta(float eta);
107 
109  void setPhi(float phi);
110 
112  void setM(float m);
113 
114 
115 
117  PanTauSeed( xAOD::TauJet* tauJet,
118  const std::vector<PanTau::TauConstituent*>& tauConstituents,
119  const std::vector<PanTau::TauConstituent*>& tauConstituentsWithUnselected,
120  const std::vector<int>& pantauSeed_TechnicalQuality
121  );
122 
123 
125  PanTauSeed( xAOD::TauJet* tauJet,
126  const std::vector<int>& pantauSeed_TechnicalQuality
127  );
128 
129  const xAOD::TauJet* getTauJet() const;
131  const PanTau::TauFeature* getFeatures() const;
133  TLorentzVector getProtoMomentumCore() const;
134 
135  bool getIsValidSeed() const;
136  const std::vector<int>& getTechnicalQuality() const;
137  bool isOfTechnicalQuality(int pantauSeed_TechnicalQuality) const;
138  const std::vector< std::vector<PanTau::TauConstituent*> >& getConstituents() const;
139  const std::vector<PanTau::TauConstituent*>& getConstituentsAsList_Core() const;
140  const std::vector<PanTau::TauConstituent*>& getConstituentsAsList_All() const;
141 
142  std::vector<PanTau::TauConstituent*> getConstituentsOfType(int tauConstituent_Type, bool& foundit);
143  int getNumberOfConstituentsOfType(int tauConstituent_Type);
144  TLorentzVector getSubsystemHLV(int tauConstituent_Type, bool& foundit);
145 
146  TLorentzVector getFinalMomentum() const;
147  int getDecayModeBySubAlg() const;
148  int getDecayModeByPanTau() const;
149 
150  void setFinalMomentum(TLorentzVector finalMom);
151  void setDecayModeByPanTau(int decayModePanTau);
152 
155 
156 
157 
158  private:
159 
162 
163  protected:
164 
165  //flag that tells whether the seed is valid
167 
168  std::vector<int> m_TechnicalQuality;
169 
170  //pointer to the TauJet this PanTauSeed was build from (pointer not owned by PanTauSeed)
172 
173  //for each type of tauConstituent, a list of constituents (of that type)
174  // the TauConstituent objects are owned by PanTauSeed (this class), so they need to be deleted in the destructor
175  std::vector< std::vector<PanTau::TauConstituent*> > m_Constituents;
176 
177  //the momentum as calculated by using only core constituents
178  TLorentzVector m_ProtoMomentum_Core;
179 
180  //the momentum as calculated by using info about decay mode
181  TLorentzVector m_FinalMomentum;
182 
183  //a list of hlvs for the different subsystems (charged, neutral, pi0Neut...)
184  std::vector< TLorentzVector > m_TypeHLVs;
185 
186  //also store constituents as flat list for easier access later on
187  std::vector<PanTau::TauConstituent*> m_ConstituentsList_Core; //only objects in core region
188  std::vector<PanTau::TauConstituent*> m_ConstituentsList_AllSelected; //all selected objects for this seed
189 
190  //for memory reasons:
191  // pass list of selected AND unselected pfos to seed, which will take ownership
192  std::vector<PanTau::TauConstituent*> m_ConstituentsList_All; //all objects for this seed, selected and unselected
193 
194  //the decay mode
197 
199 
202  //the features of this pantauseed
204 
205 
206  };
207 
208 
209  static void SetP4EEtaPhiM(TLorentzVector& hlv, double e, double eta, double phi, double m );
210 
211 
212 } //end name space pantau
213 
214 
215 inline const xAOD::TauJet* PanTau::PanTauSeed::getTauJet() const {return m_TauJet;}
216 inline xAOD::TauJet* PanTau::PanTauSeed::getTauJet() {return m_TauJet;}
217 inline const PanTau::TauFeature* PanTau::PanTauSeed::getFeatures() const {return m_Features;}
219 inline TLorentzVector PanTau::PanTauSeed::getProtoMomentumCore() const {return m_ProtoMomentum_Core;}
220 inline const std::vector< std::vector<PanTau::TauConstituent*> >& PanTau::PanTauSeed::getConstituents() const {return m_Constituents;}
221 inline const std::vector<PanTau::TauConstituent*>& PanTau::PanTauSeed::getConstituentsAsList_Core() const {return m_ConstituentsList_Core;}
222 inline const std::vector<PanTau::TauConstituent*>& PanTau::PanTauSeed::getConstituentsAsList_All() const {return m_ConstituentsList_All;}
223 inline TLorentzVector PanTau::PanTauSeed::getFinalMomentum() const {return m_FinalMomentum;}
224 inline int PanTau::PanTauSeed::getDecayModeBySubAlg() const {return m_DecayMode_BySubAlg;}
225 inline int PanTau::PanTauSeed::getDecayModeByPanTau() const {return m_DecayMode_ByPanTau;}
226 inline bool PanTau::PanTauSeed::getIsValidSeed() const {return m_IsValidSeed;}
227 inline const std::vector<int>& PanTau::PanTauSeed::getTechnicalQuality() const {return m_TechnicalQuality;}
228 
229 inline void PanTau::PanTauSeed::setFinalMomentum(TLorentzVector finalMom) {m_FinalMomentum = finalMom;}
230 inline void PanTau::PanTauSeed::setDecayModeByPanTau(int decayModePanTau) {m_DecayMode_ByPanTau = decayModePanTau;}
231 
232 
233 inline static void PanTau::SetP4EEtaPhiM(TLorentzVector& hlv, double e, double eta, double phi, double m ){
234  // FIXME: what is wrong with eta=0?
235  if( eta == 0. ) return;
236  double pt = std::sqrt( e*e - m*m) / std::cosh( eta ); // not really safe.
237  hlv.SetPtEtaPhiE(pt, eta, phi, e);
238  return;
239 }
240 
241 
242 #endif // PANTAUALGS_PANTAUSEED_H
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
PanTau::PanTauSeed::type
virtual xAOD::Type::ObjectType type() const
The type of the object as a simple enumeration, remains pure virtual in e/gamma.
Definition: PanTauSeed.cxx:180
PanTau::PanTauSeed::setDecayModeByPanTau
void setDecayModeByPanTau(int decayModePanTau)
Definition: PanTauSeed.h:230
PanTau::PanTauSeed::m_decayModeHack_CellBasedShots
bool m_decayModeHack_CellBasedShots
Definition: PanTauSeed.h:198
PanTau::PanTauSeed::getTechnicalQuality
const std::vector< int > & getTechnicalQuality() const
Definition: PanTauSeed.h:227
PanTau::PanTauSeed::m_Constituents
std::vector< std::vector< PanTau::TauConstituent * > > m_Constituents
Definition: PanTauSeed.h:175
PanTau::PanTauSeed::FourMom_t
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
Definition: PanTauSeed.h:90
PanTau::PanTauSeed::getFeatures
const PanTau::TauFeature * getFeatures() const
Definition: PanTauSeed.h:217
PanTau::PanTauSeed::setPt
void setPt(float pt)
set the Pt
Definition: PanTauSeed.cxx:151
PanTau::PanTauSeed::m_ConstituentsList_AllSelected
std::vector< PanTau::TauConstituent * > m_ConstituentsList_AllSelected
Definition: PanTauSeed.h:188
PanTau::PanTauSeed::getTauJet
const xAOD::TauJet * getTauJet() const
Definition: PanTauSeed.h:215
IParticle.h
PanTau::PanTauSeed::getSubsystemHLV
TLorentzVector getSubsystemHLV(int tauConstituent_Type, bool &foundit)
Definition: PanTauSeed.cxx:359
PanTau::PanTauSeed::getConstituentsAsList_All
const std::vector< PanTau::TauConstituent * > & getConstituentsAsList_All() const
Definition: PanTauSeed.h:222
PanTau::PanTauSeed::getDecayModeBySubAlg
int getDecayModeBySubAlg() const
Definition: PanTauSeed.h:224
ObjectType
ObjectType
Definition: BaseObject.h:11
xAOD::TauJetParameters::nCharged
@ nCharged
Definition: TauDefs.h:266
PanTau::PanTauSeed::getDecayModeByPanTau
int getDecayModeByPanTau() const
Definition: PanTauSeed.h:225
PanTau::PanTauSeed::getConstituentsOfType
std::vector< PanTau::TauConstituent * > getConstituentsOfType(int tauConstituent_Type, bool &foundit)
Definition: PanTauSeed.cxx:338
PanTau::PanTauSeed::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: PanTauSeed.cxx:114
PanTau::PanTauSeed::t_ExtMode300
@ t_ExtMode300
Definition: PanTauSeed.h:49
PanTau::PanTauSeed::t_NoValidInputTau
@ t_NoValidInputTau
Definition: PanTauSeed.h:34
test_pyathena.pt
pt
Definition: test_pyathena.py:11
PanTau::PanTauSeed::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: PanTauSeed.cxx:108
PanTau::PanTauSeed::getFinalMomentum
TLorentzVector getFinalMomentum() const
Definition: PanTauSeed.h:223
PanTau::PanTauSeed::m_DecayMode_BySubAlg
int m_DecayMode_BySubAlg
Definition: PanTauSeed.h:195
PanTau::TauFeature
Definition: TauFeature.h:19
PanTau::PanTauSeed::setEta
void setEta(float eta)
set the eta
Definition: PanTauSeed.cxx:158
PanTau::PanTauSeed::getIsValidSeed
bool getIsValidSeed() const
Definition: PanTauSeed.h:226
PanTau::PanTauSeed::t_ExtMode1XX
@ t_ExtMode1XX
Definition: PanTauSeed.h:48
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
TauConstituent.h
PanTau::PanTauSeed::m_IsValidSeed
bool m_IsValidSeed
Definition: PanTauSeed.h:166
PanTau::PanTauSeed::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle as a TLoretzVector.
Definition: PanTauSeed.cxx:134
PanTau::PanTauSeed::m_Features
PanTau::TauFeature * m_Features
flag to indicate whether the decay mode by cellbased was
Definition: PanTauSeed.h:203
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:69
PanTau::PanTauSeed::m_p4
FourMom_t m_p4
4-momentum object
Definition: PanTauSeed.h:161
PanTau::PanTauSeed::TechnicalQuality
TechnicalQuality
Definition: PanTauSeed.h:33
PanTau::PanTauSeed::t_ExtMode11X
@ t_ExtMode11X
Definition: PanTauSeed.h:47
PanTau::PanTauSeed::rapidity
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition: PanTauSeed.cxx:130
PanTau::PanTauSeed::setFinalMomentum
void setFinalMomentum(TLorentzVector finalMom)
Definition: PanTauSeed.h:229
PanTau::PanTauSeed::t_ExtMode110
@ t_ExtMode110
Definition: PanTauSeed.h:46
PanTau::PanTauSeed::t_nTechnicalQualities
@ t_nTechnicalQualities
Definition: PanTauSeed.h:39
PanTau::PanTauSeed::m_TypeHLVs
std::vector< TLorentzVector > m_TypeHLVs
Definition: PanTauSeed.h:184
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
PanTau::PanTauSeed::t_ExtModeError
@ t_ExtModeError
Definition: PanTauSeed.h:54
hist_file_dump.f
f
Definition: hist_file_dump.py:140
PanTau::PanTauSeed::operator=
PanTauSeed & operator=(const PanTauSeed &seed)
Definition: PanTauSeed.cxx:76
PanTau::PanTauSeed::t_ExtMode30X
@ t_ExtMode30X
Definition: PanTauSeed.h:50
PanTau::PanTauSeed::~PanTauSeed
~PanTauSeed()
Definition: PanTauSeed.cxx:31
Prompt::FourMom_t
TLorentzVector FourMom_t
Definition: DecoratePLIT.h:32
PanTau::PanTauSeed::m_ConstituentsList_All
std::vector< PanTau::TauConstituent * > m_ConstituentsList_All
Definition: PanTauSeed.h:192
PanTau::PanTauSeed::t_ExtMode10X
@ t_ExtMode10X
Definition: PanTauSeed.h:45
PanTau::PanTauSeed::PanTauSeed
PanTauSeed()
Definition: PanTauSeed.cxx:10
PanTau::PanTauSeed::getConstituents
const std::vector< std::vector< PanTau::TauConstituent * > > & getConstituents() const
Definition: PanTauSeed.h:220
PanTau::PanTauSeed::t_ExtMode100
@ t_ExtMode100
Definition: PanTauSeed.h:44
PanTau::PanTauSeed::t_BadPtValue
@ t_BadPtValue
Definition: PanTauSeed.h:37
PanTau::PanTauSeed::m_TauJet
xAOD::TauJet * m_TauJet
Definition: PanTauSeed.h:171
PanTau::PanTauSeed::t_NoConstituentsAtAll
@ t_NoConstituentsAtAll
Definition: PanTauSeed.h:35
PanTau::PanTauSeed::setModeHackedByCellBased
void setModeHackedByCellBased(bool f)
Definition: PanTauSeed.h:153
PanTau::PanTauSeed::t_ExtModeNotSet
@ t_ExtModeNotSet
Definition: PanTauSeed.h:53
PanTau::PanTauSeed::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition: PanTauSeed.cxx:102
PanTau::PanTauSeed::m_DecayMode_ByPanTau
int m_DecayMode_ByPanTau
Definition: PanTauSeed.h:196
PanTau::PanTauSeed::m_TechnicalQuality
std::vector< int > m_TechnicalQuality
Definition: PanTauSeed.h:168
PanTau::PanTauSeed::t_ExtMode3XX
@ t_ExtMode3XX
Definition: PanTauSeed.h:51
PanTau::PanTauSeed::getModeHackedByCellBased
bool getModeHackedByCellBased()
Definition: PanTauSeed.h:154
PanTau::PanTauSeed::getDecayMode
static int getDecayMode(int nCharged, int nNeutral)
Definition: PanTauSeed.cxx:290
PanTau::PanTauSeed::getNumberOfConstituentsOfType
int getNumberOfConstituentsOfType(int tauConstituent_Type)
Definition: PanTauSeed.cxx:349
PanTau
xAOD EDM
Definition: Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h:18
PanTau::PanTauSeed::setM
void setM(float m)
set the Mass
Definition: PanTauSeed.cxx:172
PanTau::PanTauSeed::isOfTechnicalQuality
bool isOfTechnicalQuality(int pantauSeed_TechnicalQuality) const
Definition: PanTauSeed.cxx:329
TauJet.h
PanTau::PanTauSeed::m_ProtoMomentum_Core
TLorentzVector m_ProtoMomentum_Core
Definition: PanTauSeed.h:178
PanTau::PanTauSeed::setPhi
void setPhi(float phi)
set the phi
Definition: PanTauSeed.cxx:165
PanTau::PanTauSeed::m_ConstituentsList_Core
std::vector< PanTau::TauConstituent * > m_ConstituentsList_Core
Definition: PanTauSeed.h:187
PanTau::PanTauSeed::t_ExtMode11shots
@ t_ExtMode11shots
Definition: PanTauSeed.h:55
PanTau::PanTauSeed::t_NoSelectedConstituents
@ t_NoSelectedConstituents
Definition: PanTauSeed.h:36
PanTau::PanTauSeed::getProtoMomentumCore
TLorentzVector getProtoMomentumCore() const
Definition: PanTauSeed.h:219
TauFeature.h
PanTau::PanTauSeed::m
virtual double m() const
The invariant mass of the particle.
Definition: PanTauSeed.cxx:120
PanTau::PanTauSeed::DecayModeExtended
DecayModeExtended
Definition: PanTauSeed.h:43
PanTau::PanTauSeed::getConstituentsAsList_Core
const std::vector< PanTau::TauConstituent * > & getConstituentsAsList_Core() const
Definition: PanTauSeed.h:221
PanTau::PanTauSeed::setP4
void setP4(float pt, float eta, float phi, float m)
set the 4-vec
Definition: PanTauSeed.cxx:138
PanTau::PanTauSeed::getDecayModeName
static std::string getDecayModeName(int decayMode)
Definition: PanTauSeed.cxx:313
PanTau::PanTauSeed
Definition: PanTauSeed.h:24
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
PanTau::PanTauSeed::m_FinalMomentum
TLorentzVector m_FinalMomentum
Definition: PanTauSeed.h:181
PanTau::PanTauSeed::t_GoodSeed
@ t_GoodSeed
Definition: PanTauSeed.h:38
PanTau::PanTauSeed::e
virtual double e() const
The total energy of the particle.
Definition: PanTauSeed.cxx:126
PanTau::PanTauSeed::t_ExtModeOther
@ t_ExtModeOther
Definition: PanTauSeed.h:52