|
ATLAS Offline Software
|
Go to the documentation of this file.
15 #include "GeoModelKernel/GeoNameTag.h"
16 #include "GeoModelKernel/GeoIdentifierTag.h"
17 #include "GeoModelKernel/GeoPhysVol.h"
18 #include "GeoModelKernel/GeoAlignableTransform.h"
19 #include "GaudiKernel/SystemOfUnits.h"
36 :
InDetDD::DetectorFactoryBase(athenaComps),
37 m_detectorManager(nullptr)
55 std::unique_ptr<SiCommonItems> commonItems{std::make_unique<SiCommonItems>(athenaComps->
getIdHelper())};
65 <<
"\" which is inconsistent with the layout choosen!"
74 std::string versionName =
"SR1";
75 std::string layout =
"SR1";
77 int versionMajorNumber = 4;
78 int versionMinorNumber = 0;
79 int versionPatchNumber = 0;
110 msg(MSG::INFO) <<
"Building Pixel Detector" <<
endmsg;
126 if ((barrelPresent && endcapAPresent) ||
127 (barrelPresent && endcapCPresent) ||
128 (endcapAPresent && endcapCPresent)) {
129 msg(MSG::ERROR) <<
"SR1 geometry can only have 1 part" <<
endmsg;
132 if (!barrelPresent && !endcapAPresent && !endcapCPresent) {
133 msg(MSG::ERROR) <<
"SR1 geometry must have 1 part" <<
endmsg;
136 GeoVPhysVol* physVol =
nullptr;
137 GeoAlignableTransform *
transform =
nullptr;
153 physVol = brl.
Build();
156 transform =
new GeoAlignableTransform(topTransform*barrelTransform);
159 GeoNameTag*
tag =
new GeoNameTag(
"Pixel");
161 world->add(
new GeoIdentifierTag(0));
169 if (endcapAPresent || endcapCPresent) {
177 if (endcapAPresent) {
180 physVol = pec.
Build();
183 transform =
new GeoAlignableTransform(topTransform * endcapATransform * GeoTrf::TranslateZ3D(zpos));
185 GeoNameTag*
tag =
new GeoNameTag(
"Pixel");
187 world->add(
new GeoIdentifierTag(2));
193 if (endcapCPresent) {
196 physVol = pec.
Build();
199 transform =
new GeoAlignableTransform(topTransform * endcapCTransform * GeoTrf::TranslateZ3D(-zpos) * GeoTrf::RotateY3D(180*
Gaudi::Units::deg));
201 GeoNameTag*
tag =
new GeoNameTag(
"Pixel");
203 world->add(
new GeoIdentifierTag(-2));
211 if(pixServices)
delete pixServices;
215 msg(MSG::ERROR) <<
"Unexpected condition. Top level volume has zero pointer" <<
endmsg;
246 if (endcapAPresent) {
251 if (endcapCPresent) {
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
const SiNumerology & numerology() const
Access Numerology.
PixelDetectorFactorySR1(PixelGeoModelAthenaComps *athenaComps, const PixelSwitches &switches)
virtual double PixelEndcapZMax()=0
virtual bool InitialLayout() const =0
int columns() const
Number of cell columns per module:
virtual void SetServices(bool isservice)=0
PixelGeometryManager * m_geometryManager
virtual void SetEndcap()=0
bool servicesOnLadder() const
int rows() const
Number of cell rows per module:
virtual const InDetDD::PixelDetectorManager * getDetectorManager() const
void setMaxNumEtaCells(int cells)
void setVersion(const Version &version)
virtual bool DoServices()=0
MsgStream & msg(MSG::Level lvl) const
virtual void SetServicesOnLadder(bool isservice)=0
void setCommonItems(std::unique_ptr< const SiCommonItems > &&commonItems)
Set SiCommonItems.
virtual double DesignPitchZ(bool isModule3D=false)=0
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
bool initialLayout() const
virtual void create(GeoPhysVol *world)
virtual bool Alignable() const =0
virtual GeoVPhysVol * Build() override
StoreGateSvc * detStore()
virtual void SetBarrel()=0
virtual void initNeighbours() override
Initialize the neighbours.
const PixelID * getIdHelper() const
void addFolder(const std::string &key)
virtual double PixelBoardThickness(bool isModule3D=false)=0
Eigen::Affine3d Transform3D
void setMaxNumPhiCells(int cells)
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
const Version & getVersion() const
Get version information.
void addTreeTop(const PVConstLink &vol)
Add a Tree top:
InDetDD::PixelDetectorManager * m_detectorManager
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
virtual const GeoTrf::Transform3D & partTransform(const std::string &partName) const =0
virtual std::string versionTag() const =0
bool msgLvl(MSG::Level lvl)
const std::string & tag() const
Get tag used in dictionary.
virtual void SetCurrentLD(int i)=0
virtual void SetDC1Geometry(bool flag)=0
virtual GeoVPhysVol * Build() override
virtual double PixelEndcapZMin()=0
Class to hold various Athena components.
virtual void SetInitialLayout(bool flag)=0
std::string fullDescription() const
Full Description For example, Version: SCT-DC1-00, Name: DC1, Layout: Final, Code Version: 2....
~PixelDetectorFactorySR1()
virtual void SetAlignable(bool flag)=0
virtual const PixelID * getIdHelper()=0
void addChannel(const std::string &key, int level, FrameType frame)
Alignment access.
virtual bool partPresent(const std::string &partName) const =0
virtual void setCommonItems(InDetDD::SiCommonItems *commonItems)=0
virtual const PixelModuleDesign * getPixelDesign(int i) const
Access to module design, Casts to PixelModuleDesign.
std::string description
glabal timer - how long have I taken so far?