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 224 of file PixelDetectorDC1DC2.cxx.

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

◆ 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 243 of file PixelDetectorDC1DC2.cxx.

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

◆ getPhiId()

int GeoPixelDisk::getPhiId ( )
private

Definition at line 344 of file PixelDetectorDC1DC2.cxx.

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

◆ operator=()

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

◆ RMax()

double GeoPixelDisk::RMax ( )

Definition at line 319 of file PixelDetectorDC1DC2.cxx.

319  {
320  return m_gmt_mgr->PixelECCarbonRMax("Outer");
321 }

◆ RMin()

double GeoPixelDisk::RMin ( )

Definition at line 315 of file PixelDetectorDC1DC2.cxx.

315  {
316  return m_gmt_mgr->PixelECCarbonRMin("Inner");
317 }

◆ Thickness()

double GeoPixelDisk::Thickness ( )

Definition at line 323 of file PixelDetectorDC1DC2.cxx.

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

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:128
PixelGeoDC2::GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: PixelDetectorDC1DC2.h:53
PixelGeoDC2::GeoVPixelFactory::GeoVPixelFactory
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
Definition: PixelDetectorDC1DC2.cxx:1550
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
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:68
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeoDC2::PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeoDC2::GeoPixelDisk::RMax
double RMax()
Definition: PixelDetectorDC1DC2.cxx:319
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:315
InDetDD::PixelDetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
Definition: PixelDetectorManager.cxx:274
InDetDD::SiNumerology::setNumPhiModulesForDiskRing
void setNumPhiModulesForDiskRing(int disk, int ring, int nPhiModules)
Definition: SiNumerology.cxx:55
PixelGeoDC2::GeoPixelDisk::getPhiId
int getPhiId()
Definition: PixelDetectorDC1DC2.cxx:344
PixelGeoDC2::GeoPixelDisk::Thickness
double Thickness()
Definition: PixelDetectorDC1DC2.cxx:323
PixelGeoDC2::PixelGeometryManager::Eta
virtual int Eta()=0
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
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:23
PixelGeoDC2::PixelGeometryManager::PixelECSiDz2
virtual double PixelECSiDz2()=0
PixelGeoDC2::PixelGeometryManager::SetEta
virtual void SetEta(int eta)=0
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
Identifier
Definition: IdentifierFieldParser.cxx:14