ATLAS Offline Software
TauConstituent.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8  IParticle(),
9  m_p4(),
10  m_TypeFlags(),
11  m_BDTValue(PanTau::TauConstituent::DefaultBDTValue()),
12  m_Charge(PanTau::TauConstituent::DefaultCharge()),
13  m_PFO(nullptr),
14  m_Shots(),
15  m_nPhotonsInShot(0)
16 {
17 }
18 
19 
20 PanTau::TauConstituent::TauConstituent(const TLorentzVector& itsMomentum,
21  int itsCharge,
22  const std::vector<int>& itsType,
23  double itsBDTValue,
24  const xAOD::PFO* itsPFO) :
25  IParticle(),
26  m_p4(itsMomentum),
27  m_TypeFlags(itsType),
28  m_BDTValue(itsBDTValue),
29  m_Charge(itsCharge),
30  m_PFO(itsPFO),
31  m_Shots(),
32  m_nPhotonsInShot(0)
33 {
34 }
35 
36 
38 
39 = default;
40 
41 
43 {
44  //delete the shot constituents
45  for(unsigned int iShot=0; iShot<m_Shots.size(); iShot++) {
46  PanTau::TauConstituent* curConst = m_Shots[iShot];
47  delete curConst;
48  }
49 }
50 
51 
53 {
54  if (this!=&tauConst){
55 
56  if (!this->container() && !this->hasStore() ) {
57  makePrivateStore();
58  }
59  this->IParticle::operator=( tauConst );
60  this->m_p4 = tauConst.m_p4;
61  m_TypeFlags = tauConst.m_TypeFlags;
62  m_BDTValue = tauConst.m_BDTValue;
63  m_Charge = tauConst.m_Charge;
64  m_PFO = tauConst.m_PFO;
65  m_Shots = tauConst.m_Shots;
66  m_nPhotonsInShot = tauConst.m_nPhotonsInShot;
67  }
68  return *this;
69 }
70 
71 
73  static const Accessor< float > acc( "pt" );
74  return acc( *this );
75 }
76 
78  static const Accessor<float > acc( "eta" );
79  return acc( *this );
80 }
81 
83  static const Accessor< float > acc( "phi" );
84  return acc( *this );
85 }
86 
87 double PanTau::TauConstituent::m() const {
88  static const Accessor< float> acc( "m" );
89  return acc( *this );
90 }
91 
93  return p4().E();
94 }
95 
97  return p4().Rapidity();
98 }
99 
101  return m_p4;
102 }
103 
104 void PanTau::TauConstituent::setP4(float pt, float eta, float phi, float m){
105  static const Accessor< float > acc1( "pt" );
106  acc1( *this ) = pt;
107  static const Accessor< float > acc2( "eta" );
108  acc2( *this ) = eta;
109  static const Accessor< float > acc3( "phi" );
110  acc3( *this ) = phi;
111  static const Accessor< float > acc4( "m" );
112  acc4( *this ) = m;
113  //Need to recalculate m_p4
114  m_p4.SetPtEtaPhiM( pt, eta, phi, m);
115 }
116 
118  static const Accessor< float > acc( "pt" );
119  acc( *this ) = pt;
120  //Need to recalculate m_p4
121  m_p4.SetPtEtaPhiM( pt, eta(), phi(), m());
122 }
123 
125  static const Accessor< float > acc( "eta" );
126  acc( *this ) = eta;
127  //Need to recalculate m_p4
128  m_p4.SetPtEtaPhiM( pt(), eta, phi(), m());
129 }
130 
132  static const Accessor< float > acc( "phi" );
133  acc( *this ) = phi;
134  //Need to recalculate m_p4
135  m_p4.SetPtEtaPhiM( pt(), eta(), phi, m());
136 }
137 
139  static const Accessor< float > acc( "m" );
140  acc( *this ) = m;
141  //Need to recalculate m_p4
142  m_p4.SetPtEtaPhiM( pt(), eta(), phi(), m);
143 }
144 
145 
148 }
149 
150 
152  unsigned int typeIndex = (unsigned int)aType;
153  m_TypeFlags.at(typeIndex) = 0;
154 }
155 
156 
157 //the static getTypeName which does a translation
159  switch(aType) {
160  case PanTau::TauConstituent::t_Charged: return "Charged";
161  case PanTau::TauConstituent::t_Neutral: return "Neutral";
162  case PanTau::TauConstituent::t_Pi0Neut: return "Pi0Neut";
163  case PanTau::TauConstituent::t_NoType: return "All";
164  default: return "UnkownType";
165  }
166 }
167 
168 
169 bool PanTau::TauConstituent::isNeutralType(int tauConstituentType) {
171  switch(type) {
172  case PanTau::TauConstituent::t_Neutral: return true;
173  case PanTau::TauConstituent::t_Pi0Neut: return true;
174  default: return false;
175  }
176  return false;
177 }
178 
179 //the non static getType name, which returns
180 std::vector<std::string> PanTau::TauConstituent::getTypeName() const {
181  std::vector<std::string> res;
182  for(unsigned int iType=0; iType<TauConstituent::t_nTypes; iType++) {
183  if(m_TypeFlags[iType] == 1) {
185  res.push_back( TauConstituent::getTypeName(curType) );
186  }
187  }
188  return res;
189 }
190 
191 
193  std::string res;
194  for(unsigned int iType=0; iType<m_TypeFlags.size(); iType++) {
195  if(m_TypeFlags[iType] == 1) {
197  }
198  }
199  return res;
200 }
201 
202 
204  return m_BDTValue;
205 }
206 
207 
208 const std::vector<int>& PanTau::TauConstituent::getTypeFlags() const {
209  return m_TypeFlags;
210 }
211 
212 
214  if(theType >= static_cast<int>(TauConstituent::t_nTypes)) {
215  return false;
216  }
217  if(m_TypeFlags.at( static_cast<int>(theType)) == 1) return true;
218  return false;
219 }
220 
221 
223  return m_Charge;
224 }
225 
226 
228  return m_PFO;
229 }
230 
231 
233  if(shot != nullptr) m_Shots.push_back(shot);
234 }
235 
236 
237 const std::vector<PanTau::TauConstituent*>& PanTau::TauConstituent::getShots() const {
238  return m_Shots;
239 }
240 
241 
242 unsigned int PanTau::TauConstituent::getNShots() const {
243  return m_Shots.size();
244 }
245 
246 
248  m_nPhotonsInShot = nPhotons;
249 }
250 
251 
253  return m_nPhotonsInShot;
254 }
python.CaloBCIDAvgAlgConfig.acc3
def acc3
Definition: CaloBCIDAvgAlgConfig.py:69
PanTau::TauConstituent::getTypeFlags
const std::vector< int > & getTypeFlags() const
Definition: TauConstituent.cxx:208
PanTau::TauConstituent::m_p4
FourMom_t m_p4
4-momentum object
Definition: TauConstituent.h:157
PanTau::TauConstituent::t_Neutral
@ t_Neutral
Definition: TauConstituent.h:45
PanTau::TauConstituent::Type
Type
Type enumeration to specify type of this tau constituent.
Definition: TauConstituent.h:42
PanTau::TauConstituent::t_Charged
@ t_Charged
Definition: TauConstituent.h:44
ObjectType
ObjectType
Definition: BaseObject.h:11
SG::Accessor< float >
PanTau::TauConstituent::~TauConstituent
virtual ~TauConstituent()
Destructor.
Definition: TauConstituent.cxx:42
test_pyathena.pt
pt
Definition: test_pyathena.py:11
PanTau::TauConstituent::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: TauConstituent.cxx:82
PanTau::TauConstituent::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle as a TLorentzVector.
Definition: TauConstituent.cxx:100
PanTau::TauConstituent::getNPhotonsInShot
int getNPhotonsInShot() const
Definition: TauConstituent.cxx:252
PanTau::TauConstituent::getTypeNameString
std::string getTypeNameString() const
Definition: TauConstituent.cxx:192
PanTau::TauConstituent::setNPhotonsInShot
void setNPhotonsInShot(int nPhotons)
Definition: TauConstituent.cxx:247
columnar::operator=
AccessorTemplate & operator=(AccessorTemplate &&that)
Definition: VectorColumn.h:88
PanTau::TauConstituent::m_PFO
const xAOD::PFO * m_PFO
Definition: TauConstituent.h:166
TauConstituent.h
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
PanTau::TauConstituent::TauConstituent
TauConstituent()
Default Constructor for POOL.
Definition: TauConstituent.cxx:7
PanTau::TauConstituent::getBDTValue
double getBDTValue() const
Definition: TauConstituent.cxx:203
PanTau::TauConstituent::isNeutralType
static bool isNeutralType(int tauConstituentType)
Definition: TauConstituent.cxx:169
PanTau::TauConstituent::setEta
void setEta(float eta)
set the eta
Definition: TauConstituent.cxx:124
PanTau::TauConstituent::getTypeName
std::vector< std::string > getTypeName() const
Definition: TauConstituent.cxx:180
PanTau::TauConstituent::m_Charge
int m_Charge
Definition: TauConstituent.h:164
python.CaloBCIDAvgAlgConfig.acc1
def acc1
Definition: CaloBCIDAvgAlgConfig.py:49
PanTau::TauConstituent::getNShots
unsigned int getNShots() const
Definition: TauConstituent.cxx:242
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:11
python.CaloBCIDAvgAlgConfig.acc2
def acc2
Definition: CaloBCIDAvgAlgConfig.py:59
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
xAODType::ParticleFlow
@ ParticleFlow
The object is a particle-flow object.
Definition: ObjectType.h:41
PanTau::TauConstituent::rapidity
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition: TauConstituent.cxx:96
python.LArRecUtilsConfig.acc4
def acc4
Definition: LArRecUtilsConfig.py:196
PanTau::TauConstituent::FourMom_t
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
Definition: TauConstituent.h:110
PanTau::TauConstituent::addShot
void addShot(TauConstituent *shot)
Definition: TauConstituent.cxx:232
PanTau::TauConstituent::setPhi
void setPhi(float phi)
set the phi
Definition: TauConstituent.cxx:131
xAOD::PFO_v1
Class describing a particle flow object.
Definition: PFO_v1.h:35
PanTau::TauConstituent::m_TypeFlags
std::vector< int > m_TypeFlags
Definition: TauConstituent.h:162
PanTau::TauConstituent::setPt
void setPt(float pt)
set the Pt
Definition: TauConstituent.cxx:117
PanTau::TauConstituent::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: TauConstituent.cxx:77
PanTau::TauConstituent::m_Shots
std::vector< TauConstituent * > m_Shots
Definition: TauConstituent.h:169
PanTau::TauConstituent::isOfType
bool isOfType(TauConstituent::Type aType) const
Definition: TauConstituent.cxx:213
PanTau::TauConstituent::operator=
TauConstituent & operator=(const TauConstituent &tauConst)
Assignment operator.
Definition: TauConstituent.cxx:52
PanTau::TauConstituent::t_Pi0Neut
@ t_Pi0Neut
Definition: TauConstituent.h:46
PanTau
xAOD EDM
Definition: Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h:18
PanTau::TauConstituent::setM
void setM(float m)
set the Mass
Definition: TauConstituent.cxx:138
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
PanTau::TauConstituent::t_NoType
@ t_NoType
Definition: TauConstituent.h:43
PanTau::TauConstituent::setP4
void setP4(float pt, float eta, float phi, float m)
set the 4-vec
Definition: TauConstituent.cxx:104
PanTau::TauConstituent::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition: TauConstituent.cxx:72
PanTau::TauConstituent::t_nTypes
@ t_nTypes
Definition: TauConstituent.h:51
PanTau::TauConstituent::m_nPhotonsInShot
int m_nPhotonsInShot
Definition: TauConstituent.h:170
PanTau::TauConstituent::m
virtual double m() const
The invariant mass of the particle.
Definition: TauConstituent.cxx:87
PanTau::TauConstituent
Definition: TauConstituent.h:25
PanTau::TauConstituent::m_BDTValue
double m_BDTValue
Definition: TauConstituent.h:163
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
PanTau::TauConstituent::getCharge
int getCharge() const
Definition: TauConstituent.cxx:222
PanTau::TauConstituent::getShots
const std::vector< TauConstituent * > & getShots() const
Definition: TauConstituent.cxx:237
PanTau::TauConstituent::type
virtual xAOD::Type::ObjectType type() const
The type of the object as a simple enumeration, remains pure virtual in e/gamma.
Definition: TauConstituent.cxx:146
PanTau::TauConstituent::removeTypeFlag
void removeTypeFlag(TauConstituent::Type aType)
Definition: TauConstituent.cxx:151
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
PanTau::TauConstituent::getPFO
const xAOD::PFO * getPFO() const
Definition: TauConstituent.cxx:227
PanTau::TauConstituent::e
virtual double e() const
The total energy of the particle.
Definition: TauConstituent.cxx:92