![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <GeoPixelLadderServices.h>
Definition at line 15 of file GeoPixelLadderServices.h.
◆ GeoPixelLadderServices() [1/2]
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 at line 26 of file GeoPixelLadderServices.cxx.
54 double xOffsetConnC = xOffsetConnA;
67 double yPosConnC = yPosConnA;
69 double xWidthOmegaBase = xMaxOmegaBase - xBase;
70 double xWidthConnA = xMaxConnA - xBase;
71 double xWidthConnC = xMaxConnC - xBase;
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.);
81 const GeoShape & ladderSvcShape = ((*omegaBaseEnv) << omegaBaseShift)
82 .
add(*connAEnv << connAShift)
83 .add(*connCEnv << connCShift);
◆ GeoPixelLadderServices() [2/2]
◆ ~GeoPixelLadderServices()
virtual GeoPixelLadderServices::~GeoPixelLadderServices |
( |
| ) |
|
|
virtualdefault |
◆ Build()
GeoVPhysVol * GeoPixelLadderServices::Build |
( |
| ) |
|
|
overridevirtual |
Implements GeoVPixelFactory.
Definition at line 101 of file GeoPixelLadderServices.cxx.
124 double zpos = fluid.posZ();
126 GeoVPhysVol* fluidPhys = fluid.Build();
127 GeoTransform* xform =
new GeoTransform(GeoTrf::Translate3D(xpos,ypos,zpos));
128 ladderSvcPhys->add(xform);
129 ladderSvcPhys->add(fluidPhys);
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);
152 return ladderSvcPhys;
◆ BuildAlTube()
GeoVPhysVol * GeoPixelLadderServices::BuildAlTube |
( |
| ) |
|
Definition at line 240 of file GeoPixelLadderServices.cxx.
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);
290 GeoBox * lowerStraightBox =
new GeoBox(0.5*thick, yLowerBend, 0.5*
length);
293 GeoBox * upperStraightBox =
new GeoBox(0.5*thick, 0.5*upperStraightLength, 0.5*
length);
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) );
305 lowerStraightBox->volume()
306 + lowerBendShapeP->volume()
307 + 2*upperStraightBox->volume()
308 + upperBendShape->volume()
309 + lowerBendShapeM->volume();
314 GeoLogVol* tubeLV =
new GeoLogVol(
"AlTube",&alTubeShape,alMat);
315 return new GeoPhysVol(tubeLV);
◆ BuildGlue()
void GeoPixelLadderServices::BuildGlue |
( |
GeoPhysVol * |
parent | ) |
|
Definition at line 320 of file GeoPixelLadderServices.cxx.
324 for (
int i = 0;
i < nGlueElements; ++
i) {
333 GeoBox * glueShape =
new GeoBox(0.5*thickness, 0.5*std::abs(
y1-
y2), 0.5*
length);
336 GeoLogVol* glueLV =
new GeoLogVol(
"Glue",glueShape,glueMat);
337 GeoPhysVol* gluePV =
new GeoPhysVol(glueLV);
339 GeoTransform * xform =
new GeoTransform(GeoTrf::Translate3D(
m_xOffset+
x1+0.5*thickness,
m_yOffset-0.5*(
y1+
y2), zOffset));
◆ BuildOmega()
GeoVPhysVol * GeoPixelLadderServices::BuildOmega |
( |
| ) |
|
Definition at line 155 of file GeoPixelLadderServices.cxx.
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);
207 GeoBox * lowerStraightBoxP =
new GeoBox(0.5*thick, 0.5*(yStart - yLowerBend), 0.5*
length);
210 GeoBox * lowerStraightBoxM =
new GeoBox(0.5*thick, 0.5*(-yLowerBend - yEnd), 0.5*
length);
213 GeoBox * upperStraightBox =
new GeoBox(0.5*thick, 0.5*upperStraightLength, 0.5*
length);
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) );
226 lowerStraightBoxP->volume()
227 + lowerBendShapeP->volume()
228 + 2*upperStraightBox->volume()
229 + upperBendShape->volume()
230 + lowerBendShapeM->volume()
231 + lowerStraightBoxM->volume();
235 GeoLogVol* omegaLV =
new GeoLogVol(
"Omega",&omegaShape,omegaMat);
236 return new GeoPhysVol(omegaLV);
◆ BuildPigtailAndConnector()
void GeoPixelLadderServices::BuildPigtailAndConnector |
( |
GeoPhysVol * |
parent | ) |
|
Definition at line 347 of file GeoPixelLadderServices.cxx.
360 GeoBox * pigtailShape =
new GeoBox(0.5*xWidthPigtail, 0.5*yWidthPigtail, 0.5*zWidthPigtail);
362 GeoLogVol * pigtailLV =
new GeoLogVol(
"PigtailFlat",pigtailShape,pigtailMat);
363 GeoPhysVol * pigtailPhys =
new GeoPhysVol(pigtailLV);
367 std::vector<GeoPhysVol *> connectorPhysVols(numConn);
368 std::vector<GeoTrf::Transform3D> connectorTransforms(numConn);
369 for (
int iConn = 0; iConn < numConn; iConn++) {
377 GeoBox * connectorShape =
new GeoBox(0.5*xWidthConnector, 0.5*yWidthConnector, 0.5*zWidthConnector);
379 GeoLogVol * connectorLV =
new GeoLogVol(
"Connector",connectorShape,connectorMat);
380 connectorPhysVols[iConn] =
new GeoPhysVol(connectorLV);
381 connectorTransforms[iConn] = GeoTrf::Translate3D(xPosConnector, yPosConnector, zPosConnector);
389 GeoTransform * xformPigtail =
new GeoTransform(GeoTrf::Translate3D(xPosPigtail, yPosPigtail, zShift+zPosPigtail));
390 parent->add(xformPigtail);
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]);
◆ envelopeCornerA1()
const GeoTrf::Vector3D& GeoPixelLadderServices::envelopeCornerA1 |
( |
| ) |
|
|
inline |
◆ envelopeCornerA2()
const GeoTrf::Vector3D& GeoPixelLadderServices::envelopeCornerA2 |
( |
| ) |
|
|
inline |
◆ envelopeCornerC1()
const GeoTrf::Vector3D& GeoPixelLadderServices::envelopeCornerC1 |
( |
| ) |
|
|
inline |
◆ envelopeCornerC2()
const GeoTrf::Vector3D& GeoPixelLadderServices::envelopeCornerC2 |
( |
| ) |
|
|
inline |
◆ operator=()
◆ referenceX()
double GeoPixelLadderServices::referenceX |
( |
| ) |
|
|
inline |
◆ referenceY()
double GeoPixelLadderServices::referenceY |
( |
| ) |
|
|
inline |
◆ m_DDmgr
◆ m_envelopeCornerA1
GeoTrf::Vector3D GeoPixelLadderServices::m_envelopeCornerA1 |
|
private |
◆ m_envelopeCornerA2
GeoTrf::Vector3D GeoPixelLadderServices::m_envelopeCornerA2 |
|
private |
◆ m_envelopeCornerC1
GeoTrf::Vector3D GeoPixelLadderServices::m_envelopeCornerC1 |
|
private |
◆ m_envelopeCornerC2
GeoTrf::Vector3D GeoPixelLadderServices::m_envelopeCornerC2 |
|
private |
◆ m_epsilon
const double GeoVPixelFactory::m_epsilon |
|
protectedinherited |
◆ m_gmt_mgr
◆ m_ladderServicesLV
GeoIntrusivePtr<const GeoLogVol> GeoPixelLadderServices::m_ladderServicesLV {} |
|
private |
◆ m_ladderType
int GeoPixelLadderServices::m_ladderType |
|
private |
◆ m_mapAX
std::shared_ptr<std::map<std::string, GeoAlignableTransform*> > GeoVPixelFactory::m_mapAX |
|
protectedinherited |
◆ m_mapFPV
std::shared_ptr<std::map<std::string, GeoFullPhysVol*> > GeoVPixelFactory::m_mapFPV |
|
protectedinherited |
◆ m_mat_mgr
◆ m_sqliteReader
GeoModelIO::ReadGeoModel* GeoVPixelFactory::m_sqliteReader |
|
protectedinherited |
◆ m_xOffset
double GeoPixelLadderServices::m_xOffset |
|
private |
◆ m_yOffset
double GeoPixelLadderServices::m_yOffset |
|
private |
The documentation for this class was generated from the following files:
virtual double PixelPigtailPosX()=0
virtual double PixelLadderCableOffsetY()=0
GeoTrf::Vector3D m_envelopeCornerA1
virtual double PixelOmegaStartY()=0
virtual double PixelOmegaGlueThickness(int index)=0
virtual int PixelNumConnectorElements()=0
virtual int PixelNumOmegaGlueElements()=0
virtual double PixelConnectorPosZ(int index)=0
virtual double PixelPigtailThickness()=0
virtual double PixelLadderServicesY()=0
virtual double PixelOmegaGlueEndY(int index)=0
virtual double PixelLadderServicesX()=0
virtual double PixelOmegaLength()=0
virtual double PixelOmegaGlueLength(int index)=0
void BuildPigtailAndConnector(GeoPhysVol *parent)
virtual int PixelOmegaGlueTypeNum(int index)=0
virtual double PixelPigtailStartY()=0
GeoTrf::Vector3D m_envelopeCornerC1
GeoVPhysVol * BuildAlTube()
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
virtual double PixelPigtailFlatWidthZ()=0
InDetDD::PixelDetectorManager * m_DDmgr
PixelGeometryManager * m_gmt_mgr
virtual double PixelAlTubeLowerBendY()=0
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
virtual int PixelModuleEtaFromIndex(int index)=0
virtual double PixelOmegaEndY()=0
GeoVPhysVol * BuildOmega()
virtual double PixelAlTubeUpperBendRadius()=0
GeoTrf::Vector3D m_envelopeCornerC2
virtual double PixelOmegaLowerBendRadius()=0
virtual double PixelAlTubeUpperBendX()=0
Eigen::Affine3d Transform3D
virtual double PixelConnectorWidthZ(int index)=0
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.
bool add(const std::string &hname, TKey *tobj)
GeoVPixelFactory(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)
virtual int PixelNModule()=0
virtual double PixelAlTubeLowerBendRadius()=0
virtual double PixelConnectorPosY(int index)=0
virtual double PixelConnectorPosX(int index)=0
virtual double PixelAlTubeLength()=0
virtual double PixelConnectorWidthX(int index)=0
virtual double PixelAlTubeUpperBendY()=0
GeoIntrusivePtr< const GeoLogVol > m_ladderServicesLV
virtual double PixelOmegaLowerBendX()=0
virtual double PixelOmegaGluePosZ(int index)=0
GeoTrf::Vector3D m_envelopeCornerA2
virtual double PixelLadderLength()=0
virtual double PixelOmegaGlueStartY(int index)=0
InDetMaterialManager * m_mat_mgr
virtual double PixelOmegaWallThickness()=0
Eigen::Matrix< double, 3, 1 > Vector3D
virtual double PixelOmegaUpperBendX()=0
virtual double PixelPigtailEndY()=0
virtual double PixelConnectorWidthY(int index)=0
virtual double PixelPigtailPosZ()=0
virtual double PixelOmegaUpperBendRadius()=0
void BuildGlue(GeoPhysVol *parent)
virtual double PixelAlTubeWallThickness()=0
virtual double PixelOmegaLowerBendY()=0
virtual std::string getMaterialName(const std::string &volumeName, int layerdisk=0, int typenum=0)=0
virtual double PixelOmegaGlueStartX(int index)=0
const GeoMaterial * getMaterial(const std::string &materialName)
Get material. First looks for locally defined material and if not found looks in GeoModel material ma...
virtual double PixelAlTubeLowerBendX()=0
virtual double PixelOmegaUpperBendY()=0
virtual double PixelLadderCableOffsetX()=0
virtual double PixelModuleZPosition(int)=0