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