ATLAS Offline Software
Loading...
Searching...
No Matches
DBM_Det Class Reference

Diamond Beam Monitor detector builder. More...

#include <DBM_Det.h>

Inheritance diagram for DBM_Det:
Collaboration diagram for DBM_Det:

Public Member Functions

 DBM_Det (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
virtual GeoVPhysVol * Build () override

Protected Attributes

PixelGeometryManagerm_gmt_mgr
InDetMaterialManagerm_mat_mgr
InDetDD::PixelDetectorManagerm_DDmgr
GeoModelIO::ReadGeoModel * m_sqliteReader
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
const double m_epsilon

Private Attributes

std::vector< double > m_module [4]

Detailed Description

Diamond Beam Monitor detector builder.

Definition at line 15 of file DBM_Det.h.

Constructor & Destructor Documentation

◆ DBM_Det()

DBM_Det::DBM_Det ( InDetDD::PixelDetectorManager * ddmgr,
PixelGeometryManager * mgr,
GeoModelIO::ReadGeoModel * sqliteReader,
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV,
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX )

Definition at line 20 of file DBM_Det.cxx.

25 : GeoVPixelFactory(ddmgr,mgr,sqliteReader, std::move(mapFPV), std::move(mapAX))
26{
27 double Trans_Y = 0.;
28
29 // Radius to beamline
30 // Hardcoded, so if change then change in DBM_module too
31 double trans_rad = 46.678*Gaudi::Units::mm + (m_gmt_mgr->DBMTelescopeY()) / 2.; // 10-Gaudi::Units::degree version
32
33 // TRANS_X TRANS_Y TRANS_Z ROT_X ROT_Y ROT_Z
34 m_module[0].push_back(trans_rad); m_module[0].push_back(0); m_module[0].push_back(Trans_Y); m_module[0].push_back(0); m_module[0].push_back(0); m_module[0].push_back(270);
35 m_module[1].push_back(0); m_module[1].push_back(trans_rad); m_module[1].push_back(Trans_Y); m_module[1].push_back(0); m_module[1].push_back(0); m_module[1].push_back(0);
36 m_module[2].push_back(-trans_rad); m_module[2].push_back(0); m_module[2].push_back(Trans_Y); m_module[2].push_back(0); m_module[2].push_back(0); m_module[2].push_back(90);
37 m_module[3].push_back(0); m_module[3].push_back(-trans_rad); m_module[3].push_back(Trans_Y); m_module[3].push_back(0); m_module[3].push_back(0); m_module[3].push_back(180);
38
39}
std::vector< double > m_module[4]
Definition DBM_Det.h:25
PixelGeometryManager * m_gmt_mgr
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)

Member Function Documentation

◆ Build()

GeoVPhysVol * DBM_Det::Build ( )
overridevirtual

Implements GeoVPixelFactory.

Definition at line 41 of file DBM_Det.cxx.

42{
43 GeoFullPhysVol* Phys{nullptr};
44 if(!m_sqliteReader) {
45 double safety = 0.001;
46
47 //create a cylinder 8mm smaller than the BPSS outer radius to place the 4 DBM telescopes
48 double rmin = 45.*Gaudi::Units::mm;//41.0*Gaudi::Units::mm;
49 double rmax = 150.*Gaudi::Units::mm; //244.*Gaudi::Units::mm;
50 double halflength = m_gmt_mgr->DBMTelescopeZ()/2.;//200.*Gaudi::Units::mm
51 GeoTube * Shape = new GeoTube(rmin,rmax,halflength);
52 const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
53 const GeoLogVol* Log = new GeoLogVol("OutsideDBM",Shape,air);
54 Phys = new GeoFullPhysVol(Log);
55
56 // add PP0 board
57 DBM_PP0 pp0Board (m_DDmgr, m_gmt_mgr, m_sqliteReader, m_mapFPV, m_mapAX);
58 GeoVPhysVol* pp0BoardPhys = pp0Board.Build();
59 GeoTrf::Translate3D pp0Pos(0., 0., -halflength + m_gmt_mgr->DBMPP0Thick()/2. + safety);
60 GeoTransform* pp0xform = new GeoTransform(pp0Pos);
61 GeoNameTag* pp0tag = new GeoNameTag("DBM_PP0");
62 Phys->add(pp0tag);
63 Phys->add(pp0xform);
64 Phys->add(pp0BoardPhys);
65 }
66
67 //we are now adding four DBM telescopes
68 DBM_Telescope dbm (m_DDmgr, m_gmt_mgr, m_sqliteReader, m_mapFPV, m_mapAX);
69 for(int i=0; i<4; i++)
70 {
71 m_gmt_mgr->SetEta(0);
72 m_gmt_mgr->SetPhi(i);
73 // Fixing swaping of module 0 and 2 on side C (-4)
74 // sinceDBM side C is 180deg rotation around global Y
75 if ((m_gmt_mgr->GetSide() < 0) && (i == 0)) m_gmt_mgr->SetPhi(2);
76 else if ((m_gmt_mgr->GetSide() < 0) && (i == 2)) m_gmt_mgr->SetPhi(0);
77
78 //setting transformation
79 if(m_sqliteReader) {
80 dbm.Build();
81 }
82 else {
83 GeoTrf::Transform3D rm = GeoTrf::RotateZ3D(m_module[i].at(5)*Gaudi::Units::deg)
84 * GeoTrf::RotateY3D(m_module[i].at(4)*Gaudi::Units::deg)
85 * GeoTrf::RotateX3D(m_module[i].at(3)*Gaudi::Units::deg);
86 GeoTrf::Translation3D pos(m_module[i].at(0), m_module[i].at(1), m_module[i].at(2));
87 GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(pos*rm));
88
89 GeoNameTag* tag = new GeoNameTag("DBM Module");
90 GeoVPhysVol* dbmModPhys = dbm.Build();
91 Phys->add(tag);
92 Phys->add(new GeoIdentifierTag(i));
93 Phys->add(xform);
94 Phys->add(dbmModPhys);
95 }
96 }
97
98
99 // Set numerology for the full DBM system
100
101 if(m_DDmgr->numerology().numEndcapsDBM()==0){
102
103 int numDisk=3;
104 int numPhiModules=4;
105 m_DDmgr->numerology().setNumDisksDBM(numDisk);
106 m_DDmgr->numerology().setNumBarrelDBM(0);
107 m_DDmgr->numerology().addEndcapDBM(4);
108 m_DDmgr->numerology().addEndcapDBM(-4);
109 for(int disk=0; disk<numDisk; disk++){
110 m_DDmgr->numerology().setNumPhiModulesForDiskRingDBM(disk, 0, numPhiModules);
111 }
112 }
113
114 if(m_sqliteReader) {
115 std::string key="DBM_Det_"+std::to_string(m_gmt_mgr->GetLD())+"_"+std::to_string(m_gmt_mgr->Phi())+"_"+std::to_string(m_gmt_mgr->Eta());
116 return (*m_mapFPV)[key];
117 }
118 else {
119 return Phys;
120 }
121}
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
InDetDD::PixelDetectorManager * m_DDmgr
InDetMaterialManager * m_mat_mgr

Member Data Documentation

◆ m_DDmgr

InDetDD::PixelDetectorManager* GeoVPixelFactory::m_DDmgr
protectedinherited

Definition at line 45 of file GeoVPixelFactory.h.

◆ m_epsilon

const double GeoVPixelFactory::m_epsilon
protectedinherited

Definition at line 49 of file GeoVPixelFactory.h.

◆ m_gmt_mgr

PixelGeometryManager* GeoVPixelFactory::m_gmt_mgr
protectedinherited

Definition at line 43 of file GeoVPixelFactory.h.

◆ m_mapAX

std::shared_ptr<std::map<std::string, GeoAlignableTransform*> > GeoVPixelFactory::m_mapAX
protectedinherited

Definition at line 48 of file GeoVPixelFactory.h.

◆ m_mapFPV

std::shared_ptr<std::map<std::string, GeoFullPhysVol*> > GeoVPixelFactory::m_mapFPV
protectedinherited

Definition at line 47 of file GeoVPixelFactory.h.

◆ m_mat_mgr

InDetMaterialManager* GeoVPixelFactory::m_mat_mgr
protectedinherited

Definition at line 44 of file GeoVPixelFactory.h.

◆ m_module

std::vector<double> DBM_Det::m_module[4]
private

Definition at line 25 of file DBM_Det.h.

◆ m_sqliteReader

GeoModelIO::ReadGeoModel* GeoVPixelFactory::m_sqliteReader
protectedinherited

Definition at line 46 of file GeoVPixelFactory.h.


The documentation for this class was generated from the following files: