ATLAS Offline Software
MuonTrackCleaner.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUON_MUONTRACKCLEANER_H
6 #define MUON_MUONTRACKCLEANER_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
10 #include "GaudiKernel/ToolHandle.h"
22 
23 // For magneticfield
24 #include <set>
25 #include <string>
26 
34 
35 namespace Trk {
36  class Track;
37  class TrackStateOnSurface;
38  class MeasurementBase;
39  class FitQuality;
40 } // namespace Trk
41 
42 namespace Muon {
43 
44  class MuonTrackCleaner : virtual public IMuonTrackCleaner, public AthAlgTool {
45  public:
47  Identifier id{};
50  int useInFit{1};
51  bool inBounds{true};
52  bool isNoise{false};
53  bool copyState{true}; // if true the state will be copied instead of evaluated for outliers
54  double residual{DBL_MAX};
55  double pull{DBL_MAX};
57  const Trk::MeasurementBase* meas{nullptr};
58  const Trk::TrackParameters* pars{nullptr};
59  std::optional<Trk::ResidualPull> resPull{std::nullopt};
60  std::unique_ptr<MdtDriftCircleOnTrack> flippedMdt{nullptr};
61  std::unique_ptr<const CompetingMuonClustersOnTrack> cleanedCompROT{nullptr};
62  const Trk::FitQuality* fitQ{nullptr};
63 
65  originalState(orState){}
66 
67  MCTBCleaningInfo(const Identifier& i, const Identifier& chi, MuonStationIndex::ChIndex chIn, bool inB, double r, double p,
68  const Trk::TrackStateOnSurface* orState) :
69  id(i),
70  chId(chi),
71  chIndex(chIn),
72  inBounds(inB),
73  residual(r),
74  pull(p),
75  originalState(orState){}
76 
77  MCTBCleaningInfo(const Identifier& i, const Identifier& chi, MuonStationIndex::ChIndex chIn, bool inB, double r, double p,
79  std::optional<Trk::ResidualPull>&& resP, const Trk::FitQuality* fq) :
80  id(i),
81  chId(chi),
82  chIndex(chIn),
83  inBounds(inB),
84  copyState{false},
85  residual(r),
86  pull(p),
87  originalState(orState),
88  meas(me),
89  pars(par),
90  resPull(std::move(resP)),
91  fitQ(fq) {}
92  };
93  typedef std::vector<MCTBCleaningInfo> InfoVec;
95 
96  typedef std::set<const Trk::MeasurementBase*> MeasSet;
98 
101  ChamberRemovalOutput() = default;
102  std::unique_ptr<Trk::Track> track;
104  std::vector<MCTBCleaningInfo*> removedHits;
105  };
107  bool operator()(const ChamberRemovalOutput& r1, const ChamberRemovalOutput& r2) const {
109  return sortTracks(r1.track.get(), r2.track.get());
110  }
111  };
112 
114  ChamberPullInfo() = default;
115  double pullSum{0.};
116  double maxPull{0.};
117  int nhits{0};
118  };
119  typedef std::map<Identifier, ChamberPullInfo> PullChamberMap;
121  typedef PullChamberMap::const_iterator PullChamberCit;
122 
123  struct EtaPhiHits {
124  EtaPhiHits() = default;
125  int neta{0};
126  int nphi{0};
127  };
128  typedef std::map<Identifier, EtaPhiHits> EtaPhiPerChamberMap;
130 
131  typedef std::vector<std::pair<double, Identifier>> PullChVec;
133 
134  struct SortByAvePull {
135  bool operator()(const std::pair<double, Identifier>& entry1, const std::pair<double, Identifier>& entry2) const {
136  return entry1.first > entry2.first;
137  }
138  };
139 
142  unsigned int nhits{0};
143  unsigned int noutliers{0};
144  unsigned int ndeltas{0};
145  unsigned int nrecoverableOutliers{0};
146  unsigned int noutBounds{0};
148  };
149 
150  // struct to hold the internal state information, i.e. the various track properties relevant for the cleaner
151  struct CleaningState {
156 
157  // need to keep these somewhere while they're being used: couldn't figure out how to make unique_ptr work with
158  // Trk::TrackParameter given the inheritance issues
159  std::vector<std::unique_ptr<Trk::TrackParameters>> parsToBeDeleted{};
160 
161  unsigned int nscatterers{0};
162  unsigned int nhits{0};
163  unsigned int noutliers{0};
164 
165  bool slFit{false};
166  unsigned int nIdHits{0};
167  unsigned int nPseudoMeasurements{0};
168  unsigned int nPhiConstraints{0};
169 
170  unsigned int numberOfFlippedMdts{0};
171  unsigned int numberOfCleanedCompROTs{0};
172  bool hasOfBoundsOutliers{false};
173  bool hasVertexConstraint{false};
174  bool hasSmall{false};
175  bool hasLarge{false};
176 
180 
183 
187 
190 
191  std::set<MuonStationIndex::StIndex> stations{};
192  std::set<MuonStationIndex::PhiIndex> phiLayers{};
193 
194  std::map<MuonStationIndex::ChIndex, ChamberLayerStatistics> chamberLayerStatistics{};
195 
196  std::set<Identifier> chamberRemovalExclusionList{};
197  CleaningState() = default;
198  };
199 
200  public:
202  MuonTrackCleaner(const std::string&, const std::string&, const IInterface*);
203 
205  ~MuonTrackCleaner() = default;
206 
208  StatusCode initialize() override;
209 
214  std::unique_ptr<Trk::Track> clean(const Trk::Track& track, const EventContext& ctx) const override;
215 
221  std::unique_ptr<Trk::Track> clean(const Trk::Track& track, const std::set<Identifier>& chamberRemovalExclusionList,
222  const EventContext& ctx) const override;
223 
224  private:
227 
229  std::unique_ptr<Trk::Track> cleanTrack(const EventContext& ctx, const Trk::Track* track, CleaningState& state) const;
230 
232  double calcPull(const double residual, const double locMesCov, const double locTrkCov, const bool& trkStateIsUnbiased) const;
233 
235  std::unique_ptr<Trk::Track> cleanCompROTs(const EventContext& ctx, std::unique_ptr<Trk::Track> track, CleaningState& state) const;
236 
238  std::unique_ptr<Trk::Track> recoverFlippedMdt(const EventContext& ctx, std::unique_ptr<Trk::Track> track,
239  CleaningState& state) const;
240 
242  std::unique_ptr<Trk::Track> hitCleaning(const EventContext& ctx, std::unique_ptr<Trk::Track> track, CleaningState& state) const;
243 
245  std::unique_ptr<Trk::Track> chamberCleaning(const EventContext& ctx, std::unique_ptr<Trk::Track> track, CleaningState& state) const;
246 
250  std::unique_ptr<Trk::Track> outlierRecovery(const EventContext& ctx, std::unique_ptr<Trk::Track> track, CleaningState& state,
251  const MuonStationIndex::ChIndex* currentIndex = nullptr) const;
252 
254  bool isOutsideOnTrackCut(const Identifier& id, double res, double pull, double cutScaleFactor) const;
255 
257  ChamberRemovalOutput removeChamber(const EventContext& ctx, const std::unique_ptr<Trk::Track>& track, Identifier chId,
258  bool removePhi, bool removeEta, CleaningState& state) const;
259 
261  void init(const EventContext& ctx, const Trk::Track& track, CleaningState& state) const;
262 
263  // check for station removal
264  bool checkStations(CleaningState& state) const;
265 
266  // check for failure due to inner removal
267  bool checkInnerConstraint(CleaningState& state) const;
268 
269  // check for not enough phi constraints
270  bool checkPhiConstraint(CleaningState& state) const;
271 
272  // unremove hits for next iteration of chamber cleaning
274 
275  // print track states
276  void printStates(Trk::Track* track) const;
277 
278  // choose fitter and fit
279  std::unique_ptr<Trk::Track> fitTrack(const EventContext& ctx, Trk::Track& track, Trk::ParticleHypothesis pHyp, bool slFit) const;
280 
281  ToolHandle<Trk::ITrackFitter> m_trackFitter{
282  this,
283  "Fitter",
284  "Trk::GlobalChi2Fitter/MCTBFitterMaterialFromTrack",
285  };
286  ToolHandle<Trk::ITrackFitter> m_slTrackFitter{this, "SLFitter", "Trk::GlobalChi2Fitter/MCTBSLFitterMaterialFromTrack"};
287  ToolHandle<Trk::IUpdator> m_measurementUpdator{this, "MeasurementUpdator", "Trk::KalmanUpdator/MuonMeasUpdator"};
288  ToolHandle<Muon::IMdtDriftCircleOnTrackCreator> m_mdtRotCreator{this, "MdtRotCreator",
289  "Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"};
290  ToolHandle<IMuonCompetingClustersOnTrackCreator> m_compRotCreator{
291  this, "CompRotCreator", "Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator"};
292  ToolHandle<Trk::IResidualPullCalculator> m_pullCalculator{this, "PullCalculator",
293  "Trk::ResidualPullCalculator/ResidualPullCalculator"};
294  ServiceHandle<Muon::IMuonEDMHelperSvc> m_edmHelperSvc{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
295  "Handle to the service providing the IMuonEDMHelperSvc interface"};
296  ToolHandle<Muon::MuonEDMPrinterTool> m_printer{this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
297  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
298  ToolHandle<Trk::IExtrapolator> m_extrapolator{this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"};
299  // Read handle for conditions object to get the field cache
300  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey{this, "AtlasFieldCacheCondObj", "fieldCondObj",
301  "Name of the Magnetic Field conditions object key"};
302 
303  Gaudi::Property<bool> m_useMdtResiCut{this, "UseMdtResiCut", false};
304  Gaudi::Property<double> m_chi2Cut{this, "Chi2Cut", 100.};
305  Gaudi::Property<double> m_pullCut{this, "PullCut", 5.};
306  Gaudi::Property<double> m_mdtResiCut{this, "MdtResiCut", 1.};
307  Gaudi::Property<double> m_pullCutPhi{this, "PullCutPhi", 10.};
308  Gaudi::Property<double> m_associationScaleFactor{this, "AssociationScaleFactor", 0.7};
309  Gaudi::Property<unsigned int> m_ncycles{this, "CleaningCycles", 5};
310  Gaudi::Property<double> m_avePullSumPerChamberCut{this, "MaxAvePullSumPerChamber", 3.5};
311  Gaudi::Property<bool> m_recoverOutliers{this, "RecoverOutliers", true};
312  Gaudi::Property<bool> m_flipMdtDriftRadii{this, "FlipMdtDriftRadii", true};
313  Gaudi::Property<bool> m_cleanCompROTs{this, "CleanCompROTs", true};
314  Gaudi::Property<bool> m_onlyUseHitErrorInRecovery{this, "OnlyUseHitErrorInRecovery", true};
315  Gaudi::Property<double> m_adcCut{this, "AdcCut", 50.};
316  Gaudi::Property<bool> m_iterate{this, "Iterate", 0.7};
317  Gaudi::Property<bool> m_use_slFit{this, "UseSLFit", false};
318 
320  bool extractChambersToBeRemoved(CleaningState& state, std::set<Identifier>& chambersToBeRemovedSet, bool usePhi = false) const;
321 
322  static std::string print(ChamberLayerStatistics& statistics) ;
323  };
324 
325 } // namespace Muon
326 
327 #endif
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
beamspotman.r
def r
Definition: beamspotman.py:676
Muon::MuonTrackCleaner::ChamberLayerStatistics::nrecoverableOutliers
unsigned int nrecoverableOutliers
Definition: MuonTrackCleaner.h:145
Muon::MuonTrackCleaner::~MuonTrackCleaner
~MuonTrackCleaner()=default
destructor
Muon::MuonTrackCleaner::m_measurementUpdator
ToolHandle< Trk::IUpdator > m_measurementUpdator
Definition: MuonTrackCleaner.h:287
Muon::MuonTrackCleaner::MCTBCleaningInfo::MCTBCleaningInfo
MCTBCleaningInfo(const Identifier &i, const Identifier &chi, MuonStationIndex::ChIndex chIn, bool inB, double r, double p, const Trk::TrackStateOnSurface *orState, const Trk::MeasurementBase *me, const Trk::TrackParameters *par, std::optional< Trk::ResidualPull > &&resP, const Trk::FitQuality *fq)
Definition: MuonTrackCleaner.h:77
Muon::MuonTrackCleaner::ChamberRemovalOutput
struct to store return values of chamber removal, contains the new track plus a list the removed hits
Definition: MuonTrackCleaner.h:100
Muon::MuonTrackCleaner::ChamberLayerStatistics::ChamberLayerStatistics
ChamberLayerStatistics()=default
Muon::MuonTrackCleaner::MCTBCleaningInfo::flippedMdt
std::unique_ptr< MdtDriftCircleOnTrack > flippedMdt
Definition: MuonTrackCleaner.h:60
Muon::MuonTrackCleaner::CleaningState::nPseudoMeasurements
unsigned int nPseudoMeasurements
Definition: MuonTrackCleaner.h:167
Muon::MuonTrackCleaner::CleaningState::nhits
unsigned int nhits
Definition: MuonTrackCleaner.h:162
Muon::MuonTrackCleaner::CleaningState::chambersToBeRemovedPhi
PullChVec chambersToBeRemovedPhi
Definition: MuonTrackCleaner.h:189
Muon::MuonTrackCleaner::MCTBCleaningInfo::inBounds
bool inBounds
Definition: MuonTrackCleaner.h:51
IMuonTrackCleaner.h
Muon::MuonTrackCleaner::isOutsideOnTrackCut
bool isOutsideOnTrackCut(const Identifier &id, double res, double pull, double cutScaleFactor) const
check whether hit is an outlier
Definition: MuonTrackCleaner.cxx:1482
get_generator_info.result
result
Definition: get_generator_info.py:21
Muon::MuonTrackCleaner::m_ncycles
Gaudi::Property< unsigned int > m_ncycles
Definition: MuonTrackCleaner.h:309
Muon::MuonTrackCleaner::CleaningState::hasLarge
bool hasLarge
Definition: MuonTrackCleaner.h:175
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrackParameters.h
Muon::MuonTrackCleaner::m_pullCutPhi
Gaudi::Property< double > m_pullCutPhi
Definition: MuonTrackCleaner.h:307
Muon::MuonTrackCleaner::CleaningState::largePullMeasurements
MeasSet largePullMeasurements
Definition: MuonTrackCleaner.h:153
Muon::MuonTrackCleaner::CleaningState::parsToBeDeleted
std::vector< std::unique_ptr< Trk::TrackParameters > > parsToBeDeleted
Definition: MuonTrackCleaner.h:159
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonEDMPrinterTool.h
Muon::MuonTrackCleaner::m_pullCut
Gaudi::Property< double > m_pullCut
Definition: MuonTrackCleaner.h:305
Muon::MuonTrackCleaner::CleaningState::pullSumTrigEta
ChamberPullInfo pullSumTrigEta
Definition: MuonTrackCleaner.h:179
Muon::MuonTrackCleaner::ChamberLayerStatistics
Definition: MuonTrackCleaner.h:140
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
AtlasFieldCacheCondObj.h
Muon::MuonTrackCleaner::ChamberLayerStatistics::noutBounds
unsigned int noutBounds
Definition: MuonTrackCleaner.h:146
Muon::MuonTrackCleaner::removeChamber
ChamberRemovalOutput removeChamber(const EventContext &ctx, const std::unique_ptr< Trk::Track > &track, Identifier chId, bool removePhi, bool removeEta, CleaningState &state) const
remove chamber from track
Definition: MuonTrackCleaner.cxx:583
Muon::MuonTrackCleaner::MCTBCleaningInfo
Definition: MuonTrackCleaner.h:46
Muon::MuonTrackCleaner::MuonTrackCleaner
MuonTrackCleaner(const std::string &, const std::string &, const IInterface *)
constructor
Definition: MuonTrackCleaner.cxx:37
Muon::MuonTrackCleaner::m_useMdtResiCut
Gaudi::Property< bool > m_useMdtResiCut
Definition: MuonTrackCleaner.h:303
Muon::MuonTrackCleaner::SortChamberRemovalResultByChi2Ndof::operator()
bool operator()(const ChamberRemovalOutput &r1, const ChamberRemovalOutput &r2) const
Definition: MuonTrackCleaner.h:107
Muon::MuonTrackCleaner::m_mdtRotCreator
ToolHandle< Muon::IMdtDriftCircleOnTrackCreator > m_mdtRotCreator
Definition: MuonTrackCleaner.h:288
Muon::MuonTrackCleaner::MCTBCleaningInfo::cleanedCompROT
std::unique_ptr< const CompetingMuonClustersOnTrack > cleanedCompROT
Definition: MuonTrackCleaner.h:61
Muon::MuonTrackCleaner::CleaningState::flippedMdts
MeasSet flippedMdts
Definition: MuonTrackCleaner.h:154
Muon::MuonTrackCleaner::ChamberPullInfo::ChamberPullInfo
ChamberPullInfo()=default
Muon::MuonTrackCleaner::CleaningState::CleaningState
CleaningState()=default
Muon::MuonTrackCleaner::checkPhiConstraint
bool checkPhiConstraint(CleaningState &state) const
Definition: MuonTrackCleaner.cxx:1538
Muon::MuonTrackCleaner::CleaningState::stations
std::set< MuonStationIndex::StIndex > stations
Definition: MuonTrackCleaner.h:191
CompetingMuonClustersOnTrack.h
Muon::MuonTrackCleaner::ChamberLayerStatistics::chIndex
MuonStationIndex::ChIndex chIndex
Definition: MuonTrackCleaner.h:141
Muon::MuonTrackCleaner::m_cleanCompROTs
Gaudi::Property< bool > m_cleanCompROTs
Definition: MuonTrackCleaner.h:313
IMuonCompetingClustersOnTrackCreator.h
Muon::MuonTrackCleaner::m_edmHelperSvc
ServiceHandle< Muon::IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuonTrackCleaner.h:294
Muon::MuonTrackCleaner::PullChIt
PullChVec::iterator PullChIt
Definition: MuonTrackCleaner.h:132
Muon::MuonTrackCleaner::CleaningState::phiLayers
std::set< MuonStationIndex::PhiIndex > phiLayers
Definition: MuonTrackCleaner.h:192
Muon::MuonTrackCleaner::checkStations
bool checkStations(CleaningState &state) const
Definition: MuonTrackCleaner.cxx:1517
Muon::MuonTrackCleaner::CleaningState::pullSumPhi
ChamberPullInfo pullSumPhi
Definition: MuonTrackCleaner.h:178
Muon::MuonTrackCleaner::calculateResPul
const Trk::ResidualPull * calculateResPul(const Trk::MeasurementBase &meas, const Trk::TrackParameters &pars) const
calculate Residual/Pull for a given MeasurementBase + TrackParameters, ownership is transfered to use...
IExtrapolator.h
Muon::MuonTrackCleaner::MCTBCleaningInfo::originalState
const Trk::TrackStateOnSurface * originalState
Definition: MuonTrackCleaner.h:56
Muon::MuonTrackCleaner::CleaningState::slFit
bool slFit
Definition: MuonTrackCleaner.h:165
Muon::MuonTrackCleaner::MeasSet
std::set< const Trk::MeasurementBase * > MeasSet
Definition: MuonTrackCleaner.h:96
Trk::ResidualPull
This class containes residual and pull information.
Definition: ResidualPull.h:46
MdtDriftCircleOnTrack.h
Muon::MuonTrackCleaner::SortByAvePull
Definition: MuonTrackCleaner.h:134
Muon::MuonTrackCleaner::MCTBCleaningInfo::residual
double residual
Definition: MuonTrackCleaner.h:54
Muon::MuonTrackCleaner::CleaningState::hasSmall
bool hasSmall
Definition: MuonTrackCleaner.h:174
Muon::MuonTrackCleaner::InfoIt
InfoVec::iterator InfoIt
Definition: MuonTrackCleaner.h:94
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::MuonTrackCleaner::ChamberLayerStatistics::nhits
unsigned int nhits
Definition: MuonTrackCleaner.h:142
Muon::MuonTrackCleaner::m_avePullSumPerChamberCut
Gaudi::Property< double > m_avePullSumPerChamberCut
Definition: MuonTrackCleaner.h:310
Muon::MuonTrackCleaner::cleanTrack
std::unique_ptr< Trk::Track > cleanTrack(const EventContext &ctx, const Trk::Track *track, CleaningState &state) const
clean a track, actual implementation
Definition: MuonTrackCleaner.cxx:75
Muon::MuonTrackCleaner::m_slTrackFitter
ToolHandle< Trk::ITrackFitter > m_slTrackFitter
Definition: MuonTrackCleaner.h:286
Muon::MuonTrackCleaner::m_flipMdtDriftRadii
Gaudi::Property< bool > m_flipMdtDriftRadii
Definition: MuonTrackCleaner.h:312
Muon::MuonTrackCleaner::MCTBCleaningInfo::meas
const Trk::MeasurementBase * meas
Definition: MuonTrackCleaner.h:57
Muon::MuonTrackCleaner::ChamberLayerStatistics::ndeltas
unsigned int ndeltas
Definition: MuonTrackCleaner.h:144
Muon::MuonTrackCleaner::MeasIt
MeasSet::iterator MeasIt
Definition: MuonTrackCleaner.h:97
Muon::MuonTrackCleaner::PullChVec
std::vector< std::pair< double, Identifier > > PullChVec
Definition: MuonTrackCleaner.h:131
Muon::MuonTrackCleaner::hitCleaning
std::unique_ptr< Trk::Track > hitCleaning(const EventContext &ctx, std::unique_ptr< Trk::Track > track, CleaningState &state) const
remove bad hits from track.
Definition: MuonTrackCleaner.cxx:300
IUpdator.h
Muon::MuonTrackCleaner::MCTBCleaningInfo::MCTBCleaningInfo
MCTBCleaningInfo(const Trk::TrackStateOnSurface *orState)
Definition: MuonTrackCleaner.h:64
Muon::MuonTrackCleaner::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: MuonTrackCleaner.h:298
Muon::MuonTrackCleaner::CleaningState::largePullPseudoMeasurements
MeasSet largePullPseudoMeasurements
Definition: MuonTrackCleaner.h:155
Muon::MuonTrackCleaner::CleaningState::nscatterers
unsigned int nscatterers
Definition: MuonTrackCleaner.h:161
Muon::MuonTrackCleaner::CleaningState::numberOfCleanedCompROTs
unsigned int numberOfCleanedCompROTs
Definition: MuonTrackCleaner.h:171
Muon::MuonTrackCleaner::CleaningState::hasVertexConstraint
bool hasVertexConstraint
Definition: MuonTrackCleaner.h:173
Muon::MuonTrackCleaner::unremoveHits
static void unremoveHits(ChamberRemovalOutput &result)
Definition: MuonTrackCleaner.cxx:1546
Muon::MuonTrackCleaner::init
void init(const EventContext &ctx, const Trk::Track &track, CleaningState &state) const
init cleaner
Definition: MuonTrackCleaner.cxx:796
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Muon::MuonTrackCleaner::CleaningState::chambersToBeRemoved
PullChVec chambersToBeRemoved
Definition: MuonTrackCleaner.h:188
Muon::MuonTrackCleaner::MCTBCleaningInfo::pull
double pull
Definition: MuonTrackCleaner.h:55
Muon::MuonTrackCleaner::CleaningState::nIdHits
unsigned int nIdHits
Definition: MuonTrackCleaner.h:166
Muon::MuonTrackCleaner::ChamberRemovalOutput::removedHits
std::vector< MCTBCleaningInfo * > removedHits
Definition: MuonTrackCleaner.h:104
Muon::MuonTrackCleaner::PullChamberMap
std::map< Identifier, ChamberPullInfo > PullChamberMap
Definition: MuonTrackCleaner.h:119
ResidualPull.h
Muon::MuonTrackCleaner::MCTBCleaningInfo::MCTBCleaningInfo
MCTBCleaningInfo(const Identifier &i, const Identifier &chi, MuonStationIndex::ChIndex chIn, bool inB, double r, double p, const Trk::TrackStateOnSurface *orState)
Definition: MuonTrackCleaner.h:67
Muon::MuonTrackCleaner::MCTBCleaningInfo::resPull
std::optional< Trk::ResidualPull > resPull
Definition: MuonTrackCleaner.h:59
lumiFormat.i
int i
Definition: lumiFormat.py:92
Muon::MuonTrackCleaner::CleaningState::chamberLayerStatistics
std::map< MuonStationIndex::ChIndex, ChamberLayerStatistics > chamberLayerStatistics
Definition: MuonTrackCleaner.h:194
Muon::MuonTrackCleaner::EtaPhiHits::neta
int neta
Definition: MuonTrackCleaner.h:125
Muon::MuonTrackCleaner::InfoVec
std::vector< MCTBCleaningInfo > InfoVec
Definition: MuonTrackCleaner.h:93
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Muon::MuonTrackCleaner::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
Definition: MuonTrackCleaner.h:281
Muon::MuonTrackCleaner::MCTBCleaningInfo::copyState
bool copyState
Definition: MuonTrackCleaner.h:53
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::MuonTrackCleaner::MCTBCleaningInfo::chId
Identifier chId
Definition: MuonTrackCleaner.h:48
AthAlgTool.h
Muon::MuonTrackCleaner::EtaPhiHits
Definition: MuonTrackCleaner.h:123
Muon::MuonTrackCleaner::MCTBCleaningInfo::pars
const Trk::TrackParameters * pars
Definition: MuonTrackCleaner.h:58
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Muon::MuonTrackCleaner::CleaningState::chamberRemovalExclusionList
std::set< Identifier > chamberRemovalExclusionList
Definition: MuonTrackCleaner.h:196
Muon::MuonTrackCleaner::m_use_slFit
Gaudi::Property< bool > m_use_slFit
Definition: MuonTrackCleaner.h:317
Muon::MuonTrackCleaner::printStates
void printStates(Trk::Track *track) const
Definition: MuonTrackCleaner.cxx:1551
Muon::MuonTrackCleaner::m_adcCut
Gaudi::Property< double > m_adcCut
Definition: MuonTrackCleaner.h:315
python.StandardJetMods.pull
pull
Definition: StandardJetMods.py:264
Muon::MuonTrackCleaner::ChamberPullInfo
Definition: MuonTrackCleaner.h:113
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::MuonTrackCleaner::MCTBCleaningInfo::isNoise
bool isNoise
Definition: MuonTrackCleaner.h:52
Muon::MuonTrackCleaner::m_recoverOutliers
Gaudi::Property< bool > m_recoverOutliers
Definition: MuonTrackCleaner.h:311
Muon::MuonTrackCleaner::outlierRecovery
std::unique_ptr< Trk::Track > outlierRecovery(const EventContext &ctx, std::unique_ptr< Trk::Track > track, CleaningState &state, const MuonStationIndex::ChIndex *currentIndex=nullptr) const
recover outliers that are within the cuts.
Definition: MuonTrackCleaner.cxx:660
Muon::MuonTrackCleaner::MCTBCleaningInfo::chIndex
MuonStationIndex::ChIndex chIndex
Definition: MuonTrackCleaner.h:49
Muon::MuonTrackCleaner::m_pullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_pullCalculator
Definition: MuonTrackCleaner.h:292
Muon::MuonStationIndex::ChUnknown
@ ChUnknown
Definition: MuonStationIndex.h:16
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Muon::MuonTrackCleaner::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonTrackCleaner.h:297
ATLAS_CHECK_FILE_THREAD_SAFETY
ATLAS_CHECK_FILE_THREAD_SAFETY
Definition: MuonTrackCleaner.h:33
IMuonEDMHelperSvc.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Muon::MuonTrackCleaner::CleaningState::hasOfBoundsOutliers
bool hasOfBoundsOutliers
Definition: MuonTrackCleaner.h:172
Muon::MuonTrackCleaner::ChamberRemovalOutput::chId
Identifier chId
Definition: MuonTrackCleaner.h:103
Muon::MuonTrackCleaner::CleaningState
Definition: MuonTrackCleaner.h:151
Muon::MuonTrackCleaner::SortChamberRemovalResultByChi2Ndof
Definition: MuonTrackCleaner.h:106
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
IMdtDriftCircleOnTrackCreator.h
Muon::MuonTrackCleaner::PullChamberIt
PullChamberMap::iterator PullChamberIt
Definition: MuonTrackCleaner.h:120
Muon::MuonTrackCleaner::PullChamberCit
PullChamberMap::const_iterator PullChamberCit
Definition: MuonTrackCleaner.h:121
Muon::MuonTrackCleaner::ChamberRemovalOutput::ChamberRemovalOutput
ChamberRemovalOutput()=default
Muon::MuonTrackCleaner::m_printer
ToolHandle< Muon::MuonEDMPrinterTool > m_printer
Definition: MuonTrackCleaner.h:296
Muon::MuonTrackCleaner::CleaningState::measInfo
InfoVec measInfo
Definition: MuonTrackCleaner.h:152
Muon::MuonTrackCleaner::ChamberLayerStatistics::noutliers
unsigned int noutliers
Definition: MuonTrackCleaner.h:143
Muon::MuonTrackCleaner::EtaPhiPerChamberIt
EtaPhiPerChamberMap::iterator EtaPhiPerChamberIt
Definition: MuonTrackCleaner.h:129
Muon::MuonTrackCleaner::ChamberPullInfo::maxPull
double maxPull
Definition: MuonTrackCleaner.h:116
Muon::MuonTrackCleaner::calcPull
double calcPull(const double residual, const double locMesCov, const double locTrkCov, const bool &trkStateIsUnbiased) const
calculate the pull given measurement error and track error
Muon::MuonTrackCleaner::ChamberRemovalOutput::track
std::unique_ptr< Trk::Track > track
Definition: MuonTrackCleaner.h:102
Muon::MuonTrackCleaner::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: MuonTrackCleaner.h:300
IResidualPullCalculator.h
Muon::MuonTrackCleaner::EtaPhiHits::EtaPhiHits
EtaPhiHits()=default
Muon::MuonTrackCleaner::CleaningState::pullSumPerChamberPhi
PullChamberMap pullSumPerChamberPhi
Definition: MuonTrackCleaner.h:185
SG::ReadCondHandleKey< AtlasFieldCacheCondObj >
Muon::MuonTrackCleaner::MCTBCleaningInfo::useInFit
int useInFit
Definition: MuonTrackCleaner.h:50
Muon::MuonTrackCleaner::clean
std::unique_ptr< Trk::Track > clean(const Trk::Track &track, const EventContext &ctx) const override
clean a track, returns a pointer to a new track if successfull.
Definition: MuonTrackCleaner.cxx:69
Muon::MuonTrackCleaner::extractChambersToBeRemoved
bool extractChambersToBeRemoved(CleaningState &state, std::set< Identifier > &chambersToBeRemovedSet, bool usePhi=false) const
helper function to extract chambers that are to be removed
Definition: MuonTrackCleaner.cxx:1411
Muon::MuonTrackCleaner::CleaningState::numberOfFlippedMdts
unsigned int numberOfFlippedMdts
Definition: MuonTrackCleaner.h:170
Muon::IMuonTrackCleaner
The IMuonSegmentMaker is a pure virtual interface for tools to find tracks starting from MuonSegmentC...
Definition: IMuonTrackCleaner.h:15
Muon::MuonTrackCleaner::EtaPhiHits::nphi
int nphi
Definition: MuonTrackCleaner.h:126
Muon::MuonTrackCleaner::initialize
StatusCode initialize() override
AlgTool initialize.
Definition: MuonTrackCleaner.cxx:41
Muon::MuonTrackCleaner::CleaningState::hitsPerChamber
EtaPhiPerChamberMap hitsPerChamber
Definition: MuonTrackCleaner.h:181
Muon::MuonTrackCleaner::checkInnerConstraint
bool checkInnerConstraint(CleaningState &state) const
Definition: MuonTrackCleaner.cxx:1528
Muon::MuonTrackCleaner::CleaningState::pullSum
ChamberPullInfo pullSum
Definition: MuonTrackCleaner.h:177
Muon::MuonTrackCleaner::fitTrack
std::unique_ptr< Trk::Track > fitTrack(const EventContext &ctx, Trk::Track &track, Trk::ParticleHypothesis pHyp, bool slFit) const
Definition: MuonTrackCleaner.cxx:1558
Muon::MuonTrackCleaner::CleaningState::nPhiConstraints
unsigned int nPhiConstraints
Definition: MuonTrackCleaner.h:168
Muon::MuonTrackCleaner::MCTBCleaningInfo::id
Identifier id
Definition: MuonTrackCleaner.h:47
Muon::MuonTrackCleaner::CleaningState::pullSumPerChamberEta
PullChamberMap pullSumPerChamberEta
Definition: MuonTrackCleaner.h:186
Muon::MuonTrackCleaner::CleaningState::pullSumPerChamber
PullChamberMap pullSumPerChamber
Definition: MuonTrackCleaner.h:184
Muon::SortTracksByChi2Ndof
Definition: SortTracksByHitNumber.h:37
Muon::MuonTrackCleaner::m_onlyUseHitErrorInRecovery
Gaudi::Property< bool > m_onlyUseHitErrorInRecovery
Definition: MuonTrackCleaner.h:314
Muon::MuonTrackCleaner::ChamberPullInfo::nhits
int nhits
Definition: MuonTrackCleaner.h:117
Muon::MuonTrackCleaner::m_iterate
Gaudi::Property< bool > m_iterate
Definition: MuonTrackCleaner.h:316
Muon::MuonTrackCleaner::cleanCompROTs
std::unique_ptr< Trk::Track > cleanCompROTs(const EventContext &ctx, std::unique_ptr< Trk::Track > track, CleaningState &state) const
clean up competing ROTs that consist out of two clusters
Definition: MuonTrackCleaner.cxx:178
Muon::MuonStationIndex::ChIndex
ChIndex
enum to classify the different chamber layers in the muon spectrometer
Definition: MuonStationIndex.h:15
Muon::MuonTrackCleaner::EtaPhiPerChamberMap
std::map< Identifier, EtaPhiHits > EtaPhiPerChamberMap
Definition: MuonTrackCleaner.h:128
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
SortTracksByHitNumber.h
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Muon::MuonTrackCleaner::ChamberPullInfo::pullSum
double pullSum
Definition: MuonTrackCleaner.h:115
AthAlgTool
Definition: AthAlgTool.h:26
Muon::MuonTrackCleaner::CleaningState::noutliers
unsigned int noutliers
Definition: MuonTrackCleaner.h:163
Muon::MuonTrackCleaner::m_associationScaleFactor
Gaudi::Property< double > m_associationScaleFactor
Definition: MuonTrackCleaner.h:308
Muon::MuonTrackCleaner::SortByAvePull::operator()
bool operator()(const std::pair< double, Identifier > &entry1, const std::pair< double, Identifier > &entry2) const
Definition: MuonTrackCleaner.h:135
Muon::MuonTrackCleaner::m_mdtResiCut
Gaudi::Property< double > m_mdtResiCut
Definition: MuonTrackCleaner.h:306
checker_macros.h
Define macros for attributes used to control the static checker.
Muon::MuonTrackCleaner
Definition: MuonTrackCleaner.h:44
ITrackFitter.h
Muon::MuonTrackCleaner::CleaningState::outBoundsPerChamber
EtaPhiPerChamberMap outBoundsPerChamber
Definition: MuonTrackCleaner.h:182
Muon::MuonTrackCleaner::print
static std::string print(ChamberLayerStatistics &statistics)
Definition: MuonTrackCleaner.cxx:1501
Muon::MuonTrackCleaner::m_compRotCreator
ToolHandle< IMuonCompetingClustersOnTrackCreator > m_compRotCreator
Definition: MuonTrackCleaner.h:290
IMuonIdHelperSvc.h
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:63
Muon::MuonTrackCleaner::recoverFlippedMdt
std::unique_ptr< Trk::Track > recoverFlippedMdt(const EventContext &ctx, std::unique_ptr< Trk::Track > track, CleaningState &state) const
flip signs of MDT hits with large pull if pull if the oppositely signed radius is small
Definition: MuonTrackCleaner.cxx:239
Muon::MuonTrackCleaner::MCTBCleaningInfo::fitQ
const Trk::FitQuality * fitQ
Definition: MuonTrackCleaner.h:62
tauRecTools::sortTracks
bool sortTracks(const ElementLink< xAOD::TauTrackContainer > &l1, const ElementLink< xAOD::TauTrackContainer > &l2)
Definition: Reconstruction/tauRecTools/Root/HelperFunctions.cxx:54
ServiceHandle< Muon::IMuonEDMHelperSvc >
Muon::MuonTrackCleaner::m_chi2Cut
Gaudi::Property< double > m_chi2Cut
Definition: MuonTrackCleaner.h:304
Muon::MuonTrackCleaner::chamberCleaning
std::unique_ptr< Trk::Track > chamberCleaning(const EventContext &ctx, std::unique_ptr< Trk::Track > track, CleaningState &state) const
remove bad chamber from track.
Definition: MuonTrackCleaner.cxx:466