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

#include <PixelDetectorDC1DC2.h>

Inheritance diagram for PixelGeoDC2::GeoPixelLadder:
Collaboration diagram for PixelGeoDC2::GeoPixelLadder:

Public Member Functions

 GeoPixelLadder (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoPixelSiCrystal &theSensor)
 
 GeoPixelLadder (const GeoPixelLadder &)=delete
 
GeoPixelLadderoperator= (const GeoPixelLadder &)=delete
 
virtual ~GeoPixelLadder ()=default
 
virtual GeoVPhysVol * Build () override
 
double Thickness ()
 

Protected Attributes

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

Private Attributes

GeoIntrusivePtr< GeoLogVol > m_theLadder
 
GeoPixelSiCrystalm_theSensor
 

Detailed Description

Definition at line 213 of file PixelDetectorDC1DC2.h.

Constructor & Destructor Documentation

◆ GeoPixelLadder() [1/2]

GeoPixelLadder::GeoPixelLadder ( InDetDD::PixelDetectorManager ddmgr,
PixelGeometryManager mgr,
GeoPixelSiCrystal theSensor 
)

Definition at line 673 of file PixelDetectorDC1DC2.cxx.

676  : GeoVPixelFactory (ddmgr, mgr),
677  m_theSensor(theSensor)
678 {
679  using std::max;
680 
681  //
682  // Define the log volume in the constructor, so I do it only once.
683  //
684 
685  //
686  // Length of the ladder is in the db
687  //
688  double halflength = m_gmt_mgr->PixelLadderHalfLength();
689  //
690  // The width is the maximum among the componenst widths
691  //
692  double width = max( max(
696  //
697  // The thickness has to be calculated
698  //
699  double thickness = this->Thickness();
700  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
701  const GeoBox* ladderBox = new GeoBox(thickness*0.5,width*0.5,halflength);
702  m_theLadder = new GeoLogVol("ladderLog",ladderBox,air);
703 }

◆ GeoPixelLadder() [2/2]

PixelGeoDC2::GeoPixelLadder::GeoPixelLadder ( const GeoPixelLadder )
delete

◆ ~GeoPixelLadder()

virtual PixelGeoDC2::GeoPixelLadder::~GeoPixelLadder ( )
virtualdefault

Member Function Documentation

◆ Build()

GeoVPhysVol * GeoPixelLadder::Build ( )
overridevirtual

Implements PixelGeoDC2::GeoVPixelFactory.

Definition at line 705 of file PixelDetectorDC1DC2.cxx.

705  {
706  GeoPhysVol* ladderPhys = new GeoPhysVol(m_theLadder);
707  //
708  // Place the Modules
709  //
711  int HalfNModule = m_gmt_mgr->PixelNModule()/2;
712  for(int ii = 0; ii < m_gmt_mgr->PixelNModule(); ii++) {
713  //
714  // Which of the two sides is it?
715  //
716  float side = 1.;
717  int jj = ii-HalfNModule;
718  m_gmt_mgr->SetEta(jj);
719  if(jj < 0) {
720  side = -1.;
721  jj = -jj;
722  }
723 //
724 // Shift down the central module, as its flag (from NOVA) is -1.
725 //
727 //
728 // Get the z position from the db
729 //
730  float zpos = m_gmt_mgr->PixelModulePosition(jj)*side;
731  GeoTrf::Translation3D modulepos(xpos,0.,zpos);
732 //
733 //
734 //
735  //
736  // again change sign w.r.t. g4
737  //
738  GeoTrf::RotateY3D rm(m_gmt_mgr->PixelModuleAngle()*m_gmt_mgr->PixelModuleAngleSign(ii) );
739 //
740 // Place the Module
741 //
742  GeoVPhysVol* modulephys = pm.Build() ;
743  GeoNameTag *tag = new GeoNameTag("Module");
744  GeoAlignableTransform* xform;
745  // OLD EXAMPLE FOR ALIGNEMENT!!
746  // if(m_gmt_mgr->IsAlign() ) {
747  // xform = new GeoSiAlTransform(GeoTrf::Transform3D(rm,modulepos), pm.getID() );
748  // } else {
749  // xform = new GeoTransform(GeoTrf::Transform3D(rm,modulepos));
750  // }
751  xform = new GeoAlignableTransform(GeoTrf::Transform3D(modulepos*rm));
752  ladderPhys->add(tag);
753  ladderPhys->add(new GeoIdentifierTag(m_gmt_mgr->Eta() ) );
754  ladderPhys->add(xform);
755  ladderPhys->add(modulephys );
756 
757  // Now store the xform by identifier:
758  Identifier id = m_theSensor.getID();
759  m_DDmgr->addAlignableTransform(0,id,xform,modulephys);
760 
761  }
762  return ladderPhys;
763 }

◆ operator=()

GeoPixelLadder& PixelGeoDC2::GeoPixelLadder::operator= ( const GeoPixelLadder )
delete

◆ Thickness()

double GeoPixelLadder::Thickness ( )

Definition at line 766 of file PixelDetectorDC1DC2.cxx.

766  {
767  //
768  // The thickness of the ladderis calculated starting from the thickness of
769  // its components: Board + Hybrid+Chips
770  // then the distance of the modules from the center is added and
771  // a factor is added to account for the tilt of ~1degree given to
772  // have a z overlap of the single modules
773  //
774  double tckincl = (m_gmt_mgr->PixelBoardLength()+m_gmt_mgr->PixelBalcony())*
776  double thick = m_gmt_mgr->PixelBoardThickness()+
780  tckincl;
781  return thick;
782 }

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.

◆ m_theLadder

GeoIntrusivePtr<GeoLogVol> PixelGeoDC2::GeoPixelLadder::m_theLadder
private

Definition at line 224 of file PixelDetectorDC1DC2.h.

◆ m_theSensor

GeoPixelSiCrystal& PixelGeoDC2::GeoPixelLadder::m_theSensor
private

Definition at line 225 of file PixelDetectorDC1DC2.h.


The documentation for this class was generated from the following files:
PixelGeoDC2::GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: PixelDetectorDC1DC2.h:51
max
#define max(a, b)
Definition: cfImp.cxx:41
PixelGeoDC2::GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: PixelDetectorDC1DC2.h:53
PixelGeoDC2::GeoPixelSiCrystal::getID
Identifier getID()
Definition: PixelDetectorDC1DC2.h:326
PixelGeoDC2::PixelGeometryManager::PixelModuleDrDistance
virtual double PixelModuleDrDistance()=0
PixelGeoDC2::PixelGeometryManager::PixelLadderHalfLength
virtual double PixelLadderHalfLength()=0
PixelGeoDC2::GeoVPixelFactory::GeoVPixelFactory
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
Definition: PixelDetectorDC1DC2.cxx:1536
PixelGeoDC2::PixelGeometryManager::PixelModuleShiftFlag
virtual double PixelModuleShiftFlag(int)=0
PixelGeoDC2::GeoVPixelFactory::m_mat_mgr
StoredMaterialManager * m_mat_mgr
Definition: PixelDetectorDC1DC2.h:52
PixelGeoDC2::PixelGeometryManager::PixelHybridWidth
virtual double PixelHybridWidth()=0
TRT::Hit::side
@ side
Definition: HitInfo.h:83
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelGeoDC2::PixelGeometryManager::PixelBoardLength
virtual double PixelBoardLength()=0
PixelGeoDC2::PixelGeometryManager::PixelBoardWidth
virtual double PixelBoardWidth()=0
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeoDC2::PixelGeometryManager::PixelModuleAngleSign
virtual double PixelModuleAngleSign(int)=0
PixelGeoDC2::PixelGeometryManager::PixelModulePosition
virtual double PixelModulePosition(int)=0
InDetDD::PixelDetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
Definition: PixelDetectorManager.cxx:262
PixelGeoDC2::GeoPixelLadder::m_theSensor
GeoPixelSiCrystal & m_theSensor
Definition: PixelDetectorDC1DC2.h:225
PixelGeoDC2::GeoPixelLadder::Thickness
double Thickness()
Definition: PixelDetectorDC1DC2.cxx:766
PixelGeoDC2::GeoPixelModule
Definition: PixelDetectorDC1DC2.h:260
PixelGeoDC2::PixelGeometryManager::PixelModuleAngle
virtual double PixelModuleAngle()=0
PixelGeoDC2::PixelGeometryManager::Eta
virtual int Eta()=0
PixelGeoDC2::PixelGeometryManager::PixelChipThickness
virtual double PixelChipThickness()=0
PixelGeoDC2::PixelGeometryManager::PixelBoardThickness
virtual double PixelBoardThickness()=0
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
PixelGeoDC2::PixelGeometryManager::PixelHybridThickness
virtual double PixelHybridThickness()=0
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
PixelGeoDC2::PixelGeometryManager::PixelChipWidth
virtual double PixelChipWidth()=0
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
PixelGeoDC2::GeoPixelLadder::m_theLadder
GeoIntrusivePtr< GeoLogVol > m_theLadder
Definition: PixelDetectorDC1DC2.h:224
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
PixelGeoDC2::PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0
PixelGeoDC2::PixelGeometryManager::SetEta
virtual void SetEta(int eta)=0
PixelGeoDC2::PixelGeometryManager::PixelBalcony
virtual double PixelBalcony()=0