ATLAS Offline Software
GeoPixelStaveRingServices.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 
6 // Build detailed stave support : face plate + carbon foam + cable flex + cooling pipe + end blocks
7 // This is built one time per layer.
8 
10 
11 #include "GeoPixelStaveRing.h"
12 
13 #include "GeoModelKernel/GeoBox.h"
14 #include "GeoModelKernel/GeoTube.h"
15 #include "GeoModelKernel/GeoSimplePolygonBrep.h"
16 #include "GeoModelKernel/GeoLogVol.h"
17 #include "GeoModelKernel/GeoPhysVol.h"
18 #include "GeoModelKernel/GeoMaterial.h"
19 #include "GeoModelKernel/GeoNameTag.h"
20 
21 #include "GeoModelKernel/GeoTransform.h"
22 #include "GaudiKernel/SystemOfUnits.h"
23 
24 #include <algorithm>
25 using std::max;
26 
29  GeoModelIO::ReadGeoModel* sqliteReader,
30  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
31  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
32  GeoPixelLadder& ladder,
33  GeoPixelStaveSupport& staveSupport)
34  : GeoVPixelFactory (ddmgr, mgr, sqliteReader, mapFPV, mapAX)
35  , m_ladder(ladder)
36  , m_staveSupport(staveSupport)
37  , m_supportPhysA(nullptr)
38  , m_supportPhysC(nullptr)
39  , m_supportMidRing(nullptr)
40  , m_xformSupportA(nullptr)
41  , m_xformSupportC(nullptr)
42  , m_xformSupportMidRing(nullptr)
43 {
44 }
45 
47 {
48 
49  m_gmt_mgr->msg(MSG::INFO) <<"Build IBL stave ring services"<<endmsg;
50 
51  if(m_sqliteReader) {
53  staveRing.SetParametersAndBuild("Brl0A_StaveRing","AC");
54  staveRing.SetParametersAndBuild("Brl0C_StaveRing","AC");
55  return nullptr;
56  }
57 
58  double layerRadius = m_gmt_mgr->PixelLayerRadius();
59  double ladderTilt = m_gmt_mgr->PixelLadderTilt();
60  int nSectors = m_gmt_mgr->NPixelSectors();
61 
62  double ladderHalfThickN = m_ladder.thicknessN();
63  double ladderHalfThickP = m_ladder.thicknessP();
64  double safetyMargin = 0.001*Gaudi::Units::mm;
65 
66  // Get endblock from m_staveSupport
67  GeoPhysVol* endblockA=dynamic_cast<GeoPhysVol*>(m_staveSupport.getEndblockEnvelopShape(2));
68  GeoPhysVol* endblockC=dynamic_cast<GeoPhysVol*>(m_staveSupport.getEndblockEnvelopShape(-2));
69  double endblockZpos=m_staveSupport.getEndblockZpos();
70  double serviceZpos=m_staveSupport.getServiceZpos();
71  double endblockLength=m_staveSupport.getEndblockLength();
72  GeoPhysVol* endblockFlex=dynamic_cast<GeoPhysVol*>(m_staveSupport.getEndblockEnvelopShape(1));
73  GeoTransform* endblockFlexTrf=m_staveSupport.getEndblockEnvelopShapeTrf(1);
74  GeoPhysVol* serviceCoolPipe=dynamic_cast<GeoPhysVol*>(m_staveSupport.getEndblockEnvelopShape(3));
75  GeoTransform* serviceCoolPipeTrfA=m_staveSupport.getEndblockEnvelopShapeTrf(2);
76  GeoTransform* serviceCoolPipeTrfC=m_staveSupport.getEndblockEnvelopShapeTrf(-2);
77  const GeoTrf::Transform3D ladderLocalTrf=m_staveSupport.transform();
78  double dogLegStaveLength=17.87;
79  double halfSupportLength=endblockLength*0.5+dogLegStaveLength*0.5;
80 
81  m_gmt_mgr->msg(MSG::DEBUG)<<"IBL EOS : "<<endblockZpos<<" "<<serviceZpos<<" "<<endblockLength<<endmsg;
82  if((!endblockA) || (!endblockC) || (!endblockFlex) || (!serviceCoolPipe))
83  {
84  m_gmt_mgr->msg(MSG::ERROR) <<"dynamic_cast failure in "<<__FILE__<< ":"<< __LINE__<<endmsg;
85  std::abort();
86  }
87 
88  // Define staveRing for side A
90  std::ostringstream lnameA;
91  lnameA << "Brl0A_StaveRing";
92  GeoVPhysVol* ringphysA = staveRing.SetParametersAndBuild(lnameA.str(),"AC");
93  GeoNameTag *tagA = new GeoNameTag(lnameA.str());
94 
95  // Define staveRing for side C
96  std::ostringstream lnameC;
97  lnameC << "Brl0C_StaveRing";
98  GeoVPhysVol* ringphysC = staveRing.SetParametersAndBuild(lnameC.str(),"AC");
99  GeoNameTag *tagC = new GeoNameTag(lnameC.str());
100 
101  // Get assembly min and max radius
102  double innerRadius = staveRing.GetInnerRadius()-safetyMargin;
103 
104  double zmin = serviceZpos-(endblockLength*0.5+dogLegStaveLength*0.5);
105  double zmax = serviceZpos+(endblockLength*0.5+dogLegStaveLength*0.5);
106  double outerRadius = m_gmt_mgr->IBLServiceGetMinRadialPosition("IST","simple",zmin, zmax);
107 
108  //layerRadius+ladderHalfThickP+m_staveSupport.thicknessP();
109 
110  m_gmt_mgr->msg(MSG::DEBUG)<<"Support assembly : "<<innerRadius<<" "<<outerRadius<<" ladderThickP "<<ladderHalfThickP<<" "<<ladderHalfThickN<<
111  " supportThickP "<<m_staveSupport.thicknessP()<<" "<<m_staveSupport.thicknessN()<<endmsg;
112 
113 
114  const GeoTube* supportShape = new GeoTube(innerRadius,outerRadius,endblockLength*0.5+dogLegStaveLength*0.5);
115  const GeoMaterial* ether = m_mat_mgr->getMaterial("special::Ether");
116  GeoLogVol* supportLogVol_A = new GeoLogVol("StaveRingAndEndblocks_A",supportShape,ether);
117  GeoLogVol* supportLogVol_C = new GeoLogVol("StaveRingAndEndblocks_C",supportShape,ether);
118 
119  // GeoPhysVol *supportPhysA = new GeoPhysVol(supportLogVol_A);
120  // GeoPhysVol *supportPhysC = new GeoPhysVol(supportLogVol_C);
121 
122  m_supportPhysA = new GeoPhysVol(supportLogVol_A);
123  m_supportPhysC = new GeoPhysVol(supportLogVol_C);
124 
125  if(nSectors==0){
126  m_gmt_mgr->msg(MSG::ERROR)<<"No phi sectors defined"<<std::endl;
127  }
128  else {
129 
130  double angle=360./nSectors*Gaudi::Units::deg;
131  GeoTrf::Transform3D transRadiusAndTilt = GeoTrf::TranslateX3D(layerRadius)*GeoTrf::RotateZ3D(ladderTilt);
132  double phiOfModuleZero = m_gmt_mgr->PhiOfModuleZero();
133 
134  if(m_gmt_mgr->PixelStaveAxe()==1)
135  {
136  // Point that defines the center of the cooling pipe
137  GeoTrf::Vector3D centerCoolingPipe = m_gmt_mgr->IBLStaveRotationAxis() ;
138 
139  // Transforms
140  GeoTrf::Transform3D staveTrf = GeoTrf::RotateZ3D(ladderTilt)*GeoTrf::Translate3D(-centerCoolingPipe.x(),-centerCoolingPipe.y(),-centerCoolingPipe.z());
141  double staveRadius = m_gmt_mgr->IBLStaveRadius() ;
142 
143  transRadiusAndTilt = GeoTrf::TranslateX3D(staveRadius)*staveTrf;
144  }
145 
146  for(int ii = 0; ii < nSectors; ii++) {
147  m_gmt_mgr->SetPhi(ii);
148 
149  double phiOfSector = phiOfModuleZero + ii*angle;
150 
151  // transform equiv RotZ(phiOfSector)*TransZ(layerRadius)*RotZ(tilt)
152  GeoTrf::Transform3D ladderTransform = GeoTrf::RotateZ3D(phiOfSector) * transRadiusAndTilt ;
153 
154  //
155  // Place endblock and endblock flex
156  //
157  std::ostringstream nameTag;
158  nameTag << "Endblock" << ii;
159  GeoNameTag * tag = new GeoNameTag(nameTag.str());
160  GeoTransform* xformA = new GeoTransform(ladderTransform*ladderLocalTrf*GeoTrf::TranslateZ3D(endblockZpos-serviceZpos-dogLegStaveLength*0.5));
161  m_supportPhysA->add(tag);
162  m_supportPhysA->add(xformA);
163  m_supportPhysA->add(endblockA);
164 
165  GeoTransform* xformC = new GeoTransform(ladderTransform*ladderLocalTrf*GeoTrf::TranslateZ3D(-endblockZpos+serviceZpos+dogLegStaveLength*0.5));
166  m_supportPhysC->add(tag);
167  m_supportPhysC->add(xformC);
168  m_supportPhysC->add(endblockC);
169 
170  //
171  // Add endblock flex section
172  //
173  std::ostringstream nameTagFlex;
174  nameTagFlex << "EndblockFlex" << ii;
175  GeoNameTag * tagFlex = new GeoNameTag(nameTagFlex.str());
176  GeoTransform* xformFlexA = new GeoTransform(ladderTransform*ladderLocalTrf*(endblockFlexTrf->getTransform())*GeoTrf::TranslateZ3D(-dogLegStaveLength*0.5));
177  GeoTransform* xformFlexB = new GeoTransform(ladderTransform*ladderLocalTrf*(endblockFlexTrf->getTransform())*GeoTrf::TranslateZ3D(dogLegStaveLength*0.5));
178 
179  m_supportPhysA->add(tagFlex);
180  m_supportPhysA->add(xformFlexA);
181  m_supportPhysA->add(endblockFlex);
182 
183  m_supportPhysC->add(tagFlex);
184  m_supportPhysC->add(xformFlexB);
185  m_supportPhysC->add(endblockFlex);
186 
187  //
188  // Add cooling pipe service
189  //
190  if(serviceCoolPipe){
191  std::ostringstream nameTagPipe;
192  nameTagPipe << "ServicePipe" << ii;
193  GeoNameTag * tagPipe = new GeoNameTag(nameTagPipe.str());
194  GeoTransform* xformPipeA = new GeoTransform(ladderTransform*ladderLocalTrf*(serviceCoolPipeTrfA->getTransform())) ;
195  m_supportPhysA->add(tagPipe);
196  m_supportPhysA->add(xformPipeA);
197  m_supportPhysA->add(serviceCoolPipe);
198 
199  GeoTransform* xformPipeC = new GeoTransform(ladderTransform*ladderLocalTrf*(serviceCoolPipeTrfC->getTransform()));
200  m_supportPhysC->add(tagPipe);
201  m_supportPhysC->add(xformPipeC);
202  m_supportPhysC->add(serviceCoolPipe);
203 
204 // GeoTrf::Vector3D p=ladderTransform*ladderLocalTrf*(serviceCoolPipeTrfA->getTransform())*GeoTrf::Vector3D(0.,0.,0.);
205  // std::cout<<"Cooling pipe srv : "<<p.x()<<" "<<p.y()<<" "<<p.z();
206  // std::cout<<" r : "<<sqrt(p.x()*p.x()+p.y()*p.y())<<" ";
207  // std::cout<<" ang : "<<acos(p.x()/sqrt(p.x()*p.x()+p.y()*p.y()))*180./M_PI<<" ";
208  // std::cout<<std::endl;
209 
210 
211  //
212  // flex dogleg
213  //
214 
216  double eoStave=halfSupportLength-dogLegStaveLength;
217 
218  double height1=m_gmt_mgr->IBLFlexDoglegHeight(1);
219  double height2=m_gmt_mgr->IBLFlexDoglegHeight(2);
221 
222  double alpha1=atan(height1/(length*part1));
223  double alpha2=atan(height2/(length*(1.-part1)));
224 
225  double dimX_lin=length*part1;
226  double dimX=dimX_lin/cos(alpha1)-.15;
227  double dimY=m_gmt_mgr->IBLStaveFlexWidth();
228  double dimZ=m_gmt_mgr->IBLStaveFlexBaseThickness();
229  double angle=90.*Gaudi::Units::deg-alpha1; //90.-27.99;
230  double delta=m_gmt_mgr->IBLFlexDoglegDY();
231  double trX=-dimX_lin*tan(alpha1)*0.5; //-3.28;
232  double trZ=eoStave+dimX_lin*0.5;
233 
234  std::vector<double> xShape, yShape;
235  xShape.push_back(dimX*0.5); yShape.push_back(dimY*0.5);
236  xShape.push_back(-dimX*0.5); yShape.push_back(dimY*0.5+delta);
237  xShape.push_back(-dimX*0.5); yShape.push_back(-dimY*0.5+delta);
238  xShape.push_back(dimX*0.5); yShape.push_back(-dimY*0.5);
239  GeoSimplePolygonBrep* tmp_shape = new GeoSimplePolygonBrep(dimZ*0.5);
240  for(unsigned int iPt=0; iPt<xShape.size(); iPt++) tmp_shape->addVertex(xShape[iPt],yShape[iPt]);
241 
242 
243  // GeoPara * tmp_shape = new GeoPara(0.47,5.5,9.,0.*Gaudi::Units::deg,55.*Gaudi::Units::deg,0.);
244  std::string flexMatName = m_gmt_mgr->IBLFlexMaterial(1,"doglegA");
245  const GeoMaterial* tmp_material = m_mat_mgr->getMaterial(flexMatName);
246  GeoLogVol* tmp_logVol = new GeoLogVol("FlexDogLeg1",tmp_shape,tmp_material);
247  GeoPhysVol * tmp_logVolPV = new GeoPhysVol(tmp_logVol);
248  GeoNameTag* tmp_tag = new GeoNameTag("FlexDogLeg1");
249  GeoTrf::Transform3D trfGblA=ladderTransform*ladderLocalTrf*GeoTrf::TranslateX3D(trX)*GeoTrf::TranslateZ3D(trZ)*(endblockFlexTrf->getTransform())*GeoTrf::RotateY3D(angle);
250  GeoTransform* tmp_xformA = new GeoTransform(trfGblA);
251 
252  m_supportPhysA->add(tmp_tag);
253  m_supportPhysA->add(tmp_xformA);
254  m_supportPhysA->add(tmp_logVolPV);
255 
256  trX=-dimX_lin*tan(alpha1)*0.5; //-3.28;
257  trZ=-(eoStave+dimX_lin*0.5);
258  GeoTrf::Transform3D trfGblC=ladderTransform*ladderLocalTrf*GeoTrf::TranslateX3D(trX)*GeoTrf::TranslateZ3D(trZ)*(endblockFlexTrf->getTransform())*GeoTrf::RotateY3D(-angle);
259  GeoTransform* tmp_xformC = new GeoTransform(trfGblC);
260 
261  m_supportPhysC->add(tmp_tag);
262  m_supportPhysC->add(tmp_xformC);
263  m_supportPhysC->add(tmp_logVolPV);
264 
265  //
266  // flex : from dogleg to longitudinal
267  //
268  double dimX2_lin=length*(1.-part1);
269  double dimX2=dimX2_lin/cos(alpha2)-.15;
270  double dimY2=m_gmt_mgr->IBLStaveFlexWidth();
271  double trX2=trX*2.-dimX2_lin*tan(alpha2)*0.5; //-3.28;
272  double trZ2=eoStave+dimX_lin+dimX2_lin*0.5;
273  xShape.clear(); yShape.clear();
274  angle=90.*Gaudi::Units::deg-alpha2;
275  xShape.push_back(dimX2*0.5); yShape.push_back(dimY2*0.5);
276  xShape.push_back(-dimX2*0.5); yShape.push_back(dimY2*0.5);
277  xShape.push_back(-dimX2*0.5); yShape.push_back(-dimY2*0.5);
278  xShape.push_back(dimX2*0.5); yShape.push_back(-dimY2*0.5);
279  GeoSimplePolygonBrep* tmp2_shape = new GeoSimplePolygonBrep(dimZ*0.5);
280  for(unsigned int iPt=0; iPt<xShape.size(); iPt++) tmp2_shape->addVertex(xShape[iPt],yShape[iPt]);
281 
282  const GeoMaterial* tmp2_material = m_mat_mgr->getMaterial(flexMatName);
283  GeoLogVol* tmp2_logVol = new GeoLogVol("FlexDogLeg2",tmp2_shape,tmp2_material);
284  GeoPhysVol * tmp2_logVolPV = new GeoPhysVol(tmp2_logVol);
285  GeoNameTag* tmp2_tag = new GeoNameTag("FlexDogLeg2");
286 
287  GeoTransform* tmp2_xformA = new GeoTransform(ladderTransform*ladderLocalTrf*GeoTrf::TranslateX3D(trX2)*GeoTrf::TranslateZ3D(trZ2)*(endblockFlexTrf->getTransform())*GeoTrf::RotateY3D(angle)*GeoTrf::TranslateY3D(delta*.75));
288  m_supportPhysA->add(tmp2_tag);
289  m_supportPhysA->add(tmp2_xformA);
290  m_supportPhysA->add(tmp2_logVolPV);
291 
292  trZ2=-(eoStave+dimX_lin+dimX2_lin*0.5);
293  GeoTransform* tmp2_xformC = new GeoTransform(ladderTransform*ladderLocalTrf*GeoTrf::TranslateX3D(trX2)*GeoTrf::TranslateZ3D(trZ2)*(endblockFlexTrf->getTransform())*GeoTrf::RotateY3D(-angle)*GeoTrf::TranslateY3D(delta*.75));
294  m_supportPhysC->add(tmp2_tag);
295  m_supportPhysC->add(tmp2_xformC);
296  m_supportPhysC->add(tmp2_logVolPV);
297  }
298  }
299  }
300 
301  // IBL layer shift ( 2mm shift issue )
302  double layerZshift = m_gmt_mgr->PixelLayerGlobalShift();
303 
304  GeoTrf::Translate3D ring_posA(0.0,0.0,staveRing.GetPositionAlongZAxis()-serviceZpos-dogLegStaveLength*0.5+layerZshift);
305  GeoTransform* xformA = new GeoTransform(ring_posA);
306  m_supportPhysA->add(tagA);
307  m_supportPhysA->add(xformA);
308  m_supportPhysA->add(ringphysA);
309 
310  GeoTrf::Translate3D ring_posC(0.0,0.0,-staveRing.GetPositionAlongZAxis()+serviceZpos+dogLegStaveLength*0.5-layerZshift);
311  GeoTransform* xformC = new GeoTransform(ring_posC);
312  m_supportPhysC->add(tagC);
313  m_supportPhysC->add(xformC);
314  m_supportPhysC->add(ringphysC);
315 
316  m_gmt_mgr->msg(MSG::DEBUG)<<"IBL EOS : zpos "<<serviceZpos<<endmsg;
317  GeoTrf::Transform3D supportTrfA = GeoTrf::TranslateZ3D(serviceZpos+dogLegStaveLength*0.5+layerZshift);
318  m_xformSupportA = new GeoTransform(supportTrfA);
319 
320  GeoTrf::Transform3D supportTrfC = GeoTrf::TranslateZ3D(-serviceZpos-dogLegStaveLength*0.5+layerZshift);
321  m_xformSupportC = new GeoTransform(supportTrfC);
322 
323  std::ostringstream lnameM;
324  lnameM << "Brl0M_StaveRing";
325  m_supportMidRing = staveRing.SetParametersAndBuild(lnameM.str(),"Mid");
326  GeoTrf::Translate3D ring_posM(0.0,0.0,0.0+layerZshift);
327  m_xformSupportMidRing = new GeoTransform(ring_posM);
328 
329 
330  return nullptr;
331 
332 }
PixelGeometryManager::IBLFlexDoglegDY
virtual double IBLFlexDoglegDY()=0
PixelGeometryManager::PixelLayerGlobalShift
virtual double PixelLayerGlobalShift()=0
GeoPixelStaveSupport::getEndblockEnvelopShape
virtual GeoVPhysVol * getEndblockEnvelopShape(int)=0
max
#define max(a, b)
Definition: cfImp.cxx:41
PixelGeometryManager::IBLFlexDoglegRatio
virtual double IBLFlexDoglegRatio()=0
PixelGeometryManager
Definition: PixelGeometryManager.h:28
PixelGeometryManager::msg
MsgStream & msg(MSG::Level lvl) const
Definition: PixelGeometryManager.h:611
PixelAthClusterMonAlgCfg.zmin
zmin
Definition: PixelAthClusterMonAlgCfg.py:176
GeoPixelStaveRingServices::m_xformSupportC
GeoNodePtr< GeoTransform > m_xformSupportC
Definition: GeoPixelStaveRingServices.h:49
GeoPixelStaveSupport::transform
virtual const GeoTrf::Transform3D & transform() const =0
GeoPixelStaveRing::SetParametersAndBuild
GeoVPhysVol * SetParametersAndBuild(const std::string &, const std::string &)
Definition: GeoPixelStaveRing.cxx:41
GeoPixelLadder::thicknessN
double thicknessN() const
Definition: GeoPixelLadder.h:31
GeoPixelStaveRing::GetPositionAlongZAxis
double GetPositionAlongZAxis() const
Definition: GeoPixelStaveRing.h:21
deg
#define deg
Definition: SbPolyhedron.cxx:17
GeoPixelStaveRing.h
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
PixelGeometryManager::IBLStaveFlexBaseThickness
virtual double IBLStaveFlexBaseThickness()=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
GeoPixelLadder
Definition: GeoPixelLadder.h:16
PixelGeometryManager::IBLStaveRotationAxis
virtual GeoTrf::Vector3D IBLStaveRotationAxis()=0
GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: GeoVPixelFactory.h:45
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
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::NPixelSectors
virtual int NPixelSectors()=0
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
part1
Definition: part1.py:1
GeoPixelStaveRingServices::m_ladder
GeoPixelLadder & m_ladder
Definition: GeoPixelStaveRingServices.h:41
GeoPixelStaveRingServices::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelStaveRingServices.cxx:46
GeoPixelStaveRingServices.h
GeoPixelStaveRingServices::m_supportPhysA
GeoNodePtr< GeoPhysVol > m_supportPhysA
Definition: GeoPixelStaveRingServices.h:44
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::PixelLadderTilt
virtual double PixelLadderTilt()=0
PixelGeometryManager::IBLStaveRadius
virtual double IBLStaveRadius()=0
PixelGeometryManager::IBLFlexDoglegLength
virtual double IBLFlexDoglegLength()=0
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeometryManager::SetPhi
virtual void SetPhi(int phi)=0
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:176
GeoPixelStaveRing
Definition: GeoPixelStaveRing.h:10
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
GeoPixelStaveRingServices::m_staveSupport
GeoPixelStaveSupport & m_staveSupport
Definition: GeoPixelStaveRingServices.h:42
GeoPixelStaveRing::GetInnerRadius
double GetInnerRadius() const
Definition: GeoPixelStaveRing.h:23
PixelGeometryManager::IBLFlexDoglegHeight
virtual double IBLFlexDoglegHeight(int iHeight)=0
GeoPixelStaveSupport::getServiceZpos
virtual double getServiceZpos() const =0
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
PixelGeometryManager::PixelStaveAxe
virtual int PixelStaveAxe()=0
GeoPixelStaveRingServices::m_supportPhysC
GeoNodePtr< GeoPhysVol > m_supportPhysC
Definition: GeoPixelStaveRingServices.h:45
GeoPixelLadder::thicknessP
double thicknessP() const
Definition: GeoPixelLadder.h:30
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
GeoPixelStaveRingServices::m_xformSupportA
GeoNodePtr< GeoTransform > m_xformSupportA
Definition: GeoPixelStaveRingServices.h:48
GeoPixelStaveSupport::thicknessN
virtual double thicknessN() const =0
PixelGeometryManager::PhiOfModuleZero
virtual double PhiOfModuleZero()=0
DEBUG
#define DEBUG
Definition: page_access.h:11
GeoPixelStaveSupport
Definition: GeoPixelStaveSupport.h:14
PixelGeometryManager::PixelLayerRadius
virtual double PixelLayerRadius()=0
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
GeoPixelStaveRingServices::m_supportMidRing
GeoNodePtr< GeoVPhysVol > m_supportMidRing
Definition: GeoPixelStaveRingServices.h:46
PixelGeometryManager::IBLServiceGetMinRadialPosition
virtual double IBLServiceGetMinRadialPosition(const std::string &srvName, const std::string &srvType, double srvZmin, double srvZmax)=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
GeoPixelStaveSupport::getEndblockZpos
virtual double getEndblockZpos() const =0
GeoPixelStaveRingServices::GeoPixelStaveRingServices
GeoPixelStaveRingServices(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, GeoPixelLadder &ladder, GeoPixelStaveSupport &staveSupport)
Definition: GeoPixelStaveRingServices.cxx:27
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
PixelGeometryManager::IBLFlexMaterial
virtual std::string IBLFlexMaterial(int iPos, const std::string &flexType)=0
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
PixelGeometryManager::IBLStaveFlexWidth
virtual double IBLStaveFlexWidth()=0
GeoPixelStaveSupport::getEndblockLength
virtual double getEndblockLength() const =0
GeoPixelStaveSupport::thicknessP
virtual double thicknessP() const =0
GeoPixelStaveRingServices::m_xformSupportMidRing
GeoNodePtr< GeoTransform > m_xformSupportMidRing
Definition: GeoPixelStaveRingServices.h:50
GeoPixelStaveSupport::getEndblockEnvelopShapeTrf
virtual GeoTransform * getEndblockEnvelopShapeTrf(int)=0