ATLAS Offline Software
GeoPixelLadderServices.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 // This class builds the Ladder services (Omega + Al tube + glue + part of pigtail + connector)
7 //
8 //
10 #include "GeoPixelFluid.h"
11 #include "GeoPixelCable.h"
12 #include "GeoModelKernel/GeoTubs.h"
13 #include "GeoModelKernel/GeoBox.h"
14 #include "GeoModelKernel/GeoPara.h"
15 #include "GeoModelKernel/GeoLogVol.h"
16 #include "GeoModelKernel/GeoPhysVol.h"
17 #include "GeoModelKernel/GeoMaterial.h"
18 #include "GeoModelKernel/GeoTransform.h"
19 #include "GeoModelKernel/GeoShapeShift.h"
20 #include "GeoModelKernel/GeoShapeUnion.h"
21 #include "GaudiKernel/PhysicalConstants.h"
22 
23 #include <cmath>
24 #include <vector>
25 
28  GeoModelIO::ReadGeoModel* sqliteReader,
29  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
30  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
31  int ladderType)
32  : GeoVPixelFactory(m_DDmgr, mgr, sqliteReader, mapFPV, mapAX),
33  m_ladderType(ladderType)
34 {
35  //std::cout << "Building GeoPixelLadderServices with ladder type : " << ladderType << std::endl;
36  //
37  // Define the log volume in the constructor, so I do it only once.
38  //
39  // Length and thickness of the Omega are in the db
40  //
41  double halflength =0.5* m_gmt_mgr->PixelLadderLength()+m_epsilon;
42  //
43  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
44  //
45  //const GeoBox* ladderSvcBox = new GeoBox(thickness/2.,width/2.,halflength);
46  // Quick fix - we hardwire the numbers. Need to work out a way to extract this from the database numbers.
47  double safety = 0.01*Gaudi::Units::mm;
48  double xBase = 0;
49 
50  // ConnA: Part to fit Connector
51  // ConnC: Part to fit Cable
52 
53  double xOffsetConnA = xBase + m_gmt_mgr->PixelLadderCableOffsetX() - m_gmt_mgr->PixelLadderServicesX();
54  double xOffsetConnC = xOffsetConnA;
55 
56 
57  //double xMaxConnA = 1.250 * Gaudi::Units::cm + xOffsetConnA + safety;
58  // double xMaxConnC = 1.6575 * Gaudi::Units::cm + xOffsetConnC + safety;
59  // max offset is 12.5mm + 1/2 thickness of cables
60  // double xMaxConnA = 1.5075 * Gaudi::Units::cm + 0.5* 0.15*Gaudi::Units::cm + xOffsetConnA + safety;
61  double xMaxConnA = m_gmt_mgr->PixelConnectorPosX(1) + 0.5*m_gmt_mgr->PixelConnectorWidthX(1) + xOffsetConnA + safety;
62  double xMaxConnC = 1.25 * Gaudi::Units::cm + 0.5* 0.0125*Gaudi::Units::cm + xOffsetConnC + safety;
63  double xMaxOmegaBase = 0.055 * Gaudi::Units::cm + xBase + 1*Gaudi::Units::mm; // The 1 mm is just extra safety.
64  double yWidthConnA = 1.0 * Gaudi::Units::cm;
65  double yWidthConnC = 0.2 * Gaudi::Units::cm;
67  double yPosConnC = yPosConnA;
68  double xCenter = 0;
69  double xWidthOmegaBase = xMaxOmegaBase - xBase;
70  double xWidthConnA = xMaxConnA - xBase;
71  double xWidthConnC = xMaxConnC - xBase;
72  double yWidthOmega = 1.2*Gaudi::Units::cm + m_epsilon;
73 
74  const GeoBox* omegaBaseEnv = new GeoBox(0.5*xWidthOmegaBase, 0.5*yWidthOmega, halflength);
75  const GeoBox* connAEnv = new GeoBox(0.5*xWidthConnA, 0.5*yWidthConnA + safety, halflength);
76  const GeoBox* connCEnv = new GeoBox(0.5*xWidthConnC, 0.5*yWidthConnC + safety, halflength);
77  GeoTrf::Transform3D omegaBaseShift = GeoTrf::Translate3D(xBase + 0.5*xWidthOmegaBase - xCenter, 0., 0.);
78  GeoTrf::Transform3D connAShift = GeoTrf::Translate3D(xBase + 0.5*xWidthConnA - xCenter, yPosConnA, 0.);
79  GeoTrf::Transform3D connCShift = GeoTrf::Translate3D(xBase + 0.5*xWidthConnC - xCenter, yPosConnC, 0.);
80 
81  const GeoShape & ladderSvcShape = ((*omegaBaseEnv) << omegaBaseShift)
82  .add(*connAEnv << connAShift)
83  .add(*connCEnv << connCShift);
84 
85  m_ladderServicesLV = new GeoLogVol("LadderSvc",&ladderSvcShape,air);
86  // store coordinates of corners of envelope.
87  m_envelopeCornerA1 = GeoTrf::Vector3D(xMaxConnA - xCenter, yPosConnA + 0.5* yWidthConnA + safety, 0.);
88  m_envelopeCornerA2 = GeoTrf::Vector3D(xMaxConnA - xCenter, yPosConnA - 0.5* yWidthConnA + safety, 0.);
89  m_envelopeCornerC1 = GeoTrf::Vector3D(xMaxConnC - xCenter, yPosConnC + 0.5* yWidthConnC + safety, 0.);
90  m_envelopeCornerC2 = GeoTrf::Vector3D(xMaxConnC - xCenter, yPosConnC - 0.5* yWidthConnC + safety, 0.);
91 
92 
93  m_xOffset = xBase;
94  m_yOffset = 0;
95 
96 }
97 
98 
99 
100 
102  GeoPhysVol* ladderSvcPhys = new GeoPhysVol(m_ladderServicesLV);
103  //double thickness = m_gmt_mgr->PixelLadderThickness()+m_gmt_mgr->PixelCableThickness();
104  //double thickness = m_gmt_mgr->PixelLadderThickness() + m_gmt_mgr->PixelCableThickness() + 0.25*Gaudi::Units::cm; // plus 0.25 cm New DC3 ???
105  //double thickness = m_gmt_mgr->PixelLadderThickness()+ 6.5; // m_gmt_mgr->PixelCableThickness() was 0.4 cm, plus 0.25 cm New DC3
106  //
107  // The Glue
108  BuildGlue(ladderSvcPhys);
109 
110  // The aluminium tube
111  // Positioned at 0,0,0 relative to parent.
112  ladderSvcPhys->add(this->BuildAlTube());
113 
114  // The carbon-carbon Omega
115  // Positioned at 0,0,0 relative to parent.
116  ladderSvcPhys->add(this->BuildOmega());
117 
118  //
119  // Put the fluid/gaz mixture
120  //
122  double xpos = fluid.posX() + m_xOffset;
123  double ypos = fluid.posY() + m_yOffset;
124  double zpos = fluid.posZ();
125 
126  GeoVPhysVol* fluidPhys = fluid.Build();
127  GeoTransform* xform = new GeoTransform(GeoTrf::Translate3D(xpos,ypos,zpos));
128  ladderSvcPhys->add(xform);
129  ladderSvcPhys->add(fluidPhys);
130 
131  //
132  // Place Pigtail + connector
133  //
134  BuildPigtailAndConnector(ladderSvcPhys);
135 
136 
137  //
138  // Cables
139  //
141  for (int ii = 0; ii < cable.numElements(); ii++) {
142  cable.setElement(ii);
143  GeoVPhysVol* phys = cable.Build();
146  double zpos = cable.zpos();
147  GeoTransform* xform = new GeoTransform(GeoTrf::Translate3D(xpos,ypos,zpos));
148  ladderSvcPhys->add(xform);
149  ladderSvcPhys->add(phys);
150  }
151 
152  return ladderSvcPhys;
153 }
154 
156 
157  double xOffset = m_xOffset;
158  double yOffset = m_yOffset;
159  /*
160  double xUpperBend = xOffset + 2.9*Gaudi::Units::mm;
161  double yUpperBend = yOffset + 0;
162  double radUpperBend = 2.3*Gaudi::Units::mm;
163  double xLowerBend = xOffset + 0.9;
164  double yLowerBend = yOffset + 3.35*Gaudi::Units::mm;
165  double radLowerBend = 0.8*Gaudi::Units::mm;
166  double yStart= yOffset + (4.675+0.5*2.65)*Gaudi::Units::mm;
167  double yEnd = yOffset -yStart;
168  double thick = 0.3*Gaudi::Units::mm;
169  double length = 816*Gaudi::Units::mm;
170  double zOffset = 0;
171  */
172  double xUpperBend = xOffset + m_gmt_mgr->PixelOmegaUpperBendX();
173  double yUpperBend = yOffset + m_gmt_mgr->PixelOmegaUpperBendY();
174  double radUpperBend = m_gmt_mgr->PixelOmegaUpperBendRadius();
175  double xLowerBend = xOffset + m_gmt_mgr->PixelOmegaLowerBendX();
176  double yLowerBend = yOffset + m_gmt_mgr->PixelOmegaLowerBendY();
177  double radLowerBend = m_gmt_mgr->PixelOmegaLowerBendRadius();
178  double yStart= yOffset + m_gmt_mgr->PixelOmegaStartY();
179  double yEnd = yOffset + m_gmt_mgr->PixelOmegaEndY();
180  double thick = m_gmt_mgr->PixelOmegaWallThickness();
181  double length = m_gmt_mgr->PixelOmegaLength();
182  double zOffset = 0;
183 
184  double sepX = (xUpperBend - xLowerBend);
185  double sepY = (yUpperBend - yLowerBend);
186  double sep2 = sepX*sepX+sepY*sepY;
187  double sep = sqrt(sep2);
188  double radDist = radUpperBend+radLowerBend-thick;
189  double alpha = atan(-sepY/sepX) - asin(radDist/sep);
190  double upperStraightLength = sqrt(sep2 - radDist*radDist);
191  double xLowerStraight = xLowerBend - (radLowerBend-0.5*thick)*sin(alpha);
192  double yLowerStraight = yLowerBend - (radLowerBend-0.5*thick)*cos(alpha);
193  double xUpperStraight = xUpperBend + (radUpperBend-0.5*thick)*sin(alpha);
194  double yUpperStraight = yUpperBend + (radUpperBend-0.5*thick)*cos(alpha);
195 
196 
197  // Tube sector for upper bend
198  GeoTubs * upperBendShape = new GeoTubs(radUpperBend - thick, radUpperBend, 0.5* length, alpha-0.5*Gaudi::Units::pi, Gaudi::Units::pi - 2*alpha);
199 
200  // Tube sector for lower bend (+y)
201  GeoTubs * lowerBendShapeP = new GeoTubs(radLowerBend - thick, radLowerBend, 0.5* length, Gaudi::Units::pi, 0.5*Gaudi::Units::pi-alpha);
202 
203  // Tube sector for lower bend (-y)
204  GeoTubs * lowerBendShapeM = new GeoTubs(radLowerBend - thick, radLowerBend, 0.5* length, 0.5*Gaudi::Units::pi + alpha, 0.5*Gaudi::Units::pi-alpha);
205 
206  // Lower Straight section (+y)
207  GeoBox * lowerStraightBoxP = new GeoBox(0.5*thick, 0.5*(yStart - yLowerBend), 0.5*length);
208 
209  // Lower Straight section (-y)
210  GeoBox * lowerStraightBoxM = new GeoBox(0.5*thick, 0.5*(-yLowerBend - yEnd), 0.5*length);
211 
212  // Upper Straight section (+-y)
213  GeoBox * upperStraightBox = new GeoBox(0.5*thick, 0.5*upperStraightLength, 0.5*length);
214 
215  // Put it all together
216  const GeoShape & omegaShape =
217  (*lowerStraightBoxP << GeoTrf::Translate3D(xLowerBend-radLowerBend+0.5*thick,0.5*(yLowerBend+yStart),zOffset) )
218  .add(*lowerBendShapeP << GeoTrf::Translate3D(xLowerBend,yLowerBend,zOffset) )
219  .add(*upperStraightBox << GeoTrf::Translate3D(0.5*(xLowerStraight+xUpperStraight),0.5*(yLowerStraight+yUpperStraight),zOffset)*GeoTrf::RotateZ3D(0.5*Gaudi::Units::pi-alpha) )
220  .add(*upperBendShape << GeoTrf::Translate3D(xUpperBend,yUpperBend,zOffset) )
221  .add(*upperStraightBox << GeoTrf::Translate3D(0.5*(xLowerStraight+xUpperStraight),-0.5*(yLowerStraight+yUpperStraight),zOffset)*GeoTrf::RotateZ3D(0.5*Gaudi::Units::pi+alpha) )
222  .add(*lowerBendShapeM << GeoTrf::Translate3D(xLowerBend,-yLowerBend,zOffset) )
223  .add(*lowerStraightBoxM << GeoTrf::Translate3D(xLowerBend-radLowerBend+0.5*thick,0.5*(-yLowerBend+yEnd),zOffset) );
224 
225  double totVolume =
226  lowerStraightBoxP->volume()
227  + lowerBendShapeP->volume()
228  + 2*upperStraightBox->volume()
229  + upperBendShape->volume()
230  + lowerBendShapeM->volume()
231  + lowerStraightBoxM->volume();
232 
233  std::string matName = m_gmt_mgr->getMaterialName("Omega", m_gmt_mgr->GetLD());
234  const GeoMaterial* omegaMat = m_mat_mgr->getMaterialForVolume(matName,totVolume);
235  GeoLogVol* omegaLV = new GeoLogVol("Omega",&omegaShape,omegaMat);
236  return new GeoPhysVol(omegaLV);
237 
238 }
239 
241 
242  double xOffset = m_xOffset;
243  double yOffset = m_yOffset;
244 
245  /*
246  double xUpperBend = xOffset + 2.7*Gaudi::Units::mm;
247  double yUpperBend = yOffset;
248  double radUpperBend = 2.0*Gaudi::Units::mm;
249  double xLowerBend = xOffset + 0.55;
250  double yLowerBend = yOffset+1.925*Gaudi::Units::mm;
251  double radLowerBend = 0.5*Gaudi::Units::mm;
252  double thick = 0.2*Gaudi::Units::mm;
253  double length = 838*Gaudi::Units::mm;
254  double zOffset = 0;
255  */
256 
257  double xUpperBend = xOffset + m_gmt_mgr->PixelAlTubeUpperBendX();
258  double yUpperBend = yOffset + m_gmt_mgr->PixelAlTubeUpperBendY();
259  double radUpperBend = m_gmt_mgr->PixelAlTubeUpperBendRadius();
260  double xLowerBend = xOffset + m_gmt_mgr->PixelAlTubeLowerBendX();
261  double yLowerBend = yOffset + m_gmt_mgr->PixelAlTubeLowerBendY();
262  double radLowerBend = m_gmt_mgr->PixelAlTubeLowerBendRadius();
263  double thick = m_gmt_mgr->PixelAlTubeWallThickness();
264  double length = m_gmt_mgr->PixelAlTubeLength();
265  double zOffset = 0;
266 
267  double sepX = (xUpperBend - xLowerBend);
268  double sepY = (yUpperBend - yLowerBend);
269  double sep2 = sepX*sepX+sepY*sepY;
270  double sep = sqrt(sep2);
271  double radDist = radUpperBend-radLowerBend;
272  double alpha = atan(-sepY/sepX) - asin(radDist/sep);
273  double upperStraightLength = sqrt(sep2 - radDist*radDist);
274  double xLowerStraight = xLowerBend + (radLowerBend-0.5*thick)*sin(alpha);
275  double yLowerStraight = yLowerBend + (radLowerBend-0.5*thick)*cos(alpha);
276  double xUpperStraight = xUpperBend + (radUpperBend-0.5*thick)*sin(alpha);
277  double yUpperStraight = yUpperBend + (radUpperBend-0.5*thick)*cos(alpha);
278 
279 
280  // Tube sector for upper bend
281  GeoTubs * upperBendShape = new GeoTubs(radUpperBend - thick, radUpperBend, 0.5* length, alpha-0.5*Gaudi::Units::pi, Gaudi::Units::pi - 2*alpha);
282 
283  // Tube sector for lower bend (+y)
284  GeoTubs * lowerBendShapeP = new GeoTubs(radLowerBend - thick, radLowerBend, 0.5* length, 0.5*Gaudi::Units::pi-alpha, 0.5*Gaudi::Units::pi+alpha);
285 
286  // Tube sector for lower bend (-y)
287  GeoTubs * lowerBendShapeM = new GeoTubs(radLowerBend - thick, radLowerBend, 0.5* length, Gaudi::Units::pi, 0.5*Gaudi::Units::pi+alpha);
288 
289  // Lower Straight section
290  GeoBox * lowerStraightBox = new GeoBox(0.5*thick, yLowerBend, 0.5*length);
291 
292  // Upper Straight section (+-y)
293  GeoBox * upperStraightBox = new GeoBox(0.5*thick, 0.5*upperStraightLength, 0.5*length);
294 
295  // Put it all together
296  const GeoShape & alTubeShape =
297  (*lowerStraightBox << GeoTrf::Translate3D(xLowerBend-radLowerBend+0.5*thick,0,zOffset) )
298  .add(*lowerBendShapeP << GeoTrf::Translate3D(xLowerBend,yLowerBend,zOffset) )
299  .add(*upperStraightBox << GeoTrf::Translate3D(0.5*(xLowerStraight+xUpperStraight),0.5*(yLowerStraight+yUpperStraight),zOffset)*GeoTrf::RotateZ3D(0.5*Gaudi::Units::pi-alpha) )
300  .add(*upperBendShape << GeoTrf::Translate3D(xUpperBend,yUpperBend,zOffset) )
301  .add(*upperStraightBox << GeoTrf::Translate3D(0.5*(xLowerStraight+xUpperStraight),-0.5*(yLowerStraight+yUpperStraight),zOffset)*GeoTrf::RotateZ3D(0.5*Gaudi::Units::pi+alpha) )
302  .add(*lowerBendShapeM << GeoTrf::Translate3D(xLowerBend,-yLowerBend,zOffset) );
303 
304  double totVolume =
305  lowerStraightBox->volume()
306  + lowerBendShapeP->volume()
307  + 2*upperStraightBox->volume()
308  + upperBendShape->volume()
309  + lowerBendShapeM->volume();
310 
311 
312  std::string matName = m_gmt_mgr->getMaterialName("AlTube", m_gmt_mgr->GetLD());
313  const GeoMaterial* alMat = m_mat_mgr->getMaterialForVolume(matName,totVolume);
314  GeoLogVol* tubeLV = new GeoLogVol("AlTube",&alTubeShape,alMat);
315  return new GeoPhysVol(tubeLV);
316 
317 
318 }
319 
321 
322 
323  int nGlueElements = m_gmt_mgr->PixelNumOmegaGlueElements();
324  for (int i = 0; i < nGlueElements; ++i) {
325  double x1 = m_gmt_mgr->PixelOmegaGlueStartX(i);
326  double thickness = m_gmt_mgr->PixelOmegaGlueThickness(i);
327  double y1 = m_gmt_mgr->PixelOmegaGlueStartY(i);
328  double y2 = m_gmt_mgr->PixelOmegaGlueEndY(i);
330  double zOffset = m_gmt_mgr->PixelOmegaGluePosZ(i);
332 
333  GeoBox * glueShape = new GeoBox(0.5*thickness, 0.5*std::abs(y1-y2), 0.5*length);
334  std::string matName = m_gmt_mgr->getMaterialName("GlueOmegaStave", m_gmt_mgr->GetLD(), typeNum);
335  const GeoMaterial* glueMat = m_mat_mgr->getMaterialForVolume(matName, glueShape->volume());
336  GeoLogVol* glueLV = new GeoLogVol("Glue",glueShape,glueMat);
337  GeoPhysVol* gluePV = new GeoPhysVol(glueLV);
338 
339  GeoTransform * xform = new GeoTransform(GeoTrf::Translate3D(m_xOffset+x1+0.5*thickness, m_yOffset-0.5*(y1+y2), zOffset));
340 
341  parent->add(xform);
342  parent->add(gluePV);
343  }
344 }
345 
346 
348 
351 
352  // Pigtail flat section
353  double xPosPigtail = xOffset + m_gmt_mgr->PixelPigtailPosX();
354  double yPosPigtail = yOffset + 0.5*(m_gmt_mgr->PixelPigtailStartY() + m_gmt_mgr->PixelPigtailEndY());
355  double zPosPigtail = m_gmt_mgr->PixelPigtailPosZ();
356  double xWidthPigtail = m_gmt_mgr->PixelPigtailThickness();
357  double yWidthPigtail = std::abs(m_gmt_mgr->PixelPigtailStartY() - m_gmt_mgr->PixelPigtailEndY());
358  double zWidthPigtail = m_gmt_mgr->PixelPigtailFlatWidthZ();
359  std::string matNamePigtail = m_gmt_mgr->getMaterialName("PigtailFlat", m_gmt_mgr->GetLD());
360  GeoBox * pigtailShape = new GeoBox(0.5*xWidthPigtail, 0.5*yWidthPigtail, 0.5*zWidthPigtail);
361  const GeoMaterial* pigtailMat = m_mat_mgr->getMaterialForVolume(matNamePigtail,pigtailShape->volume());
362  GeoLogVol * pigtailLV = new GeoLogVol("PigtailFlat",pigtailShape,pigtailMat);
363  GeoPhysVol * pigtailPhys = new GeoPhysVol(pigtailLV);
364 
365  // Connector
366  int numConn = m_gmt_mgr->PixelNumConnectorElements();
367  std::vector<GeoPhysVol *> connectorPhysVols(numConn);
368  std::vector<GeoTrf::Transform3D> connectorTransforms(numConn);
369  for (int iConn = 0; iConn < numConn; iConn++) {
370  double xPosConnector = xOffset + m_gmt_mgr->PixelConnectorPosX(iConn);
371  double yPosConnector = yOffset + m_gmt_mgr->PixelConnectorPosY(iConn);
372  double zPosConnector = m_gmt_mgr->PixelConnectorPosZ(iConn);
373  double xWidthConnector = m_gmt_mgr->PixelConnectorWidthX(iConn);
374  double yWidthConnector = m_gmt_mgr->PixelConnectorWidthY(iConn);
375  double zWidthConnector = m_gmt_mgr->PixelConnectorWidthZ(iConn);
376  std::string matNameConnector = m_gmt_mgr->getMaterialName("Connector", m_gmt_mgr->GetLD(), iConn);
377  GeoBox * connectorShape = new GeoBox(0.5*xWidthConnector, 0.5*yWidthConnector, 0.5*zWidthConnector);
378  const GeoMaterial* connectorMat = m_mat_mgr->getMaterialForVolume(matNameConnector,connectorShape->volume());
379  GeoLogVol * connectorLV = new GeoLogVol("Connector",connectorShape,connectorMat);
380  connectorPhysVols[iConn] = new GeoPhysVol(connectorLV);
381  connectorTransforms[iConn] = GeoTrf::Translate3D(xPosConnector, yPosConnector, zPosConnector);
382  }
383 
384  for (int iModule = 0; iModule<m_gmt_mgr->PixelNModule(); iModule++) {
385  int moduleEta = m_gmt_mgr->PixelModuleEtaFromIndex(iModule);
386  double zShift = m_gmt_mgr->PixelModuleZPosition(moduleEta);
387 
388  // Place pigtail
389  GeoTransform * xformPigtail = new GeoTransform(GeoTrf::Translate3D(xPosPigtail, yPosPigtail, zShift+zPosPigtail));
390  parent->add(xformPigtail);
391  parent->add(pigtailPhys);
392 
393  // Place connector
394  for (int iConn = 0; iConn < numConn; iConn++) {
395  GeoTransform * xformConnector = new GeoTransform(GeoTrf::TranslateZ3D(zShift)*connectorTransforms[iConn]);
396  parent->add(xformConnector);
397  parent->add(connectorPhysVols[iConn]);
398  }
399  }
400 }
PixelGeometryManager::PixelPigtailPosX
virtual double PixelPigtailPosX()=0
PixelGeometryManager::PixelLadderCableOffsetY
virtual double PixelLadderCableOffsetY()=0
GeoPixelCable::zpos
double zpos()
Definition: GeoPixelCable.cxx:90
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
GeoPixelLadderServices::m_envelopeCornerA1
GeoTrf::Vector3D m_envelopeCornerA1
Definition: GeoPixelLadderServices.h:42
PixelGeometryManager::PixelOmegaStartY
virtual double PixelOmegaStartY()=0
PixelGeometryManager::PixelOmegaGlueThickness
virtual double PixelOmegaGlueThickness(int index)=0
GeoPixelFluid
Definition: GeoPixelFluid.h:13
PixelGeometryManager::PixelNumConnectorElements
virtual int PixelNumConnectorElements()=0
GeoPixelCable::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelCable.cxx:49
PixelGeometryManager::PixelNumOmegaGlueElements
virtual int PixelNumOmegaGlueElements()=0
GeoPixelCable
Definition: GeoPixelCable.h:11
PixelGeometryManager
Definition: PixelGeometryManager.h:28
GeoPixelLadderServices::m_ladderType
int m_ladderType
Definition: GeoPixelLadderServices.h:40
PixelGeometryManager::PixelConnectorPosZ
virtual double PixelConnectorPosZ(int index)=0
GeoPixelLadderServices.h
PixelGeometryManager::PixelPigtailThickness
virtual double PixelPigtailThickness()=0
GeoPixelLadderServices::GeoPixelLadderServices
GeoPixelLadderServices(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, int ladderType)
Definition: GeoPixelLadderServices.cxx:26
PixelGeometryManager::PixelLadderServicesY
virtual double PixelLadderServicesY()=0
PixelGeometryManager::PixelOmegaGlueEndY
virtual double PixelOmegaGlueEndY(int index)=0
PixelGeometryManager::PixelLadderServicesX
virtual double PixelLadderServicesX()=0
PixelGeometryManager::PixelOmegaLength
virtual double PixelOmegaLength()=0
PixelGeometryManager::PixelOmegaGlueLength
virtual double PixelOmegaGlueLength(int index)=0
GeoPixelLadderServices::BuildPigtailAndConnector
void BuildPigtailAndConnector(GeoPhysVol *parent)
Definition: GeoPixelLadderServices.cxx:347
PixelGeometryManager::PixelOmegaGlueTypeNum
virtual int PixelOmegaGlueTypeNum(int index)=0
PixelGeometryManager::PixelPigtailStartY
virtual double PixelPigtailStartY()=0
GeoPixelFluid::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelFluid.cxx:34
GeoPixelLadderServices::m_envelopeCornerC1
GeoTrf::Vector3D m_envelopeCornerC1
Definition: GeoPixelLadderServices.h:44
GeoPixelLadderServices::BuildAlTube
GeoVPhysVol * BuildAlTube()
Definition: GeoPixelLadderServices.cxx:240
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
GeoPixelCable::setElement
void setElement(int i)
Definition: GeoPixelCable.h:20
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::PixelPigtailFlatWidthZ
virtual double PixelPigtailFlatWidthZ()=0
GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: GeoVPixelFactory.h:45
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
pi
#define pi
Definition: TileMuonFitter.cxx:65
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
PixelGeometryManager::PixelAlTubeLowerBendY
virtual double PixelAlTubeLowerBendY()=0
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::PixelOmegaEndY
virtual double PixelOmegaEndY()=0
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
GeoPixelLadderServices::BuildOmega
GeoVPhysVol * BuildOmega()
Definition: GeoPixelLadderServices.cxx:155
PixelGeometryManager::PixelAlTubeUpperBendRadius
virtual double PixelAlTubeUpperBendRadius()=0
GeoPixelLadderServices::m_envelopeCornerC2
GeoTrf::Vector3D m_envelopeCornerC2
Definition: GeoPixelLadderServices.h:45
PixelGeometryManager::PixelOmegaLowerBendRadius
virtual double PixelOmegaLowerBendRadius()=0
lumiFormat.i
int i
Definition: lumiFormat.py:92
GeoPixelLadderServices::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelLadderServices.cxx:101
PixelGeometryManager::PixelAlTubeUpperBendX
virtual double PixelAlTubeUpperBendX()=0
GeoPixelLadderServices::m_xOffset
double m_xOffset
Definition: GeoPixelLadderServices.h:47
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeometryManager::PixelConnectorWidthZ
virtual double PixelConnectorWidthZ(int index)=0
InDetMaterialManager::getMaterialForVolume
const GeoMaterial * getMaterialForVolume(const std::string &materialName, double volume, const std::string &newName="")
Create and get material with a density calculated to give weight in predefined weight table.
Definition: InDetMaterialManager.cxx:460
test_pyathena.parent
parent
Definition: test_pyathena.py:15
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0
PixelGeometryManager::PixelAlTubeLowerBendRadius
virtual double PixelAlTubeLowerBendRadius()=0
PixelGeometryManager::PixelConnectorPosY
virtual double PixelConnectorPosY(int index)=0
GeoPixelFluid::posY
double posY()
Definition: GeoPixelFluid.h:23
PixelGeometryManager::PixelConnectorPosX
virtual double PixelConnectorPosX(int index)=0
PixelGeometryManager::PixelAlTubeLength
virtual double PixelAlTubeLength()=0
PixelGeometryManager::PixelConnectorWidthX
virtual double PixelConnectorWidthX(int index)=0
GeoPixelFluid::posZ
double posZ()
Definition: GeoPixelFluid.h:24
PixelGeometryManager::PixelAlTubeUpperBendY
virtual double PixelAlTubeUpperBendY()=0
GeoPixelLadderServices::m_ladderServicesLV
GeoIntrusivePtr< const GeoLogVol > m_ladderServicesLV
Definition: GeoPixelLadderServices.h:39
grepfile.sep
sep
Definition: grepfile.py:38
RCU::Check::typeNum
const int typeNum
Definition: Assert.h:75
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
PixelGeometryManager::PixelOmegaLowerBendX
virtual double PixelOmegaLowerBendX()=0
PixelGeometryManager::PixelOmegaGluePosZ
virtual double PixelOmegaGluePosZ(int index)=0
GeoVPixelFactory::m_epsilon
const double m_epsilon
Definition: GeoVPixelFactory.h:49
GeoPixelLadderServices::m_envelopeCornerA2
GeoTrf::Vector3D m_envelopeCornerA2
Definition: GeoPixelLadderServices.h:43
PixelGeometryManager::PixelLadderLength
virtual double PixelLadderLength()=0
GeoPixelCable::numElements
int numElements() const
Definition: GeoPixelCable.h:19
PixelGeometryManager::PixelOmegaGlueStartY
virtual double PixelOmegaGlueStartY(int index)=0
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
PixelGeometryManager::PixelOmegaWallThickness
virtual double PixelOmegaWallThickness()=0
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
GeoPixelCable.h
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
PixelGeometryManager::PixelOmegaUpperBendX
virtual double PixelOmegaUpperBendX()=0
PixelGeometryManager::PixelPigtailEndY
virtual double PixelPigtailEndY()=0
GeoPixelFluid.h
PixelGeometryManager::PixelConnectorWidthY
virtual double PixelConnectorWidthY(int index)=0
PixelGeometryManager::PixelPigtailPosZ
virtual double PixelPigtailPosZ()=0
PixelGeometryManager::PixelOmegaUpperBendRadius
virtual double PixelOmegaUpperBendRadius()=0
GeoPixelLadderServices::m_yOffset
double m_yOffset
Definition: GeoPixelLadderServices.h:48
GeoPixelLadderServices::BuildGlue
void BuildGlue(GeoPhysVol *parent)
Definition: GeoPixelLadderServices.cxx:320
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
PixelGeometryManager::PixelAlTubeWallThickness
virtual double PixelAlTubeWallThickness()=0
PixelGeometryManager::PixelOmegaLowerBendY
virtual double PixelOmegaLowerBendY()=0
PixelGeometryManager::getMaterialName
virtual std::string getMaterialName(const std::string &volumeName, int layerdisk=0, int typenum=0)=0
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
PixelGeometryManager::PixelOmegaGlueStartX
virtual double PixelOmegaGlueStartX(int index)=0
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::PixelAlTubeLowerBendX
virtual double PixelAlTubeLowerBendX()=0
GeoPixelCable::getStackOffset
double getStackOffset()
Definition: GeoPixelCable.cxx:98
GeoPixelFluid::posX
double posX()
Definition: GeoPixelFluid.h:22
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
PixelGeometryManager::PixelOmegaUpperBendY
virtual double PixelOmegaUpperBendY()=0
PixelGeometryManager::PixelLadderCableOffsetX
virtual double PixelLadderCableOffsetX()=0
PixelGeometryManager::PixelModuleZPosition
virtual double PixelModuleZPosition(int)=0
PixelGeometryManager::GetLD
virtual int GetLD()=0