|
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "GeoModelKernel/GeoAlignableTransform.h"
7 #include "GeoModelKernel/GeoFullPhysVol.h"
8 #include "GeoModelKernel/GeoIdentifierTag.h"
9 #include "GeoModelKernel/GeoLogVol.h"
10 #include "GeoModelKernel/GeoMaterial.h"
11 #include "GeoModelKernel/GeoNameTag.h"
12 #include "GeoModelKernel/GeoPhysVol.h"
13 #include "GeoModelKernel/GeoTransform.h"
14 #include "GeoModelKernel/GeoTube.h"
18 #include "Identifier/Identifier.h"
29 GeoModelIO::ReadGeoModel* sqliteReader,
30 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
31 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
34 m_pixServices(pixServices)
39 GeoFullPhysVol* ecPhys{
nullptr};
48 const GeoTube* ecTube =
new GeoTube(rmin,rmax,halflength);
49 const GeoLogVol* ecLog =
new GeoLogVol(
"EndCap",ecTube,air);
50 ecPhys =
new GeoFullPhysVol(ecLog);
67 for(
int idisk = 0; idisk < ndisks; idisk++) {
88 std::ostringstream nameTag;
89 nameTag <<
"Disk" << idisk;
90 GeoNameTag *
tag =
new GeoNameTag(nameTag.str());
91 GeoAlignableTransform* xform =
new GeoAlignableTransform(GeoTrf::TranslateZ3D(zdisk));
93 GeoVPhysVol * diskPhys =
pd->Build();
95 ecPhys->add(
new GeoIdentifierTag(idisk));
97 ecPhys->add(diskPhys);
108 GeoTransform * xformCablesPlus =
new GeoTransform(GeoTrf::TranslateZ3D(zdisk+dz));
109 ecPhys->add(xformCablesPlus);
110 ecPhys->add(pecc->
Build() );
111 GeoTransform * xformCablesMinus =
new GeoTransform(GeoTrf::TranslateZ3D(zdisk-dz));
112 ecPhys->add(xformCablesMinus);
113 ecPhys->add(pecc->
Build() );
125 std::ostringstream ename;
126 ename <<
"EndCap" << region;
127 ecPhys = (*m_mapFPV)[ename.str()];
142 xMat.
add(ecPhys,
"PixelEndcap",endcapZOffset);
144 xMat.
add(ecPhys,
"PixelEndcapA",endcapZOffset);
146 xMat.
add(ecPhys,
"PixelEndcapC",endcapZOffset);
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
virtual InDetDD::DistortedMaterialManager * distortedMatManager()=0
virtual double PixelDiskZPosition()=0
virtual void SetEta(int eta)=0
const SiNumerology & numerology() const
Access Numerology.
virtual double PixelEndcapZMax()=0
MsgStream & msg(MSG::Level lvl) const
virtual double PixelEndcapRMin()=0
bool msgLvl(MSG::Level lvl) const
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
virtual GeoVPhysVol * Build() override
void buildAndPlace(const std::string ®ion, GeoPhysVol *parent, double zcenter=0)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
InDetDD::PixelDetectorManager * m_DDmgr
PixelGeometryManager * m_gmt_mgr
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
virtual GeoVPhysVol * Build() override
virtual int PixelEndcapNDisk()=0
virtual double PixelECCablesDistance()=0
GeoPixelServices * m_pixServices
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
void setNumDisks(int nDisks)
std::string to_string(const DetectorType &type)
virtual double PixelEndcapRMax()=0
virtual void SetCurrentLD(int i)=0
InDetMaterialManager * m_mat_mgr
virtual double PixelEndcapZMin()=0
InDetDD::VolumeBuilder * getServMatBuilder()
This is the base class for all the pieces of the Pixel detector.
GeoPixelEndCap(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, GeoPixelServices *pixServices)
virtual const PixelID * getIdHelper()=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 bool isLDPresent()=0
InDetDD::VolumeBuilder * getBuilder()