ATLAS Offline Software
AlignResidualCalculator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRKALIGNGENTOOLS_ALIGNRESIDUALCALCULATOR_H
6 #define TRKALIGNGENTOOLS_ALIGNRESIDUALCALCULATOR_H
7 
9 #include "GaudiKernel/ToolHandle.h"
11 
13 
17 
29 class AtlasDetectorID;
30 
31 namespace Trk {
32 
33  class AlignTrack;
34  class ResidualPull;
35  class Track;
36  class AlignTSOS;
37  class TrackStateOnSurface;
38 
40 
41  public:
42 
43  AlignResidualCalculator(const std::string& type, const std::string& name,
44  const IInterface* parent);
45  virtual ~AlignResidualCalculator();
46 
47  virtual StatusCode initialize() override;
48  virtual StatusCode finalize() override;
49 
51  virtual double setResiduals(DataVector<AlignTSOS>* alignTSOSColl,
52  const Track* track) override;
53 
55  virtual double setResiduals(AlignTrack* alignTrack,
56  const Track* track) override;
57 
59  virtual double setResiduals(DataVector<AlignTSOS>::iterator firstAtsos,
61  const Track* track, bool newTrack) override;
62 
64  virtual double chi2ForMeasType(int measType) const override
65  { return m_chi2ForMeasType[measType]; }
66 
67  private:
68 
69  double setResidualsOnATSOS(AlignTSOS* atsos, const TrackStateOnSurface* tsos);
70  void accumulateScattering(const TrackStateOnSurface* tsos);
71  const TrackStateOnSurface* getMatchingTSOS(const AlignTSOS* atsos, const Track* track);
72 
73  ToolHandle <IResidualPullCalculator> m_pullCalculator{
74  this, "ResidualPullCalculator", "Trk::ResidualPullCalculator/ResidualPullCalculator"};
75  ToolHandle <IUpdator> m_updator{
76  this, "UpdatorTool", "Trk::KalmanUpdator/TrkKalmanUpdator"};
77 
78  IntegerProperty m_resType{
79  this, "ResidualType", Trk::AlignResidualType::HitOnly,
80  "residual type as defined in the Trk::AlignResidualType enum"};
81 
82  BooleanProperty m_includeScatterers{this, "IncludeScatterers", false};
83  double m_qOverP{};
84  double m_previousQOverP{};
85 
86  int m_nDoF{};
87 
88  double* m_chi2ForMeasType = nullptr;
89 
90  std::vector<const TrackStateOnSurface*> m_matchedTSOS;
91 
92  };
93 
94 
95 }
96 
97 #endif // TRKALIGNGENTOOLS_ALIGNRESIDUALCALCULATOR_H
Trk::HitOnly
@ HitOnly
Definition: AlignResidualType.h:27
Trk::AlignResidualCalculator::accumulateScattering
void accumulateScattering(const TrackStateOnSurface *tsos)
Definition: AlignResidualCalculator.cxx:290
Trk::AlignResidualCalculator::m_matchedTSOS
std::vector< const TrackStateOnSurface * > m_matchedTSOS
Definition: AlignResidualCalculator.h:90
IAlignResidualCalculator.h
Trk::AlignTSOS
Definition: AlignTSOS.h:37
Trk::AlignResidualCalculator::m_resType
IntegerProperty m_resType
Definition: AlignResidualCalculator.h:78
AlignResidualType.h
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
IUpdator.h
Trk::AlignResidualCalculator::finalize
virtual StatusCode finalize() override
Definition: AlignResidualCalculator.cxx:61
Trk::AlignResidualCalculator::m_chi2ForMeasType
double * m_chi2ForMeasType
Definition: AlignResidualCalculator.h:88
Trk::AlignResidualCalculator::m_qOverP
double m_qOverP
Definition: AlignResidualCalculator.h:83
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
AlignTSOS
AlignTSOS is a TSOS with extra variables useful for alignment. It is created using an implementation ...
Trk::IAlignResidualCalculator
Definition: IAlignResidualCalculator.h:35
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trk::AlignResidualCalculator::initialize
virtual StatusCode initialize() override
Definition: AlignResidualCalculator.cxx:37
Trk::AlignResidualCalculator::~AlignResidualCalculator
virtual ~AlignResidualCalculator()
Definition: AlignResidualCalculator.cxx:31
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
Trk::AlignResidualCalculator::setResidualsOnATSOS
double setResidualsOnATSOS(AlignTSOS *atsos, const TrackStateOnSurface *tsos)
Definition: AlignResidualCalculator.cxx:130
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
Trk::AlignResidualCalculator::m_nDoF
int m_nDoF
Definition: AlignResidualCalculator.h:86
Trk::AlignResidualCalculator
Definition: AlignResidualCalculator.h:39
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::AlignResidualCalculator::m_pullCalculator
ToolHandle< IResidualPullCalculator > m_pullCalculator
Definition: AlignResidualCalculator.h:73
Trk::AlignTrack
Definition: AlignTrack.h:41
Trk::AlignResidualCalculator::setResiduals
virtual double setResiduals(DataVector< AlignTSOS > *alignTSOSColl, const Track *track) override
sets residuals for AlignTSOS on AlignTrack and returns total chi2
Trk::AlignResidualCalculator::m_updator
ToolHandle< IUpdator > m_updator
Definition: AlignResidualCalculator.h:75
IResidualPullCalculator.h
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
Trk::AlignResidualCalculator::m_includeScatterers
BooleanProperty m_includeScatterers
Definition: AlignResidualCalculator.h:82
Trk::AlignResidualCalculator::setResiduals
virtual double setResiduals(DataVector< AlignTSOS >::iterator firstAtsos, DataVector< AlignTSOS >::iterator lastAtsos, const Track *track, bool newTrack) override
sets residuals for AlignTSOS on AlignTrack and returns total chi2
Trk::AlignResidualCalculator::m_previousQOverP
double m_previousQOverP
Definition: AlignResidualCalculator.h:84
Trk::AlignResidualCalculator::AlignResidualCalculator
AlignResidualCalculator(const std::string &type, const std::string &name, const IInterface *parent)
Definition: AlignResidualCalculator.cxx:24
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
Trk::AlignResidualCalculator::chi2ForMeasType
virtual double chi2ForMeasType(int measType) const override
returns chi2 summed over hits of a particular MeasurementType
Definition: AlignResidualCalculator.h:64
AthAlgTool
Definition: AthAlgTool.h:26
Trk::AlignResidualCalculator::getMatchingTSOS
const TrackStateOnSurface * getMatchingTSOS(const AlignTSOS *atsos, const Track *track)
Definition: AlignResidualCalculator.cxx:310
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:57
AlignTrack
AlignTrack is a generalization of a Trk::Track, used as the basic object to contain track information...