ATLAS Offline Software
Loading...
Searching...
No Matches
TrigVertex.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7std::string str( const TrigVertex& v ) //<! printing helper
8{
9 std::stringstream ss;
10 const HepGeom::Point3D<double>& pos = v.position();
11 int nTracks=0;
12
13 if(v.tracks()!=NULL) nTracks=v.tracks()->size();
14
15 ss << "AlgorithmID: "<<v.algorithmId()
16 << "x: "<<pos.x()
17 <<" y: "<<pos.y()
18 <<" z: "<<pos.z()
19 <<" chi2: "<<v.chi2()
20 <<" ndof: "<<v.ndof()
21 <<" ntracks: "<<nTracks
22 <<" mass: "<<v.mass()
23 <<" energyFraction: "<<v.energyFraction()
24 <<" nTwoTracksSecVtx: "<<v.nTwoTracksSecVtx();
25 return ss.str();
26
27}
28
29MsgStream& operator<< ( MsgStream& m, const TrigVertex& v ) //<! printing helper (wraps above)
30{
31 m << str(v);
32 return m;
33}
34
35bool operator== ( const TrigVertex& a, const TrigVertex& b )
36{
37 const double epsilon=1e-8;
38 int nTracksA=0;
39 int nTracksB=0;
40
41 if(a.tracks()!=NULL) nTracksA=a.tracks()->size();
42 if(b.tracks()!=NULL) nTracksB=b.tracks()->size();
43 const HepGeom::Point3D<double>& posA = a.position();
44 const HepGeom::Point3D<double>& posB = b.position();
45
46 if(a.algorithmId() != b.algorithmId()) return false;
47 if(nTracksA != nTracksB) return false;
48 if(a.ndof() != b.ndof()) return false;
49 if(fabs(posA.x()-posB.x())>epsilon) return false;
50 if(fabs(posA.y()-posB.y())>epsilon) return false;
51 if(fabs(posA.z()-posB.z())>epsilon) return false;
52 if(fabs(a.chi2()-b.chi2())>epsilon) return false;
53 if(fabs(a.mass()-b.mass())>epsilon) return false;
54 return true;
55}
56
64void diff( const TrigVertex& a, const TrigVertex& b, std::map<std::string, double>& variableChange )
65{
66 int nTracksA=0;
67 int nTracksB=0;
68
69 if(a.tracks()!=NULL) nTracksA=a.tracks()->size();
70 if(b.tracks()!=NULL) nTracksB=b.tracks()->size();
71 const HepGeom::Point3D<double>& posA = a.position();
72 const HepGeom::Point3D<double>& posB = b.position();
73
74 variableChange["x"] = posA.x() - posB.x();
75 variableChange["y"] = posA.y() - posB.y();
76 variableChange["z"] = posA.z() - posB.z();
77 variableChange["ntracks"] = (double)(nTracksA - nTracksB);
78 variableChange["chi2"] = a.chi2() - b.chi2();
79 variableChange["ndof"] = (double)(a.ndof() - b.ndof());
80 variableChange["mass"] = a.mass() - b.mass();
81 variableChange["energyFraction"] = a.energyFraction() - b.energyFraction();
82 variableChange["nTwoTracksSecVtx"] = (double)(a.nTwoTracksSecVtx() - b.nTwoTracksSecVtx());
83}
static Double_t a
static Double_t ss
bool operator==(const TrigVertex &a, const TrigVertex &b)
void diff(const TrigVertex &a, const TrigVertex &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 TrigVertex &v)
encapsulates LVL2 vertex parameters (in the global reference frame), covariance matrix,...
Definition TrigVertex.h:28