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

#include <PixelDetectorFactoryDC2.h>

Inheritance diagram for PixelDetectorFactoryDC2:
Collaboration diagram for PixelDetectorFactoryDC2:

Public Member Functions

 PixelDetectorFactoryDC2 (PixelGeoModelAthenaComps *athenaComps, const PixelSwitches &switches)
 ~PixelDetectorFactoryDC2 ()
virtual void create (GeoPhysVol *world)
virtual const InDetDD::PixelDetectorManagergetDetectorManager () const
StoreGateSvcdetStore ()
const StoreGateSvcdetStore () const
const IGeoDbTagSvcgeoDbTagSvc () const
IRDBAccessSvcrdbAccessSvc ()
const IGeometryDBSvcgeomDB () const
MsgStream & msg (MSG::Level lvl) const
bool msgLvl (MSG::Level lvl)
InDetDD::AthenaCompsgetAthenaComps ()

Private Member Functions

const PixelDetectorFactoryDC2operator= (const PixelDetectorFactoryDC2 &right)
 PixelDetectorFactoryDC2 (const PixelDetectorFactoryDC2 &right)

Private Attributes

InDetDD::PixelDetectorManagerm_detectorManager
PixelGeoDC2::PixelGeometryManagerm_geometryManager
InDetDD::AthenaCompsm_athenaComps

Detailed Description

Definition at line 21 of file PixelDetectorFactoryDC2.h.

Constructor & Destructor Documentation

◆ PixelDetectorFactoryDC2() [1/2]

PixelDetectorFactoryDC2::PixelDetectorFactoryDC2 ( PixelGeoModelAthenaComps * athenaComps,
const PixelSwitches & switches )

Definition at line 33 of file PixelDetectorFactoryDC2.cxx.

35 : InDetDD::DetectorFactoryBase(athenaComps),
36 m_detectorManager(nullptr)
37{
38 // Create the detector manager
39 m_detectorManager = new PixelDetectorManager(detStore());
40
41 // Create the geometry manager.
42 m_geometryManager = new OraclePixGeoManager();
43
44 // Pass the switches
45 m_geometryManager->SetServices(switches.services());
46 m_geometryManager->SetG3CompatibleDigits(switches.g3CompatibleDigits());
47 m_geometryManager->SetDC1Geometry(switches.dc1Geometry());
48 m_geometryManager->SetAlignable(switches.alignable());
49 m_geometryManager->SetInitialLayout(switches.initialLayout());
50
51 // Create SiCommonItems ans store it in geometry manager.
52 // These are items that are shared by all elements
53 std::unique_ptr<SiCommonItems> commonItems{std::make_unique<SiCommonItems>(athenaComps->getIdHelper())};
54 m_geometryManager->setCommonItems(commonItems.get());
55
56 m_detectorManager->setCommonItems(std::move(commonItems));
57
58 bool initialLayoutIdDict = (m_detectorManager->tag() == "initial_layout");
59 if (m_geometryManager->InitialLayout() != initialLayoutIdDict ) {
60 if(msgLvl(MSG::WARNING))
61 msg(MSG::WARNING) << "IdDict tag is \"" << m_detectorManager->tag()
62 << "\" which is inconsistent with the layout choosen!"
63 << endmsg;
64 }
65
66
67 //
68 // Set Version information
69 //
70 std::string versionTag = m_geometryManager->versionTag();
71 std::string versionName = "DC2";
72 std::string layout = "Final";
73 std::string description = "DC2 Geometry";
74 int versionMajorNumber = 2;
75 int versionMinorNumber = 2;
76 int versionPatchNumber = 0;
77
78 if (m_geometryManager->G3CompatibleDigits()) {
79 description += ", G3 Compatible Digits";
80 versionMinorNumber = 1;
81 }
82
83 if (m_geometryManager->InitialLayout()) {
84 layout = "Initial";
85 }
86
87 // We determine if we are running DC1 geoemtry via
88 // Barrel version number in NOVA
89 if (m_geometryManager->DC1Geometry()) {
90 versionName = "DC1";
91 description = "DC1 Geometry (300um B-Layer pixels)";
92 versionMajorNumber = 1;
93 versionMinorNumber = 2;
94 if (m_geometryManager->G3CompatibleDigits()) {
95 description += ", G3 Compatible Digits";
96 versionMinorNumber = 1;
97 }
98 }
99
100 InDetDD::Version version(versionTag,
101 versionName,
102 layout,
104 versionMajorNumber,
105 versionMinorNumber,
106 versionPatchNumber);
107 m_detectorManager->setVersion(version);
108
109}
#define endmsg
PixelGeoDC2::PixelGeometryManager * m_geometryManager
InDetDD::PixelDetectorManager * m_detectorManager
const PixelID * getIdHelper() const
bool g3CompatibleDigits() const
bool services() const
bool initialLayout() const
bool dc1Geometry() const
bool alignable() const
std::string description
glabal timer - how long have I taken so far?
Definition hcg.cxx:91
str layout
Definition TileTB.py:76
MsgStream & msg
Definition testRead.cxx:32

◆ ~PixelDetectorFactoryDC2()

PixelDetectorFactoryDC2::~PixelDetectorFactoryDC2 ( )

Definition at line 112 of file PixelDetectorFactoryDC2.cxx.

113{
114
115}

◆ PixelDetectorFactoryDC2() [2/2]

PixelDetectorFactoryDC2::PixelDetectorFactoryDC2 ( const PixelDetectorFactoryDC2 & right)
private

Member Function Documentation

◆ create()

void PixelDetectorFactoryDC2::create ( GeoPhysVol * world)
virtual

Definition at line 120 of file PixelDetectorFactoryDC2.cxx.

121{
122 if(msgLvl(MSG::INFO)) {
123 msg(MSG::INFO) << "Building Pixel Detector" << endmsg;
124 msg(MSG::INFO) << " " << m_detectorManager->getVersion().fullDescription() << endmsg;
125
126 // Printout the parameters that are different in DC1 and DC2.
127 msg(MSG::INFO) << " B-Layer basic eta pitch: " << m_geometryManager->DesignPitchZ(true)/Gaudi::Units::micrometer << "um" << endmsg;
128 }
129 m_geometryManager->SetCurrentLD(0);
130 m_geometryManager->SetBarrel();
131 if(msgLvl(MSG::INFO))
132 msg(MSG::INFO) << " B-Layer sensor thickness: " << m_geometryManager->PixelBoardThickness()/Gaudi::Units::micrometer << "um" << endmsg;
133
134 //
135 // Create the Pixel Envelope...
136 GeoPixelEnvelope pe (m_detectorManager, m_geometryManager);
137 GeoVPhysVol* pephys = pe.Build() ;
138 GeoAlignableTransform * transform = new GeoAlignableTransform(GeoTrf::Transform3D::Identity());
139
140 //
141 // Add this to the world
142 //
143 GeoNameTag *tag = new GeoNameTag("Pixel");
144 world->add(tag);
145 world->add(transform);
146 world->add(pephys);
147
148 // Store alignable transform
149 Identifier id = m_geometryManager->getIdHelper()->wafer_id(0,0,0,0);
150 m_detectorManager->addAlignableTransform(2, id, transform, pephys);
151
152 //
153 // Add this to the list of top level physical volumes:
154 //
155 m_detectorManager->addTreeTop(pephys);
156
157
158 // Initialize the neighbours
159 m_detectorManager->initNeighbours();
160
161 // Set maximum rows/columns in numerology
162 for (int iDesign = 0; iDesign < m_detectorManager->numDesigns(); iDesign++) {
163 m_detectorManager->numerology().setMaxNumPhiCells(m_detectorManager->getPixelDesign(iDesign)->rows());
164 m_detectorManager->numerology().setMaxNumEtaCells(m_detectorManager->getPixelDesign(iDesign)->columns());
165 }
166
167 // Register the callbacks and keys and the level corresponding to the key.
168 if (m_geometryManager->Alignable()) {
169 m_detectorManager->addFolder("/Indet/Align");
170 m_detectorManager->addChannel("/Indet/Align/ID", 2, InDetDD::global);
171 m_detectorManager->addChannel("/Indet/Align/PIX", 1, InDetDD::global);
172 m_detectorManager->addChannel("/Indet/Align/PIXB1", 0, InDetDD::local);
173 m_detectorManager->addChannel("/Indet/Align/PIXB2", 0, InDetDD::local);
174 m_detectorManager->addChannel("/Indet/Align/PIXB3", 0, InDetDD::local);
175 m_detectorManager->addChannel("/Indet/Align/PIXEA1", 0, InDetDD::local);
176 m_detectorManager->addChannel("/Indet/Align/PIXEA2", 0, InDetDD::local);
177 m_detectorManager->addChannel("/Indet/Align/PIXEA3", 0, InDetDD::local);
178 m_detectorManager->addChannel("/Indet/Align/PIXEC1", 0, InDetDD::local);
179 m_detectorManager->addChannel("/Indet/Align/PIXEC2", 0, InDetDD::local);
180 m_detectorManager->addChannel("/Indet/Align/PIXEC3", 0, InDetDD::local);
181 }
182}
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.

◆ detStore() [1/2]

StoreGateSvc * InDetDD::DetectorFactoryBase::detStore ( )
inlineinherited

Definition at line 27 of file InDetDetectorFactoryBase.h.

27{return m_athenaComps->detStore();}

◆ detStore() [2/2]

const StoreGateSvc * InDetDD::DetectorFactoryBase::detStore ( ) const
inlineinherited

Definition at line 28 of file InDetDetectorFactoryBase.h.

28{return std::as_const(*m_athenaComps).detStore();}

◆ geoDbTagSvc()

const IGeoDbTagSvc * InDetDD::DetectorFactoryBase::geoDbTagSvc ( ) const
inlineinherited

Definition at line 30 of file InDetDetectorFactoryBase.h.

30{return std::as_const(*m_athenaComps).geoDbTagSvc();}

◆ geomDB()

const IGeometryDBSvc * InDetDD::DetectorFactoryBase::geomDB ( ) const
inlineinherited

Definition at line 34 of file InDetDetectorFactoryBase.h.

34{return m_athenaComps->geomDB();}

◆ getAthenaComps()

InDetDD::AthenaComps * InDetDD::DetectorFactoryBase::getAthenaComps ( )
inlineinherited

Definition at line 42 of file InDetDetectorFactoryBase.h.

42{return m_athenaComps;}

◆ getDetectorManager()

const PixelDetectorManager * PixelDetectorFactoryDC2::getDetectorManager ( ) const
virtual

Definition at line 184 of file PixelDetectorFactoryDC2.cxx.

185{
186 return m_detectorManager;
187}

◆ msg()

MsgStream & InDetDD::DetectorFactoryBase::msg ( MSG::Level lvl) const
inlineinherited

Definition at line 37 of file InDetDetectorFactoryBase.h.

37{ return m_athenaComps->msg(lvl); }

◆ msgLvl()

bool InDetDD::DetectorFactoryBase::msgLvl ( MSG::Level lvl)
inlineinherited

Definition at line 40 of file InDetDetectorFactoryBase.h.

40{ return m_athenaComps->msgLvl(lvl); }

◆ operator=()

const PixelDetectorFactoryDC2 & PixelDetectorFactoryDC2::operator= ( const PixelDetectorFactoryDC2 & right)
private

◆ rdbAccessSvc()

IRDBAccessSvc * InDetDD::DetectorFactoryBase::rdbAccessSvc ( )
inlineinherited

Definition at line 32 of file InDetDetectorFactoryBase.h.

32{return m_athenaComps->rdbAccessSvc();}

Member Data Documentation

◆ m_athenaComps

InDetDD::AthenaComps* InDetDD::DetectorFactoryBase::m_athenaComps
privateinherited

Definition at line 46 of file InDetDetectorFactoryBase.h.

◆ m_detectorManager

InDetDD::PixelDetectorManager* PixelDetectorFactoryDC2::m_detectorManager
private

Definition at line 45 of file PixelDetectorFactoryDC2.h.

◆ m_geometryManager

PixelGeoDC2::PixelGeometryManager* PixelDetectorFactoryDC2::m_geometryManager
private

Definition at line 46 of file PixelDetectorFactoryDC2.h.


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