ATLAS Offline Software
Loading...
Searching...
No Matches
TrigPrimaryVertexTrack Class Reference

#include <TrigPrimaryVertexTrack.h>

Inheritance diagram for TrigPrimaryVertexTrack:
Collaboration diagram for TrigPrimaryVertexTrack:

Public Member Functions

 TrigPrimaryVertexTrack (const Trk::Track *)
 constructor for EF (offline) tracks
 ~TrigPrimaryVertexTrack ()
const Trk::TrackgetTrkTrack ()
 getter for EF (offline) tracks
virtual double getChi2Distance (TrigL2Vertex *)
 implementation of abstract method from the base class
virtual void updateVertex (TrigL2Vertex *)
 implementation of abstract method from the base class
virtual MsgStream & report (MsgStream &) const
void setIndex (int)
 to be used by TrigVertexingTool
int getIndex () const
 to be used by TrigVertexingTool
int getTrackType ()
 0: L2 track, 1: EF(offline) track
bool isActive ()
 if true this track will be used in the vertex fit otherwise it will be masked
void activate ()
 sets m_isActive to true
void mask ()
 sets m_isActive to false
const double * Perigee () const
 track parameters at the perigee
double PerigeeCovariance (int, int) const
 covariance of track parameters at the perigee
double getChi2Contribution ()
 chi2-contribution to the vertex fit

Protected Attributes

double m_resid [2] {}
double m_V [2][2] {}
double m_D [2][MAX_SIZE_VERT_COVM] {}

Private Attributes

const Trk::Trackm_pTrkTrack
int m_nTrackType
int m_index = 0
double m_Vqq [3][3] {}
double m_Vuq [2][3] {}
double m_Vuu [2][2] {}
double m_u [2] {}
double m_q [3] {}
double m_Perigee [5] {}
double m_PerigeeCovariance [5][5] {}
double m_A [2][3] {}
double m_B [2][3] {}
double m_dChi2
bool m_active

Detailed Description

Definition at line 13 of file TrigPrimaryVertexTrack.h.

Constructor & Destructor Documentation

◆ TrigPrimaryVertexTrack()

TrigPrimaryVertexTrack::TrigPrimaryVertexTrack ( const Trk::Track * pT)

constructor for EF (offline) tracks

Definition at line 11 of file TrigPrimaryVertexTrack.cxx.

12{
14 m_pTrkTrack=pT;m_dChi2=-100.0;
15
16 const Trk::Perigee* pP= pT->perigeeParameters();
17
18 if(pP!=NULL) {
19 m_u[0]=pP->parameters()[Trk::d0];
20 m_u[1]=pP->parameters()[Trk::z0];
21 m_q[0]=pP->parameters()[Trk::phi0];
22 m_q[1]=pP->parameters()[Trk::theta];
23
24 const double ptC=1000.0*pP->parameters()[Trk::qOverP];
25 const double inv_ptC = 1. / ptC;
26
27 m_q[2]=sin(pP->parameters()[Trk::theta])*inv_ptC;
28
29 const AmgSymMatrix(5)& TC= (*pP->covariance());
30
31 const double a=cos(pP->parameters()[Trk::theta])*inv_ptC;
32 const double b=-sin(pP->parameters()[Trk::theta])/(pP->parameters()[Trk::qOverP]*ptC);
33
34
35 const double Ck[5][5] = {{TC(0,0), TC(1,0), TC(2,0), TC(3,0), a*TC(3,0) + b*TC(4,0)},
36 {TC(1,0), TC(1,1), TC(2,1), TC(3,1), a*TC(3,1) + b*TC(4,1)},
37 {TC(2,0), TC(2,1), TC(2,2), TC(3,2), a*TC(3,2) + b*TC(4,2)},
38 {TC(3,0), TC(3,1), TC(3,2), TC(3,3), a*TC(3,3) + b*TC(4,3)},
39 {a*TC(3,0) + b*TC(4,0), a*TC(3,1) + b*TC(4,1), a*TC(3,2) + b*TC(4,2), a*TC(3,3) + b*TC(4,3), a*a*TC(3,3) + 2*a*b*TC(4,3) + b*b*TC(4,4)}};
40
41 for(int i=0;i<2;i++) for(int j=0;j<2;j++) m_Vuu[i][j]=Ck[i][j];
42 for(int i=0;i<3;i++) for(int j=0;j<3;j++) m_Vqq[i][j]=Ck[i+2][j+2];
43 for(int i=0;i<2;i++) for(int j=0;j<3;j++) m_Vuq[i][j]=Ck[i][j+2];
44
45 m_Perigee[0]=m_u[0];m_Perigee[1]=m_u[1];m_Perigee[2]=m_q[0];m_Perigee[3]=m_q[1];m_Perigee[4]=m_q[2];
46 }
47}
#define AmgSymMatrix(dim)
static Double_t a
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64

◆ ~TrigPrimaryVertexTrack()

TrigPrimaryVertexTrack::~TrigPrimaryVertexTrack ( )

Definition at line 49 of file TrigPrimaryVertexTrack.cxx.

50{
51
52}

Member Function Documentation

◆ activate()

void TrigPrimaryVertexTrack::activate ( )

sets m_isActive to true

Definition at line 59 of file TrigPrimaryVertexTrack.cxx.

60{
61 m_active=true;
62}

◆ getChi2Contribution()

double TrigPrimaryVertexTrack::getChi2Contribution ( )

chi2-contribution to the vertex fit

Definition at line 194 of file TrigPrimaryVertexTrack.cxx.

195{
196 return m_dChi2;
197}

◆ getChi2Distance()

double TrigPrimaryVertexTrack::getChi2Distance ( TrigL2Vertex * pV)
virtual

implementation of abstract method from the base class

Implements TrigVertexFittingNode.

Definition at line 100 of file TrigPrimaryVertexTrack.cxx.

101{
102 const double C=0.02997;
103 const double B=20.84;
104
105 double Sk[2][2],detr,chi2;
106 double AC[2][3],BV[2][3],h[2];
107 int i,j,k;
108 double psi,sinPsi,xv,yv,zv,
109 cosPhi0,sinPhi0,ctt,sint,phi0,theta0,P0;
110 const double alpha = C*B*1e-3;
111 const double inv_alpha = 1. / alpha;
112
113 xv=pV->getParametersVector()[0];
114 yv=pV->getParametersVector()[1];
115 zv=pV->getParametersVector()[2];
116
117 phi0=m_q[0];
118 theta0=m_q[1];
119 P0=m_q[2];
120
121 cosPhi0=cos(phi0);sinPhi0=sin(phi0);
122 sinPsi=-alpha*(xv*cosPhi0+yv*sinPhi0)/P0;
123 if(fabs(sinPsi)>1.0) return -999.9;
124 const double cosPsi=sqrt(1.0-sinPsi*sinPsi);
125 const double inv_cosPsi = 1. / cosPsi;
126 psi=asin(sinPsi);
127 sint=sin(theta0);
128 ctt=cos(theta0)/sint;
129
130 m_A[0][0]=-sin(phi0+psi)*inv_cosPsi;
131 m_A[0][1]= cos(phi0+psi)*inv_cosPsi;
132 m_A[0][2]=0.0;
133
134 m_A[1][0]=-ctt*cosPhi0*inv_cosPsi;
135 m_A[1][1]=-ctt*sinPhi0*inv_cosPsi;
136 m_A[1][2]=1.0;
137
138 m_B[0][0]=-xv*m_A[0][1]+yv*m_A[0][0];
139 m_B[0][1]=0.0;
140 m_B[0][2]=(1.0-inv_cosPsi)*inv_alpha;
141
142 m_B[1][0]=-xv*m_A[1][1]+yv*m_A[1][0];
143 m_B[1][1]=-P0*psi/(alpha*sint*sint);
144 m_B[1][2]=ctt*(psi-sinPsi*inv_cosPsi)*inv_alpha;
145
146 h[0]=yv*cosPhi0-xv*sinPhi0+P0*(1-cosPsi)*inv_alpha;
147 h[1]=zv+P0*ctt*psi*inv_alpha;
148
149 m_resid[0]=m_u[0]-h[0];
150 m_resid[1]=m_u[1]-h[1];
151
152 for(i=0;i<2;i++) for(j=0;j<2;j++) Sk[i][j]=m_Vuu[i][j];
153 for(i=0;i<2;i++) for(j=0;j<3;j++)
154 {
155 AC[i][j]=0.0;
156 for(k=0;k<3;k++) AC[i][j]+=m_A[i][k]*pV->m_Gk[k][j];
157 }
158 for(i=0;i<2;i++) for(j=0;j<2;j++)
159 {
160 for(k=0;k<3;k++) Sk[i][j]+=AC[i][k]*m_A[j][k];
161 }
162 for(i=0;i<2;i++)
163 for(j=0;j<3;j++)
164 {
165 BV[i][j]=0.0;
166 for(k=0;k<3;k++) BV[i][j]+=m_B[i][k]*m_Vqq[k][j];
167 }
168 for(i=0;i<2;i++)
169 for(j=0;j<2;j++)
170 {
171 for(k=0;k<3;k++) Sk[i][j]+=BV[i][k]*m_B[j][k];
172 }
173 Sk[0][0]-=2.0*(m_Vuq[0][0]*m_B[0][0]+m_Vuq[0][1]*m_B[0][1]+m_Vuq[0][2]*m_B[0][2]);
174 Sk[1][1]-=2.0*(m_Vuq[1][0]*m_B[1][0]+m_Vuq[1][1]*m_B[1][1]+m_Vuq[1][2]*m_B[1][2]);
175 Sk[0][1]-=m_Vuq[1][0]*m_B[0][0]+m_Vuq[1][1]*m_B[0][1]+m_Vuq[1][2]*m_B[0][2]+
176 m_Vuq[0][0]*m_B[1][0]+m_Vuq[0][1]*m_B[1][1]+m_Vuq[0][2]*m_B[1][2];
177 Sk[1][0]=Sk[0][1];
178
179 detr=1.0/(Sk[0][0]*Sk[1][1]-Sk[0][1]*Sk[1][0]);
180 m_V[0][0]=Sk[1][1]*detr;
181 m_V[1][1]=Sk[0][0]*detr;
182 m_V[0][1]=m_V[1][0]=-Sk[0][1]*detr;
183
184 chi2=m_V[0][0]*m_resid[0]*m_resid[0]+m_V[1][1]*m_resid[1]*m_resid[1]+
185 2.0*m_V[0][1]*m_resid[1]*m_resid[0];
186
187 for(i=0;i<2;i++)
188 for(j=0;j<3;j++) m_D[i][j]=AC[i][j];
189
191 return chi2;
192}
double * getParametersVector()
returns vector of vertex fit parameters: vertex position + refitted track momenta at-perigee (sic !...
double m_Gk[MAX_SIZE_VERT_COVM][MAX_SIZE_VERT_COVM]
double m_D[2][MAX_SIZE_VERT_COVM]
double chi2(TH1 *h0, TH1 *h1)
struct color C

◆ getIndex()

int TrigPrimaryVertexTrack::getIndex ( ) const

to be used by TrigVertexingTool

Definition at line 85 of file TrigPrimaryVertexTrack.cxx.

86{
87 return m_index;
88}

◆ getTrackType()

int TrigPrimaryVertexTrack::getTrackType ( )

0: L2 track, 1: EF(offline) track

Definition at line 69 of file TrigPrimaryVertexTrack.cxx.

70{
71 return m_nTrackType;
72}

◆ getTrkTrack()

const Trk::Track * TrigPrimaryVertexTrack::getTrkTrack ( )

getter for EF (offline) tracks

Definition at line 75 of file TrigPrimaryVertexTrack.cxx.

76{
77 return m_pTrkTrack;
78}

◆ isActive()

bool TrigPrimaryVertexTrack::isActive ( )

if true this track will be used in the vertex fit otherwise it will be masked

Definition at line 64 of file TrigPrimaryVertexTrack.cxx.

65{
66 return m_active;
67}

◆ mask()

void TrigPrimaryVertexTrack::mask ( )

sets m_isActive to false

Definition at line 54 of file TrigPrimaryVertexTrack.cxx.

55{
56 m_active=false;
57}

◆ Perigee()

const double * TrigPrimaryVertexTrack::Perigee ( ) const

track parameters at the perigee

Definition at line 90 of file TrigPrimaryVertexTrack.cxx.

91{
92 return &m_Perigee[0];
93}

◆ PerigeeCovariance()

double TrigPrimaryVertexTrack::PerigeeCovariance ( int i,
int j ) const

covariance of track parameters at the perigee

Definition at line 95 of file TrigPrimaryVertexTrack.cxx.

96{
97 return m_PerigeeCovariance[i][j];
98}

◆ report()

MsgStream & TrigPrimaryVertexTrack::report ( MsgStream & out) const
virtual

Implements TrigVertexFittingNode.

Definition at line 224 of file TrigPrimaryVertexTrack.cxx.

225{
226 int i;
227
228 out<<"Primary track "<<m_index<<endmsg;
229 for(i=0;i<2;i++)
230 {
231 out<<" u"<<i<<" = "<<m_u[i]<<" "<<m_Vuu[i][0]<<" "<<m_Vuu[i][1]<<endmsg;
232 }
233 for(i=0;i<3;i++)
234 {
235 out<<" q"<<i<<" = "<<m_q[i]<<" "<<m_Vqq[i][0]<<" "<<m_Vqq[i][1]<<" "<<m_Vqq[i][2]<<endmsg;
236 }
237 return out;
238}
#define endmsg

◆ setIndex()

void TrigPrimaryVertexTrack::setIndex ( int i)

to be used by TrigVertexingTool

Definition at line 80 of file TrigPrimaryVertexTrack.cxx.

81{
82 m_index=i;
83}

◆ updateVertex()

void TrigPrimaryVertexTrack::updateVertex ( TrigL2Vertex * pV)
virtual

implementation of abstract method from the base class

Implements TrigVertexFittingNode.

Definition at line 199 of file TrigPrimaryVertexTrack.cxx.

200{
201 int i,j,k;
202
203 double K[2][3];
204
205 for(i=0;i<2;i++)
206 {
207 for(j=0;j<3;j++)
208 {
209 K[i][j]=0.0;
210 for(k=0;k<2;k++) K[i][j]+=m_D[k][j]*m_V[k][i];
211 }
212 }
213 for(i=0;i<3;i++)
214 {
215 pV->getParametersVector()[i]+=K[0][i]*m_resid[0]+K[1][i]*m_resid[1];
216 for(j=i;j<3;j++)
217 {
218 pV->m_Gk[i][j]-=K[0][i]*m_D[0][j]+K[1][i]*m_D[1][j];
219 pV->m_Gk[j][i]=pV->m_Gk[i][j];
220 }
221 }
222}

Member Data Documentation

◆ m_A

double TrigPrimaryVertexTrack::m_A[2][3] {}
private

Definition at line 43 of file TrigPrimaryVertexTrack.h.

43{};

◆ m_active

bool TrigPrimaryVertexTrack::m_active
private

Definition at line 46 of file TrigPrimaryVertexTrack.h.

◆ m_B

double TrigPrimaryVertexTrack::m_B[2][3] {}
private

Definition at line 44 of file TrigPrimaryVertexTrack.h.

44{};

◆ m_D

double TrigVertexFittingNode::m_D[2][MAX_SIZE_VERT_COVM] {}
protectedinherited

Definition at line 48 of file TrigL2Vertex.h.

48{};

◆ m_dChi2

double TrigPrimaryVertexTrack::m_dChi2
private

Definition at line 45 of file TrigPrimaryVertexTrack.h.

◆ m_index

int TrigPrimaryVertexTrack::m_index = 0
private

Definition at line 35 of file TrigPrimaryVertexTrack.h.

◆ m_nTrackType

int TrigPrimaryVertexTrack::m_nTrackType
private

Definition at line 34 of file TrigPrimaryVertexTrack.h.

◆ m_Perigee

double TrigPrimaryVertexTrack::m_Perigee[5] {}
private

Definition at line 41 of file TrigPrimaryVertexTrack.h.

41{};

◆ m_PerigeeCovariance

double TrigPrimaryVertexTrack::m_PerigeeCovariance[5][5] {}
private

Definition at line 42 of file TrigPrimaryVertexTrack.h.

42{};

◆ m_pTrkTrack

const Trk::Track* TrigPrimaryVertexTrack::m_pTrkTrack
private

Definition at line 33 of file TrigPrimaryVertexTrack.h.

◆ m_q

double TrigPrimaryVertexTrack::m_q[3] {}
private

Definition at line 40 of file TrigPrimaryVertexTrack.h.

40{};

◆ m_resid

double TrigVertexFittingNode::m_resid[2] {}
protectedinherited

Definition at line 46 of file TrigL2Vertex.h.

46{};

◆ m_u

double TrigPrimaryVertexTrack::m_u[2] {}
private

Definition at line 39 of file TrigPrimaryVertexTrack.h.

39{};

◆ m_V

double TrigVertexFittingNode::m_V[2][2] {}
protectedinherited

Definition at line 47 of file TrigL2Vertex.h.

47{};

◆ m_Vqq

double TrigPrimaryVertexTrack::m_Vqq[3][3] {}
private

Definition at line 36 of file TrigPrimaryVertexTrack.h.

36{};

◆ m_Vuq

double TrigPrimaryVertexTrack::m_Vuq[2][3] {}
private

Definition at line 37 of file TrigPrimaryVertexTrack.h.

37{};

◆ m_Vuu

double TrigPrimaryVertexTrack::m_Vuu[2][2] {}
private

Definition at line 38 of file TrigPrimaryVertexTrack.h.

38{};

The documentation for this class was generated from the following files: