ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
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 }

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:
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
Trk::z0
@ z0
Definition: ParamDefs.h:64
CxxUtils::fpcompare::equal
bool equal(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition: fpcompare.h:114
Trk::CompareTwoTracks::m_method
std::string m_method
Definition: BeamspotVertexPreProcessor.h:185
Trk::theta
@ theta
Definition: ParamDefs.h:66
Trk::LinkToTrackParticleBase
Definition: LinkToTrackParticleBase.h:17
Trk::Track::perigeeParameters
const Perigee * perigeeParameters() const
return Perigee.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:163
Trk::d0
@ d0
Definition: ParamDefs.h:63
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::phi
@ phi
Definition: ParamDefs.h:75
Trk::CompareTwoTracks::m_track
const Track * m_track
Definition: BeamspotVertexPreProcessor.h:186
xAOD::track
@ track
Definition: TrackingPrimitives.h:513