ATLAS Offline Software
TauConstituent.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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_OutChrg: return "OuterChrg";
164  case PanTau::TauConstituent::t_OutNeut: return "OuterNeut";
165  case PanTau::TauConstituent::t_NeutLowA: return "NeutLowA";
166  case PanTau::TauConstituent::t_NeutLowB: return "NeutLowB";
167  case PanTau::TauConstituent::t_NoType: return "All";
168  default: return "UnkownType";
169  }
170 }
171 
172 
173 bool PanTau::TauConstituent::isNeutralType(int tauConstituentType) {
175  switch(type) {
176  case PanTau::TauConstituent::t_Neutral: return true;
177  case PanTau::TauConstituent::t_Pi0Neut: return true;
178  case PanTau::TauConstituent::t_OutNeut: return true;
179  case PanTau::TauConstituent::t_NeutLowA: return true;
180  case PanTau::TauConstituent::t_NeutLowB: return true;
181  default: return false;
182  }
183  return false;
184 }
185 
186 
187 bool PanTau::TauConstituent::isCoreType(int tauConstituentType) {
189  switch(type) {
190  case PanTau::TauConstituent::t_Charged: return true;
191  case PanTau::TauConstituent::t_Neutral: return true;
192  case PanTau::TauConstituent::t_Pi0Neut: return true;
193  case PanTau::TauConstituent::t_OutNeut: return false;
194  case PanTau::TauConstituent::t_OutChrg: return false;
195  case PanTau::TauConstituent::t_NeutLowA: return true;
196  case PanTau::TauConstituent::t_NeutLowB: return true;
197  default: return false;
198  }
199  return false;
200 }
201 
202 
203 //the non static getType name, which returns
204 std::vector<std::string> PanTau::TauConstituent::getTypeName() const {
205  std::vector<std::string> res;
206  for(unsigned int iType=0; iType<TauConstituent::t_nTypes; iType++) {
207  if(m_TypeFlags[iType] == 1) {
209  res.push_back( TauConstituent::getTypeName(curType) );
210  }
211  }
212  return res;
213 }
214 
215 
217  std::string res;
218  for(unsigned int iType=0; iType<m_TypeFlags.size(); iType++) {
219  if(m_TypeFlags[iType] == 1) {
221  }
222  }
223  return res;
224 }
225 
226 
228  return m_BDTValue;
229 }
230 
231 
232 std::vector<int> PanTau::TauConstituent::getTypeFlags() const {
233  return m_TypeFlags;
234 }
235 
236 
238  if(theType >= static_cast<int>(TauConstituent::t_nTypes)) {
239  return false;
240  }
241  if(m_TypeFlags.at( static_cast<int>(theType)) == 1) return true;
242  return false;
243 }
244 
245 
247  return m_Charge;
248 }
249 
250 
252  return m_PFO;
253 }
254 
255 
257  if(shot != nullptr) m_Shots.push_back(shot);
258 }
259 
260 
261 std::vector<PanTau::TauConstituent*> PanTau::TauConstituent::getShots() const {
262  return m_Shots;
263 }
264 
265 
266 unsigned int PanTau::TauConstituent::getNShots() const {
267  return m_Shots.size();
268 }
269 
270 
272  m_nPhotonsInShot = nPhotons;
273 }
274 
275 
277  return m_nPhotonsInShot;
278 }
python.CaloBCIDAvgAlgConfig.acc3
def acc3
Definition: CaloBCIDAvgAlgConfig.py:69
PanTau::TauConstituent::m_p4
FourMom_t m_p4
4-momentum object
Definition: TauConstituent.h:158
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
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
PanTau::TauConstituent::t_Charged
@ t_Charged
Definition: TauConstituent.h:44
ObjectType
ObjectType
Definition: BaseObject.h:11
SG::Accessor< float >
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
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:276
PanTau::TauConstituent::getTypeNameString
std::string getTypeNameString() const
Definition: TauConstituent.cxx:216
PanTau::TauConstituent::setNPhotonsInShot
void setNPhotonsInShot(int nPhotons)
Definition: TauConstituent.cxx:271
PanTau::TauConstituent::m_PFO
const xAOD::PFO * m_PFO
Definition: TauConstituent.h:167
TauConstituent.h
PanTau::TauConstituent::TauConstituent
TauConstituent()
Default Constructor for POOL.
Definition: TauConstituent.cxx:7
PanTau::TauConstituent::getBDTValue
double getBDTValue() const
Definition: TauConstituent.cxx:227
PanTau::TauConstituent::t_OutNeut
@ t_OutNeut
Definition: TauConstituent.h:48
PanTau::TauConstituent::isNeutralType
static bool isNeutralType(int tauConstituentType)
Definition: TauConstituent.cxx:173
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:204
PanTau::TauConstituent::m_Charge
int m_Charge
Definition: TauConstituent.h:165
python.CaloBCIDAvgAlgConfig.acc1
def acc1
Definition: CaloBCIDAvgAlgConfig.py:49
PanTau::TauConstituent::getNShots
unsigned int getNShots() const
Definition: TauConstituent.cxx:266
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
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:111
PanTau::TauConstituent::addShot
void addShot(TauConstituent *shot)
Definition: TauConstituent.cxx:256
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:163
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:170
PanTau::TauConstituent::isOfType
bool isOfType(TauConstituent::Type aType) const
Definition: TauConstituent.cxx:237
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.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
PanTau::TauConstituent::t_NoType
@ t_NoType
Definition: TauConstituent.h:43
PanTau::TauConstituent::t_NeutLowB
@ t_NeutLowB
Definition: TauConstituent.h:50
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_NeutLowA
@ t_NeutLowA
Definition: TauConstituent.h:49
PanTau::TauConstituent::t_nTypes
@ t_nTypes
Definition: TauConstituent.h:51
PanTau::TauConstituent::m_nPhotonsInShot
int m_nPhotonsInShot
Definition: TauConstituent.h:171
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::isCoreType
static bool isCoreType(int tauConstituentType)
Definition: TauConstituent.cxx:187
PanTau::TauConstituent::t_OutChrg
@ t_OutChrg
Definition: TauConstituent.h:47
PanTau::TauConstituent::m_BDTValue
double m_BDTValue
Definition: TauConstituent.h:164
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
PanTau::TauConstituent::getCharge
int getCharge() const
Definition: TauConstituent.cxx:246
PanTau::TauConstituent::getTypeFlags
std::vector< int > getTypeFlags() const
Definition: TauConstituent.cxx:232
PanTau::TauConstituent::getShots
std::vector< TauConstituent * > getShots() const
Definition: TauConstituent.cxx:261
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
PanTau::TauConstituent::getPFO
const xAOD::PFO * getPFO() const
Definition: TauConstituent.cxx:251
PanTau::TauConstituent::e
virtual double e() const
The total energy of the particle.
Definition: TauConstituent.cxx:92