ATLAS Offline Software
Public Member Functions | Protected Attributes | List of all members
PixelGeoDC2::GeoPixelLayer Class Reference

#include <PixelDetectorDC1DC2.h>

Inheritance diagram for PixelGeoDC2::GeoPixelLayer:
Collaboration diagram for PixelGeoDC2::GeoPixelLayer:

Public Member Functions

virtual GeoVPhysVol * Build () override
 
 GeoVPixelFactory (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
 

Protected Attributes

PixelGeometryManagerm_gmt_mgr {}
 
StoredMaterialManagerm_mat_mgr {}
 
InDetDD::PixelDetectorManagerm_DDmgr {}
 
const double m_epsilon {}
 

Detailed Description

Definition at line 247 of file PixelDetectorDC1DC2.h.

Member Function Documentation

◆ Build()

GeoVPhysVol * GeoPixelLayer::Build ( )
overridevirtual

Implements PixelGeoDC2::GeoVPixelFactory.

Definition at line 820 of file PixelDetectorDC1DC2.cxx.

820  {
821 
822  //
823  // create the three barrel layers
824  // Build the sensor first to use the same for all the module in the layer
825  bool isBLayer = false;
826  if(m_gmt_mgr->GetLD() == 0) isBLayer = true;
827  GeoPixelSiCrystal theSensor(m_DDmgr, m_gmt_mgr, isBLayer);
828  //
829  // This is the maximum possible w/o going out of the mother volume!
830  //
831  double LayerThickness = 8.499*Gaudi::Units::mm;
832  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
833  //
834  // Layer dimensions from the geometry manager
835  //
836  double rmin = m_gmt_mgr->PixelLayerRadius()-LayerThickness;
837  double rmax = m_gmt_mgr->PixelLayerRadius()+LayerThickness;
838  double halflength = m_gmt_mgr->PixelLadderHalfLength() + m_epsilon;
839  std::string lname[3];
840  lname[0] = "InnerLayerLog";
841  lname[1] = "CenterLayerLog";
842  lname[2] = "OuterLayerLog";
843  const GeoTube* layerTube = new GeoTube(rmin,rmax,halflength); //solid
844  const GeoLogVol* layerLog = new GeoLogVol(lname[m_gmt_mgr->GetLD()],layerTube,air); //log volume
845  GeoFullPhysVol* layerPhys = new GeoFullPhysVol(layerLog); // phys vol
846  //
847  // Place the ladders:
848  //
849  GeoPixelLadder pl(m_DDmgr, m_gmt_mgr, theSensor);
851  int nsectors = m_gmt_mgr->NPixelSectors();
852  double angle=360./nsectors*Gaudi::Units::deg;
853  double layerradius = m_gmt_mgr->PixelLayerRadius();
854  double xcblpos = layerradius + (pl.Thickness()/2.+ptc.Thickness()/2)/cos(m_gmt_mgr->PixelLadderTilt());
855  GeoTrf::Vector3D posladder(layerradius, 0.,0.);
856  posladder = GeoTrf::RotateZ3D(angle/2.)*posladder;
857  GeoTrf::Vector3D postubecables(xcblpos, 0.,0.);
858  postubecables = GeoTrf::RotateZ3D(angle/2.)*postubecables;
859 
860  // Set numerology
863 
864  //
865  // Place the volumes by rotation.
866  //
867  for(int ii = 0; ii < nsectors; ii++) {
868  m_gmt_mgr->SetPhi(ii);
869  //
870  // change the sign w.r.t G4 (same sign as G3)
871  //
872  GeoTrf::RotateZ3D rm(( +(float) ii+0.5)*angle+m_gmt_mgr->PixelLadderTilt() );
873  //
874  // Place the ladders
875  //
876  GeoNameTag *tag = new GeoNameTag("Ladder");
877  GeoTransform* xform = new GeoTransform(GeoTrf::Translate3D(posladder.x(),posladder.y(),posladder.z())*rm);
878  layerPhys->add(tag);
879  layerPhys->add(new GeoIdentifierTag(ii) );
880  layerPhys->add(xform);
881  GeoVPhysVol* ladderphys = pl.Build() ;
882  layerPhys->add(ladderphys );
883  posladder = GeoTrf::RotateZ3D(angle)*posladder;
884  if(m_gmt_mgr->DoServices() ) {
885  //
886  // Place the box w/ the tubes and cables for the layer
887  //
888  tag = new GeoNameTag("TubesAndCables");
889  xform = new GeoTransform(GeoTrf::Translate3D(postubecables.x(),postubecables.y(),postubecables.z())*rm);
890  layerPhys->add(tag);
891  layerPhys->add(xform);
892  GeoVPhysVol* TCphys = ptc.Build() ;
893  layerPhys->add(TCphys );
894  postubecables = GeoTrf::RotateZ3D(angle)*postubecables;
895  }
896  }
897  return layerPhys;
898 }

◆ GeoVPixelFactory()

GeoVPixelFactory::GeoVPixelFactory

Definition at line 45 of file PixelDetectorDC1DC2.cxx.

1537  :
1538  m_gmt_mgr (mgr),
1540  m_DDmgr (ddmgr),
1541  m_epsilon(0.0001)
1542 {
1543 }

Member Data Documentation

◆ m_DDmgr

InDetDD::PixelDetectorManager* PixelGeoDC2::GeoVPixelFactory::m_DDmgr {}
protectedinherited

Definition at line 53 of file PixelDetectorDC1DC2.h.

◆ m_epsilon

const double PixelGeoDC2::GeoVPixelFactory::m_epsilon {}
protectedinherited

Definition at line 54 of file PixelDetectorDC1DC2.h.

◆ m_gmt_mgr

PixelGeometryManager* PixelGeoDC2::GeoVPixelFactory::m_gmt_mgr {}
protectedinherited

Definition at line 51 of file PixelDetectorDC1DC2.h.

◆ m_mat_mgr

StoredMaterialManager* PixelGeoDC2::GeoVPixelFactory::m_mat_mgr {}
protectedinherited

Definition at line 52 of file PixelDetectorDC1DC2.h.


The documentation for this class was generated from the following files:
PixelGeoDC2::PixelGeometryManager::DoServices
virtual bool DoServices()=0
PixelGeoDC2::GeoPixelSiCrystal
Definition: PixelDetectorDC1DC2.h:310
PixelGeoDC2::GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: PixelDetectorDC1DC2.h:51
InDetDD::SiDetectorManager::numerology
const SiNumerology & numerology() const
Access Numerology.
Definition: SiDetectorManager.h:126
PixelGeoDC2::GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: PixelDetectorDC1DC2.h:53
PixelGeoDC2::GeoVPixelFactory::m_epsilon
const double m_epsilon
Definition: PixelDetectorDC1DC2.h:54
PixelGeoDC2::PixelGeometryManager::PixelLadderHalfLength
virtual double PixelLadderHalfLength()=0
deg
#define deg
Definition: SbPolyhedron.cxx:17
PixelGeoDC2::GeoVPixelFactory::m_mat_mgr
StoredMaterialManager * m_mat_mgr
Definition: PixelDetectorDC1DC2.h:52
PixelGeoDC2::PixelGeometryManager::SetPhi
virtual void SetPhi(int phi)=0
PixelGeoDC2::PixelGeometryManager::PixelLadderTilt
virtual double PixelLadderTilt()=0
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelGeoDC2::GeoPixelTubeCables
Definition: PixelDetectorDC1DC2.h:357
PixelGeoDC2::PixelGeometryManager::getMaterialManager
virtual StoredMaterialManager * getMaterialManager()=0
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
PixelGeoDC2::PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeoDC2::PixelGeometryManager::NPixelSectors
virtual int NPixelSectors()=0
InDetDD::SiNumerology::setNumEtaModulesForLayer
void setNumEtaModulesForLayer(int layer, int nEtaModules)
Definition: SiNumerology.cxx:67
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
PixelGeoDC2::GeoPixelLadder
Definition: PixelDetectorDC1DC2.h:213
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
PixelGeoDC2::PixelGeometryManager::PixelLayerRadius
virtual double PixelLayerRadius()=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
InDetDD::SiNumerology::setNumPhiModulesForLayer
void setNumPhiModulesForLayer(int layer, int nPhiModules)
Definition: SiNumerology.cxx:61
PixelGeoDC2::PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0