ATLAS Offline Software
OutwardsCombinedMuonTrackBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // OutwardsCombinedMuonTrackBuilder
7 // AlgTool gathering material effects along a combined muon track, in
8 // particular the TSOS'es representing the calorimeter energy deposit and
9 // Coulomb scattering.
10 // The resulting track is fitted at the IP using the ITrackFitter interface.
11 //
13 
14 #ifndef MUIDTRACKBUILDER_OUTWARDSCOMBINEDMUONTRACKBUILDER_H
15 #define MUIDTRACKBUILDER_OUTWARDSCOMBINEDMUONTRACKBUILDER_H
16 
17 
18 
20 #include "GaudiKernel/ServiceHandle.h"
21 #include "GaudiKernel/ToolHandle.h"
31 #include "TrkTrack/TrackInfo.h"
32 #include <memory>
33 
34 namespace Trk {
35  class RecVertex;
37  class VertexOnTrack;
38 } // namespace Trk
39 
40 namespace Rec {
41 
43  public:
44  OutwardsCombinedMuonTrackBuilder(const std::string& type, const std::string& name, const IInterface* parent);
45  virtual ~OutwardsCombinedMuonTrackBuilder() = default;
46 
47  virtual StatusCode initialize() override;
48 
50  virtual std::unique_ptr<Trk::Track> combinedFit(const EventContext& ctx, const Trk::Track& indetTrack, const Trk::Track& extrapolatedTrack,
51  const Trk::Track& spectrometerTrack) const override;
52 
56  virtual std::unique_ptr<Trk::Track> indetExtension(const EventContext& ctx, const Trk::Track& indetTrack, const Trk::MeasurementSet& spectrometerMeas,
57  std::unique_ptr<Trk::TrackParameters> innerParameters,
58  std::unique_ptr<Trk::TrackParameters> middleParameters,
59  std::unique_ptr<Trk::TrackParameters> outerParameters) const override;
60 
63  virtual std::unique_ptr<Trk::Track> standaloneFit(const EventContext& ctx, const Trk::Track& spectrometerTrack,
64  const Amg::Vector3D& bs, const Trk::Vertex* vertex) const override;
65 
69  virtual std::unique_ptr<Trk::Track> standaloneRefit( const EventContext& ctx, const Trk::Track& combinedTrack, const Amg::Vector3D& bs) const override;
70 
72  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const Trk::Track& track, const Trk::RunOutlierRemoval runOutlier,
73  const Trk::ParticleHypothesis particleHypothesis) const;
74 
75  private:
78  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const Trk::Track& indetTrack, const Trk::Track& extrapolatedTrack,
79  const Trk::RunOutlierRemoval runOutlier, const Trk::ParticleHypothesis particleHypothesis) const;
80 
81  std::unique_ptr<Trk::Track> addIDMSerrors(const Trk::Track& track) const;
82 
83  static std::unique_ptr<Trk::PseudoMeasurementOnTrack>
85 
86  // helpers, managers, tools
87  ToolHandle<Muon::IMuonTrackCleaner> m_cleaner{
88  this,
89  "Cleaner",
90  "",
91  "MuonTrackCleaner tool",
92  };
93 
94  ToolHandle<Trk::ITrackFitter> m_fitter{
95  this,
96  "Fitter",
97  "",
98  "TrackFitter tool",
99  }; // curved track fitter
100 
101  ToolHandle<Trk::ITrackSummaryTool> m_trackSummary{
102  this,
103  "TrackSummaryTool",
104  "",
105  "TrackSummary tool",
106  };
107 
108  ToolHandle<Muon::IMuonHoleRecoveryTool> m_muonHoleRecovery{
109  this,
110  "MuonHoleRecovery",
111  "",
112  "MuonHoleRecovery tool",
113  };
114 
115  ToolHandle<Muon::IMuonErrorOptimisationTool> m_muonErrorOptimizer{
116  this,
117  "MuonErrorOptimizer",
118  "",
119  "MuonErrorOptimizer tool",
120  };
121 
122  ServiceHandle<Trk::ITrackingVolumesSvc> m_trackingVolumesSvc{this, "TrackingVolumesSvc", "TrackingVolumesSvc/TrackingVolumesSvc"};
123 
124  std::unique_ptr<Trk::Volume> m_calorimeterVolume;
125  std::unique_ptr<Trk::Volume> m_indetVolume;
126 
127 
128  // other configuration and tolerances
129  Gaudi::Property<bool> m_allowCleanerVeto{this, "AllowCleanerVeto", true};
130  Gaudi::Property<bool> m_cleanCombined{this, "CleanCombined", true};
131  Gaudi::Property<bool> m_recoverCombined{this, "RecoverCombined", false };
132  Gaudi::Property<double> m_IDMS_xySigma{this,"IDMS_xySigma", 1.* Gaudi::Units::mm};
133  Gaudi::Property<double> m_IDMS_rzSigma{this,"IDMS_rzSigma", 1.* Gaudi::Units::mm};
134  Gaudi::Property<bool> m_addIDMSerrors{this, "AddIDMSerrors", true};
135 
136  Gaudi::Property<double> m_badFitChi2{this, "BadFitChi2", 2.5};
137  double normalizedChi2(const Trk::Track& track) const;
138 
139  }; // end of class OutwardsCombinedMuonTrackBuilder
140 
141 } // end of namespace Rec
142 
143 #endif // MUIDTRACKBUILDER_OUTWARDSCOMBINEDMUONTRACKBUILDER_H
Rec::OutwardsCombinedMuonTrackBuilder::m_addIDMSerrors
Gaudi::Property< bool > m_addIDMSerrors
Definition: OutwardsCombinedMuonTrackBuilder.h:134
Rec::OutwardsCombinedMuonTrackBuilder::fit
std::unique_ptr< Trk::Track > fit(const EventContext &ctx, const Trk::Track &track, const Trk::RunOutlierRemoval runOutlier, const Trk::ParticleHypothesis particleHypothesis) const
refit a track
Definition: OutwardsCombinedMuonTrackBuilder.cxx:280
Rec::OutwardsCombinedMuonTrackBuilder::m_fitter
ToolHandle< Trk::ITrackFitter > m_fitter
Definition: OutwardsCombinedMuonTrackBuilder.h:94
ICombinedMuonTrackBuilder.h
Rec::OutwardsCombinedMuonTrackBuilder
Definition: OutwardsCombinedMuonTrackBuilder.h:42
Trk::Vertex
Definition: Tracking/TrkEvent/VxVertex/VxVertex/Vertex.h:26
ITrackSummaryTool.h
Rec::OutwardsCombinedMuonTrackBuilder::standaloneRefit
virtual std::unique_ptr< Trk::Track > standaloneRefit(const EventContext &ctx, const Trk::Track &combinedTrack, const Amg::Vector3D &bs) const override
ICombinedMuonTrackBuilder interface: refit a track removing any indet measurements with optional addi...
Definition: OutwardsCombinedMuonTrackBuilder.cxx:130
IMuonTrackCleaner.h
TrackParameters.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Rec::OutwardsCombinedMuonTrackBuilder::vertexOnTrack
static std::unique_ptr< Trk::PseudoMeasurementOnTrack > vertexOnTrack(const Trk::TrackParameters *parameters, const Trk::RecVertex &vertex)
Definition: OutwardsCombinedMuonTrackBuilder.cxx:635
Rec::ICombinedMuonTrackBuilder
Interface ID for ICombinedMuonTrackBuilder.
Definition: ICombinedMuonTrackBuilder.h:36
Rec::OutwardsCombinedMuonTrackBuilder::addIDMSerrors
std::unique_ptr< Trk::Track > addIDMSerrors(const Trk::Track &track) const
Definition: OutwardsCombinedMuonTrackBuilder.cxx:471
Rec::OutwardsCombinedMuonTrackBuilder::combinedFit
virtual std::unique_ptr< Trk::Track > combinedFit(const EventContext &ctx, const Trk::Track &indetTrack, const Trk::Track &extrapolatedTrack, const Trk::Track &spectrometerTrack) const override
ICombinedMuonTrackBuilder interface: build and fit combined ID/Calo/MS track.
Definition: OutwardsCombinedMuonTrackBuilder.cxx:88
Rec::OutwardsCombinedMuonTrackBuilder::m_trackingVolumesSvc
ServiceHandle< Trk::ITrackingVolumesSvc > m_trackingVolumesSvc
Definition: OutwardsCombinedMuonTrackBuilder.h:122
Rec::OutwardsCombinedMuonTrackBuilder::m_muonHoleRecovery
ToolHandle< Muon::IMuonHoleRecoveryTool > m_muonHoleRecovery
Definition: OutwardsCombinedMuonTrackBuilder.h:108
Trk::combinedTrack
void combinedTrack(long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
Definition: XYZtrp.cxx:113
Trk::RecVertex
Trk::RecVertex inherits from Trk::Vertex.
Definition: RecVertex.h:44
Trk::RunOutlierRemoval
bool RunOutlierRemoval
switch to toggle quality processing after fit
Definition: FitterTypes.h:22
Rec::OutwardsCombinedMuonTrackBuilder::OutwardsCombinedMuonTrackBuilder
OutwardsCombinedMuonTrackBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Definition: OutwardsCombinedMuonTrackBuilder.cxx:41
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Rec::OutwardsCombinedMuonTrackBuilder::initialize
virtual StatusCode initialize() override
Definition: OutwardsCombinedMuonTrackBuilder.cxx:45
IMuonErrorOptimisationTool.h
Rec
Name: MuonSpContainer.h Package : offline/Reconstruction/MuonIdentification/muonEvent.
Definition: FakeTrackBuilder.h:10
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Rec::OutwardsCombinedMuonTrackBuilder::~OutwardsCombinedMuonTrackBuilder
virtual ~OutwardsCombinedMuonTrackBuilder()=default
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Rec::OutwardsCombinedMuonTrackBuilder::m_calorimeterVolume
std::unique_ptr< Trk::Volume > m_calorimeterVolume
Definition: OutwardsCombinedMuonTrackBuilder.h:124
Trk::ParametersBase
Definition: ParametersBase.h:55
Rec::OutwardsCombinedMuonTrackBuilder::normalizedChi2
double normalizedChi2(const Trk::Track &track) const
Definition: OutwardsCombinedMuonTrackBuilder.cxx:666
Rec::OutwardsCombinedMuonTrackBuilder::m_badFitChi2
Gaudi::Property< double > m_badFitChi2
Definition: OutwardsCombinedMuonTrackBuilder.h:136
Trk::MeasurementSet
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
Definition: FitterTypes.h:30
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Rec::OutwardsCombinedMuonTrackBuilder::m_IDMS_xySigma
Gaudi::Property< double > m_IDMS_xySigma
Definition: OutwardsCombinedMuonTrackBuilder.h:132
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
TrackInfo.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::MeasurementBaseType::VertexOnTrack
@ VertexOnTrack
Definition: MeasurementBase.h:52
Rec::OutwardsCombinedMuonTrackBuilder::standaloneFit
virtual std::unique_ptr< Trk::Track > standaloneFit(const EventContext &ctx, const Trk::Track &spectrometerTrack, const Amg::Vector3D &bs, const Trk::Vertex *vertex) const override
ICombinedMuonTrackBuilder interface: propagate to perigee adding calo energy-loss and material to MS ...
Definition: OutwardsCombinedMuonTrackBuilder.cxx:124
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
TrackingVolume.h
Rec::OutwardsCombinedMuonTrackBuilder::m_recoverCombined
Gaudi::Property< bool > m_recoverCombined
Definition: OutwardsCombinedMuonTrackBuilder.h:131
Rec::OutwardsCombinedMuonTrackBuilder::m_cleanCombined
Gaudi::Property< bool > m_cleanCombined
Definition: OutwardsCombinedMuonTrackBuilder.h:130
Rec::OutwardsCombinedMuonTrackBuilder::indetExtension
virtual std::unique_ptr< Trk::Track > indetExtension(const EventContext &ctx, const Trk::Track &indetTrack, const Trk::MeasurementSet &spectrometerMeas, std::unique_ptr< Trk::TrackParameters > innerParameters, std::unique_ptr< Trk::TrackParameters > middleParameters, std::unique_ptr< Trk::TrackParameters > outerParameters) const override
ICombinedMuonTrackBuilder interface: build and fit indet track extended to include MS Measurement set...
Definition: OutwardsCombinedMuonTrackBuilder.cxx:103
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Rec::OutwardsCombinedMuonTrackBuilder::m_IDMS_rzSigma
Gaudi::Property< double > m_IDMS_rzSigma
Definition: OutwardsCombinedMuonTrackBuilder.h:133
Rec::OutwardsCombinedMuonTrackBuilder::m_indetVolume
std::unique_ptr< Trk::Volume > m_indetVolume
Definition: OutwardsCombinedMuonTrackBuilder.h:125
Rec::OutwardsCombinedMuonTrackBuilder::m_trackSummary
ToolHandle< Trk::ITrackSummaryTool > m_trackSummary
Definition: OutwardsCombinedMuonTrackBuilder.h:101
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Trk::MeasurementBaseType::PseudoMeasurementOnTrack
@ PseudoMeasurementOnTrack
Definition: MeasurementBase.h:51
Rec::OutwardsCombinedMuonTrackBuilder::m_allowCleanerVeto
Gaudi::Property< bool > m_allowCleanerVeto
Definition: OutwardsCombinedMuonTrackBuilder.h:129
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
IMuonHoleRecoveryTool.h
AthAlgTool
Definition: AthAlgTool.h:26
Rec::OutwardsCombinedMuonTrackBuilder::m_muonErrorOptimizer
ToolHandle< Muon::IMuonErrorOptimisationTool > m_muonErrorOptimizer
Definition: OutwardsCombinedMuonTrackBuilder.h:115
Rec::OutwardsCombinedMuonTrackBuilder::m_cleaner
ToolHandle< Muon::IMuonTrackCleaner > m_cleaner
Definition: OutwardsCombinedMuonTrackBuilder.h:87
ITrackingVolumesSvc.h
ITrackFitter.h
ServiceHandle< Trk::ITrackingVolumesSvc >