ATLAS Offline Software
QuasianalyticLineReconstruction.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef QuasianalyticLineReconstructionH
6 #define QuasianalyticLineReconstructionH
7 
8 //:::::::::::::::::::::::::::::::::::::::::::
9 //:: CLASS QuasianalyticLineReconstruction ::
10 //:::::::::::::::::::::::::::::::::::::::::::
11 
22 
23 #include <vector>
24 
31 
32 namespace MuonCalib {
33 
35  public:
38  // Constructors //
41 
42  QuasianalyticLineReconstruction(const double r_road_width) { init(r_road_width); }
44 
45  // Methods //
46  // get-methods //
47  double roadWidth() const;
50 
51  // set-method //
52  void setRoadWidth(const double r_road_width);
55  void setTimeOut(const double time_out);
58  void setMaxRadius(const double maxR);
61  // methods required by the base class "IMdtSegmentFitter" //
62  bool fit(MuonCalibSegment& r_segment) const;
73  bool fit(MuonCalibSegment& r_segment, HitSelection r_selection) const;
87  bool fit(MuonCalibSegment& r_segment, HitSelection r_selection, MTStraightLine& final_track) const;
88  void printLevel(int /*level*/){};
89 
90  private:
91  // internal co-ordinate definition //
92  // x3
93  // ^
94  // o o o o o o |
95  // ... o o o o o ... o--> x2
96  // o o o o o o x1
97  //
98 
99  // parameters for the adjustment of the track reconstruction //
100  double m_r_max; // maximum radius
101  double m_road_width; // road width for pattern recognition
102  double m_time_out; // time-out for track finding
103 
104  // chi^2 refitter //
105  DCSLFitter m_nfitter; // NIKHEF straight line reconstruction
106 
107  // internal storage vectors //
108  std::vector<MTStraightLine> m_tangent;
109  // vector of tangents (for 1 track)
110  std::vector<int> m_nb_cand_hits; // number of hits on track candidate
111  std::vector<MTStraightLine> m_candidate; // track candidates
112 
113  // initialization methods //
114  void init();
115  // default initialization: road width = 0.5 CLHEP::mm
116  void init(const double r_road_width);
117  // initialization with user-defined road width
118 
119  // auxiliary methods //
120  MTStraightLine tangent(const Amg::Vector3D& r_w1, const double r_r1, const double r_sigma12, const Amg::Vector3D& r_w2,
121  const double r_r2, const double r_sigma22, const int& r_case) const;
122  // method for the calculation of tangents with errors;
123  // r_w1: wire position for the first hit,
124  // r_r1: drift radius of the first hit,
125  // r_sigma12: sigma(r_r1)^2,
126  // r_w2: wire position for the second hit,
127  // r_r2: drift radius of the second hit,
128  // r_sigma22: sigma(r_r2)^2,
129  // r_case = 1, 2, 3, 4: select one of the four cases of a tangent
130 
131  MTStraightLine track_candidate(const IndexSet& r_index_set, const int& r_k_cand, const int& r_l_cand, const int& r_cand_case,
132  const std::vector<Amg::Vector3D>& r_w, const std::vector<double>& r_r, const std::vector<double>& r_sigma2,
133  double& r_chi2) const;
134  // method for the calculatation of a straight line from tangents;
135  // r_nb_selected_hits: number of selected hits,
136  // r_k_cand: index of the 1st wire of the candidate tangent
137  // (starting from 0),
138  // r_l_cand: index of the 2nd wire of the candidate tangent
139  // (starting from 0),
140  // r_cand_case: configuration of the tangent to be used (1, 2, 3, or 4)
141  // r_w: wire positions,
142  // r_r: drift radii,
143  // r_sigma2: sigma(r)^2,
144  // r_chi2: chi^2 for the reconstructed track
145  };
146 
147 } // namespace MuonCalib
148 
149 #endif
MuonCalib::QuasianalyticLineReconstruction::printLevel
void printLevel(int)
Definition: QuasianalyticLineReconstruction.h:88
MuonCalibSegment.h
MTStraightLine.h
MuonCalib::MuonCalibSegment::MdtHitVec
std::vector< MdtHitPtr > MdtHitVec
Definition: MuonCalibSegment.h:45
MuonCalib::QuasianalyticLineReconstruction::m_nb_cand_hits
std::vector< int > m_nb_cand_hits
Definition: QuasianalyticLineReconstruction.h:110
MuonCalib::MuonCalibSegment
Definition: MuonCalibSegment.h:39
MuonCalib::QuasianalyticLineReconstruction::tangent
MTStraightLine tangent(const Amg::Vector3D &r_w1, const double r_r1, const double r_sigma12, const Amg::Vector3D &r_w2, const double r_r2, const double r_sigma22, const int &r_case) const
Definition: QuasianalyticLineReconstruction.cxx:47
MuonCalib::QuasianalyticLineReconstruction::m_r_max
double m_r_max
Definition: QuasianalyticLineReconstruction.h:88
MuonCalib::QuasianalyticLineReconstruction::track_candidate
MTStraightLine track_candidate(const IndexSet &r_index_set, const int &r_k_cand, const int &r_l_cand, const int &r_cand_case, const std::vector< Amg::Vector3D > &r_w, const std::vector< double > &r_r, const std::vector< double > &r_sigma2, double &r_chi2) const
Definition: QuasianalyticLineReconstruction.cxx:135
MuonCalib::QuasianalyticLineReconstruction::MdtHitVec
MuonCalibSegment::MdtHitVec MdtHitVec
Definition: QuasianalyticLineReconstruction.h:37
MuonCalib::QuasianalyticLineReconstruction::m_candidate
std::vector< MTStraightLine > m_candidate
Definition: QuasianalyticLineReconstruction.h:111
MuonCalib::QuasianalyticLineReconstruction::m_nfitter
DCSLFitter m_nfitter
Definition: QuasianalyticLineReconstruction.h:105
MuonCalib::QuasianalyticLineReconstruction::m_tangent
std::vector< MTStraightLine > m_tangent
Definition: QuasianalyticLineReconstruction.h:108
MuonCalib::QuasianalyticLineReconstruction::setMaxRadius
void setMaxRadius(const double maxR)
set the max innerRadius, default for MDT sMDT 7.1mm, MDT 14.6mm
Definition: QuasianalyticLineReconstruction.cxx:321
MuonCalib::DCSLFitter
Definition: MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibFitters/MdtCalibFitters/DCSLFitter.h:28
IndexSet.h
MuonCalib::QuasianalyticLineReconstruction::roadWidth
double roadWidth() const
get the road width used in the pattern recognition
Definition: QuasianalyticLineReconstruction.cxx:318
MuonCalib::QuasianalyticLineReconstruction::init
void init()
Definition: QuasianalyticLineReconstruction.cxx:22
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::QuasianalyticLineReconstruction::setTimeOut
void setTimeOut(const double time_out)
set the time-out for the track finding to time_out (in seconds)
Definition: QuasianalyticLineReconstruction.cxx:320
MuonCalib::QuasianalyticLineReconstruction::QuasianalyticLineReconstruction
QuasianalyticLineReconstruction(const double r_road_width)
Constructor: user-defined road width for pattern recognition.
Definition: QuasianalyticLineReconstruction.h:42
MuonCalib::IndexSet
Definition: IndexSet.h:40
IMdtPatRecFitter.h
MuonCalib::QuasianalyticLineReconstruction::MdtHitPtr
MuonCalibSegment::MdtHitPtr MdtHitPtr
Definition: QuasianalyticLineReconstruction.h:36
MuonCalib::QuasianalyticLineReconstruction
Definition: QuasianalyticLineReconstruction.h:34
MuonCalib::QuasianalyticLineReconstruction::m_road_width
double m_road_width
Definition: QuasianalyticLineReconstruction.h:101
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonCalib::QuasianalyticLineReconstruction::fit
bool fit(MuonCalibSegment &r_segment) const
reconstruction of the track using all hits in the segment "r_segment", returns true in case of succes...
Definition: QuasianalyticLineReconstruction.cxx:328
MuonCalib::IMdtPatRecFitter
Definition: IMdtPatRecFitter.h:18
MuonCalib::MTStraightLine
Definition: MTStraightLine.h:16
MuonCalib::QuasianalyticLineReconstruction::QuasianalyticLineReconstruction
QuasianalyticLineReconstruction()
Default constructor: road width for pattern recognition = 0.5 mm.
Definition: QuasianalyticLineReconstruction.h:39
r_r
const std::string r_r
Definition: ASCIICondDbSvc.cxx:15
checker_macros.h
Define macros for attributes used to control the static checker.
DCSLFitter.h
MuonCalib::QuasianalyticLineReconstruction::m_time_out
double m_time_out
Definition: QuasianalyticLineReconstruction.h:102
MuonCalib::MuonCalibSegment::MdtHitPtr
std::shared_ptr< MdtCalibHitBase > MdtHitPtr
typedef for a collection of MdtCalibHitBase s
Definition: MuonCalibSegment.h:44
MuonCalib::IMdtSegmentFitter::HitSelection
std::vector< unsigned int > HitSelection
Definition: IMdtSegmentFitter.h:32
MuonCalib::QuasianalyticLineReconstruction::setRoadWidth
void setRoadWidth(const double r_road_width)
set the road width for the pattern recognition = r_road_width
Definition: QuasianalyticLineReconstruction.cxx:319