|
ATLAS Offline Software
|
Go to the documentation of this file.
12 #include "GeoModelKernel/GeoTube.h"
13 #include "GeoModelKernel/GeoLogVol.h"
14 #include "GeoModelKernel/GeoNameTag.h"
15 #include "GeoModelKernel/GeoIdentifierTag.h"
16 #include "GeoModelKernel/GeoFullPhysVol.h"
17 #include "GeoModelKernel/GeoMaterial.h"
18 #include "GeoModelKernel/GeoTransform.h"
19 #include "GeoModelKernel/GeoAlignableTransform.h"
20 #include "GaudiKernel/SystemOfUnits.h"
28 GeoModelIO::ReadGeoModel* sqliteReader,
29 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
30 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
48 std::ostringstream ostr;
50 const GeoLogVol* theDisk{
nullptr};
59 const GeoTube* diskTube =
new GeoTube(rmin,rmax,halflength);
60 theDisk =
new GeoLogVol(
"Disk"+ostr.str(),diskTube,air);
66 GeoFullPhysVol* diskPhys =
m_sqliteReader==
nullptr ?
new GeoFullPhysVol(theDisk) :
nullptr;
138 for (
int ii = 0; ii < pixelECNSectors1*2; ii++) {
146 if(pixelECNSectors1>0) phiId = (
m_gmt_mgr->
GetSide()>0) ? ii : (3*pixelECNSectors1-ii-1)%(pixelECNSectors1*2);
160 int diskSide = (ii%2) ? +1 : -1;
172 GeoAlignableTransform* xform =
new GeoAlignableTransform(GeoTrf::Translate3D(
pos.x(),
pos.y(),
pos.z())*rm);
173 GeoVPhysVol * modulePhys = psd.
Build();
174 std::ostringstream nameTag;
175 nameTag <<
"ModuleEC" << phiId;
176 GeoNameTag *
tag =
new GeoNameTag(nameTag.str());
178 diskPhys->add(
new GeoIdentifierTag(phiId));
179 diskPhys->add(xform);
180 diskPhys->add(modulePhys);
189 diskPhys=(*m_mapFPV)[
key];
198 GeoTransform* xform =
new GeoTransform( GeoTrf::Translate3D(0, 0, pds.
ZPos()) );
199 diskPhys->add(xform);
200 diskPhys->add(pds.
Build() );
206 xMat.
add(diskPhys,
"PixelDisc");
209 xMat.
add(diskPhys,
"PixelDisc"+ostr.str());
211 xMat.
add(diskPhys,
"PixelDiscA");
212 xMat.
add(diskPhys,
"PixelDiscA"+ostr.str());
214 xMat.
add(diskPhys,
"PixelDiscC");
215 xMat.
add(diskPhys,
"PixelDiscC"+ostr.str());
249 tck += 2.*zClearance;
void setNumRingsForDisk(int disk, int nRings)
virtual InDetDD::DistortedMaterialManager * distortedMatManager()=0
virtual GeoVPhysVol * Build() override
virtual double PixelChipThickness(bool isModule3D=false)=0
virtual double PixelBoardActiveLength(bool isModule3D=false)=0
virtual double PixelECCarbonRMin(std::string)=0
virtual void SetEta(int eta)=0
virtual double PixelECCarbonRMax(std::string)=0
const SiNumerology & numerology() const
Access Numerology.
virtual GeoVPhysVol * Build() override
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
virtual double PixelChipGap(bool isModule3D=false)=0
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
virtual double PixelHybridThickness(bool isModule3D=false)=0
InDetDD::PixelDetectorManager * m_DDmgr
PixelGeometryManager * m_gmt_mgr
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
virtual double PixelBoardThickness(bool isModule3D=false)=0
Eigen::Affine3d Transform3D
virtual void SetPhi(int phi)=0
virtual double PixelECSiDz1()=0
virtual bool isEndcap()=0
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
void setNumPhiModulesForDiskRing(int disk, int ring, int nPhiModules)
std::string to_string(const DetectorType &type)
InDetMaterialManager * m_mat_mgr
Eigen::Matrix< double, 3, 1 > Vector3D
virtual GeoVPhysVol * Build() override
GeoPixelDisk(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 double PixelECSiDz2()=0
This is the base class for all the pieces of the Pixel detector.
virtual int PixelECNSectors1()=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 dbVersion()=0
virtual double PixelDiskRMin()=0