ATLAS Offline Software
Loading...
Searching...
No Matches
VxTrackAtVertex.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 VxTrackAtVertex.cxx - Description
7 -------------------
8 begin : Autumn 2003
9 authors : Andreas Wildauer (CERN PH-ATC), Fredrik Akesson (CERN PH-ATC)
10 email : andreas.wildauer@cern.ch, fredrik.akesson@cern.ch
11 comments: original version by M. Elsing
12 changes :
13
14 ***************************************************************************/
15
17#include "GaudiKernel/MsgStream.h"
18
19namespace Trk {
20
36
54
92
93// new constructors, including initial perigee state (refitting support)
94// Kirill Prokofiev 27-03-06
115
133
175
178 , m_fitQuality(Trk::FitQuality(0., 2.))
179 , m_trkWeight(1.)
181 , m_perigeeAtVertex(nullptr)
182 , m_neutralPerigeeAtVertex(nullptr)
183 , m_linState(nullptr)
184 , m_initialPerigee(nullptr)
185 , m_initialNeutralPerigee(nullptr)
186 , m_ImpactPoint3dAtaPlane(nullptr)
188 , m_trackOrParticleLink(nullptr)
189{
190 this->setOrigTrack(trackOrParticleLink);
191}
192
193// destructor
203
204// copy constructor
230
231// assignment operator changed
234{
235 if (this != &rhs) {
238 delete m_perigeeAtVertex;
240 rhs.m_perigeeAtVertex ? rhs.m_perigeeAtVertex->clone() : nullptr;
244 : nullptr;
245 delete m_linState;
246 m_linState = rhs.m_linState ? rhs.m_linState->clone() : nullptr;
247 // m_initialPerigee = rhs.m_initialPerigee ?
248 // rhs.m_initialPerigee->clone() : 0;
254 : nullptr;
259 : nullptr;
264 : nullptr);
265 }
266 return *this;
267}
268
270 : m_fitQuality(rhs.m_fitQuality)
271 , m_trkWeight(rhs.m_trkWeight)
272{
273 m_perigeeAtVertex = rhs.m_perigeeAtVertex;
274 rhs.m_perigeeAtVertex = nullptr;
275
276 m_neutralPerigeeAtVertex = rhs.m_neutralPerigeeAtVertex;
277 rhs.m_neutralPerigeeAtVertex = nullptr;
278
279 m_linState = rhs.m_linState;
280 rhs.m_linState = nullptr;
281
282 m_initialPerigee = rhs.m_initialPerigee;
283 m_initialNeutralPerigee = rhs.m_initialNeutralPerigee;
284 m_VertexCompatibility = rhs.m_VertexCompatibility;
285
286 m_ImpactPoint3dAtaPlane = rhs.m_ImpactPoint3dAtaPlane;
287 rhs.m_ImpactPoint3dAtaPlane = nullptr;
288
289 m_ImpactPoint3dNeutralAtaPlane = rhs.m_ImpactPoint3dNeutralAtaPlane;
290 rhs.m_ImpactPoint3dNeutralAtaPlane = nullptr;
291
292 m_trackOrParticleLink = rhs.m_trackOrParticleLink;
293 rhs.m_trackOrParticleLink = nullptr;
294}
295
298{
299 if (this != &rhs) {
300 m_fitQuality = rhs.m_fitQuality;
301 m_trkWeight = rhs.m_trkWeight;
302
303 delete m_perigeeAtVertex;
304 m_perigeeAtVertex = rhs.m_perigeeAtVertex;
305 rhs.m_perigeeAtVertex = nullptr;
306
308 m_neutralPerigeeAtVertex = rhs.m_neutralPerigeeAtVertex;
309 rhs.m_neutralPerigeeAtVertex = nullptr;
310
311 delete m_linState;
312 m_linState = rhs.m_linState;
313 rhs.m_linState = nullptr;
314
315 m_initialPerigee = rhs.m_initialPerigee;
316 m_initialNeutralPerigee = rhs.m_initialNeutralPerigee;
317 m_VertexCompatibility = rhs.m_VertexCompatibility;
318
320 m_ImpactPoint3dAtaPlane = rhs.m_ImpactPoint3dAtaPlane;
321 rhs.m_ImpactPoint3dAtaPlane = nullptr;
322
324 m_ImpactPoint3dNeutralAtaPlane = rhs.m_ImpactPoint3dNeutralAtaPlane;
325 rhs.m_ImpactPoint3dNeutralAtaPlane = nullptr;
326
328 m_trackOrParticleLink = rhs.m_trackOrParticleLink;
329 rhs.m_trackOrParticleLink = nullptr;
330 }
331 return *this;
332}
333
334bool
336{
337
338 return (this->initialPerigee() == data.initialPerigee());
339}
340
341const TrackParameters*
343{
344 if (m_initialPerigee != nullptr)
345 return m_initialPerigee; // as default always return the proper object (be
346 // consistent!)
347 if (m_trackOrParticleLink != nullptr)
348 return m_trackOrParticleLink->parameters();
349 return nullptr;
350}
351
354{
355 if (m_initialNeutralPerigee != nullptr)
356 return m_initialNeutralPerigee; // as default always return the proper
357 // object (be consistent!)
358 if (m_trackOrParticleLink != nullptr)
359 return m_trackOrParticleLink->neutralParameters();
360 return nullptr;
361}
362
365{
366 return new VxTrackAtVertex(*this);
367}
368
369void
371{
372 if (m_ImpactPoint3dAtaPlane != nullptr)
374 m_ImpactPoint3dAtaPlane = myIP3dAtaPlane;
375}
376
377void
379 const NeutralAtaPlane* myIP3dNeutralAtaPlane)
380{
381 if (m_ImpactPoint3dNeutralAtaPlane != nullptr)
383 m_ImpactPoint3dNeutralAtaPlane = myIP3dNeutralAtaPlane;
384}
385
386void
388{
389 if (m_perigeeAtVertex != nullptr)
390 delete m_perigeeAtVertex;
391 m_perigeeAtVertex = perigee;
392}
393
394void
401
402void
404{
405 if (m_linState != nullptr)
406 delete m_linState;
407 m_linState = myLinTrack;
408}
409
410void
412{
414 // setting first the actual pointer:
416
417 // setting the initial perigee to be consistent with this
418 // new track
419 if (trk != nullptr) {
420 // delete initialPerigee before, otherwise memleak!!
421 // if (m_initialPerigee!=0) { delete m_initialPerigee;
422 // m_initialPerigee=0; } const TrackParameters * tmpInPer =
423 // trk->parameters();
426 } else {
427 m_initialPerigee = nullptr;
428 m_initialNeutralPerigee = nullptr;
429 }
430} // end of setOrigTrack method
431
432void
434{
437
438 m_initialPerigee = nullptr;
439 m_initialNeutralPerigee = nullptr;
440} // end of setOrigTrackNocache method
441
442
443MsgStream&
444VxTrackAtVertex::dump(MsgStream& sl) const
445{
446 sl << "Printing VxTrackAtVertex:" << endmsg;
447 const Trk::TrackParameters* inPerigee = this->initialPerigee();
448 if (inPerigee) {
449 sl << "Original Perigee: " << *(inPerigee) << endmsg;
450 } else {
451 sl << "This VxTrackAtVertex was not created using initial perigee"
452 << endmsg;
453 }
454 if (this->perigeeAtVertex() != nullptr) {
455 sl << "Charged Refitted Perigee: " << *(this->perigeeAtVertex()) << endmsg;
456 } else {
457 sl << "Charged Refitted Perigee was not created/stored in pool file." << endmsg;
458 }
459 if (this->neutralPerigeeAtVertex() != nullptr) {
460 sl << "Neutral Refitted Perigee: " << *(this->neutralPerigeeAtVertex()) << std::endl;
461 } else {
462 sl << "Neutral Refitted Perigee was not created/stored in pool file." << std::endl;
463 }
464
465 sl << m_fitQuality << "\tWeight: " << m_trkWeight << endmsg;
466 return sl;
467}
468
469std::ostream&
470VxTrackAtVertex::dump(std::ostream& sl) const
471{
472 sl << "Printing VxTrackAtVertex:" << std::endl;
473 const Trk::TrackParameters* inPerigee = this->initialPerigee();
474 if (inPerigee) {
475 sl << "Original Perigee: " << *(inPerigee) << std::endl;
476 } else {
477 sl << "This VxTrackAtVertex was not created using initial perigee"
478 << std::endl;
479 }
480 if (this->perigeeAtVertex() != nullptr) {
481 sl << "Charged Refitted Perigee: " << *(this->perigeeAtVertex()) << std::endl;
482 } else {
483 sl << "Charged Refitted Perigee was not created/stored in pool file." << std::endl;
484 }
485 if (this->neutralPerigeeAtVertex() != nullptr) {
486 sl << "Neutral Refitted Perigee: " << *(this->neutralPerigeeAtVertex()) << std::endl;
487 } else {
488 sl << "Neutral Refitted Perigee was not created/stored in pool file." << std::endl;
489 }
490 sl << m_fitQuality << "\tWeight: " << m_trkWeight << std::endl;
491 return sl;
492}
493
494MsgStream&
495operator<<(MsgStream& sl, const VxTrackAtVertex& sf)
496{
497 return sf.dump(sl);
498}
499
500std::ostream&
501operator<<(std::ostream& sl, const VxTrackAtVertex& sf)
502{
503 return sf.dump(sl);
504}
505
506} // end of namespace
#define endmsg
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition FitQuality.h:97
LinearizedTrack * clone() const
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
bool operator==(const VxTrackAtVertex &data) const
Equality operator required when working with vectors Compares only the equality of the parameters of ...
ITrackLink * m_trackOrParticleLink
void setImpactPoint3dAtaPlane(const AtaPlane *myIP3dAtaPlane)
Set method for ImpactPoint3dAtaPlane.
VxTrackAtVertex & operator=(const VxTrackAtVertex &)
Assignment operator.
const NeutralAtaPlane * m_ImpactPoint3dNeutralAtaPlane
const NeutralParameters * initialNeutralPerigee(void) const
Access to the initial perigee parameters of trajectory.
void setPerigeeAtVertex(TrackParameters *perigee)
Setting up parameters at vertex.
LinearizedTrack * m_linState
Linearized track, required for the iterative vertex fitting.
double m_VertexCompatibility
Value of the compatibility of the track to the actual vertex, based on the estimation on the distance...
TrackParameters * m_perigeeAtVertex
The perigee parameters of tracks used in the fit wrt.
void setOrigTrackNoCache(ITrackLink *trk)
Setting up the initial track, without caching parameters.
void setOrigTrack(ITrackLink *trk)
Setting up the initial track.
const TrackParameters * initialPerigee(void) const
Access to the initial perigee parameters of trajectory.
const TrackParameters * perigeeAtVertex(void) const
Perigee parameters with respect to fitted vertex d_0 and z_0 are equal to 0 in case the trajectory wa...
const NeutralParameters * neutralPerigeeAtVertex(void) const
Perigee parameters with respect to fitted vertex d_0 and z_0 are equal to 0 in case the trajectory wa...
const AtaPlane * m_ImpactPoint3dAtaPlane
Pointer to the TrackParameters defined on the Plane with center the actual vertex estimate and passin...
const TrackParameters * m_initialPerigee
Pointer to initial (before fit) perigee state of the track.
LinearizedTrack * linState(void)
Access method for the perigee linearized track.
void setImpactPoint3dNeutralAtaPlane(const NeutralAtaPlane *myIP3dNeutralAtaPlane)
Set method for ImpactPoint3dNeutralAtaPlane.
virtual VxTrackAtVertex * clone() const
Clone method.
virtual MsgStream & dump(MsgStream &sl) const
Output Method for MsgStream, to be overloaded by child classes.
const ITrackLink * trackOrParticleLink(void) const
const NeutralParameters * m_initialNeutralPerigee
void setLinTrack(LinearizedTrack *myLinTrack)
Setting up the linearized track.
double m_trkWeight
Weight of the track with respect to vertex.
NeutralParameters * m_neutralPerigeeAtVertex
The perigee parameters of neutrals used in the fit wrt.
FitQuality m_fitQuality
The chi2 and number of degrees of freedom of the track.
VxTrackAtVertex()
Default constructor.
virtual ~VxTrackAtVertex()
dtor
Ensure that the ATLAS eigen extensions are properly loaded.
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
ParametersT< NeutralParametersDim, Neutral, PlaneSurface > NeutralAtaPlane
ParametersBase< TrackParametersDim, Charged > TrackParameters
ParametersT< TrackParametersDim, Charged, PlaneSurface > AtaPlane