ATLAS Offline Software
GeoPixelLadder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <utility>
6 
7 #include "GeoPixelLadder.h"
8 #include "GeoPixelStaveSupport.h"
9 #include "GeoPixelModule.h"
10 #include "GeoPixelSiCrystal.h"
12 #include "GeoModelKernel/GeoBox.h"
13 #include "GeoModelKernel/GeoTubs.h"
14 #include "GeoModelKernel/GeoTrap.h"
15 #include "GeoModelKernel/GeoLogVol.h"
16 #include "GeoModelKernel/GeoNameTag.h"
17 #include "GeoModelKernel/GeoIdentifierTag.h"
18 #include "GeoModelKernel/GeoPhysVol.h"
19 #include "GeoModelKernel/GeoMaterial.h"
20 
21 #include "GeoModelKernel/GeoTransform.h"
22 #include "GeoModelKernel/GeoAlignableTransform.h"
23 #include "GeoModelKernel/GeoShapeShift.h"
24 #include "GeoModelKernel/GeoShapeUnion.h"
25 
26 #include "GaudiKernel/PhysicalConstants.h"
27 
28 using std::max;
29 
32  GeoModelIO::ReadGeoModel* sqliteReader,
33  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
34  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
35  GeoPixelSiCrystal& theSensor,
36  GeoPixelStaveSupport* staveSupport)
37  : GeoVPixelFactory (m_DDmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX))
38  , m_theLadder(nullptr)
39  , m_theSensor(theSensor)
40  , m_staveSupport(staveSupport)
41 {
42  //
43  // Define the log volume in the constructor, so I do it only once.
44  //
45 
46  //
47  // Length of the ladder is in the db
48  //
50  double safety = 0.01*Gaudi::Units::mm;
51 
52  m_width = calcWidth();
55 
56  // If thickness from database is 0. Then we need to calculate the thickness
57  if (m_thicknessP <= 0) {
58  m_thicknessP = 0.5* calcThickness() + safety;
60  }
61 
62  // Increase if stave is present and supplies thickness.
63  if (m_staveSupport) {
66  }
67 
68  const GeoShape * ladderShape = nullptr;
69 
70  // If upper and lower thicknesses are within 100 um. Make them the same.
71  if (std::abs(m_thicknessP - m_thicknessN) < 0.1*Gaudi::Units::mm) {
74  double halfThickness = m_thicknessP;
75  if(!m_sqliteReader) {
76  ladderShape = new GeoBox(halfThickness, m_width/2., length/2.);
77  }
78  }
79  else if (m_gmt_mgr->PixelBentStaveNModule() != 0) {
80  // Calculate thickness from bent stave part
82  double BentStaveThickness = double(m_gmt_mgr->PixelBentStaveNModule()) * m_gmt_mgr->PixelLadderModuleDeltaZ() * sin(angle);
83 
84  // Extend +ve or -ve ladder thickness according to stave angle
85  if (angle < 0) m_thicknessP += BentStaveThickness;
86  if (angle > 0) m_thicknessN += BentStaveThickness;
87 
88  if(!m_sqliteReader) {
89  // Create stave and apply shift to the ladder.
90  GeoBox * box = new GeoBox((m_thicknessP+m_thicknessN)/2., m_width/2., length/2.);
91 
92  // Shift ladder outwards if stave bends away from beam pipe
93  double shift = 0.5*BentStaveThickness;
94  if (angle > 0) shift *= -1.0;
95  const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
96  ladderShape = &shiftedBox;
97  }
98  }
99  else if (!(m_gmt_mgr->PixelStaveLayout()>3&& m_gmt_mgr->PixelStaveLayout()<7)) {
100  double halfThickness = 0.5*(m_thicknessP+m_thicknessN);
101  double shift = 0.5*(m_thicknessP-m_thicknessN);
102  if(!m_sqliteReader) {
103  GeoBox * box = new GeoBox(halfThickness, m_width/2., length/2.);
104  const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
105  ladderShape = &shiftedBox;
106  }
107  }
108  else if(m_staveSupport) {
109  if(!m_sqliteReader) {
110  GeoSimplePolygonBrep* staveSupportShape=m_staveSupport->computeStaveEnvelopShape(safety);
111  const GeoShape & staveShape = (*staveSupportShape);
112  ladderShape = &staveShape;
113  }
114  }
115  else {
116  m_gmt_mgr->msg(MSG::ERROR)<<"No ladder shape could be defined "<<endmsg;
117  }
118 
119  if(!m_sqliteReader) {
120  if(not ladderShape) {
121  m_gmt_mgr->msg(MSG::ERROR)<<"No ladder shape could be defined in "<<__FILE__<<endmsg;
122  std::abort();
123  }
124  else {
125  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
126  m_theLadder = new GeoLogVol("Ladder",ladderShape,air);
127  }
128  }
130 }
131 
132 
133 
134 // The module has X axis (depth axis) out of the plane pointing
135 // towards the chips. Z axis is the eta direction.
136 // For the module at global phi ~= 0 the module X,Y,Z axis are
137 // approximately aligned with the global X,Y,Z (ignoring the tilts)
138 
139 // Looking from IP at global phi ~=0
140 //
141 //
142 //
143 // Z ^
144 // |
145 // |
146 // Y<--x
147 //
148 // X axis into page
149 //
150 // MCC side
151 //
152 // _ _ 0 F ^z
153 // pigtail |_ _ . . |
154 // . . |
155 // . . <-- x Module ref system (Hit frame)
156 // 7 8 y
157 //
158 //
159 
160 
161 GeoVPhysVol* GeoPixelLadder::Build( ) {
162 
163 
164  // Create the ladder physVolume
165  GeoPhysVol* ladderPhys = m_sqliteReader==nullptr ? new GeoPhysVol(m_theLadder) : nullptr;
166  //
167  // Place the Modules
168  //
170 
171  bool isBLayer=(m_gmt_mgr->GetLD() == 0);
172  bool isModule3D=true;
173  if (m_gmt_mgr->PixelStaveLayout()<5) isModule3D=false;
174  GeoPixelSiCrystal theSensor3D(m_DDmgr, m_gmt_mgr, m_sqliteReader, m_mapFPV, m_mapAX, isBLayer,isModule3D);
176  // double pm3DLength=pm3D.Length();
177 
178  // Pixel module parameters
179  int staveLayout = m_gmt_mgr->PixelStaveLayout();
180  int nbPixelModule=m_gmt_mgr->PixelNModule();
181  int nbPixelPlanarModule=0;
182  int nbPixel3DModule=0;
183  bool bDetailedStaveLayout=false;
184  double pixelModuleGap=m_gmt_mgr->IBLStaveModuleGap();
185  double zNegStavePos= 0.0;
186  double planarLength=0.0;
187  double v3DHalfLength=0.0;
188  double v3DLength=0.0;
189 
190  bool bVerbose= (m_gmt_mgr->msgLvl(MSG::DEBUG));
191 
192  // Radial shift of Si3D module in case its thickness is greater that SiPl module's one
193  double Si3DRadialShift=0.;
194  double Si3DLateralShift=0.;
195  if(isModule3D)
196  {
197  double SiPlThick = pm.ThicknessP();
198  double Si3DThick = pm3D.ThicknessP();
199  if(Si3DThick>SiPlThick) Si3DRadialShift=-(Si3DThick-SiPlThick);
200  // m_gmt_mgr->msg(MSG::INFO)<<"Si3D/SiPl radial shift : "<<Si3DRadialShift<<" Pl/3D : "<<SiPlThick<<" "<<Si3DThick<<endmsg;
201 
202  double MechanicalStaveOffset = m_gmt_mgr->IBLStaveMechanicalStaveOffset();
203  double MechanicalStaveOffset3D = m_gmt_mgr->IBLStaveMechanicalStaveOffset(true);
204  Si3DLateralShift= -(MechanicalStaveOffset3D-MechanicalStaveOffset);
205  }
206 
207  // Module 3D geometry (IBL planar and 3D modules)
208  if(m_gmt_mgr->ibl() && m_gmt_mgr->GetLD()==0)
209  {
210  if(staveLayout==4)
211  {
212  nbPixelModule=m_gmt_mgr->IBLStaveModuleNumber_AllPlanar();
213  bDetailedStaveLayout=true;
214  nbPixelPlanarModule=nbPixelModule;
215 
216  }
217  else if(staveLayout==5||staveLayout==6) // 75/25 or 50/50
218  {
219  bDetailedStaveLayout=true;
220  nbPixelModule=m_staveSupport->PixelNModule();
221  nbPixelPlanarModule=m_staveSupport->PixelNPlanarModule();
222  nbPixel3DModule=m_staveSupport->PixelN3DModule();
223 
224  if(staveLayout==5)
225  {
226  planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
227  v3DHalfLength=(nbPixel3DModule/2)*pm3D.Length()+(nbPixel3DModule/2)*pixelModuleGap;
228  zNegStavePos=-planarLength*0.5-v3DHalfLength;
229  }
230  else
231  {
232  planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
233  v3DLength=(nbPixel3DModule)*pm3D.Length()+(nbPixel3DModule-1)*pixelModuleGap+pixelModuleGap*0.5;
234  zNegStavePos=-v3DLength;
235  }
236 
237  // m_gmt_mgr->msg(MSG::INFO)<<"GeoPixelLadder : "<<nbPixelModule<<" "<<nbPixelPlanarModule<<" + "<<nbPixel3DModule<<" planar and 3D Lengths : "<<planarLength<<" "<<v3DLength<<endmsg;
238  }
239  }
240 
241  for(int ii = 0; ii < nbPixelModule; ii++) {
242 
243  int etaModule = m_gmt_mgr->PixelModuleEtaFromIndex(ii);
244  m_gmt_mgr->SetEta(etaModule);
245 
246 //
247 // For standard ATLAS stave shift down the central module, as its flag is -1.
248 // PixelModuleStaggerDistance is zero for standard ATLAS geometry.
249 // Not sure why PixelModuleDrDistance is defined as twice the shift.
250 //
251 
254 //
255 // Get the z position from the db
256 //
257  double zpos = m_gmt_mgr->PixelModuleZPosition(etaModule);
258  bool b3DModule=false;
259  double xposShift=0.;
260  double yposShift=0.;
261 
262  // detailed stave model : parameters are taken from PixelIBLStave table instead of PixelStave
263  if(m_gmt_mgr->ibl() && bDetailedStaveLayout && m_gmt_mgr->GetLD()==0)
264  {
265  int moduleIndex = m_gmt_mgr->PixelModuleIndexFromEta(etaModule);
266 
267  if(m_gmt_mgr->PixelStaveLayout()==4)
268  zpos=(pm.Length()+m_gmt_mgr->IBLStaveModuleGap()) * (moduleIndex - 0.5*(m_gmt_mgr->IBLStaveModuleNumber_AllPlanar()-1));
269  else if(m_gmt_mgr->PixelStaveLayout()==5)
270  {
271 
272  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"Eta : cmpt/index "<<ii<<" "<<moduleIndex<<endmsg;
273 
274  if(ii<nbPixel3DModule/2) // zneg 3D pixel area
275  {
276  b3DModule=true;
277  zpos=(pm3D.Length()+m_gmt_mgr->IBLStaveModuleGap()) * moduleIndex;
278  zpos+=pm3D.Length()*0.5;
279  xposShift=Si3DRadialShift;
280  yposShift=Si3DLateralShift;
281  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"left 3D module "<<pm3D.Length()<<" "<<zpos<<endmsg;
282  }
283  else if(ii>nbPixelPlanarModule+nbPixel3DModule/2-1) // zpos 3D pixel area
284  {
285  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"right 3D module "<<pm3D.Length()<<" "<<zpos<<endmsg;
286  b3DModule=true;
287  zpos=v3DHalfLength+planarLength+m_gmt_mgr->IBLStaveModuleGap();
288  zpos+=(pm3D.Length()+m_gmt_mgr->IBLStaveModuleGap()) * (moduleIndex - nbPixel3DModule/2 - nbPixelPlanarModule);
289  zpos+=pm3D.Length()*0.5;
290  xposShift=Si3DRadialShift;
291  yposShift=Si3DLateralShift;
292  }
293  else // planar pixel area
294  {
295  zpos=v3DHalfLength+(pm.Length()+m_gmt_mgr->IBLStaveModuleGap()) * (moduleIndex - nbPixel3DModule/2);
296  zpos+=pm.Length()*0.5;
297  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"planar module "<<pm.Length()<<" "<<zpos<<endmsg;
298  xposShift=0.;
299  }
300 
301  // Shift vs half stave length
302  zpos=zNegStavePos+zpos;
303 
304  }
305  else if(m_gmt_mgr->PixelStaveLayout()==6)
306  {
307 
308  if(ii<nbPixel3DModule) // zneg 3D pixel area
309  {
310  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"left 3D module "<<pm3D.Length()<<" "<<moduleIndex<<endmsg;
311  b3DModule=true;
312  zpos=(pm3D.Length()+pixelModuleGap) * moduleIndex;
313  zpos=zNegStavePos+zpos+pm3D.Length()*0.5;
314  xposShift=Si3DRadialShift;
315  yposShift=Si3DLateralShift;
316  }
317  else // zpos 3D pixel area
318  {
319  if(bVerbose)m_gmt_mgr->msg(MSG::DEBUG)<<"right plannar module "<<pm.Length()<<" "<<moduleIndex<<endmsg;
320  zpos=(pm.Length()+m_gmt_mgr->IBLStaveModuleGap()) * (moduleIndex - nbPixel3DModule);
321  zpos+=pm.Length()*0.5+pixelModuleGap*0.5;
322  }
323  }
324  }
325 
326 
327  GeoTrf::Translation3D modulepos(xpos+xposShift,yposShift,zpos);
328 //
329 // Rotate if module is inclined.
330 //
331  GeoTrf::RotateY3D rm(m_gmt_mgr->PixelModuleAngle()*m_gmt_mgr->PixelModuleAngleSign(etaModule) );
332 //
333 // Place the Module
334 //
335  GeoVPhysVol* modulephys{nullptr}; // = pm.Build() ;
336 
337  if(!b3DModule)
338  modulephys = pm.Build();
339  else
340  modulephys = pm3D.Build();
341 
342  if(m_sqliteReader) {
343  std::string key="ModuleBrl_"+std::to_string(m_gmt_mgr->GetLD())+"_"+std::to_string(m_gmt_mgr->Phi())+"_"+std::to_string(m_gmt_mgr->Eta());
344  Identifier id;
345  if(!b3DModule) id = m_theSensor.getID();
346  else id = theSensor3D.getID();
348  }
349  else {
350  std::ostringstream nameTag;
351  nameTag << "ModuleBrl" << m_gmt_mgr->Eta();
352  GeoNameTag * tag = new GeoNameTag(nameTag.str());
353  GeoAlignableTransform* xform;
354 
355  xform = new GeoAlignableTransform(GeoTrf::Transform3D(modulepos*rm));
356  ladderPhys->add(tag);
357  ladderPhys->add(new GeoIdentifierTag(m_gmt_mgr->Eta() ) );
358  ladderPhys->add(xform);
359  ladderPhys->add(modulephys );
360 
361  // Now store the xform by identifier:
362  Identifier id;
363  if(!b3DModule) id = m_theSensor.getID();
364  else id = theSensor3D.getID();
365  m_DDmgr->addAlignableTransform(0,id,xform,modulephys);
366  }
367  }
368  //Add the TMT or other stave support
369  if (!m_sqliteReader && m_staveSupport) {
370  ladderPhys->add(new GeoTransform(m_staveSupport->transform()));
371  ladderPhys->add(m_staveSupport->getPhysVol());
372  }
373 
374 
376  {
380  double xOffset = m_gmt_mgr->PixelLadderServicesX();
381  // double yOffset = m_gmt_mgr->PixelLadderServicesY();
382  // int staveIndex = m_gmt_mgr->PixelStaveIndex(m_gmt_mgr->GetLD());
383 
384  // Bent stave half length = 0.5 * nModules * ModuleSize
385  double bentStaveHalfLength = 0.5 * double(m_gmt_mgr->PixelBentStaveNModule()) * m_gmt_mgr->PixelLadderModuleDeltaZ();
386 
387  // Create bent stave
388  GeoBox * shapeSupBent = new GeoBox(0.5*thickness, 0.5*width, bentStaveHalfLength);
389 
390  // std::string matName = m_gmt_mgr->getMaterialName("StaveSupportOuter", m_gmt_mgr->GetLD(), staveIndex);
391  // std::string matName = m_gmt_mgr->getMaterialName("StaveSupport", m_gmt_mgr->GetLD(), staveIndex);
392  // const GeoMaterial* materialSup = m_mat_mgr->getMaterialForVolume(matName,shapeSupBent->volume());
393  const GeoMaterial* materialSup = m_mat_mgr->getMaterial("pix::StaveSupportBase");
394 
395  double ang = m_gmt_mgr->PixelLadderBentStaveAngle() * Gaudi::Units::pi / 180.0;
396  double xst = xOffset - (bentStaveHalfLength * sin(ang));
397 
398  // Construct bent stave at negative z
399  GeoLogVol* logVolBentNeg = new GeoLogVol("StaveSupportBentNeg2",shapeSupBent,materialSup);
400  GeoPhysVol* physVolBentNeg = new GeoPhysVol(logVolBentNeg);
401  GeoTrf::RotateY3D rmNeg(ang);
402  double zstneg = -length/2.0 - (bentStaveHalfLength * cos(ang));
403  GeoTrf::Translation3D stavePosNeg(xst,0.,zstneg);
404  ladderPhys->add(new GeoTransform(GeoTrf::Transform3D(stavePosNeg*rmNeg)));
405  ladderPhys->add(physVolBentNeg);
406 
407  // COnstruct bent stave at positive z
408  GeoLogVol* logVolBentPos = new GeoLogVol("StaveSupportBentPos2",shapeSupBent,materialSup);
409  GeoPhysVol* physVolBentPos = new GeoPhysVol(logVolBentPos);
410  GeoTrf::RotateY3D rmPos(-ang);
411  double zstpos = length/2.0 + (bentStaveHalfLength * cos(ang));
412  GeoTrf::Translation3D stavePosPos(xst,0.,zstpos);
413  ladderPhys->add(new GeoTransform(GeoTrf::Transform3D(stavePosPos*rmPos)));
414  ladderPhys->add(physVolBentPos);
415  }
416 
417 
418  return ladderPhys;
419 }
420 
421 
423  //
424  // The module thickness is copied from the module. Should improve this
425  // to avoid duplication of code
426  //
427 
428  const double safety = 0.01*Gaudi::Units::mm;
429  double clearance = m_gmt_mgr->PixelLadderThicknessClearance();
430  clearance = std::max(clearance, safety);
431 
432  double thickn = 0.5 * m_gmt_mgr->PixelBoardThickness() + m_gmt_mgr->PixelHybridThickness() + clearance;
433  double thickp = 0.5 * m_gmt_mgr->PixelBoardThickness() + m_gmt_mgr->PixelChipThickness() + m_gmt_mgr->PixelChipGap() + clearance;
434  double thick = std::max(thickn, thickp);
435 
437  double tiltThick = 0.5*length * sin(std::abs(m_gmt_mgr->PixelModuleAngle())) + thick * cos(m_gmt_mgr->PixelModuleAngle());
438 
439  // take into account stagger and tilt
440  //PixelModuleDrDistance can be -ve
441  double thick1 = std::max(thick + 0.5*m_gmt_mgr->PixelModuleDrDistance(), thick - 0.5*m_gmt_mgr->PixelModuleDrDistance());
442  double thick2 = tiltThick + m_gmt_mgr->PixelModuleStaggerDistance();
443 
444  thick = std::max(thick1,thick2);
445 
446  return 2*thick;
447 }
448 
449 
451  //
452  // The width is the maximum among the component widths
453  //
454  const double clearanceRphi = m_gmt_mgr->PixelLadderWidthClearance(); // From Grant : no clash with big pigtail part
455  double width = max( max(
459  //width += 5.8; // New DC3 ! to allow module movement
460  width += 2*clearanceRphi; // New DC3 ! to allow module movement
461  return width;
462 }
463 
464 
GeoPixelModule::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelModule.cxx:119
PixelGeometryManager::IBLStaveModuleGap
virtual double IBLStaveModuleGap()=0
GeoPixelLadder::m_thicknessP
double m_thicknessP
Definition: GeoPixelLadder.h:43
PixelGeometryManager::PixelChipThickness
virtual double PixelChipThickness(bool isModule3D=false)=0
PixelGeometryManager::PixelModuleShiftFlag
virtual double PixelModuleShiftFlag(int)=0
PixelGeometryManager::SetEta
virtual void SetEta(int eta)=0
GeoPixelLadder::m_theSensor
GeoPixelSiCrystal & m_theSensor
Definition: GeoPixelLadder.h:40
PixelGeometryManager::PixelLadderSupportLength
virtual double PixelLadderSupportLength()=0
PixelGeometryManager::PixelChipWidth
virtual double PixelChipWidth(bool isModule3D=false)=0
PixelGeometryManager
Definition: PixelGeometryManager.h:28
PixelGeometryManager::PixelModuleStaggerDistance
virtual double PixelModuleStaggerDistance()=0
PixelGeometryManager::msg
MsgStream & msg(MSG::Level lvl) const
Definition: PixelGeometryManager.h:611
PixelGeometryManager::PixelLadderThicknessClearance
virtual double PixelLadderThicknessClearance()=0
GeoPixelLadder::calcWidth
double calcWidth()
Definition: GeoPixelLadder.cxx:450
GeoPixelStaveSupport::computeStaveEnvelopShape
virtual GeoSimplePolygonBrep * computeStaveEnvelopShape(double)=0
GeoPixelLadder.h
GeoPixelLadder::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelLadder.cxx:161
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
GeoPixelLadder::m_theLadder
GeoIntrusivePtr< const GeoLogVol > m_theLadder
Definition: GeoPixelLadder.h:39
PixelGeometryManager::ibl
virtual bool ibl() const =0
PixelGeometryManager::PixelLadderServicesX
virtual double PixelLadderServicesX()=0
GeoPixelSiCrystal.h
GeoPixelStaveSupport::transform
virtual const GeoTrf::Transform3D & transform() const =0
PixelGeometryManager::msgLvl
bool msgLvl(MSG::Level lvl) const
Definition: PixelGeometryManager.h:614
PixelGeometryManager::PixelHybridWidth
virtual double PixelHybridWidth(bool isModule3D=false)=0
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
PixelGeometryManager::PixelChipGap
virtual double PixelChipGap(bool isModule3D=false)=0
GeoPixelLadder::GeoPixelLadder
GeoPixelLadder(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * >> mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * >> mapAX, GeoPixelSiCrystal &theSensor, GeoPixelStaveSupport *staveSupport)
Definition: GeoPixelLadder.cxx:30
GeoPixelStaveSupport::PixelN3DModule
virtual int PixelN3DModule() const =0
GeoVPixelFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: GeoVPixelFactory.h:48
GeoVPixelFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: GeoVPixelFactory.h:46
PixelGeometryManager::PixelHybridThickness
virtual double PixelHybridThickness(bool isModule3D=false)=0
GeoPixelLadder::m_width
double m_width
Definition: GeoPixelLadder.h:45
GeoPixelStaveSupport::getPhysVol
virtual GeoVPhysVol * getPhysVol()=0
GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: GeoVPixelFactory.h:45
pi
#define pi
Definition: TileMuonFitter.cxx:65
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
GeoVPixelFactory::m_mapFPV
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Definition: GeoVPixelFactory.h:47
PixelGeometryManager::PixelModuleEtaFromIndex
virtual int PixelModuleEtaFromIndex(int index)=0
PixelGeometryManager::PixelLadderModuleDeltaZ
virtual double PixelLadderModuleDeltaZ()=0
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
GeoPixelSiCrystal
Definition: GeoPixelSiCrystal.h:20
GeoPixelModule::ThicknessP
double ThicknessP()
Definition: GeoPixelModule.cxx:271
GeoPixelStaveSupport::PixelNModule
virtual int PixelNModule() const =0
PixelDetectorManager.h
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
PixelGeometryManager::PixelBoardThickness
virtual double PixelBoardThickness(bool isModule3D=false)=0
PixelGeometryManager::PixelLadderWidthClearance
virtual double PixelLadderWidthClearance()=0
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeometryManager::Eta
virtual int Eta()=0
PixelGeometryManager::IBLStaveMechanicalStaveOffset
virtual double IBLStaveMechanicalStaveOffset(bool isModule3D=false)=0
GeoPixelModule::Length
double Length()
Definition: GeoPixelModule.cxx:299
GeoPixelLadder::thickness
double thickness() const
Definition: GeoPixelLadder.h:29
PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
PixelGeometryManager::PixelChipLength
virtual double PixelChipLength(bool isModule3D=false)=0
InDetDD::PixelDetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
Definition: PixelDetectorManager.cxx:262
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
PixelGeometryManager::PixelStaveLayout
virtual int PixelStaveLayout()=0
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
PixelGeometryManager::PixelModuleStaggerSign
virtual int PixelModuleStaggerSign(int etaModule)=0
PixelGeometryManager::PixelLadderLength
virtual double PixelLadderLength()=0
PixelGeometryManager::IBLStaveModuleNumber_AllPlanar
virtual int IBLStaveModuleNumber_AllPlanar()=0
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
PixelGeometryManager::PixelLadderThickness
virtual double PixelLadderThickness()=0
GeoPixelLadder::m_staveSupport
GeoPixelStaveSupport * m_staveSupport
Definition: GeoPixelLadder.h:41
PixelGeometryManager::PixelModuleIndexFromEta
virtual int PixelModuleIndexFromEta(int etaModule)=0
PixelGeometryManager::PixelHybridLength
virtual double PixelHybridLength(bool isModule3D=false)=0
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
GeoPixelModule.h
PixelGeometryManager::PixelLadderSupportWidth
virtual double PixelLadderSupportWidth()=0
GeoPixelStaveSupport::thicknessN
virtual double thicknessN() const =0
PixelGeometryManager::PixelBoardLength
virtual double PixelBoardLength(bool isModule3D=false)=0
PixelGeometryManager::PixelLadderSupportThickness
virtual double PixelLadderSupportThickness()=0
GeoPixelLadder::calcThickness
double calcThickness()
Definition: GeoPixelLadder.cxx:422
PixelGeometryManager::PixelModuleAngleSign
virtual double PixelModuleAngleSign(int)=0
GeoPixelLadder::width
double width() const
Definition: GeoPixelLadder.h:32
DEBUG
#define DEBUG
Definition: page_access.h:11
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
GeoPixelStaveSupport
Definition: GeoPixelStaveSupport.h:14
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
PixelGeometryManager::PixelBentStaveNModule
virtual int PixelBentStaveNModule()=0
GeoPixelModule
Definition: GeoPixelModule.h:14
PixelGeometryManager::PixelModuleDrDistance
virtual double PixelModuleDrDistance()=0
GeoPixelLadder::m_thickness
double m_thickness
Definition: GeoPixelLadder.h:42
PixelGeometryManager::PixelBoardWidth
virtual double PixelBoardWidth(bool isModule3D=false)=0
PixelGeometryManager::PixelLadderBentStaveAngle
virtual double PixelLadderBentStaveAngle()=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
InDetMaterialManager::getMaterial
const GeoMaterial * getMaterial(const std::string &materialName)
Get material. First looks for locally defined material and if not found looks in GeoModel material ma...
Definition: InDetMaterialManager.cxx:96
GeoPixelSiCrystal::getID
Identifier getID()
Definition: GeoPixelSiCrystal.h:29
GeoPixelLadder::m_thicknessN
double m_thicknessN
Definition: GeoPixelLadder.h:44
GeoPixelStaveSupport::PixelNPlanarModule
virtual int PixelNPlanarModule() const =0
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
PixelGeometryManager::PixelModuleAngle
virtual double PixelModuleAngle()=0
GeoPixelStaveSupport::thicknessP
virtual double thicknessP() const =0
GeoPixelStaveSupport.h
PixelGeometryManager::PixelModuleZPosition
virtual double PixelModuleZPosition(int)=0
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeometryManager::Phi
virtual int Phi()=0
Identifier
Definition: IdentifierFieldParser.cxx:14