ATLAS Offline Software
Loading...
Searching...
No Matches
MatchDCWithLine.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef DCMATH_MATCHDCWITHLINE_H
6#define DCMATH_MATCHDCWITHLINE_H
7
13
14namespace TrkDriftCircleMath {
15
17 public:
19
20 public:
21 MatchDCWithLine() = default;
22 MatchDCWithLine(const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius) :
23 m_resWithLine{l}, m_deltaCut{deltaCut}, m_strategy{strategy} {
24 m_dcOnTrackVec.reserve(50);
25 setTubeRadius(tubeRadius);
26 }
27
28 void set(const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius) {
29 m_resWithLine.set(l);
30 m_deltaCut = deltaCut;
31 m_strategy = strategy;
32 setTubeRadius(tubeRadius);
33 }
34
35 void setTubeRadius(double radius) {
36 m_tubeRadius = radius;
37 m_closeByCut = 2 * radius;
38 m_showerCut = 4 * radius;
39 }
40
41 const DCOnTrackVec& match(const DCVec& dcs);
42 const DCOnTrackVec& match(const DCOnTrackVec& dcs, const HitSelection* selection = nullptr, bool recoverMdtHits = true,
43 bool usePreciseErrors = false);
44
45 unsigned int deltas() const { return m_deltas; }
46 unsigned int hitsOutOfTime() const { return m_outOfTimes; }
47 unsigned int hitsOnTrack() const { return m_onTracks; }
48 unsigned int closeHits() const { return m_closeHits; }
49 unsigned int showerHits() const { return m_showerHits; }
50 unsigned int passedTubes() const { return m_passedTubes; }
51 unsigned int hitsMl1() const { return m_ml1; }
52 unsigned int hitsMl2() const { return m_ml2; }
53
55 unsigned int matchDifference() const { return m_matchDifference; }
56
57 private:
58 void reset();
59 void matchDC(DCOnTrack& dc, double& res, double& dline, bool forceOnTrack = false, bool forceOffTrack = false,
60 bool usePreciseErrors = false);
61 bool select(double residual, double error) const;
62
64 double m_tubeRadius{0.};
65 double m_closeByCut{0.};
66 double m_showerCut{0.};
67 double m_deltaCut{0.};
69 unsigned int m_deltas{0};
70 unsigned int m_outOfTimes{0};
71 unsigned int m_onTracks{0};
72 unsigned int m_passedTubes{0};
73 unsigned int m_ml1{0};
74 unsigned int m_ml2{0};
75 unsigned int m_closeHits{0};
76 unsigned int m_showerHits{0};
77 unsigned int m_matchDifference{0};
78
79 // cache results to reduce CPU usage
81 };
82
83} // namespace TrkDriftCircleMath
84
85#endif
std::pair< std::vector< unsigned int >, bool > res
class representing a drift circle meaurement on segment
Definition DCOnTrack.h:16
void matchDC(DCOnTrack &dc, double &res, double &dline, bool forceOnTrack=false, bool forceOffTrack=false, bool usePreciseErrors=false)
MatchDCWithLine(const Line &l, double deltaCut, MatchStrategy strategy, double tubeRadius)
const DCOnTrackVec & match(const DCVec &dcs)
bool select(double residual, double error) const
unsigned int matchDifference() const
returns the number of DCOnTrack that have a different status after the match, returns 0 if used with ...
void set(const Line &l, double deltaCut, MatchStrategy strategy, double tubeRadius)
const std::string selection
Function object to check whether two Segments are sub/super sets or different.
std::vector< bool > HitSelection
Definition HitSelection.h:9
std::vector< DriftCircle > DCVec
std::vector< DCOnTrack > DCOnTrackVec
Definition DCOnTrack.h:59