ATLAS Offline Software
TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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  m_fieldmode ("MapSolenoid"),
33  m_propTool ("Trk::RungeKuttaPropagator"),
34  m_pTmin (500.),
35  m_nMom (70)
36 
37 {
38  declareProperty("PropagatorTool" ,m_propTool );
39  declareProperty("pTmin" ,m_pTmin );
40  declareProperty("NumberMomentumChannel" ,m_nMom );
41 
42 }
43 
45 // Initialisation
47 
49 {
50 
52  ATH_CHECK(m_writeKey.initialize());
53 
54  // Get propagator tool
55  //
56  if( m_propTool.retrieve().isFailure()) {
57  ATH_MSG_FATAL("Failed to retrieve tool "<< m_propTool);
58  return StatusCode::FAILURE;
59  }
60  ATH_MSG_DEBUG("Retrieved tool " << m_propTool);
61 
63 
64  // Get TRT ID
65  if (detStore()->retrieve(m_trtid, "TRT_ID").isFailure()) {
66  ATH_MSG_FATAL("Could not get TRT ID helper");
67  return StatusCode::FAILURE;
68  }
69 
70  m_nPhi = 500 ;
71  m_Psi = 2./float(m_nMom-1) ;
72  m_Psi128 = m_Psi*128. ;
73  m_A = float(m_nPhi)/(2.*M_PI) ;
74 
75  return StatusCode::SUCCESS;
76 }
77 
79 // Map of straws production
81 // Taken from the old InDet::TRT_TrackSegmentsMaker_ATLxk::mapStrawsProduction()
83 
85 {
86 
88  if (writeHandle.isValid()) {
89  ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid.");
90  return StatusCode::SUCCESS;
91  }
92 
93  EventIDRange rangeTrt;
94 
96  if (not trtDetEleHandle.isValid()) {
97  ATH_MSG_FATAL(m_trtDetEleContKey.fullKey() << " is not available.");
98  return StatusCode::FAILURE;
99  }
100 
101  const InDetDD::TRT_Numerology* trtNum = trtDetEleHandle->getTRTNumerology();
102  if (trtNum==nullptr){
103  ATH_MSG_FATAL("Pointer to TRT_Numerology not found in condition store" << m_trtDetEleContKey.fullKey());
104  }
105 
106  if (not trtDetEleHandle.range(rangeTrt)) {
107  ATH_MSG_FATAL("Failed to retrieve validity range for " << trtDetEleHandle.key());
108  return StatusCode::FAILURE;
109  }
110 
111  auto writeCdo = std::make_unique<InDet::TRT_TrackSegmentsToolCondData_xk>();
112  if(writeCdo->m_ndzdr ) delete [] writeCdo->m_ndzdr ;
113  if(writeCdo->m_slope ) delete [] writeCdo->m_slope ;
114  if(writeCdo->m_islope ) delete [] writeCdo->m_islope ;
115 
116  float RZ [4][200];
117  float Tmin [4][200];
118  float Tmax [4][200];
119 
120  // Map straws production for barrel geometry
121  //
122  int Rings = trtNum->getNBarrelRings();
123  int NPhi = trtNum->getNBarrelPhi();
124  int n = 0;
125 
126  for(int ring = 0; ring!=Rings; ++ring) {
127 
128  int NSlayers = trtNum->getNBarrelLayers(ring);
129 
130  writeCdo->m_flayers[1][ring] = writeCdo->m_nlayers[1]; writeCdo->m_flayers[2][ring] = writeCdo->m_nlayers[2];
131  writeCdo->m_nlayers[1] += NSlayers ; writeCdo->m_nlayers[2] += NSlayers ;
132 
133  for(int nsl=0; nsl!=NSlayers; ++nsl) {
134 
135 
136  for(int f=0; f!=NPhi; ++f) {
137 
138  const InDetDD::TRT_BaseElement* base1 = trtDetEleHandle->getBarrelDetElement(0,ring,f,nsl);
139  const InDetDD::TRT_BaseElement* base2 = trtDetEleHandle->getBarrelDetElement(1,ring,f,nsl);
140  if(!base1 || !base2) continue;
141  const InDetDD::TRT_BarrelElement* bael1 =
142  dynamic_cast<const InDetDD::TRT_BarrelElement*>(base1);
143  const Trk::RectangleBounds* rb1 =
144  dynamic_cast<const Trk::RectangleBounds*>(&base1->bounds());
145  const Trk::RectangleBounds* rb2 =
146  dynamic_cast<const Trk::RectangleBounds*>(&base2->bounds());
147  if(!bael1 || !rb1 || !rb2) continue;
148  float rmean = 0;
149  if(f==0) {
150 
151  Amg::Vector3D C1 = base1->center();
152  Amg::Vector3D C2 = base2->center();
153  RZ [1][n] = std::sqrt(C1.x()*C1.x()+C1.y()*C1.y());
154 
155  Tmin [1][n] = (C1.z()-rb1->halflengthY())/RZ[1][n];
156  Tmax [1][n] = -.001;
157 
158  RZ [2][n] = std::sqrt(C2.x()*C2.x()+C2.y()*C2.y());
159 
160  Tmin [2][n] = +.001;
161  Tmax [2][n] = (C2.z()+rb2->halflengthY())/RZ[2][n];
162  ++n;
163  }
164  int ns = bael1->nStraws();
165  for(int s=0; s!=ns; ++s) {
166 
167  const Identifier id1 = m_trtid->straw_id(-1,f,ring,nsl,s );
168  const Amg::Vector3D * sc1 = &(base1->strawCenter (s));
169  const Amg::Transform3D* st1 = &(base1->strawTransform (s));
170  const Amg::Transform3D* tr1 = &(base1->surface(id1).transform() );
171  if(f==0) rmean+=std::sqrt(sc1->x()*sc1->x()+sc1->y()*sc1->y());
172 
173  if(!sc1 || !st1 || !tr1 ) {ATH_MSG_ERROR("problem with TRT geometry");}
174  ++writeCdo->m_nstraws[1];
175  const Identifier id2 = m_trtid->straw_id(+1,f,ring,nsl,s );
176  const Amg::Vector3D * sc2 = &(base2->strawCenter (s));
177  const Amg::Transform3D* st2 = &(base2->strawTransform (s));
178  const Amg::Transform3D* tr2 = &(base2->surface(id2).transform() );
179  if(!sc2 || !st2 || !tr2) {ATH_MSG_ERROR("problem with TRT geometry");}
180  ++writeCdo->m_nstraws[2];
181  }
182  if(f==0) { RZ[1][n-1] = RZ[2][n-1] = rmean/float(ns);}
183  }
184  }
185  }
186 
187  // Endcap
188  //
189  int Wheels = trtNum->getNEndcapWheels(); if(!Wheels) return StatusCode::SUCCESS;
190  NPhi = trtNum->getNEndcapPhi ();
191  n = 0;
192  for(int wh = 0; wh!=Wheels; ++wh) {
193 
194  int NSlayers = trtNum->getNEndcapLayers(wh);
195  writeCdo->m_flayers[0][wh] = writeCdo->m_nlayers[0]; writeCdo->m_flayers[3][wh] = writeCdo->m_nlayers[3];
196  writeCdo->m_nlayers[0] += NSlayers ; writeCdo->m_nlayers[3] += NSlayers ;
197 
198  for(int nsl = 0; nsl!=NSlayers; ++nsl) {
199 
200  for(int f=0; f!=NPhi; ++f) {
201 
202  const InDetDD::TRT_BaseElement* base1 = trtDetEleHandle->getEndcapDetElement(0,wh,nsl,f);
203  const InDetDD::TRT_BaseElement* base2 = trtDetEleHandle->getEndcapDetElement(1,wh,nsl,f);
204  if(!base1 || !base2) continue;
205 
206  const InDetDD::TRT_EndcapElement* enel1 =
207  dynamic_cast<const InDetDD::TRT_EndcapElement*>(base1);
208  const Trk::DiscBounds* db1 =
209  dynamic_cast<const Trk::DiscBounds*>(&base1->bounds());
210  const Trk::DiscBounds* db2 =
211  dynamic_cast<const Trk::DiscBounds*>(&base2->bounds());
212  if(!enel1 || !db1 || !db2) continue;
213  if(f==0) {
214 
215  Amg::Vector3D C1 = base1->center();
216  Amg::Vector3D C2 = base2->center();
217  RZ [0][n] = C1.z();
218  Tmin [0][n] = RZ[0][n]/db1->rMin();
219  Tmax [0][n] = RZ[0][n]/db1->rMax();
220 
221  RZ [3][n] = C2.z();
222  Tmin [3][n] = RZ[3][n]/db2->rMax();
223  Tmax [3][n] = RZ[3][n]/db2->rMin();
224 
225  ++n;
226  }
227 
228  int ns = enel1->nStraws();
229 
230  for(int s=0; s!=ns; ++s) {
231 
232  const Identifier id1 = m_trtid->straw_id(-2,f,wh,nsl,s );
233  const Amg::Vector3D * sc1 = &(base1->strawCenter (s) );
234  const Amg::Transform3D* st1 = &(base1->strawTransform (s) );
235  const Amg::Transform3D* tr1 = &(base1->surface(id1).transform());
236 
237  if(!sc1 || !st1 || !tr1) {ATH_MSG_ERROR("problem with TRT geometry");}
238  ++writeCdo->m_nstraws[0];
239 
240  const Identifier id2 = m_trtid->straw_id(+2,f,wh,nsl,s );
241  const Amg::Vector3D * sc2 = &(base2->strawCenter (s) );
242  const Amg::Transform3D* st2 = &(base2->strawTransform (s) );
243  const Amg::Transform3D* tr2 = &(base2->surface(id2).transform());
244 
245  if(!sc2 || !st2 || !tr2) {ATH_MSG_ERROR("problem with TRT geometry");}
246  ++writeCdo->m_nstraws[3];
247  }
248  }
249  }
250  }
251 
252  double zmax = RZ[3][writeCdo->m_nlayers[3]-1]+10.;
253  double rmax = RZ[2][writeCdo->m_nlayers[2]-1]+10.;
254  const Trk::CylinderBounds CB(rmax,zmax);
255 
256  float rapidity[26]=
257  {-2.05,-1.95,-1.84,-1.72,-1.62,-1.53,-1.43,-1.33,-1.21,-1.00,-.94, -.85,-.32,
258  .32, .85, .94, 1.00, 1.21, 1.33, 1.43, 1.53, 1.62, 1.72,1.84, 1.95,2.05};
259 
260  std::deque<Amg::Vector3D> G [26];
261  Amg::Vector3D psv(0.,0.,0.);
262  Trk::PerigeeSurface ps(psv);
263 
264  for(int r=0; r!=26; ++r) {
265  writeCdo->m_dzdr[r] = 1./std::tan(2.*std::atan(std::exp(-rapidity[r])));
266  double pinv =-1./(m_pTmin*std::sqrt(1.+writeCdo->m_dzdr[r]*writeCdo->m_dzdr[r]));
267  auto trackPar = ps.createUniqueTrackParameters(
268  0.,
269  0.,
270  0.,
271  std::atan2(1., double(writeCdo->m_dzdr[r])),
272  pinv,
273  std::nullopt);
274  m_propTool->globalPositions(ctx,
275  G[r], *trackPar, m_fieldprop, CB, 5., Trk::pion);
276  }
277 
278  n = 0;
279  for(int b=0; b!=4; ++b) {
280  for(unsigned int i=0; i!=writeCdo->m_nlayers[b]; ++i) {
281  writeCdo->m_begin[b][i] = n;
282  for(float r : writeCdo->m_dzdr) {
283  if( r >= Tmin[b][i] && r <= Tmax[b][i] ) {
284  writeCdo->m_end[b][i] = n++;
285  }
286  }
287  }
288  }
289 
290  writeCdo->m_ndzdr = new unsigned int[n];
291  writeCdo->m_islope = new int[n];
292  writeCdo->m_slope = new float [n];
293  writeCdo->m_cirsize = writeCdo->m_nstraws[0]+writeCdo->m_nstraws[1];
294 
295  n = 0;
296  for (int b = 0; b != 4; ++b) {
297 
298  for (unsigned int i = 0; i != writeCdo->m_nlayers[b]; ++i) {
299 
300  for (int r = 0; r != 26; ++r) {
301  if (writeCdo->m_dzdr[r] >= Tmin[b][i] &&
302  writeCdo->m_dzdr[r] <= Tmax[b][i]) {
303  writeCdo->m_ndzdr[n] = r;
304  std::deque<Amg::Vector3D>::iterator gp0, gp1, gp = G[r].begin(),gpe = G[r].end();
305  if (b == 0 || b == 3) {
306 
307  gp0 = gp;
308  for (++gp; gp != gpe; ++gp) {
309  if (b == 3 && (*gp).z() >= RZ[b][i])
310  break;
311  if (b == 0 && (*gp).z() <= RZ[b][i])
312  break;
313  gp1 = gp0;
314  gp0 = gp;
315  }
316  } else {
317  gp0 = gp;
318  for (++gp; gp != gpe; ++gp) {
319  if (std::sqrt((*gp).x() * (*gp).x() + (*gp).y() * (*gp).y()) >
320  RZ[b][i])
321  break;
322  gp1 = gp0;
323  gp0 = gp;
324  }
325  }
326  double x, y, z, ax, ay, az;
327  if (gp != gpe) {
328  x = (*gp0).x();
329  ax = (*gp).x() - x;
330  y = (*gp0).y();
331  ay = (*gp).y() - y;
332  z = (*gp0).z();
333  az = (*gp).z() - z;
334  double as = 1. / std::sqrt(ax * ax + ay * ay + az * az);
335  ax *= as;
336  ay *= as;
337  az *= as;
338  } else {
339  x = (*gp1).x();
340  ax = (*gp0).x() - x;
341  y = (*gp1).y();
342  ay = (*gp0).y() - y;
343  z = (*gp1).z();
344  az = (*gp0).z() - z;
345  double as = 1. / std::sqrt(ax * ax + ay * ay + az * az);
346  ax *= as;
347  ay *= as;
348  az *= as;
349  }
350  double S = 0;
351 
352  if (b == 0 || b == 3) {
353  S = (RZ[b][i] - z) / az;
354  } else {
355  double A = (ax * x + ay * y) * 2.;
356  double D = (RZ[b][i] - x - y) * (RZ[b][i] + x + y) + 2. * x * y;
357  S = D / A;
358  double B = 2. * (ax * ax + ay * ay);
359  double Sq = A * A + 2. * D * B;
360  Sq > 0. ? Sq = std::sqrt(Sq) : Sq = 0.;
361  double S1 = -(A + Sq) / B;
362  double S2 = -(A - Sq) / B;
363  if (S > S2)
364  S = S2;
365  else if (S < S1)
366  S = S1;
367  }
368  writeCdo->m_slope[n] = std::atan2(y + S * ay, x + S * ax) * m_A;
369  writeCdo->m_islope[n] = int(writeCdo->m_slope[n] * m_Psi128);
370  ++n;
371  }
372  }
373  }
374  }
375 
376  if (writeHandle.record(rangeTrt, std::move(writeCdo)).isFailure()) {
377  ATH_MSG_FATAL("Could not record " << writeHandle.key()
378  << " with EventRange " << rangeTrt
379  << " into Conditions Store");
380  return StatusCode::FAILURE;
381  }
382  ATH_MSG_DEBUG("recorded new CDO " << writeHandle.key() << " with range "
383  << rangeTrt << " into Conditions Store");
384 
385  return StatusCode::SUCCESS;
386 
387 }
388 
390 {
391  // Build MagneticFieldProperties
392  //
396 }
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_pTmin
float m_pTmin
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:61
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
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
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
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_nMom
int m_nMom
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:63
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:60
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.cxx:84
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:70
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_nPhi
int m_nPhi
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:66
TRT_EndcapElement.h
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:564
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:92
z
#define z
G
#define G(x, y, z)
Definition: MD5.cxx:113
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
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:59
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:176
parseDir.wh
wh
Definition: parseDir.py:46
InDetDD::TRT_Numerology::getNBarrelPhi
unsigned int getNBarrelPhi() const
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDetDD::TRT_Numerology::getNBarrelLayers
unsigned int getNBarrelLayers(unsigned int iMod) const
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_fieldmode
std::string m_fieldmode
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:58
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:65
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:195
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:48
InDet::TRT_TrackSegmentsMakerCondAlg_ATLxk::m_A
float m_A
Definition: TRT_TrackSegmentsMakerCondAlg_ATLxk.h:64
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:389
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:62
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.
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:71
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