ATLAS Offline Software
TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
11 
12 #include "TrkSurfaces/DiscBounds.h"
14 
17 
18 
19 #include <memory>
20 #include <utility>
21 #include <ostream>
22 #include <fstream>
23 #include <cmath>
24 
25 
27 // Constructor
29 
31  : ::AthReentrantAlgorithm(name, pSvcLocator) { }
32 
34 // Initialisation
36 
38 {
39 
41  ATH_CHECK(m_writeKey.initialize());
42 
43  // Get propagator tool
44  //
45  if( m_propTool.retrieve().isFailure()) {
46  ATH_MSG_FATAL("Failed to retrieve tool "<< m_propTool);
47  return StatusCode::FAILURE;
48  }
49  ATH_MSG_DEBUG("Retrieved tool " << m_propTool);
50 
52 
53  // Get TRT ID
54  if (detStore()->retrieve(m_trtid, "TRT_ID").isFailure()) {
55  ATH_MSG_FATAL("Could not get TRT ID helper");
56  return StatusCode::FAILURE;
57  }
58 
59  m_nPhi = 500 ;
60  m_Psi = 2./float(m_nMom-1) ;
61  m_Psi128 = m_Psi*128. ;
62  m_A = float(m_nPhi)/(2.*M_PI) ;
63 
64  return StatusCode::SUCCESS;
65 }
66 
68 // Map of straws production
70 // Taken from the old InDet::TRT_TrackSegmentsMaker_ATLxk::mapStrawsProduction()
72 
74 {
75 
77  if (writeHandle.isValid()) {
78  ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid.");
79  return StatusCode::SUCCESS;
80  }
81 
82  EventIDRange rangeTrt;
83 
85  if (not trtDetEleHandle.isValid()) {
86  ATH_MSG_FATAL(m_trtDetEleContKey.fullKey() << " is not available.");
87  return StatusCode::FAILURE;
88  }
89 
90  const InDetDD::TRT_Numerology* trtNum = trtDetEleHandle->getTRTNumerology();
91  if (trtNum==nullptr){
92  ATH_MSG_FATAL("Pointer to TRT_Numerology not found in condition store" << m_trtDetEleContKey.fullKey());
93  }
94 
95  if (not trtDetEleHandle.range(rangeTrt)) {
96  ATH_MSG_FATAL("Failed to retrieve validity range for " << trtDetEleHandle.key());
97  return StatusCode::FAILURE;
98  }
99 
100  auto writeCdo = std::make_unique<InDet::TRT_TrackSegmentsToolCondData_xk>();
101  if(writeCdo->m_ndzdr ) delete [] writeCdo->m_ndzdr ;
102  if(writeCdo->m_slope ) delete [] writeCdo->m_slope ;
103  if(writeCdo->m_islope ) delete [] writeCdo->m_islope ;
104 
105  float RZ [4][200];
106  float Tmin [4][200];
107  float Tmax [4][200];
108 
109  // Map straws production for barrel geometry
110  //
111  int Rings = trtNum->getNBarrelRings();
112  int NPhi = trtNum->getNBarrelPhi();
113  int n = 0;
114 
115  for(int ring = 0; ring!=Rings; ++ring) {
116 
117  int NSlayers = trtNum->getNBarrelLayers(ring);
118 
119  writeCdo->m_flayers[1][ring] = writeCdo->m_nlayers[1]; writeCdo->m_flayers[2][ring] = writeCdo->m_nlayers[2];
120  writeCdo->m_nlayers[1] += NSlayers ; writeCdo->m_nlayers[2] += NSlayers ;
121 
122  for(int nsl=0; nsl!=NSlayers; ++nsl) {
123 
124 
125  for(int f=0; f!=NPhi; ++f) {
126 
127  const InDetDD::TRT_BaseElement* base1 = trtDetEleHandle->getBarrelDetElement(0,ring,f,nsl);
128  const InDetDD::TRT_BaseElement* base2 = trtDetEleHandle->getBarrelDetElement(1,ring,f,nsl);
129  if(!base1 || !base2) continue;
130  const InDetDD::TRT_BarrelElement* bael1 =
131  dynamic_cast<const InDetDD::TRT_BarrelElement*>(base1);
132  const Trk::RectangleBounds* rb1 =
133  dynamic_cast<const Trk::RectangleBounds*>(&base1->bounds());
134  const Trk::RectangleBounds* rb2 =
135  dynamic_cast<const Trk::RectangleBounds*>(&base2->bounds());
136  if(!bael1 || !rb1 || !rb2) continue;
137  float rmean = 0;
138  if(f==0) {
139 
140  Amg::Vector3D C1 = base1->center();
141  Amg::Vector3D C2 = base2->center();
142  RZ [1][n] = std::sqrt(C1.x()*C1.x()+C1.y()*C1.y());
143 
144  Tmin [1][n] = (C1.z()-rb1->halflengthY())/RZ[1][n];
145  Tmax [1][n] = -.001;
146 
147  RZ [2][n] = std::sqrt(C2.x()*C2.x()+C2.y()*C2.y());
148 
149  Tmin [2][n] = +.001;
150  Tmax [2][n] = (C2.z()+rb2->halflengthY())/RZ[2][n];
151  ++n;
152  }
153  int ns = bael1->nStraws();
154  for(int s=0; s!=ns; ++s) {
155 
156  const Identifier id1 = m_trtid->straw_id(-1,f,ring,nsl,s );
157  const Amg::Vector3D * sc1 = &(base1->strawCenter (s));
158  const Amg::Transform3D* st1 = &(base1->strawTransform (s));
159  const Amg::Transform3D* tr1 = &(base1->surface(id1).transform() );
160  if(f==0) rmean+=std::sqrt(sc1->x()*sc1->x()+sc1->y()*sc1->y());
161 
162  if(!sc1 || !st1 || !tr1 ) {ATH_MSG_ERROR("problem with TRT geometry");}
163  ++writeCdo->m_nstraws[1];
164  const Identifier id2 = m_trtid->straw_id(+1,f,ring,nsl,s );
165  const Amg::Vector3D * sc2 = &(base2->strawCenter (s));
166  const Amg::Transform3D* st2 = &(base2->strawTransform (s));
167  const Amg::Transform3D* tr2 = &(base2->surface(id2).transform() );
168  if(!sc2 || !st2 || !tr2) {ATH_MSG_ERROR("problem with TRT geometry");}
169  ++writeCdo->m_nstraws[2];
170  }
171  if(f==0) { RZ[1][n-1] = RZ[2][n-1] = rmean/float(ns);}
172  }
173  }
174  }
175 
176  // Endcap
177  //
178  int Wheels = trtNum->getNEndcapWheels(); if(!Wheels) return StatusCode::SUCCESS;
179  NPhi = trtNum->getNEndcapPhi ();
180  n = 0;
181  for(int wh = 0; wh!=Wheels; ++wh) {
182 
183  int NSlayers = trtNum->getNEndcapLayers(wh);
184  writeCdo->m_flayers[0][wh] = writeCdo->m_nlayers[0]; writeCdo->m_flayers[3][wh] = writeCdo->m_nlayers[3];
185  writeCdo->m_nlayers[0] += NSlayers ; writeCdo->m_nlayers[3] += NSlayers ;
186 
187  for(int nsl = 0; nsl!=NSlayers; ++nsl) {
188 
189  for(int f=0; f!=NPhi; ++f) {
190 
191  const InDetDD::TRT_BaseElement* base1 = trtDetEleHandle->getEndcapDetElement(0,wh,nsl,f);
192  const InDetDD::TRT_BaseElement* base2 = trtDetEleHandle->getEndcapDetElement(1,wh,nsl,f);
193  if(!base1 || !base2) continue;
194 
195  const InDetDD::TRT_EndcapElement* enel1 =
196  dynamic_cast<const InDetDD::TRT_EndcapElement*>(base1);
197  const Trk::DiscBounds* db1 =
198  dynamic_cast<const Trk::DiscBounds*>(&base1->bounds());
199  const Trk::DiscBounds* db2 =
200  dynamic_cast<const Trk::DiscBounds*>(&base2->bounds());
201  if(!enel1 || !db1 || !db2) continue;
202  if(f==0) {
203 
204  Amg::Vector3D C1 = base1->center();
205  Amg::Vector3D C2 = base2->center();
206  RZ [0][n] = C1.z();
207  Tmin [0][n] = RZ[0][n]/db1->rMin();
208  Tmax [0][n] = RZ[0][n]/db1->rMax();
209 
210  RZ [3][n] = C2.z();
211  Tmin [3][n] = RZ[3][n]/db2->rMax();
212  Tmax [3][n] = RZ[3][n]/db2->rMin();
213 
214  ++n;
215  }
216 
217  int ns = enel1->nStraws();
218 
219  for(int s=0; s!=ns; ++s) {
220 
221  const Identifier id1 = m_trtid->straw_id(-2,f,wh,nsl,s );
222  const Amg::Vector3D * sc1 = &(base1->strawCenter (s) );
223  const Amg::Transform3D* st1 = &(base1->strawTransform (s) );
224  const Amg::Transform3D* tr1 = &(base1->surface(id1).transform());
225 
226  if(!sc1 || !st1 || !tr1) {ATH_MSG_ERROR("problem with TRT geometry");}
227  ++writeCdo->m_nstraws[0];
228 
229  const Identifier id2 = m_trtid->straw_id(+2,f,wh,nsl,s );
230  const Amg::Vector3D * sc2 = &(base2->strawCenter (s) );
231  const Amg::Transform3D* st2 = &(base2->strawTransform (s) );
232  const Amg::Transform3D* tr2 = &(base2->surface(id2).transform());
233 
234  if(!sc2 || !st2 || !tr2) {ATH_MSG_ERROR("problem with TRT geometry");}
235  ++writeCdo->m_nstraws[3];
236  }
237  }
238  }
239  }
240 
241  double zmax = RZ[3][writeCdo->m_nlayers[3]-1]+10.;
242  double rmax = RZ[2][writeCdo->m_nlayers[2]-1]+10.;
243  const Trk::CylinderBounds CB(rmax,zmax);
244 
245  float rapidity[26]=
246  {-2.05,-1.95,-1.84,-1.72,-1.62,-1.53,-1.43,-1.33,-1.21,-1.00,-.94, -.85,-.32,
247  .32, .85, .94, 1.00, 1.21, 1.33, 1.43, 1.53, 1.62, 1.72,1.84, 1.95,2.05};
248 
249  std::deque<Amg::Vector3D> G [26];
250  Amg::Vector3D psv(0.,0.,0.);
251  Trk::PerigeeSurface ps(psv);
252 
253  for(int r=0; r!=26; ++r) {
254  writeCdo->m_dzdr[r] = 1./std::tan(2.*std::atan(std::exp(-rapidity[r])));
255  double pinv =-1./(m_pTmin*std::sqrt(1.+writeCdo->m_dzdr[r]*writeCdo->m_dzdr[r]));
256  auto trackPar = ps.createUniqueTrackParameters(
257  0.,
258  0.,
259  0.,
260  std::atan2(1., double(writeCdo->m_dzdr[r])),
261  pinv,
262  std::nullopt);
263  m_propTool->globalPositions(ctx,
264  G[r], *trackPar, m_fieldprop, CB, 5., Trk::pion);
265  }
266 
267  n = 0;
268  for(int b=0; b!=4; ++b) {
269  for(unsigned int i=0; i!=writeCdo->m_nlayers[b]; ++i) {
270  writeCdo->m_begin[b][i] = n;
271  for(float r : writeCdo->m_dzdr) {
272  if( r >= Tmin[b][i] && r <= Tmax[b][i] ) {
273  writeCdo->m_end[b][i] = n++;
274  }
275  }
276  }
277  }
278 
279  writeCdo->m_ndzdr = new unsigned int[n];
280  writeCdo->m_islope = new int[n];
281  writeCdo->m_slope = new float [n];
282  writeCdo->m_cirsize = writeCdo->m_nstraws[0]+writeCdo->m_nstraws[1];
283 
284  n = 0;
285  for (int b = 0; b != 4; ++b) {
286 
287  for (unsigned int i = 0; i != writeCdo->m_nlayers[b]; ++i) {
288 
289  for (int r = 0; r != 26; ++r) {
290  if (writeCdo->m_dzdr[r] >= Tmin[b][i] &&
291  writeCdo->m_dzdr[r] <= Tmax[b][i]) {
292  writeCdo->m_ndzdr[n] = r;
293  std::deque<Amg::Vector3D>::iterator gp0, gp1, gp = G[r].begin(),gpe = G[r].end();
294  if (b == 0 || b == 3) {
295 
296  gp0 = gp;
297  for (++gp; gp != gpe; ++gp) {
298  if (b == 3 && (*gp).z() >= RZ[b][i])
299  break;
300  if (b == 0 && (*gp).z() <= RZ[b][i])
301  break;
302  gp1 = gp0;
303  gp0 = gp;
304  }
305  } else {
306  gp0 = gp;
307  for (++gp; gp != gpe; ++gp) {
308  if (std::sqrt((*gp).x() * (*gp).x() + (*gp).y() * (*gp).y()) >
309  RZ[b][i])
310  break;
311  gp1 = gp0;
312  gp0 = gp;
313  }
314  }
315  double x, y, z, ax, ay, az;
316  if (gp != gpe) {
317  x = (*gp0).x();
318  ax = (*gp).x() - x;
319  y = (*gp0).y();
320  ay = (*gp).y() - y;
321  z = (*gp0).z();
322  az = (*gp).z() - z;
323  double as = 1. / std::sqrt(ax * ax + ay * ay + az * az);
324  ax *= as;
325  ay *= as;
326  az *= as;
327  } else {
328  x = (*gp1).x();
329  ax = (*gp0).x() - x;
330  y = (*gp1).y();
331  ay = (*gp0).y() - y;
332  z = (*gp1).z();
333  az = (*gp0).z() - z;
334  double as = 1. / std::sqrt(ax * ax + ay * ay + az * az);
335  ax *= as;
336  ay *= as;
337  az *= as;
338  }
339  double S = 0;
340 
341  if (b == 0 || b == 3) {
342  S = (RZ[b][i] - z) / az;
343  } else {
344  double A = (ax * x + ay * y) * 2.;
345  double D = (RZ[b][i] - x - y) * (RZ[b][i] + x + y) + 2. * x * y;
346  S = D / A;
347  double B = 2. * (ax * ax + ay * ay);
348  double Sq = A * A + 2. * D * B;
349  Sq > 0. ? Sq = std::sqrt(Sq) : Sq = 0.;
350  double S1 = -(A + Sq) / B;
351  double S2 = -(A - Sq) / B;
352  if (S > S2)
353  S = S2;
354  else if (S < S1)
355  S = S1;
356  }
357  writeCdo->m_slope[n] = std::atan2(y + S * ay, x + S * ax) * m_A;
358  writeCdo->m_islope[n] = int(writeCdo->m_slope[n] * m_Psi128);
359  ++n;
360  }
361  }
362  }
363  }
364 
365  if (writeHandle.record(rangeTrt, std::move(writeCdo)).isFailure()) {
366  ATH_MSG_FATAL("Could not record " << writeHandle.key()
367  << " with EventRange " << rangeTrt
368  << " into Conditions Store");
369  return StatusCode::FAILURE;
370  }
371  ATH_MSG_DEBUG("recorded new CDO " << writeHandle.key() << " with range "
372  << rangeTrt << " into Conditions Store");
373 
374  return StatusCode::SUCCESS;
375 
376 }
377 
379 {
380  // Build MagneticFieldProperties
381  //
385 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:676
Trk::RectangleBounds
Definition: RectangleBounds.h:38
S1
struct TBPatternUnitContext S1
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDetDD::TRT_BarrelElement
Definition: TRT_BarrelElement.h:44
GlobalVariables.Tmin
Tmin
Definition: GlobalVariables.py:200
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_trtid
const TRT_ID * m_trtid
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:56
DiscBounds.h
fitman.ax
ax
Definition: fitman.py:522
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
RectangleBounds.h
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:62
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx:73
InDetDD::TRT_BaseElement::nStraws
unsigned int nStraws() const
Number of straws in the element.
M_PI
#define M_PI
Definition: ActiveFraction.h:11
InDetDD::TRT_EndcapElement
Definition: TRT_EndcapElement.h:44
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
InDetDD::TRT_BaseElement::strawCenter
const Amg::Vector3D & strawCenter(int straw) const
Straw Surface: Local -> global transform of the straw via integer.
Definition: TRT_BaseElement.cxx:143
IPropagator.h
SG::ReadCondHandle::range
bool range(EventIDRange &r)
Definition: ReadCondHandle.h:224
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
x
#define x
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
MagneticFieldProperties.h
bsCompare.db1
int db1
Definition: bsCompare.py:40
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
InDetDD::TRT_Numerology::getNEndcapWheels
unsigned int getNEndcapWheels() const
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_trtDetEleContKey
SG::ReadCondHandleKey< InDetDD::TRT_DetElementContainer > m_trtDetEleContKey
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:73
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_nPhi
int m_nPhi
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:69
TRT_EndcapElement.h
A
InDetDD::TRT_Numerology
Definition: TRT_Numerology.h:22
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:562
DeMoUpdate.db2
string db2
Definition: DeMoUpdate.py:1032
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::TRT_TrackSegmentsMakerCondAlg_ATLxk
TRT_TrackSegmentsMakerCondAlg_ATLxk(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx:30
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
G
#define G(x, y, z)
Definition: MD5.cxx:113
beamspotman.n
n
Definition: beamspotman.py:731
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_fieldmode
StringProperty m_fieldmode
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:58
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_propTool
ToolHandle< Trk::IPropagator > m_propTool
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:60
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:169
parseDir.wh
wh
Definition: parseDir.py:46
InDetDD::TRT_Numerology::getNBarrelPhi
unsigned int getNBarrelPhi() const
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
hist_file_dump.f
f
Definition: hist_file_dump.py:135
InDetDD::TRT_Numerology::getNBarrelLayers
unsigned int getNBarrelLayers(unsigned int iMod) const
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
TRT_BarrelElement.h
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_Psi
float m_Psi
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:68
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_pTmin
FloatProperty m_pTmin
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:63
TRT_BaseElement.h
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
GlobalVariables.Tmax
Tmax
Definition: GlobalVariables.py:201
InDetDD::TRT_DetElementContainer::getBarrelDetElement
const TRT_BarrelElement * getBarrelDetElement(unsigned int positive, unsigned int moduleIndex, unsigned int phiIndex, unsigned int strawLayerIndex) const
Definition: TRT_DetElementContainer.cxx:39
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Trk::RectangleBounds::halflengthY
double halflengthY() const
for consitant naming
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDetDD::TRT_BaseElement::bounds
virtual const Trk::SurfaceBounds & bounds() const override final
Straw layer bounds.
InDetDD::TRT_BaseElement::strawTransform
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.
Definition: TRT_BaseElement.cxx:89
y
#define y
Trk::PerigeeSurface::createUniqueTrackParameters
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Definition: PerigeeSurface.cxx:98
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::initialize
virtual StatusCode initialize() override
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx:37
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_A
float m_A
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:67
InDetDD::TRT_BaseElement::center
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
S2
struct TBPatternUnitContext S2
InDetDD::TRT_DetElementContainer::getTRTNumerology
const TRT_Numerology * getTRTNumerology() const
Definition: TRT_DetElementContainer.cxx:34
TRT_Numerology.h
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::magneticFieldInit
void magneticFieldInit()
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx:378
InDetDD::TRT_Numerology::getNEndcapPhi
unsigned int getNEndcapPhi() const
InDetDD::TRT_Numerology::getNEndcapLayers
unsigned int getNEndcapLayers(unsigned int iWheel) const
InDetDD::TRT_Numerology::getNBarrelRings
unsigned int getNBarrelRings() const
SG::ReadCondHandle::key
const std::string & key() const
Definition: ReadCondHandle.h:59
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_Psi128
float m_Psi128
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:64
InDetDD::TRT_DetElementContainer::getEndcapDetElement
const TRT_EndcapElement * getEndcapDetElement(unsigned int positive, unsigned int wheelIndex, unsigned int strawLayerIndex, unsigned int phiIndex) const
Definition: TRT_DetElementContainer.cxx:62
TRT_TrackSegmentsMakerCondAlg_ATLxk.h
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_nMom
IntegerProperty m_nMom
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:65
SG::WriteCondHandle
Definition: WriteCondHandle.h:26
InDetDD::TRT_BaseElement::surface
virtual const Trk::Surface & surface() const override final
Element Surface: access to the Surface (straw layer)
readCCLHist.float
float
Definition: readCCLHist.py:83
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_writeKey
SG::WriteCondHandleKey< TRT_TrackSegmentsToolCondData_xk > m_writeKey
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:74
Trk::DiscBounds
Definition: DiscBounds.h:44
InDetDD::TRT_BaseElement
Definition: TRT_BaseElement.h:57
TRT_ID::straw_id
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition: TRT_ID.h:581
fitman.ay
ay
Definition: fitman.py:525
Identifier
Definition: IdentifierFieldParser.cxx:14