ATLAS Offline Software
BFieldCorFunc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6 // 19.07.2006, AUTHOR: OLIVER KORTNER
7 // Modified: 16.01.2008 by O. Kortner, RtSpline allowed as input; faster, but
8 // less accuracte implementation of correction funtion can
9 // be requested; bug fix in integral calculation.
10 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11 
12 #ifndef MuonCalib_BFieldCorFuncH
13 #define MuonCalib_BFieldCorFuncH
14 
15 //:::::::::::::::::::::::::
16 //:: CLASS BFieldCorFunc ::
17 //:::::::::::::::::::::::::
18 
19 namespace MuonCalib {
39 }
40 
41 //::::::::::::::::::
42 //:: HEADER FILES ::
43 //::::::::::::::::::
44 
45 // STL //
46 #include <string>
47 #include <vector>
48 
49 // CLHEP //
51 
52 // MuonCalib //
56 
57 namespace MuonCalib {
58 
59  class IRtRelation;
60 
62  public:
63  // Constructors //
64  explicit BFieldCorFunc(const std::string &quality, const CalibFunc::ParVec &parameters, const IRtRelation *rt) :
66  init(quality, parameters, rt);
67  }
78  init(std::string("medium"), parameters, rt);
79  }
83 
84  // Methods //
85  // get-methods //
86 
88  double epsilon() const;
89 
90  // set-methods //
92  // void setEpsilon(const double & eps);
93 
96  void setRtRelationship(const IRtRelation &rt);
97 
98  // methods required by the base class "IMdtBFieldCorFunc" //
99  std::string name() const;
100 
107  double correction(double t, double B_wire, double B_mu) const;
108 
115  double correction_to_B(double t, double B_wire, double B_mu, double B_factor = -1.0) const;
116 
117  private:
118  // data //
119 
120  // parameters (copy of m_parameter in the base class, needed to enable overwriting)
121  std::vector<double> m_param;
122 
123  // quality setting //
124  std::string m_quality; // quality string ("high", "medium", "low")
125  double m_step_size; // integration step size steering the quality
126 
127  // correction function //
128  Amg::VectorX m_alpha; // parameter of the fit function describing the
129  // integral part of the correction function
130 
131  // pointer to the Legendre polynomial singleton (chosen in order to limit the amount of memory used)
133 
134  // information about r(t) used to calculate the correction function //
135 
136  // minimum and maximum drift times allowed by the r-t relationship
137  double m_t_min, m_t_max;
138  // minimum and maximum drift radius
139  double m_r_min, m_r_max;
140 
141  // private methods //
142  // initialization method, parameters are the parameters passed to constructor of this class
143  void init(const std::string &quality, const CalibFunc::ParVec &params, const IRtRelation *rt);
144 
145  // get t(r) for the relationship "rt", the method is auxiliary and not optimized;
146  // it will disappear when the t(r) will be available in the MuonCalib framework
147  double t_from_r(const double &r, const IRtRelation *rt) const;
148 
149  // get the integral in the correction function from r_min to r_max; rt contains the drift
150  // velocity needed to calculate the integral
151  double integral(const double &r_min, const double &r_max, const IRtRelation *rt) const;
152  };
153 
154 } // namespace MuonCalib
155 
156 #endif
MuonCalib::BFieldCorFunc::m_r_max
double m_r_max
Definition: BFieldCorFunc.h:139
beamspotman.r
def r
Definition: beamspotman.py:676
MuonCalib::BFieldCorFunc::correction
double correction(double t, double B_wire, double B_mu) const
get t(r, !=0)-t(r, =0); t = drift time t [ns] for B=0; B_wire = magnetic field parallel to the anode ...
Definition: BFieldCorFunc.cxx:237
MuonCalib::BFieldCorFunc::m_t_max
double m_t_max
Definition: BFieldCorFunc.h:137
Amg::VectorX
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
Definition: EventPrimitives.h:32
MuonCalib::BFieldCorFunc::m_t_min
double m_t_min
Definition: BFieldCorFunc.h:137
MuonCalib::BFieldCorFunc::init
void init(const std::string &quality, const CalibFunc::ParVec &params, const IRtRelation *rt)
Definition: BFieldCorFunc.cxx:28
MuonCalib::BFieldCorFunc::BFieldCorFunc
BFieldCorFunc(const std::string &quality, const CalibFunc::ParVec &parameters, const IRtRelation *rt)
Constructor: quality = "high", slow but accurate initialization initialization of the correction func...
Definition: BFieldCorFunc.h:64
MuonCalib::BFieldCorFunc
Definition: BFieldCorFunc.h:61
MuonCalib::BFieldCorFunc::correction_to_B
double correction_to_B(double t, double B_wire, double B_mu, double B_factor=-1.0) const
Definition: BFieldCorFunc.cxx:287
MuonCalib::IMdtBFieldCorFunc
generic interface for b-field correction functions
Definition: IMdtBFieldCorFunc.h:14
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
MuonCalib::BFieldCorFunc::integral
double integral(const double &r_min, const double &r_max, const IRtRelation *rt) const
Definition: BFieldCorFunc.cxx:162
MuonCalib::BFieldCorFunc::name
std::string name() const
get the class name
Definition: BFieldCorFunc.cxx:230
MuonCalib::CalibFunc::ParVec
std::vector< double > ParVec
Definition: CalibFunc.h:36
MuonCalib::BFieldCorFunc::BFieldCorFunc
BFieldCorFunc(const CalibFunc::ParVec &parameters, const IRtRelation *rt)
Constructor: parameters[0] = high voltage [V], parameters[1] = ,.
Definition: BFieldCorFunc.h:77
MuonCalib::BFieldCorFunc::epsilon
double epsilon() const
< get the parameter of the B-field correction function
Definition: BFieldCorFunc.cxx:202
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::BFieldCorFunc::t_from_r
double t_from_r(const double &r, const IRtRelation *rt) const
Definition: BFieldCorFunc.cxx:129
MuonCalib::BFieldCorFunc::m_alpha
Amg::VectorX m_alpha
Definition: BFieldCorFunc.h:128
EventPrimitives.h
MuonCalib::BFieldCorFunc::m_step_size
double m_step_size
Definition: BFieldCorFunc.h:125
MuonCalib::BFieldCorFunc::m_r_min
double m_r_min
Definition: BFieldCorFunc.h:139
MuonCalib::CalibFunc::parameters
const ParVec & parameters() const
Definition: CalibFunc.h:40
MuonCalib::BFieldCorFunc::m_Legendre
const Legendre_polynomial * m_Legendre
Definition: BFieldCorFunc.h:132
IRtRelation.h
IMdtBFieldCorFunc.h
MuonCalib::BFieldCorFunc::m_param
std::vector< double > m_param
Definition: BFieldCorFunc.h:121
MuonCalib::BFieldCorFunc::setRtRelationship
void setRtRelationship(const IRtRelation &rt)
< set the parameter of the B-field correction function = eps
Definition: BFieldCorFunc.cxx:220
MuonCalib::BFieldCorFunc::m_quality
std::string m_quality
Definition: BFieldCorFunc.h:124
Legendre_polynomial.h
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
MuonCalib::IRtRelation
generic interface for a rt-relation
Definition: IRtRelation.h:14
MuonCalib::Legendre_polynomial
Definition: Legendre_polynomial.h:45