|  | 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;
 
  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?