ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::CompareTwoTracks Class Reference

#include <BeamspotVertexPreProcessor.h>

Collaboration diagram for Trk::CompareTwoTracks:

Public Member Functions

 CompareTwoTracks (const Track *track, const std::string &compareMethod)
bool operator() (VxTrackAtVertex vtxTrk)

Private Attributes

std::string m_method
const Trackm_track

Detailed Description

Definition at line 173 of file BeamspotVertexPreProcessor.h.

Constructor & Destructor Documentation

◆ CompareTwoTracks()

Trk::CompareTwoTracks::CompareTwoTracks ( const Track * track,
const std::string & compareMethod )
inline

Definition at line 176 of file BeamspotVertexPreProcessor.h.

177 :m_method(compareMethod)
178 ,m_track(track)
179 { //std::cout <<"compareMethod: "<< m_method <<std::endl;
180 }

Member Function Documentation

◆ operator()()

bool Trk::CompareTwoTracks::operator() ( VxTrackAtVertex vtxTrk)

Definition at line 143 of file BeamspotVertexPreProcessor.cxx.

143 { // MD: took away deref*
144
145 ITrackLink* trkLink = vtxTrk.trackOrParticleLink();
146 LinkToTrackParticleBase* linkToTrackParticle = dynamic_cast<Trk::LinkToTrackParticleBase*>(trkLink);
147 if(!linkToTrackParticle) return false;
148 const TrackParticleBase* tpb = *(linkToTrackParticle->cptr());
149
150 const Track* originalTrk = tpb->originalTrack();
151
152 bool equal = false;
153 // compare the addresses of these two tracks directly
154 if(m_method.find("compareAddress") != std::string::npos){
155 if (m_track == originalTrk) equal = true;
156 }
157
158 // compare the perigee parameters of these two tracks, should safer
159 if(m_method.find("comparePerigee") != std::string::npos){
160 const Trk::Perigee * measPer1 = m_track->perigeeParameters();
161 const Trk::Perigee * measPer2 = originalTrk->perigeeParameters();
162 if(! (measPer1 && measPer2 )) equal = false;
163 else{
164 float diff = std::abs(std::numeric_limits<float>::epsilon());
165 if( ( std::abs(measPer1->parameters()[Trk::d0] - measPer2->parameters()[Trk::d0]) > diff)
166 || ( std::abs(measPer1->parameters()[Trk::z0] - measPer2->parameters()[Trk::z0]) > diff)
167 || ( std::abs(measPer1->parameters()[Trk::phi] - measPer2->parameters()[Trk::phi]) > diff)
168 || ( std::abs(measPer1->parameters()[Trk::theta] - measPer2->parameters()[Trk::theta]) > diff)
169 || ( std::abs(measPer1->parameters()[Trk::qOverP] - measPer2->parameters()[Trk::qOverP]) > diff))
170 equal = false;
171 }
172 }
173 return equal;
174}
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
bool equal(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition fpcompare.h:114
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ phi
Definition ParamDefs.h:75
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64

Member Data Documentation

◆ m_method

std::string Trk::CompareTwoTracks::m_method
private

Definition at line 185 of file BeamspotVertexPreProcessor.h.

◆ m_track

const Track* Trk::CompareTwoTracks::m_track
private

Definition at line 186 of file BeamspotVertexPreProcessor.h.


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