103 std::stringstream
ss;
105 ss <<
"RoI_ID: "<<p.roiId()
106 <<
"Particle type: "<<p.particleType()
109 <<
"mass: "<<p.mass()
110 <<
"mass after fit: "<<p.fitmass()
111 <<
"fit chi2: "<<p.fitchi2()
112 <<
"fit ndof: "<<p.fitndof()
121 const double epsilon = 1e-8;
123 int aHasSD = (
a.pSecondDecay()!=NULL)?1:0;
124 int bHasSD = (b.pSecondDecay()!=NULL)?1:0;
125 if((aHasSD+bHasSD)==1)
128 if(
a.trackVector().size()!=b.trackVector().size())
131 if(
a.roiId() != b.roiId())
return false;
132 if(
a.particleType() != b.particleType())
return false;
133 if(
a.fitndof() != b.fitndof())
return false;
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;
144 if((aHasSD+bHasSD)==2)
146 if (!((*
a.pSecondDecay())==(*b.pSecondDecay())))
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();
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)
ElementLink implementation for ROOT usage.
float phi() const
accessor method: phi
float fitchi2() const
accessor method: chi2 from vertex fit
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
ElementLinkVector< Rec::TrackParticleContainer > m_trackVector
pType
enum for different particle types
float fity() const
accessor method: y position of vertex
float fitx() const
accessor method: x position of vertex
pType particleType() const
accessor method: particle Type
ElementLink< TrigEFBphysContainer > m_secondaryDecay
float mass() const
accessor method: mass
float fitz() const
accessor method: z position of vertex
float eta() const
accessor method: eta
const TrigEFBphys * pSecondDecay() const
accessor method: secondary decay particle
int fitndof() const
accessor method: ndof from vertex fit