![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <GeoPixelLadder.h>
Definition at line 16 of file GeoPixelLadder.h.
◆ GeoPixelLadder() [1/2]
Definition at line 28 of file GeoPixelLadder.cxx.
66 const GeoShape * ladderShape =
nullptr;
74 ladderShape =
new GeoBox(halfThickness,
m_width/2.,
length/2.);
91 double shift = 0.5*BentStaveThickness;
92 if (
angle > 0) shift *= -1.0;
93 const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
94 ladderShape = &shiftedBox;
101 GeoBox * box =
new GeoBox(halfThickness,
m_width/2.,
length/2.);
102 const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
103 ladderShape = &shiftedBox;
109 const GeoShape & staveShape = (*staveSupportShape);
110 ladderShape = &staveShape;
118 if(not ladderShape) {
124 m_theLadder =
new GeoLogVol(
"Ladder",ladderShape,air);
◆ GeoPixelLadder() [2/2]
◆ ~GeoPixelLadder()
virtual GeoPixelLadder::~GeoPixelLadder |
( |
| ) |
|
|
virtualdefault |
◆ Build()
GeoVPhysVol * GeoPixelLadder::Build |
( |
| ) |
|
|
overridevirtual |
100 % planar modules
75/25 planar/3D
50/50 planar/3D
Implements GeoVPixelFactory.
Definition at line 159 of file GeoPixelLadder.cxx.
170 bool isModule3D=
true;
179 int nbPixelPlanarModule=0;
180 int nbPixel3DModule=0;
181 bool bDetailedStaveLayout=
false;
183 double zNegStavePos= 0.0;
184 double planarLength=0.0;
185 double v3DHalfLength=0.0;
186 double v3DLength=0.0;
191 double Si3DRadialShift=0.;
192 double Si3DLateralShift=0.;
195 double SiPlThick = pm.ThicknessP();
196 double Si3DThick = pm3D.ThicknessP();
197 if(Si3DThick>SiPlThick) Si3DRadialShift=-(Si3DThick-SiPlThick);
202 Si3DLateralShift= -(MechanicalStaveOffset3D-MechanicalStaveOffset);
211 bDetailedStaveLayout=
true;
212 nbPixelPlanarModule=nbPixelModule;
215 else if(staveLayout==5||staveLayout==6)
217 bDetailedStaveLayout=
true;
224 planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
225 v3DHalfLength=(nbPixel3DModule/2)*pm3D.Length()+(nbPixel3DModule/2)*pixelModuleGap;
226 zNegStavePos=-planarLength*0.5-v3DHalfLength;
230 planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
231 v3DLength=(nbPixel3DModule)*pm3D.Length()+(nbPixel3DModule-1)*pixelModuleGap+pixelModuleGap*0.5;
232 zNegStavePos=-v3DLength;
239 for(
int ii = 0; ii < nbPixelModule; ii++) {
256 bool b3DModule=
false;
272 if(ii<nbPixel3DModule/2)
276 zpos+=pm3D.Length()*0.5;
277 xposShift=Si3DRadialShift;
278 yposShift=Si3DLateralShift;
281 else if(ii>nbPixelPlanarModule+nbPixel3DModule/2-1)
287 zpos+=pm3D.Length()*0.5;
288 xposShift=Si3DRadialShift;
289 yposShift=Si3DLateralShift;
294 zpos+=pm.Length()*0.5;
300 zpos=zNegStavePos+zpos;
306 if(ii<nbPixel3DModule)
310 zpos=(pm3D.Length()+pixelModuleGap) * moduleIndex;
311 zpos=zNegStavePos+zpos+pm3D.Length()*0.5;
312 xposShift=Si3DRadialShift;
313 yposShift=Si3DLateralShift;
319 zpos+=pm.Length()*0.5+pixelModuleGap*0.5;
333 GeoVPhysVol* modulephys{
nullptr};
336 modulephys = pm.Build();
338 modulephys = pm3D.Build();
344 else id = theSensor3D.getID();
348 std::ostringstream nameTag;
350 GeoNameTag *
tag =
new GeoNameTag(nameTag.str());
351 GeoAlignableTransform* xform;
354 ladderPhys->add(
tag);
355 ladderPhys->add(
new GeoIdentifierTag(
m_gmt_mgr->
Eta() ) );
356 ladderPhys->add(xform);
357 ladderPhys->add(modulephys );
362 else id = theSensor3D.getID();
386 GeoBox * shapeSupBent =
new GeoBox(0.5*
thickness, 0.5*
width, bentStaveHalfLength);
394 double xst = xOffset - (bentStaveHalfLength *
sin(ang));
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));
403 ladderPhys->add(physVolBentNeg);
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));
412 ladderPhys->add(physVolBentPos);
◆ calcThickness()
double GeoPixelLadder::calcThickness |
( |
| ) |
|
|
private |
◆ calcWidth()
double GeoPixelLadder::calcWidth |
( |
| ) |
|
|
private |
◆ operator=()
◆ thickness()
double GeoPixelLadder::thickness |
( |
| ) |
const |
|
inline |
◆ thicknessN()
double GeoPixelLadder::thicknessN |
( |
| ) |
const |
|
inline |
◆ thicknessP()
double GeoPixelLadder::thicknessP |
( |
| ) |
const |
|
inline |
◆ width()
double GeoPixelLadder::width |
( |
| ) |
const |
|
inline |
◆ m_DDmgr
◆ m_epsilon
const double GeoVPixelFactory::m_epsilon |
|
protectedinherited |
◆ m_gmt_mgr
◆ 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_staveSupport
◆ m_theLadder
GeoIntrusivePtr<const GeoLogVol> GeoPixelLadder::m_theLadder {} |
|
private |
◆ m_theSensor
◆ m_thickness
double GeoPixelLadder::m_thickness |
|
private |
◆ m_thicknessN
double GeoPixelLadder::m_thicknessN |
|
private |
◆ m_thicknessP
double GeoPixelLadder::m_thicknessP |
|
private |
◆ m_width
double GeoPixelLadder::m_width |
|
private |
The documentation for this class was generated from the following files:
virtual double IBLStaveModuleGap()=0
virtual double PixelChipThickness(bool isModule3D=false)=0
virtual double PixelModuleShiftFlag(int)=0
virtual void SetEta(int eta)=0
GeoPixelSiCrystal & m_theSensor
virtual double PixelLadderSupportLength()=0
virtual double PixelChipWidth(bool isModule3D=false)=0
virtual double PixelModuleStaggerDistance()=0
MsgStream & msg(MSG::Level lvl) const
virtual double PixelLadderThicknessClearance()=0
virtual GeoSimplePolygonBrep * computeStaveEnvelopShape(double)=0
GeoIntrusivePtr< const GeoLogVol > m_theLadder
virtual bool ibl() const =0
virtual double PixelLadderServicesX()=0
virtual const GeoTrf::Transform3D & transform() const =0
bool msgLvl(MSG::Level lvl) const
virtual double PixelHybridWidth(bool isModule3D=false)=0
virtual double PixelChipGap(bool isModule3D=false)=0
virtual int PixelN3DModule() const =0
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
virtual double PixelHybridThickness(bool isModule3D=false)=0
virtual GeoVPhysVol * getPhysVol()=0
InDetDD::PixelDetectorManager * m_DDmgr
PixelGeometryManager * m_gmt_mgr
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
virtual int PixelModuleEtaFromIndex(int index)=0
virtual double PixelLadderModuleDeltaZ()=0
virtual int PixelNModule() const =0
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
virtual double PixelBoardThickness(bool isModule3D=false)=0
virtual double PixelLadderWidthClearance()=0
Eigen::Affine3d Transform3D
virtual double IBLStaveMechanicalStaveOffset(bool isModule3D=false)=0
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 PixelChipLength(bool isModule3D=false)=0
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
virtual int PixelStaveLayout()=0
std::string to_string(const DetectorType &type)
virtual int PixelModuleStaggerSign(int etaModule)=0
virtual double PixelLadderLength()=0
virtual int IBLStaveModuleNumber_AllPlanar()=0
InDetMaterialManager * m_mat_mgr
virtual double PixelLadderThickness()=0
GeoPixelStaveSupport * m_staveSupport
virtual int PixelModuleIndexFromEta(int etaModule)=0
virtual double PixelHybridLength(bool isModule3D=false)=0
virtual double PixelLadderSupportWidth()=0
virtual double thicknessN() const =0
virtual double PixelBoardLength(bool isModule3D=false)=0
virtual double PixelLadderSupportThickness()=0
virtual double PixelModuleAngleSign(int)=0
Eigen::Translation< double, 3 > Translation3D
virtual int PixelBentStaveNModule()=0
virtual double PixelModuleDrDistance()=0
virtual double PixelBoardWidth(bool isModule3D=false)=0
virtual double PixelLadderBentStaveAngle()=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 int PixelNPlanarModule() const =0
virtual double PixelModuleAngle()=0
virtual double thicknessP() const =0
virtual double PixelModuleZPosition(int)=0