ATLAS Offline Software
Loading...
Searching...
No Matches
TrigEFBphys.cxx
Go to the documentation of this file.
1// -*- C++ -*-
2
3/*
4 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
5*/
6
7
23
26
27// default constructor
29 m_roiID(-1), m_particleType(PHIKK), m_eta(0), m_phi(0) ,
30 m_mass(0), m_fitmass(-99.), m_fitchi2(-99.), m_fitndof(-99),
31 m_fitx(-99.), m_fity(-99.), m_fitz(-99),
33{}
34
35// constructors
36
38 float mass):
39 m_roiID(roi),
42 m_fitmass(-99.), m_fitchi2(-99.), m_fitndof(-99),m_fitx(-99.), m_fity(-99.), m_fitz(-99.),
44{}
45
47 float mass, const ElementLink<TrigEFBphysContainer>& sDecay):
48 m_roiID(roi),
51 m_fitmass(-99.), m_fitchi2(-99.), m_fitndof(-99),m_fitx(-99.), m_fity(-99.), m_fitz(-99.),
53{}
54
55
57{
58 m_trackVector.push_back( track);
59}
60
62{
63 m_secondaryDecay=p_secondaryDecay;
64}
65
66
67void TrigEFBphys::fitmass(float FitMass)
68{
69 m_fitmass = FitMass;
70}
71
72void TrigEFBphys::fitchi2(float FitChi2)
73{
74 m_fitchi2 = FitChi2;
75}
76
77void TrigEFBphys::fitndof(int FitNdof)
78{
79 m_fitndof = FitNdof;
80}
81
82void TrigEFBphys::fitx(float FitX)
83{
84 m_fitx = FitX;
85}
86void TrigEFBphys::fity(float FitY)
87{
88 m_fity = FitY;
89}
90void TrigEFBphys::fitz(float FitZ)
91{
92 m_fitz = FitZ;
93}
94
95MsgStream& operator<< ( MsgStream& m, const TrigEFBphys& p )
96{
97 m << str(p);
98 return m;
99}
100
101std::string str( const TrigEFBphys& p )
102{
103 std::stringstream ss;
104
105 ss << "RoI_ID: "<<p.roiId()
106 << "Particle type: "<<p.particleType()
107 << "eta: "<<p.eta()
108 << "phi: "<<p.phi()
109 << "mass: "<<p.mass()
110 << "mass after fit: "<<p.fitmass()
111 << "fit chi2: "<<p.fitchi2()
112 << "fit ndof: "<<p.fitndof()
113 << "x: "<<p.fitx()
114 << "y: "<<p.fity()
115 << "z: "<<p.fitz();
116 return ss.str();
117}
118
119bool operator== ( const TrigEFBphys& a, const TrigEFBphys& b )
120{
121 const double epsilon = 1e-8;
122
123 int aHasSD = (a.pSecondDecay()!=NULL)?1:0;
124 int bHasSD = (b.pSecondDecay()!=NULL)?1:0;
125 if((aHasSD+bHasSD)==1)
126 return false;
127
128 if(a.trackVector().size()!=b.trackVector().size())
129 return false;
130
131 if(a.roiId() != b.roiId()) return false;
132 if(a.particleType() != b.particleType()) return false;
133 if(a.fitndof() != b.fitndof()) return false;
134
135 if(fabs(a.eta()-b.eta())>epsilon) return false;
136 if(fabs(a.phi()-b.phi())>epsilon) return false;
137 if(fabs(a.mass()-b.mass())>epsilon) return false;
138 if(fabs(a.fitmass()-b.fitmass())>epsilon) return false;
139 if(fabs(a.fitchi2()-b.fitchi2())>epsilon) return false;
140 if(fabs(a.fitx()-b.fitx())>epsilon) return false;
141 if(fabs(a.fity()-b.fity())>epsilon) return false;
142 if(fabs(a.fitz()-b.fitz())>epsilon) return false;
143
144 if((aHasSD+bHasSD)==2)
145 {
146 if (!((*a.pSecondDecay())==(*b.pSecondDecay())))
147 return false;
148 }
149 return true;
150}
151
152void diff( const TrigEFBphys& a, const TrigEFBphys& b, std::map<std::string, double>& variableChange )
153{
154 variableChange["eta"] = a.eta() - b.eta();
155 variableChange["phi"] = a.phi() - b.phi();
156 variableChange["mass"] = a.mass() - b.mass();
157 variableChange["fitmass"] = a.fitmass() - b.fitmass();
158 variableChange["fitchi2"] = a.fitchi2() - b.fitchi2();
159 variableChange["x"] = a.fitx() - b.fitx();
160 variableChange["y"] = a.fity() - b.fity();
161 variableChange["z"] = a.fitz() - b.fitz();
162}
163
164
167 if (m_secondaryDecay.isValid()) {
168 return *m_secondaryDecay;
169 } else {
170 return NULL;
171 }
172}
173
174
179
static Double_t a
static Double_t ss
void diff(const TrigEFBphys &a, const TrigEFBphys &b, std::map< std::string, double > &variableChange)
comparison with feedback Function compares two objects and returns "semi verbose" output in the form ...
MsgStream & operator<<(MsgStream &m, const TrigEFBphys &p)
bool operator==(const TrigEFBphys &a, const TrigEFBphys &b)
float phi() const
accessor method: phi
Definition TrigEFBphys.h:69
float fitchi2() const
accessor method: chi2 from vertex fit
Definition TrigEFBphys.h:75
const ElementLink< TrigEFBphysContainer > & secondaryDecayLink() const
TrigEFBphys()
constructors; note: default constructor needed by POOL
void addTrack(const ElementLink< Rec::TrackParticleContainer > &track)
set method: add track to particle
float fitmass() const
accessor method: mass from vertex fit
Definition TrigEFBphys.h:73
float m_fitmass
float m_fitchi2
ElementLinkVector< Rec::TrackParticleContainer > m_trackVector
pType
enum for different particle types
Definition TrigEFBphys.h:47
float fity() const
accessor method: y position of vertex
Definition TrigEFBphys.h:81
float fitx() const
accessor method: x position of vertex
Definition TrigEFBphys.h:79
pType particleType() const
accessor method: particle Type
Definition TrigEFBphys.h:65
pType m_particleType
ElementLink< TrigEFBphysContainer > m_secondaryDecay
float mass() const
accessor method: mass
Definition TrigEFBphys.h:71
float fitz() const
accessor method: z position of vertex
Definition TrigEFBphys.h:83
float eta() const
accessor method: eta
Definition TrigEFBphys.h:67
const TrigEFBphys * pSecondDecay() const
accessor method: secondary decay particle
int fitndof() const
accessor method: ndof from vertex fit
Definition TrigEFBphys.h:77