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