ATLAS Offline Software
TrigVertex.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGINDETEVENT_TRIGVERTEX_H
6 #define TRIGINDETEVENT_TRIGVERTEX_H
7 
8 #include <list>
9 
10 #include "CLHEP/Geometry/Point3D.h"
12 #include <math.h>
13 #include <map>
14 #include <ostream>
15 #include "GaudiKernel/MsgStream.h"
16 
26 typedef std::list< const TrigInDetTrack* > TrackInVertexList;
27 
28 class TrigVertex{
29 
30  public:
37 
38  // Constructors
39  TrigVertex() : m_x(0.0), m_y(0.0), m_z(0.), m_position(0,0,0),
40  m_chiSquared(0.0), m_nDOF(0),
41  m_tracks(NULL), m_algId(NULLID),
42  m_ownTracks(false)
43  {
44  for(int i=0;i<6;i++) m_cov[i]=0.0;
45  m_mass=0.0;m_massVar=0.0;m_P=NULL;m_energyFraction=0.0;
48  }
49 
50  TrigVertex( double zPosition ) : m_x(0.0), m_y(0.0), m_z(zPosition),m_position(0,0,zPosition),
51  m_chiSquared(0.0), m_nDOF(0),
52  m_tracks(NULL), m_algId(NULLID),
53  m_ownTracks(false)
54  {
55  for(int i=0;i<6;i++) m_cov[i]=0.0;
56  m_mass=0.0;m_massVar=0.0;m_P=NULL;m_energyFraction=0.0;
59  }
60 
61  TrigVertex( double zPosition, AlgoId id ) : m_x(0.0), m_y(0.0), m_z(zPosition), m_position(0,0,zPosition),
62  m_chiSquared(0.0), m_nDOF(0),
63  m_tracks(NULL), m_algId(id),
64  m_ownTracks(false)
65  {
66  for(int i=0;i<6;i++) m_cov[i]=0.0;
67  m_mass=0.0;m_massVar=0.0;m_P=NULL;m_energyFraction=0.0;
70  }
71 
72  TrigVertex( double zPosition, double cv, AlgoId id ) : m_x(0.0), m_y(0.0), m_z(zPosition), m_position(0,0,zPosition),
73  m_chiSquared(0.0), m_nDOF(0),
74  m_tracks(NULL), m_algId(id),
75  m_ownTracks(false)
76  {
77  for(int i=0;i<5;i++) m_cov[i]=0.0;
78  m_cov[5]=cv;
79  m_mass=0.0;m_massVar=0.0;m_P=NULL;m_energyFraction=0.0;
82  }
83 
84  TrigVertex(double x, double y, double z, double cv[6], double chi2, int ndf, TrackInVertexList* tracks) :
85  m_x(x), m_y(y), m_z(z), m_position(x,y,z), m_chiSquared(chi2),
87  m_ownTracks(false)
88  {
89  for(int i=0;i<6;i++) m_cov[i]=cv[i];
90  m_mass=0.0;m_massVar=0.0;m_P=NULL;m_energyFraction=0.0;
93  }
94 
95  TrigVertex(double x, double y, double z, double cv[6], double chi2, int ndf, TrackInVertexList* tracks,
96  double mass, double energyFraction, int n2trkvtx,
97  double decayLength, double decayLengthSignificance,
98  AlgoId algo_id) :
99  m_x(x), m_y(y), m_z(z), m_mass(mass), m_massVar(0),
101  m_nTwoTracksSecVtx(n2trkvtx),
105  m_nDOF(ndf), m_tracks(tracks), m_algId(algo_id),
106  m_ownTracks(false)
107  {
108  for(int i=0;i<6;i++) m_cov[i]=cv[i];
109  m_P=NULL;
110  }
111 
112  // Destructor
114  {
115  if (m_ownTracks) {
116  for (TrackInVertexList::iterator i = m_tracks->begin();
117  i != m_tracks->end();
118  ++i)
119  delete *i;
120  }
121  if(m_tracks!=NULL) delete m_tracks;
122  if(m_P!=NULL) delete m_P;
123  }
124 
125  // Methods to retrieve data members
126 
127  void algorithmId(const AlgoId id) { m_algId = id;}
128  AlgoId algorithmId() const { return m_algId;}
129 
130  const HepGeom::Point3D<double>& position() const { return m_position; }
131  double chi2() const { return m_chiSquared; }
132  int ndof() const { return m_nDOF; }
133  const double* cov() const { return &m_cov[0];}
134 
136  const TrackInVertexList* tracks() const { return m_tracks; }
137  double x() const { return m_x; }
138  double y() const { return m_y; }
139  double z() const { return m_z; }
140 
141  double mass() const { return m_mass; }
142  double massVariance() const { return m_massVar; }
143  const TrigInDetTrackFitPar* getMotherTrack() const { return m_P;}
144 
145  double energyFraction() const { return m_energyFraction; }
146  int nTwoTracksSecVtx() const { return m_nTwoTracksSecVtx; }
147  double decayLength() const { return m_decayLength; }
149 
150  // Methods to set data members
151 
152  void setMass (double m) { m_mass = m; }
153  void setMassVariance (double m) { m_massVar = m; }
155 
156  void setEnergyFraction (double e) { m_energyFraction = e; }
158 
159  void setDecayLength (double v) {m_decayLength = v;}
161 
162  private:
163  friend class TrigVertexCnv_p1;
164  friend class TrigVertexCnv_p2;
165 
166 
168  double m_cov[6];
169 
171 
173 
176 
177  HepGeom::Point3D<double> m_position;
178  double m_chiSquared;
179  int m_nDOF;
184 
185 };
186 
187 std::string str( const TrigVertex& v ); //<! printing helper
188 MsgStream& operator<< ( MsgStream& m, const TrigVertex& v ); //<! printing helper (wraps above)
189 bool operator== ( const TrigVertex& a, const TrigVertex& b );
190 inline bool operator!= ( const TrigVertex& a, const TrigVertex& b ) { return !(a==b); }
191 
199 void diff( const TrigVertex& a, const TrigVertex& b, std::map<std::string, double>& variableChange );
200 
201 
202 CLASS_DEF( TrigVertex , 224516498 , 1 )
203 
204 #endif // TRIGINDETEVENT_TRIGVERTEX_H
TrigVertex::mass
double mass() const
vertex mass estimated after the vertex fit
Definition: TrigVertex.h:141
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
covarianceTool.ndf
ndf
Definition: covarianceTool.py:678
TrigVertex::BSFULLIDSCANID
@ BSFULLIDSCANID
Definition: TrigVertex.h:32
TrigVertex::BSFULLSITRACKID
@ BSFULLSITRACKID
Definition: TrigVertex.h:32
TrigVertexCnv_p2
Definition: TrigVertexCnv_p2.h:32
TrigVertex::m_x
double m_x
Definition: TrigVertex.h:167
TrigVertex::m_mass
double m_mass
Definition: TrigVertex.h:167
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
TrigVertex::BSFULL_STRATEGY_A_ID
@ BSFULL_STRATEGY_A_ID
Definition: TrigVertex.h:34
TrigVertex::massVariance
double massVariance() const
variance of the vertex mass estimate
Definition: TrigVertex.h:142
TrigVertex::m_decayLength
double m_decayLength
Definition: TrigVertex.h:174
TrigVertex::NULLID
@ NULLID
Definition: TrigVertex.h:31
TrigVertex::BSSPLITSITRACKID
@ BSSPLITSITRACKID
Definition: TrigVertex.h:32
TrigInDetTrackFitPar
Definition: TrigInDetTrackFitPar.h:67
TrigVertex::HISTOPRMVTXFTKID_REFIT
@ HISTOPRMVTXFTKID_REFIT
Definition: TrigVertex.h:36
TrigVertex::setEnergyFraction
void setEnergyFraction(double e)
Definition: TrigVertex.h:156
TrigVertex::m_chiSquared
double m_chiSquared
Definition: TrigVertex.h:178
TrigVertex::algorithmId
AlgoId algorithmId() const
returns author ID - algorithm that's created this vertex
Definition: TrigVertex.h:128
TrigVertex::TrigVertex
TrigVertex(double x, double y, double z, double cv[6], double chi2, int ndf, TrackInVertexList *tracks, double mass, double energyFraction, int n2trkvtx, double decayLength, double decayLengthSignificance, AlgoId algo_id)
Definition: TrigVertex.h:95
TrigVertex::SITRACKID
@ SITRACKID
Definition: TrigVertex.h:31
TrigVertex::m_position
HepGeom::Point3D< double > m_position
Definition: TrigVertex.h:177
TrigVertex::TrigVertex
TrigVertex(double x, double y, double z, double cv[6], double chi2, int ndf, TrackInVertexList *tracks)
Definition: TrigVertex.h:84
TrigVertex::tracks
const TrackInVertexList * tracks() const
std::list of track pointers associated with the vertex
Definition: TrigVertex.h:136
TrigVertex::BSFULL_STRATEGY_F_ID
@ BSFULL_STRATEGY_F_ID
Definition: TrigVertex.h:35
TrigVertexCnv_p1
Definition: TrigVertexCnv_p1.h:35
TrigVertex::m_massVar
double m_massVar
Definition: TrigVertex.h:167
TrigVertex::tracks
TrackInVertexList * tracks()
std::list of track pointers associated with the vertex
Definition: TrigVertex.h:135
TrigVertex::getMotherTrack
const TrigInDetTrackFitPar * getMotherTrack() const
parameters of a mother particle reconstructed after the vertex fit
Definition: TrigVertex.h:143
TrigVertex::TrigVertex
TrigVertex(double zPosition)
Definition: TrigVertex.h:50
TrigVertex::energyFraction
double energyFraction() const
energy ratio E(secondary vertex)/E(jet)
Definition: TrigVertex.h:145
TrigVertex::decayLength
double decayLength() const
decay length to the primary vertex used to find this secondary vertex
Definition: TrigVertex.h:147
TrigVertex::setMotherTrack
void setMotherTrack(const TrigInDetTrackFitPar *P)
Definition: TrigVertex.h:154
TrigVertex::m_decayLengthSignificance
double m_decayLengthSignificance
Definition: TrigVertex.h:175
TrigVertex::z
double z() const
z-position
Definition: TrigVertex.h:139
TrigInDetTrack.h
TrigVertex::m_algId
AlgoId m_algId
Definition: TrigVertex.h:181
TrigVertex::BPHYSSECID
@ BPHYSSECID
Definition: TrigVertex.h:31
TrigVertex::decayLengthSignificance
double decayLengthSignificance() const
decay length divided by its error
Definition: TrigVertex.h:148
TrigVertex::BJETSECVTXID
@ BJETSECVTXID
Definition: TrigVertex.h:33
TrigVertex::nTwoTracksSecVtx
int nTwoTracksSecVtx() const
number of 2-track vertices
Definition: TrigVertex.h:146
TrigVertex::m_z
double m_z
Definition: TrigVertex.h:167
TrigVertex::HISTOPRMVTXFTKIDTAU
@ HISTOPRMVTXFTKIDTAU
Definition: TrigVertex.h:35
lumiFormat.i
int i
Definition: lumiFormat.py:92
operator==
bool operator==(const TrigVertex &a, const TrigVertex &b)
Definition: TrigVertex.cxx:35
beamspotman.n
n
Definition: beamspotman.py:731
TrigVertex::setMass
void setMass(double m)
Definition: TrigVertex.h:152
TrigVertex::HISTOPRMVTXFTKID
@ HISTOPRMVTXFTKID
Definition: TrigVertex.h:35
TrigVertex::HISTOPRMVTXEFIDTAU
@ HISTOPRMVTXEFIDTAU
Definition: TrigVertex.h:33
TrigVertex::TrigVertex
TrigVertex(double zPosition, AlgoId id)
Definition: TrigVertex.h:61
TrigVertex::BSSPLITIDSCANID
@ BSSPLITIDSCANID
Definition: TrigVertex.h:32
TrigVertex::setDecayLength
void setDecayLength(double v)
Definition: TrigVertex.h:159
TrigVertex::m_nDOF
int m_nDOF
Definition: TrigVertex.h:179
TrigVertex::cov
const double * cov() const
covariance of the vertex position, packed as follows
Definition: TrigVertex.h:133
TrigVertex::setNTwoTrackSecVtx
void setNTwoTrackSecVtx(int n)
Definition: TrigVertex.h:157
TrigVertex::m_y
double m_y
Definition: TrigVertex.h:167
TrigVertex::BSSPLIT_STRATEGY_F_ID
@ BSSPLIT_STRATEGY_F_ID
Definition: TrigVertex.h:35
TrigVertex::BSSPLIT_STRATEGY_A_ID
@ BSSPLIT_STRATEGY_A_ID
Definition: TrigVertex.h:34
TrigVertex::setDecayLengthSignificance
void setDecayLengthSignificance(double v)
Definition: TrigVertex.h:160
TrigVertex::TrigVertex
TrigVertex(double zPosition, double cv, AlgoId id)
Definition: TrigVertex.h:72
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
TrigVertex::HISTOPRMVTXIDSCANID
@ HISTOPRMVTXIDSCANID
Definition: TrigVertex.h:32
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TrigVertex::m_tracks
TrackInVertexList * m_tracks
Definition: TrigVertex.h:180
TrigVertex::BSFULL_STRATEGY_B_ID
@ BSFULL_STRATEGY_B_ID
Definition: TrigVertex.h:34
TrigVertex::position
const HepGeom::Point3D< double > & position() const
position in HepGeom::Point3D<double> form
Definition: TrigVertex.h:130
TrigVertex::m_cov
double m_cov[6]
Definition: TrigVertex.h:168
TrigVertex::algorithmId
void algorithmId(const AlgoId id)
sets author ID - algorithm that's created this vertex
Definition: TrigVertex.h:127
str
std::string str(const TrigVertex &v)
Definition: TrigVertex.cxx:7
TrackInVertexList
std::list< const TrigInDetTrack * > TrackInVertexList
Definition: TrigVertex.h:26
python.PyAthena.v
v
Definition: PyAthena.py:157
TrigVertex::m_P
const TrigInDetTrackFitPar * m_P
Definition: TrigVertex.h:182
TrigVertex::IDSCANID
@ IDSCANID
Definition: TrigVertex.h:31
TrigVertex::chi2
double chi2() const
of the vertex fit
Definition: TrigVertex.h:131
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
operator<<
MsgStream & operator<<(MsgStream &m, const TrigVertex &v)
Definition: TrigVertex.cxx:29
TrigVertex::m_nTwoTracksSecVtx
int m_nTwoTracksSecVtx
number of 2-track vertices
Definition: TrigVertex.h:172
TrigVertex::HISTOPRMVTXEFID
@ HISTOPRMVTXEFID
Definition: TrigVertex.h:33
TrigVertex
Definition: TrigVertex.h:28
TrigVertex::ndof
int ndof() const
Number of degree-of-freedom of the vertex fit.
Definition: TrigVertex.h:132
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:64
TrigVertex::m_energyFraction
double m_energyFraction
energy ratio E(secondary vertex)/E(jet)
Definition: TrigVertex.h:170
operator!=
bool operator!=(const TrigVertex &a, const TrigVertex &b)
Definition: TrigVertex.h:190
TrigVertex::HISTOPRMVTXSITRACKID
@ HISTOPRMVTXSITRACKID
Definition: TrigVertex.h:31
TrigVertex::x
double x() const
x-position
Definition: TrigVertex.h:137
TrigVertex::TrigVertex
TrigVertex()
Definition: TrigVertex.h:39
TrigVertex::BSSPLIT_STRATEGY_B_ID
@ BSSPLIT_STRATEGY_B_ID
Definition: TrigVertex.h:34
TrigVertex::VKALSECVTXID
@ VKALSECVTXID
Definition: TrigVertex.h:31
TrigVertex::setMassVariance
void setMassVariance(double m)
Definition: TrigVertex.h:153
TrigVertex::~TrigVertex
~TrigVertex()
Definition: TrigVertex.h:113
TrigVertex::HISTOPRMVTXSITRACKIDTAU
@ HISTOPRMVTXSITRACKIDTAU
Definition: TrigVertex.h:33
TrigVertex::y
double y() const
y-position
Definition: TrigVertex.h:138
TrigVertex::AlgoId
AlgoId
Definition: TrigVertex.h:31
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
TrigVertex::m_ownTracks
bool m_ownTracks
Definition: TrigVertex.h:183