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

#include <PixelDetectorDC1DC2.h>

Inheritance diagram for PixelGeoDC2::GeoPixelDisk:
Collaboration diagram for PixelGeoDC2::GeoPixelDisk:

Public Member Functions

 GeoPixelDisk (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
 
 GeoPixelDisk (const GeoPixelDisk &)=delete
 
GeoPixelDiskoperator= (const GeoPixelDisk &)=delete
 
virtual ~GeoPixelDisk ()=default
 
virtual GeoVPhysVol * Build () override
 
double Thickness ()
 
double RMax ()
 
double RMin ()
 

Protected Attributes

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

Private Member Functions

int getPhiId ()
 

Private Attributes

GeoIntrusivePtr< GeoLogVol > m_theDisk {}
 

Detailed Description

Definition at line 115 of file PixelDetectorDC1DC2.h.

Constructor & Destructor Documentation

◆ GeoPixelDisk() [1/2]

GeoPixelDisk::GeoPixelDisk ( InDetDD::PixelDetectorManager ddmgr,
PixelGeometryManager mgr 
)

Definition at line 222 of file PixelDetectorDC1DC2.cxx.

224  : GeoVPixelFactory (ddmgr, mgr)
225 {
226 
227  // Define the log volume in the constructor, so I do it only once.
228  //
229 
230  //
231  // Dimensions from class methods.
232  //
233  double rmin = RMin();
234  double rmax = RMax();
235  double halflength = Thickness()*0.5;
236  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
237  const GeoTube* diskTube = new GeoTube(rmin,rmax,halflength);
238  m_theDisk = new GeoLogVol("diskLog",diskTube,air);
239 }

◆ GeoPixelDisk() [2/2]

PixelGeoDC2::GeoPixelDisk::GeoPixelDisk ( const GeoPixelDisk )
delete

◆ ~GeoPixelDisk()

virtual PixelGeoDC2::GeoPixelDisk::~GeoPixelDisk ( )
virtualdefault

Member Function Documentation

◆ Build()

GeoVPhysVol * GeoPixelDisk::Build ( )
overridevirtual

Implements PixelGeoDC2::GeoVPixelFactory.

Definition at line 241 of file PixelDetectorDC1DC2.cxx.

241  {
242  //
243  // Define the Sensor to be used here, so it will be the same for all the disk
244  GeoPixelSiCrystal theSensor(m_DDmgr, m_gmt_mgr, false);
245  GeoFullPhysVol* diskPhys = new GeoFullPhysVol(m_theDisk);
246  //
247  // Place the disk sectors (on both sides):
248  //
249  GeoPixelSubDisk psd(m_DDmgr, m_gmt_mgr, theSensor);
250  double zpos = -m_gmt_mgr->PixelECSiDz1()/2.;
252  GeoTrf::Translation3D pos(0.,0.,zpos);
253 
254  // Set numerology
255  m_gmt_mgr->SetEta(0);
258 
259  // Even modules
260  m_gmt_mgr->SetEta(0);
261  for (int ii = 0; ii < m_gmt_mgr->PixelECNSectors1(); ii++) {
262  m_gmt_mgr->SetPhi(ii);
263  GeoTrf::Transform3D rm = GeoTrf::RotateZ3D(ii*angle+angle/2.)*GeoTrf::RotateX3D(180.*Gaudi::Units::deg);
264  GeoAlignableTransform* xform = new GeoAlignableTransform(GeoTrf::Transform3D(pos*rm));
265  GeoVPhysVol * modulePhys = psd.Build();
266  GeoNameTag* tag = new GeoNameTag("DiskSector");
267  diskPhys->add(tag);
268  diskPhys->add(new GeoIdentifierTag(getPhiId() ) );
269  diskPhys->add(xform);
270  diskPhys->add(modulePhys);
271 
272  // Now store the xform by identifier:
273  Identifier id = theSensor.getID();
274  m_DDmgr->addAlignableTransform(0,id,xform,modulePhys);
275  }
276 
277  // Odd modules
278  m_gmt_mgr->SetEta(1);
279  zpos = m_gmt_mgr->PixelECSiDz2()/2.;
280  pos = GeoTrf::Translation3D(0.,0.,zpos);
281  for (int ii = 0; ii < m_gmt_mgr->PixelECNSectors1(); ii++) {
282  m_gmt_mgr->SetPhi(ii);
283  GeoTrf::RotateZ3D rm((ii+1)*angle);
284  GeoAlignableTransform* xform = new GeoAlignableTransform(GeoTrf::Transform3D(pos*rm));
285  GeoVPhysVol * modulePhys = psd.Build();
286  GeoNameTag* tag = new GeoNameTag("DiskSector");
287  diskPhys->add(tag);
288  diskPhys->add(new GeoIdentifierTag(getPhiId() ) );
289  diskPhys->add(xform);
290  diskPhys->add(modulePhys);
291 
292  // Now store the xform by identifier:
293  Identifier id = theSensor.getID();
294  m_DDmgr->addAlignableTransform(0,id,xform,modulePhys);
295  }
296  //
297  // Place the supports for the disks:
298  //
300  for(int ii =0; ii< pds.NCylinders(); ii++) {
301  pds.SetCylinder(ii);
302  GeoTrf::Translate3D pos(0.,0.,pds.ZPos() );
303  GeoNameTag* tag = new GeoNameTag("DiskSupport");
304  GeoTransform* xform = new GeoTransform(pos);
305  diskPhys->add(tag);
306  diskPhys->add(xform);
307  diskPhys->add(pds.Build() );
308  }
309 
310  return diskPhys;
311 }

◆ getPhiId()

int GeoPixelDisk::getPhiId ( )
private

Definition at line 342 of file PixelDetectorDC1DC2.cxx.

342  {
343  int brl_ec=0;
344  int phimod;
345  if(m_gmt_mgr->isBarrel() ) brl_ec = 0;
346  if(m_gmt_mgr->isEndcap() ) brl_ec = 2*m_gmt_mgr->GetSide();
347  if(brl_ec == 2) {
348  phimod = m_gmt_mgr->Phi()*2 + m_gmt_mgr->Eta();
349  } else {
350  //
351  // The (eta) negative) endcap is more complicated, as there is an extra
352  // rotation of the endcap as a whole around Y
353  //
354  phimod = 48-m_gmt_mgr->Phi()*2-m_gmt_mgr->Eta()-2;
355  if (phimod == -1) phimod = 47;
356  }
357  return phimod;
358 }

◆ operator=()

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

◆ RMax()

double GeoPixelDisk::RMax ( )

Definition at line 317 of file PixelDetectorDC1DC2.cxx.

317  {
318  return m_gmt_mgr->PixelECCarbonRMax("Outer");
319 }

◆ RMin()

double GeoPixelDisk::RMin ( )

Definition at line 313 of file PixelDetectorDC1DC2.cxx.

313  {
314  return m_gmt_mgr->PixelECCarbonRMin("Inner");
315 }

◆ Thickness()

double GeoPixelDisk::Thickness ( )

Definition at line 321 of file PixelDetectorDC1DC2.cxx.

321  {
322  //
323  // This can be calculated as the minimum thickness possible
324  // as for the layers I use a number which is enough to contain
325  // the inner part of the detector.
326  //
327  // 7-1 I switch to the minimum thickness possible as the cables are right
328  // outside this volume.
329  //
330  // return 10*Gaudi::Units::mm;
331  double tck = 2*(m_gmt_mgr->PixelBoardThickness()
334  return tck;
335 }

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_theDisk

GeoIntrusivePtr<GeoLogVol> PixelGeoDC2::GeoPixelDisk::m_theDisk {}
private

Definition at line 127 of file PixelDetectorDC1DC2.h.


The documentation for this class was generated from the following files:
InDetDD::SiNumerology::setNumRingsForDisk
void setNumRingsForDisk(int disk, int nRings)
Definition: SiNumerology.cxx:48
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
max
#define max(a, b)
Definition: cfImp.cxx:41
PixelGeoDC2::GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: PixelDetectorDC1DC2.h:53
PixelGeoDC2::GeoVPixelFactory::GeoVPixelFactory
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
Definition: PixelDetectorDC1DC2.cxx:1536
deg
#define deg
Definition: SbPolyhedron.cxx:17
PixelGeoDC2::GeoVPixelFactory::m_mat_mgr
StoredMaterialManager * m_mat_mgr
Definition: PixelDetectorDC1DC2.h:52
PixelGeoDC2::GeoPixelDisk::m_theDisk
GeoIntrusivePtr< GeoLogVol > m_theDisk
Definition: PixelDetectorDC1DC2.h:127
PixelGeoDC2::PixelGeometryManager::SetPhi
virtual void SetPhi(int phi)=0
PixelGeoDC2::GeoPixelSubDisk
Definition: PixelDetectorDC1DC2.h:334
PixelGeoDC2::PixelGeometryManager::isEndcap
virtual bool isEndcap()=0
PixelGeoDC2::PixelGeometryManager::Phi
virtual int Phi()=0
PixelGeoDC2::PixelGeometryManager::PixelECSiDz1
virtual double PixelECSiDz1()=0
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelGeoDC2::PixelGeometryManager::GetSide
virtual int GetSide()=0
CaloSwCorrections.phimod
def phimod(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:203
PixelGeoDC2::GeoPixelDiskSupports
Definition: PixelDetectorDC1DC2.h:137
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeoDC2::PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeoDC2::GeoPixelDisk::RMax
double RMax()
Definition: PixelDetectorDC1DC2.cxx:317
PixelGeoDC2::PixelGeometryManager::PixelECCarbonRMin
virtual double PixelECCarbonRMin(std::string)=0
PixelGeoDC2::PixelGeometryManager::PixelECCarbonRMax
virtual double PixelECCarbonRMax(std::string)=0
PixelGeoDC2::GeoPixelDisk::RMin
double RMin()
Definition: PixelDetectorDC1DC2.cxx:313
InDetDD::PixelDetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
Definition: PixelDetectorManager.cxx:262
InDetDD::SiNumerology::setNumPhiModulesForDiskRing
void setNumPhiModulesForDiskRing(int disk, int ring, int nPhiModules)
Definition: SiNumerology.cxx:55
PixelGeoDC2::GeoPixelDisk::getPhiId
int getPhiId()
Definition: PixelDetectorDC1DC2.cxx:342
PixelGeoDC2::GeoPixelDisk::Thickness
double Thickness()
Definition: PixelDetectorDC1DC2.cxx:321
PixelGeoDC2::PixelGeometryManager::Eta
virtual int Eta()=0
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
PixelGeoDC2::PixelGeometryManager::PixelChipThickness
virtual double PixelChipThickness()=0
PixelGeoDC2::PixelGeometryManager::PixelECNSectors1
virtual int PixelECNSectors1()=0
PixelGeoDC2::PixelGeometryManager::PixelBoardThickness
virtual double PixelBoardThickness()=0
PixelGeoDC2::PixelGeometryManager::PixelHybridThickness
virtual double PixelHybridThickness()=0
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
PixelGeoDC2::PixelGeometryManager::isBarrel
virtual bool isBarrel()=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
PixelGeoDC2::PixelGeometryManager::PixelECSiDz2
virtual double PixelECSiDz2()=0
readCCLHist.float
float
Definition: readCCLHist.py:83
PixelGeoDC2::PixelGeometryManager::SetEta
virtual void SetEta(int eta)=0