|
ATLAS Offline Software
|
#include <GeoPixelLadder.h>
Definition at line 16 of file GeoPixelLadder.h.
◆ GeoPixelLadder() [1/2]
Definition at line 30 of file GeoPixelLadder.cxx.
68 const GeoShape * ladderShape =
nullptr;
76 ladderShape =
new GeoBox(halfThickness,
m_width/2.,
length/2.);
93 double shift = 0.5*BentStaveThickness;
94 if (
angle > 0) shift *= -1.0;
95 const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
96 ladderShape = &shiftedBox;
103 GeoBox * box =
new GeoBox(halfThickness,
m_width/2.,
length/2.);
104 const GeoShape & shiftedBox = (*box) << GeoTrf::TranslateX3D(shift);
105 ladderShape = &shiftedBox;
111 const GeoShape & staveShape = (*staveSupportShape);
112 ladderShape = &staveShape;
120 if(not ladderShape) {
126 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 161 of file GeoPixelLadder.cxx.
172 bool isModule3D=
true;
181 int nbPixelPlanarModule=0;
182 int nbPixel3DModule=0;
183 bool bDetailedStaveLayout=
false;
185 double zNegStavePos= 0.0;
186 double planarLength=0.0;
187 double v3DHalfLength=0.0;
188 double v3DLength=0.0;
193 double Si3DRadialShift=0.;
194 double Si3DLateralShift=0.;
197 double SiPlThick = pm.ThicknessP();
198 double Si3DThick = pm3D.ThicknessP();
199 if(Si3DThick>SiPlThick) Si3DRadialShift=-(Si3DThick-SiPlThick);
204 Si3DLateralShift= -(MechanicalStaveOffset3D-MechanicalStaveOffset);
213 bDetailedStaveLayout=
true;
214 nbPixelPlanarModule=nbPixelModule;
217 else if(staveLayout==5||staveLayout==6)
219 bDetailedStaveLayout=
true;
226 planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
227 v3DHalfLength=(nbPixel3DModule/2)*pm3D.Length()+(nbPixel3DModule/2)*pixelModuleGap;
228 zNegStavePos=-planarLength*0.5-v3DHalfLength;
232 planarLength=nbPixelPlanarModule*pm.Length()+(nbPixelPlanarModule-1)*pixelModuleGap;
233 v3DLength=(nbPixel3DModule)*pm3D.Length()+(nbPixel3DModule-1)*pixelModuleGap+pixelModuleGap*0.5;
234 zNegStavePos=-v3DLength;
241 for(
int ii = 0; ii < nbPixelModule; ii++) {
258 bool b3DModule=
false;
274 if(ii<nbPixel3DModule/2)
278 zpos+=pm3D.Length()*0.5;
279 xposShift=Si3DRadialShift;
280 yposShift=Si3DLateralShift;
283 else if(ii>nbPixelPlanarModule+nbPixel3DModule/2-1)
289 zpos+=pm3D.Length()*0.5;
290 xposShift=Si3DRadialShift;
291 yposShift=Si3DLateralShift;
296 zpos+=pm.Length()*0.5;
302 zpos=zNegStavePos+zpos;
308 if(ii<nbPixel3DModule)
312 zpos=(pm3D.Length()+pixelModuleGap) * moduleIndex;
313 zpos=zNegStavePos+zpos+pm3D.Length()*0.5;
314 xposShift=Si3DRadialShift;
315 yposShift=Si3DLateralShift;
321 zpos+=pm.Length()*0.5+pixelModuleGap*0.5;
335 GeoVPhysVol* modulephys{
nullptr};
338 modulephys = pm.Build();
340 modulephys = pm3D.Build();
346 else id = theSensor3D.getID();
350 std::ostringstream nameTag;
352 GeoNameTag *
tag =
new GeoNameTag(nameTag.str());
353 GeoAlignableTransform* xform;
356 ladderPhys->add(
tag);
357 ladderPhys->add(
new GeoIdentifierTag(
m_gmt_mgr->
Eta() ) );
358 ladderPhys->add(xform);
359 ladderPhys->add(modulephys );
364 else id = theSensor3D.getID();
388 GeoBox * shapeSupBent =
new GeoBox(0.5*
thickness, 0.5*
width, bentStaveHalfLength);
396 double xst = xOffset - (bentStaveHalfLength *
sin(ang));
399 GeoLogVol* logVolBentNeg =
new GeoLogVol(
"StaveSupportBentNeg2",shapeSupBent,materialSup);
400 GeoPhysVol* physVolBentNeg =
new GeoPhysVol(logVolBentNeg);
401 GeoTrf::RotateY3D rmNeg(ang);
402 double zstneg = -
length/2.0 - (bentStaveHalfLength *
cos(ang));
405 ladderPhys->add(physVolBentNeg);
408 GeoLogVol* logVolBentPos =
new GeoLogVol(
"StaveSupportBentPos2",shapeSupBent,materialSup);
409 GeoPhysVol* physVolBentPos =
new GeoPhysVol(logVolBentPos);
410 GeoTrf::RotateY3D rmPos(-ang);
411 double zstpos =
length/2.0 + (bentStaveHalfLength *
cos(ang));
414 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