ATLAS Offline Software
TRT_DriftFunctionTool.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 
7 // TRT_DriftFunctionTool.h
8 // Header file for class TRT_DriftFunctionTool
10 // (c) ATLAS Detector software
12 // AlgTool used to go from drift time to drift distance
14 
15 #ifndef TRT_DRIFTFUNCTIONTOOL
16 #define TRT_DRIFTFUNCTIONTOOL
17 
18 #include <string>
22 class TRT_ID;
23 
24 
26 #include "GaudiKernel/ToolHandle.h"
34 class TRT_DriftFunctionTool: public extends<AthAlgTool, ITRT_DriftFunctionTool>{
35 
36 public:
38  TRT_DriftFunctionTool(const std::string& type,
39  const std::string& name,
40  const IInterface* parent);
41 
44 
46  virtual StatusCode initialize() override;
47 
49  virtual StatusCode finalize() override;
50 
52  virtual bool isValidTime(double drifttime) const override;
53 
55  virtual bool isTestBeamData() const override;
56 
59  virtual double rawTime(int tdcvalue) const override;
60 
61 
65  virtual double driftRadius(double rawtime, Identifier id, double& t0, bool& isOK, unsigned int word=0) const override;
66 
69  virtual double driftRadius(double drifttime) const override;
70 
72  virtual double approxDriftTime(double driftradius) const override;
73 
75  virtual double errorOfDriftRadius(double drifttime, Identifier id, float mu = -10, unsigned int word=0) const override;
76 
78  virtual double driftTimeToTCorrection(double tot, Identifier id, bool isArgonStraw=false) const override;
79 
81  virtual double driftTimeHTCorrection(Identifier id, bool isArgonStraw=false) const override;
82 
84  void setupRtRelation();
85 
86 
87 private:
88 
90  ToolHandle< ITRT_CalDbTool > m_TRTCalDbTool;
91  ToolHandle< ITRT_CalDbTool > m_TRTCalDbTool2;
92 
95  const TRT_ID* m_trtid{};
96 
97 
99  double m_error;
100 
101  enum ETimeBins { MaxTimeBin = 50 } ;
102  double m_radius[MaxTimeBin]{};
103  double m_errors[MaxTimeBin]{};
104 
105  bool m_ismc;
106  bool m_isoverlay;
108 
109  bool m_dummy;
110 
111  double m_err_fudge;
112 
115 
118  double m_uni_error;
119 
120  std::string m_inputfile;
121  std::string m_key;
122  std::string m_trt_mgr_location;
123  double m_t0_barrel[3]{};
124  double m_t0_endcap[18]{};
125  double m_t0_shift;
130  std::vector<double> m_tot_corrections_barrel_Xe;
131  std::vector<double> m_tot_corrections_endcap_Xe;
132  std::vector<double> m_tot_corrections_barrel_Ar;
133  std::vector<double> m_tot_corrections_endcap_Ar;
134 
135  static const size_t s_size_default = 19;
136  static constexpr double s_radius_default[s_size_default] = {
137  0. , 0. , 0.1 , 0.262, 0.466,
138  0.607, 0.796, 0.931, 1.065, 1.212,
139  1.326, 1.466, 1.585, 1.689, 1.809,
140  1.880, 1.940, 1.950, 1.955 };
141  static constexpr double s_errors_default[s_size_default] = {
142  0.15, 0.15, 0.20, 0.23, 0.21,
143  0.18, 0.17, 0.16, 0.15, 0.15,
144  0.14, 0.13, 0.12, 0.11, 0.11,
145  0.11, 0.13, 0.20, 0.20 };
146 
147  static const size_t s_size_Comm = 13;
148  static constexpr double s_radius_Comm[s_size_Comm] = {
149  0. , 0. , 0. , 0.252054, 0.488319,
150  0.751514, 1.00173, 1.21851, 1.40886 , 1.68368 ,
151  1.85363 , 1.91764, 1.94114 };
152  static constexpr double s_errors_Comm[s_size_Comm] = {
153  0.10440061, 0.1510298, 0.26130742, 0.260436, 0.246961,
154  0.226037, 0.18272 , 0.195482 , 0.213817, 0.157627,
155  0.0922559, 0.0463124, 0.0480864 };
156 
157 };
158 
159 inline bool TRT_DriftFunctionTool::isValidTime(double drifttime) const
160 { return (drifttime>-10. && drifttime<75.); }
161 
163 { return m_istestbeam; }
164 
165 inline double TRT_DriftFunctionTool::rawTime(int tdcvalue) const
166 {
167  double time = (tdcvalue+0.5)*m_drifttimeperbin ;
168  return m_istestbeam ? 0.5*time : time;
169 }
170 
171 
172 #endif // TRT_DRIFTFUNCTIONTOOL_H
173 
TRT_DriftFunctionTool::m_key
std::string m_key
GeoModel version key.
Definition: TRT_DriftFunctionTool.h:121
TRT_DriftFunctionTool::s_radius_default
static constexpr double s_radius_default[s_size_default]
Definition: TRT_DriftFunctionTool.h:136
TRT_DriftFunctionTool::m_TRTCalDbTool2
ToolHandle< ITRT_CalDbTool > m_TRTCalDbTool2
Definition: TRT_DriftFunctionTool.h:91
TRT_DriftFunctionTool
Definition: TRT_DriftFunctionTool.h:34
TRT_DriftFunctionTool::~TRT_DriftFunctionTool
virtual ~TRT_DriftFunctionTool()
Destructor
TRT_DriftFunctionTool::m_tot_corrections_endcap_Xe
std::vector< double > m_tot_corrections_endcap_Xe
ToT corrections for 20 ToT bins in Xe endcap straws.
Definition: TRT_DriftFunctionTool.h:131
TRT_DriftFunctionTool::m_t0_barrel
double m_t0_barrel[3]
t0 for the 3 barrel rings
Definition: TRT_DriftFunctionTool.h:123
TRT_DriftFunctionTool::driftTimeHTCorrection
virtual double driftTimeHTCorrection(Identifier id, bool isArgonStraw=false) const override
Returns high threshold correction to the drift time (ns)
Definition: TRT_DriftFunctionTool.cxx:324
TRT_DriftFunctionTool::m_override_simcal
bool m_override_simcal
flag for reading constants from
Definition: TRT_DriftFunctionTool.h:116
TRT_DetectorManager.h
TRT_DriftFunctionTool::m_ht_correction_barrel_Xe
double m_ht_correction_barrel_Xe
HT correction for Xe straws in barrel.
Definition: TRT_DriftFunctionTool.h:126
TRT_DriftFunctionTool::m_allow_digi_version_override
bool m_allow_digi_version_override
flag for using constants for
Definition: TRT_DriftFunctionTool.h:113
TRT_DriftFunctionTool::ETimeBins
ETimeBins
Definition: TRT_DriftFunctionTool.h:101
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
TRT_DriftFunctionTool::m_force_universal_errors
bool m_force_universal_errors
use one universal error
Definition: TRT_DriftFunctionTool.h:117
TRT_DriftFunctionTool::m_tot_corrections_endcap_Ar
std::vector< double > m_tot_corrections_endcap_Ar
ToT corrections for 20 ToT bins in Ar endcap straws.
Definition: TRT_DriftFunctionTool.h:133
TRT_DriftFunctionTool::m_err_fudge
double m_err_fudge
fudge_factor for error scaling
Definition: TRT_DriftFunctionTool.h:111
TRT_DriftFunctionTool::m_uni_error
double m_uni_error
namely this one
Definition: TRT_DriftFunctionTool.h:118
TRT_DriftFunctionTool::s_errors_default
static constexpr double s_errors_default[s_size_default]
Definition: TRT_DriftFunctionTool.h:141
TRT_DriftFunctionTool::m_isoverlay
bool m_isoverlay
flag for overlay
Definition: TRT_DriftFunctionTool.h:106
TRT_DriftFunctionTool::driftTimeToTCorrection
virtual double driftTimeToTCorrection(double tot, Identifier id, bool isArgonStraw=false) const override
Returns time over threshold correction to the drift time (ns)
Definition: TRT_DriftFunctionTool.cxx:309
TRT_DriftFunctionTool::isValidTime
virtual bool isValidTime(double drifttime) const override
Returns True for drifttimes between -10 and 75ns.
Definition: TRT_DriftFunctionTool.h:159
TRT_DriftFunctionTool::m_ht_correction_endcap_Ar
double m_ht_correction_endcap_Ar
HT correction for Ar straws in barrel.
Definition: TRT_DriftFunctionTool.h:129
TRT_DriftFunctionTool::m_trt_mgr_location
std::string m_trt_mgr_location
Name of TRT detector manager.
Definition: TRT_DriftFunctionTool.h:122
TRT_DriftFunctionTool::m_istestbeam
bool m_istestbeam
flag for CTB data or mc
Definition: TRT_DriftFunctionTool.h:107
TRT_DriftFunctionTool::m_t0_shift
double m_t0_shift
digiversion dependent t0 shift
Definition: TRT_DriftFunctionTool.h:125
TRT_DriftFunctionTool::s_radius_Comm
static constexpr double s_radius_Comm[s_size_Comm]
Definition: TRT_DriftFunctionTool.h:148
TRT_DriftFunctionTool::m_t0_endcap
double m_t0_endcap[18]
t0 for the 14(18) endcap wheels
Definition: TRT_DriftFunctionTool.h:124
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
TRT_DriftFunctionTool::rawTime
virtual double rawTime(int tdcvalue) const override
Returns center of leading edge bin in ns for bin number = tdcvalue.
Definition: TRT_DriftFunctionTool.h:165
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TRT_DriftFunctionTool::m_errors
double m_errors[MaxTimeBin]
width of radius dist in each bin
Definition: TRT_DriftFunctionTool.h:103
TRT_DriftFunctionTool::m_forced_digiversion
int m_forced_digiversion
this digi version
Definition: TRT_DriftFunctionTool.h:114
AthAlgTool.h
TRT_DriftFunctionTool::TRT_DriftFunctionTool
TRT_DriftFunctionTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor
Definition: TRT_DriftFunctionTool.cxx:34
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ITRT_CalDbTool.h
abstract interface to TRT calibration constants
TRT_DriftFunctionTool::m_drifttimeperbin
double m_drifttimeperbin
3.125ns
Definition: TRT_DriftFunctionTool.h:98
TRT_DriftFunctionTool::m_ismc
bool m_ismc
flag for mc
Definition: TRT_DriftFunctionTool.h:105
LB_AnalMapSplitter.tot
tot
Definition: LB_AnalMapSplitter.py:46
TRT_DriftFunctionTool::m_inputfile
std::string m_inputfile
file overriding MC constants
Definition: TRT_DriftFunctionTool.h:120
TRT_DriftFunctionTool::approxDriftTime
virtual double approxDriftTime(double driftradius) const override
Returns approximate drift time (t0 subtracted)
Definition: TRT_DriftFunctionTool.cxx:190
TRT_DriftFunctionTool::m_ht_correction_endcap_Xe
double m_ht_correction_endcap_Xe
HT correction for Xe straws in barrel.
Definition: TRT_DriftFunctionTool.h:127
ITRT_DriftFunctionTool.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TRT_DriftFunctionTool::initialize
virtual StatusCode initialize() override
Retrieves needed services
Definition: TRT_DriftFunctionTool.cxx:108
TRT_DriftFunctionTool::finalize
virtual StatusCode finalize() override
Finalize
Definition: TRT_DriftFunctionTool.cxx:181
TRT_DriftFunctionTool::m_tot_corrections_barrel_Xe
std::vector< double > m_tot_corrections_barrel_Xe
ToT corrections for 20 ToT bins in Xe barrel straws.
Definition: TRT_DriftFunctionTool.h:130
TRT_DriftFunctionTool::m_TRTCalDbTool
ToolHandle< ITRT_CalDbTool > m_TRTCalDbTool
Tool to fetch data from database.
Definition: TRT_DriftFunctionTool.h:90
TRT_DriftFunctionTool::errorOfDriftRadius
virtual double errorOfDriftRadius(double drifttime, Identifier id, float mu=-10, unsigned int word=0) const override
Time-dependent error of drift radius in mm.
Definition: TRT_DriftFunctionTool.cxx:268
TRT_DriftFunctionTool::isTestBeamData
virtual bool isTestBeamData() const override
Returns True for CTB real data.
Definition: TRT_DriftFunctionTool.h:162
TRT_DriftFunctionTool::MaxTimeBin
@ MaxTimeBin
Definition: TRT_DriftFunctionTool.h:101
TRT_ID
Definition: TRT_ID.h:84
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:69
TRT_DriftFunctionTool::setupRtRelation
void setupRtRelation()
Initialise Rt relation.
Definition: TRT_DriftFunctionTool.cxx:336
TRT_DriftFunctionTool::m_ht_correction_barrel_Ar
double m_ht_correction_barrel_Ar
HT correction for Ar straws in barrel.
Definition: TRT_DriftFunctionTool.h:128
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TRT_DriftFunctionTool::s_size_Comm
static const size_t s_size_Comm
Definition: TRT_DriftFunctionTool.h:147
TRT_DriftFunctionTool::m_error
double m_error
universal error
Definition: TRT_DriftFunctionTool.h:99
TRT_DriftFunctionTool::s_errors_Comm
static constexpr double s_errors_Comm[s_size_Comm]
Definition: TRT_DriftFunctionTool.h:152
TRT_DriftFunctionTool::m_trtid
const TRT_ID * m_trtid
Definition: TRT_DriftFunctionTool.h:95
TRT_DriftFunctionTool::m_tot_corrections_barrel_Ar
std::vector< double > m_tot_corrections_barrel_Ar
ToT corrections for 20 ToT bins in Ar barrel straws.
Definition: TRT_DriftFunctionTool.h:132
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
TRT_DriftFunctionTool::driftRadius
virtual double driftRadius(double rawtime, Identifier id, double &t0, bool &isOK, unsigned int word=0) const override
Returns drift radius in mm and t0 in ns The radius is truncated so it belongs to [0,...
Definition: TRT_DriftFunctionTool.cxx:231
TRT_DriftFunctionTool::s_size_default
static const size_t s_size_default
Definition: TRT_DriftFunctionTool.h:135
TRT_DriftFunctionTool::m_radius
double m_radius[MaxTimeBin]
most probable radius in each bin
Definition: TRT_DriftFunctionTool.h:102
TRT_DriftFunctionTool::m_manager
const InDetDD::TRT_DetectorManager * m_manager
DetectorManager and helper.
Definition: TRT_DriftFunctionTool.h:94
TRT_DriftFunctionTool::m_dummy
bool m_dummy
flag for ignoring drift time info
Definition: TRT_DriftFunctionTool.h:109