ATLAS Offline Software
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 
7 std::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 
29 MsgStream& operator<< ( MsgStream& m, const TrigVertex& v ) //<! printing helper (wraps above)
30 {
31  m << str(v);
32  return m;
33 }
34 
35 bool 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 
64 void 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 }
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
operator==
bool operator==(const TrigVertex &a, const TrigVertex &b)
Definition: TrigVertex.cxx:35
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
operator<<
MsgStream & operator<<(MsgStream &m, const TrigVertex &v)
Definition: TrigVertex.cxx:29
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.PyAthena.v
v
Definition: PyAthena.py:154
TrigVertex.h
a
TList * a
Definition: liststreamerinfos.cxx:10
TrigVertex
Definition: TrigVertex.h:28
diff
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 ...
Definition: TrigVertex.cxx:64
str
std::string str(const TrigVertex &v)
Definition: TrigVertex.cxx:7