ATLAS Offline Software
PanTauSeed.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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( const std::string& nameInputAlgorithm,
118  xAOD::TauJet* tauJet,
119  const std::vector<PanTau::TauConstituent*>& tauConstituents,
120  const std::vector<PanTau::TauConstituent*>& tauConstituentsWithUnselected,
121  const std::vector<int>& pantauSeed_TechnicalQuality
122  );
123 
124 
126  PanTauSeed( const std::string& nameInputAlgorithm,
127  xAOD::TauJet* tauJet,
128  const std::vector<int>& pantauSeed_TechnicalQuality
129  );
130 
131  std::string getNameInputAlgorithm() const;
132  const xAOD::TauJet* getTauJet() const;
134  const PanTau::TauFeature* getFeatures() const;
136  TLorentzVector getProtoMomentumCore() const;
137  TLorentzVector getProtoMomentumWide() const;
138 
139  bool getIsValidSeed() const;
140  std::vector<int> getTechnicalQuality() const;
141  bool isOfTechnicalQuality(int pantauSeed_TechnicalQuality) const;
142  std::vector< std::vector<PanTau::TauConstituent*> > getConstituents() const;
143  std::vector<PanTau::TauConstituent*> getConstituentsAsList_Core() const;
144  std::vector<PanTau::TauConstituent*> getConstituentsAsList_Wide() const;
145  std::vector<PanTau::TauConstituent*> getConstituentsAsList_All() const;
146 
147  std::vector<PanTau::TauConstituent*> getConstituentsOfType(int tauConstituent_Type, bool& foundit);
148  int getNumberOfConstituentsOfType(int tauConstituent_Type);
149  TLorentzVector getSubsystemHLV(int tauConstituent_Type, bool& foundit);
150 
151  TLorentzVector getFinalMomentum() const;
152  int getDecayModeBySubAlg() const;
153  int getDecayModeByPanTau() const;
154 
155  void setFinalMomentum(TLorentzVector finalMom);
156  void setDecayModeByPanTau(int decayModePanTau);
157 
160 
161 
162 
163  private:
164 
167 
168  protected:
169 
170  //flag that tells whether the seed is valid
172 
173  std::vector<int> m_TechnicalQuality;
174 
175  //place to store which input alg created this pantauseed: eflowRec, CellBased, ClusterBased..
176  std::string m_NameInputAlgorithm;
177 
178  //pointer to the TauJet this PanTauSeed was build from (pointer not owned by PanTauSeed)
180 
181  //for each type of tauConstituent, a list of constituents (of that type)
182  // the TauConstituent objects are owned by PanTauSeed (this class), so they need to be deleted in the destructor
183  std::vector< std::vector<PanTau::TauConstituent*> > m_Constituents;
184 
185  //the momentum as calculated by using all constituents added to this seed
186  TLorentzVector m_ProtoMomentum_Wide;
187 
188  //the momentum as calculated by using only core constituents
189  TLorentzVector m_ProtoMomentum_Core;
190 
191  //the momentum as calculated by using info about decay mode
192  TLorentzVector m_FinalMomentum;
193 
194  //a list of hlvs for the different subsystems (charged, neutral, pi0Neut...)
195  std::vector< TLorentzVector > m_TypeHLVs;
196 
197  //also store constituents as flat list for easier access later on
198  std::vector<PanTau::TauConstituent*> m_ConstituentsList_Core; //only objects in core region
199  std::vector<PanTau::TauConstituent*> m_ConstituentsList_Wide; //objects out of core region up to 0.4
200  std::vector<PanTau::TauConstituent*> m_ConstituentsList_AllSelected; //all selected objects for this seed
201 
202  //for memory reasons:
203  // pass list of selected AND unselected pfos to seed, which will take ownership
204  std::vector<PanTau::TauConstituent*> m_ConstituentsList_All; //all objects for this seed, selected and unselected
205 
206  //the decay mode
209 
211 
214  //the features of this pantauseed
216 
217 
218  };
219 
220 
221  static void SetP4EEtaPhiM(TLorentzVector& hlv, double e, double eta, double phi, double m );
222 
223 
224 } //end name space pantau
225 
226 
228 inline const xAOD::TauJet* PanTau::PanTauSeed::getTauJet() const {return m_TauJet;}
229 inline xAOD::TauJet* PanTau::PanTauSeed::getTauJet() {return m_TauJet;}
230 inline const PanTau::TauFeature* PanTau::PanTauSeed::getFeatures() const {return m_Features;}
232 inline TLorentzVector PanTau::PanTauSeed::getProtoMomentumWide() const {return m_ProtoMomentum_Wide;}
233 inline TLorentzVector PanTau::PanTauSeed::getProtoMomentumCore() const {return m_ProtoMomentum_Core;}
234 inline std::vector< std::vector<PanTau::TauConstituent*> > PanTau::PanTauSeed::getConstituents() const {return m_Constituents;}
235 inline std::vector<PanTau::TauConstituent*> PanTau::PanTauSeed::getConstituentsAsList_Core() const {return m_ConstituentsList_Core;}
236 inline std::vector<PanTau::TauConstituent*> PanTau::PanTauSeed::getConstituentsAsList_Wide() const {return m_ConstituentsList_Wide;}
237 inline std::vector<PanTau::TauConstituent*> PanTau::PanTauSeed::getConstituentsAsList_All() const {return m_ConstituentsList_All;}
238 inline TLorentzVector PanTau::PanTauSeed::getFinalMomentum() const {return m_FinalMomentum;}
239 inline int PanTau::PanTauSeed::getDecayModeBySubAlg() const {return m_DecayMode_BySubAlg;}
240 inline int PanTau::PanTauSeed::getDecayModeByPanTau() const {return m_DecayMode_ByPanTau;}
241 inline bool PanTau::PanTauSeed::getIsValidSeed() const {return m_IsValidSeed;}
242 inline std::vector<int> PanTau::PanTauSeed::getTechnicalQuality() const {return m_TechnicalQuality;}
243 
244 inline void PanTau::PanTauSeed::setFinalMomentum(TLorentzVector finalMom) {m_FinalMomentum = finalMom;}
245 inline void PanTau::PanTauSeed::setDecayModeByPanTau(int decayModePanTau) {m_DecayMode_ByPanTau = decayModePanTau;}
246 
247 
248 inline static void PanTau::SetP4EEtaPhiM(TLorentzVector& hlv, double e, double eta, double phi, double m ){
249  // FIXME: what is wrong with eta=0?
250  if( eta == 0. ) return;
251  double pt = std::sqrt( e*e - m*m) / std::cosh( eta ); // not really safe.
252  hlv.SetPtEtaPhiE(pt, eta, phi, e);
253  return;
254 }
255 
256 
257 #endif // PANTAUALGS_PANTAUSEED_H
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:187
PanTau::PanTauSeed::getProtoMomentumWide
TLorentzVector getProtoMomentumWide() const
Definition: PanTauSeed.h:232
PanTau::PanTauSeed::setDecayModeByPanTau
void setDecayModeByPanTau(int decayModePanTau)
Definition: PanTauSeed.h:245
PanTau::PanTauSeed::m_decayModeHack_CellBasedShots
bool m_decayModeHack_CellBasedShots
Definition: PanTauSeed.h:210
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
PanTau::PanTauSeed::m_Constituents
std::vector< std::vector< PanTau::TauConstituent * > > m_Constituents
Definition: PanTauSeed.h:183
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:230
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
PanTau::PanTauSeed::setPt
void setPt(float pt)
set the Pt
Definition: PanTauSeed.cxx:158
PanTau::PanTauSeed::m_ConstituentsList_AllSelected
std::vector< PanTau::TauConstituent * > m_ConstituentsList_AllSelected
Definition: PanTauSeed.h:200
PanTau::PanTauSeed::getTauJet
const xAOD::TauJet * getTauJet() const
Definition: PanTauSeed.h:228
IParticle.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
PanTau::PanTauSeed::getSubsystemHLV
TLorentzVector getSubsystemHLV(int tauConstituent_Type, bool &foundit)
Definition: PanTauSeed.cxx:379
PanTau::PanTauSeed::getDecayModeBySubAlg
int getDecayModeBySubAlg() const
Definition: PanTauSeed.h:239
ObjectType
ObjectType
Definition: BaseObject.h:11
xAOD::TauJetParameters::nCharged
@ nCharged
Definition: TauDefs.h:266
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
PanTau::PanTauSeed::getDecayModeByPanTau
int getDecayModeByPanTau() const
Definition: PanTauSeed.h:240
PanTau::PanTauSeed::getNameInputAlgorithm
std::string getNameInputAlgorithm() const
Definition: PanTauSeed.h:227
PanTau::PanTauSeed::getConstituentsOfType
std::vector< PanTau::TauConstituent * > getConstituentsOfType(int tauConstituent_Type, bool &foundit)
Definition: PanTauSeed.cxx:358
PanTau::PanTauSeed::getConstituents
std::vector< std::vector< PanTau::TauConstituent * > > getConstituents() const
Definition: PanTauSeed.h:234
PanTau::PanTauSeed::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: PanTauSeed.cxx:121
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:115
PanTau::PanTauSeed::getFinalMomentum
TLorentzVector getFinalMomentum() const
Definition: PanTauSeed.h:238
PanTau::PanTauSeed::m_DecayMode_BySubAlg
int m_DecayMode_BySubAlg
Definition: PanTauSeed.h:207
PanTau::TauFeature
Definition: TauFeature.h:19
PanTau::PanTauSeed::setEta
void setEta(float eta)
set the eta
Definition: PanTauSeed.cxx:165
PanTau::PanTauSeed::getIsValidSeed
bool getIsValidSeed() const
Definition: PanTauSeed.h:241
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:40
jet::JetIsolation::FourMom_t
TLorentzVector FourMom_t
Definition: JetIsolationTool.cxx:19
TauConstituent.h
PanTau::PanTauSeed::m_IsValidSeed
bool m_IsValidSeed
Definition: PanTauSeed.h:171
PanTau::PanTauSeed::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle as a TLoretzVector.
Definition: PanTauSeed.cxx:141
PanTau::PanTauSeed::m_Features
PanTau::TauFeature * m_Features
flag to indicate whether the decay mode by cellbased was
Definition: PanTauSeed.h:215
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:68
PanTau::PanTauSeed::m_p4
FourMom_t m_p4
4-momentum object
Definition: PanTauSeed.h:166
PanTau::PanTauSeed::TechnicalQuality
TechnicalQuality
Definition: PanTauSeed.h:33
PanTau::PanTauSeed::getConstituentsAsList_Core
std::vector< PanTau::TauConstituent * > getConstituentsAsList_Core() const
Definition: PanTauSeed.h:235
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:137
PanTau::PanTauSeed::setFinalMomentum
void setFinalMomentum(TLorentzVector finalMom)
Definition: PanTauSeed.h:244
PanTau::PanTauSeed::m_NameInputAlgorithm
std::string m_NameInputAlgorithm
Definition: PanTauSeed.h:176
PanTau::PanTauSeed::t_ExtMode110
@ t_ExtMode110
Definition: PanTauSeed.h:46
PanTau::PanTauSeed::getTechnicalQuality
std::vector< int > getTechnicalQuality() const
Definition: PanTauSeed.h:242
PanTau::PanTauSeed::t_nTechnicalQualities
@ t_nTechnicalQualities
Definition: PanTauSeed.h:39
PanTau::PanTauSeed::m_TypeHLVs
std::vector< TLorentzVector > m_TypeHLVs
Definition: PanTauSeed.h:195
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
PanTau::PanTauSeed::getConstituentsAsList_All
std::vector< PanTau::TauConstituent * > getConstituentsAsList_All() const
Definition: PanTauSeed.h:237
PanTau::PanTauSeed::t_ExtModeError
@ t_ExtModeError
Definition: PanTauSeed.h:54
PanTau::PanTauSeed::operator=
PanTauSeed & operator=(const PanTauSeed &seed)
Definition: PanTauSeed.cxx:81
PanTau::PanTauSeed::t_ExtMode30X
@ t_ExtMode30X
Definition: PanTauSeed.h:50
PanTau::PanTauSeed::~PanTauSeed
~PanTauSeed()
Definition: PanTauSeed.cxx:33
PanTau::PanTauSeed::m_ConstituentsList_Wide
std::vector< PanTau::TauConstituent * > m_ConstituentsList_Wide
Definition: PanTauSeed.h:199
PanTau::PanTauSeed::m_ConstituentsList_All
std::vector< PanTau::TauConstituent * > m_ConstituentsList_All
Definition: PanTauSeed.h:204
PanTau::PanTauSeed::t_ExtMode10X
@ t_ExtMode10X
Definition: PanTauSeed.h:45
PanTau::PanTauSeed::PanTauSeed
PanTauSeed()
Definition: PanTauSeed.cxx:10
PanTau::PanTauSeed::t_ExtMode100
@ t_ExtMode100
Definition: PanTauSeed.h:44
PanTau::PanTauSeed::m_ProtoMomentum_Wide
TLorentzVector m_ProtoMomentum_Wide
Definition: PanTauSeed.h:186
PanTau::PanTauSeed::t_BadPtValue
@ t_BadPtValue
Definition: PanTauSeed.h:37
PanTau::PanTauSeed::m_TauJet
xAOD::TauJet * m_TauJet
Definition: PanTauSeed.h:179
PanTau::PanTauSeed::t_NoConstituentsAtAll
@ t_NoConstituentsAtAll
Definition: PanTauSeed.h:35
PanTau::PanTauSeed::setModeHackedByCellBased
void setModeHackedByCellBased(bool f)
Definition: PanTauSeed.h:158
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:109
PanTau::PanTauSeed::m_DecayMode_ByPanTau
int m_DecayMode_ByPanTau
Definition: PanTauSeed.h:208
PanTau::PanTauSeed::m_TechnicalQuality
std::vector< int > m_TechnicalQuality
Definition: PanTauSeed.h:173
PanTau::PanTauSeed::t_ExtMode3XX
@ t_ExtMode3XX
Definition: PanTauSeed.h:51
PanTau::PanTauSeed::getModeHackedByCellBased
bool getModeHackedByCellBased()
Definition: PanTauSeed.h:159
PanTau::PanTauSeed::getDecayMode
static int getDecayMode(int nCharged, int nNeutral)
Definition: PanTauSeed.cxx:310
PanTau::PanTauSeed::getNumberOfConstituentsOfType
int getNumberOfConstituentsOfType(int tauConstituent_Type)
Definition: PanTauSeed.cxx:369
PanTau
xAOD EDM
Definition: Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h:18
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
PanTau::PanTauSeed::setM
void setM(float m)
set the Mass
Definition: PanTauSeed.cxx:179
PanTau::PanTauSeed::isOfTechnicalQuality
bool isOfTechnicalQuality(int pantauSeed_TechnicalQuality) const
Definition: PanTauSeed.cxx:349
PanTau::PanTauSeed::getConstituentsAsList_Wide
std::vector< PanTau::TauConstituent * > getConstituentsAsList_Wide() const
Definition: PanTauSeed.h:236
TauJet.h
PanTau::PanTauSeed::m_ProtoMomentum_Core
TLorentzVector m_ProtoMomentum_Core
Definition: PanTauSeed.h:189
PanTau::PanTauSeed::setPhi
void setPhi(float phi)
set the phi
Definition: PanTauSeed.cxx:172
PanTau::PanTauSeed::m_ConstituentsList_Core
std::vector< PanTau::TauConstituent * > m_ConstituentsList_Core
Definition: PanTauSeed.h:198
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:233
TauFeature.h
PanTau::PanTauSeed::m
virtual double m() const
The invariant mass of the particle.
Definition: PanTauSeed.cxx:127
PanTau::PanTauSeed::DecayModeExtended
DecayModeExtended
Definition: PanTauSeed.h:43
PanTau::PanTauSeed::setP4
void setP4(float pt, float eta, float phi, float m)
set the 4-vec
Definition: PanTauSeed.cxx:145
PanTau::PanTauSeed::getDecayModeName
static std::string getDecayModeName(int decayMode)
Definition: PanTauSeed.cxx:333
PanTau::PanTauSeed
Definition: PanTauSeed.h:24
PanTau::PanTauSeed::m_FinalMomentum
TLorentzVector m_FinalMomentum
Definition: PanTauSeed.h:192
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:133
PanTau::PanTauSeed::t_ExtModeOther
@ t_ExtModeOther
Definition: PanTauSeed.h:52