ATLAS Offline Software
DBM_Module.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #include "DBM_Module.h"
7 
8 #include "GeoModelKernel/GeoTransform.h"
9 #include "GeoModelKernel/GeoAlignableTransform.h"
10 #include "GeoModelKernel/GeoNameTag.h"
11 #include "GeoModelKernel/GeoBox.h"
12 #include "GaudiKernel/SystemOfUnits.h"
13 
14 #include "Identifier/Identifier.h"
17 
21 using namespace InDetDD;
22 
25  GeoModelIO::ReadGeoModel* sqliteReader,
26  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
27  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
28  : GeoVPixelFactory (ddmgr, mgr, sqliteReader, mapFPV, mapAX)
29 {
30 
31  double thickness = 0.5;
32 
33  int circuitsPhi = 1;
34  int circuitsEta = 1;
35  int cellRowPerCirc = 80;
36  int cellColPerCirc = 336;
37  int diodeRowPerCirc = 80;
38  int diodeColPerCirc = 336;
39  int readoutSide = 1;
40 
41  double etaPitchLongEnd = 0.05;
42  double etaPitchLong = 0.05;
43  double phiPitch = 0.25;
44  double etaPitch = 0.05;
45 
46  std::shared_ptr<const PixelDiodeMatrix> fullMatrix = makeMatrix(phiPitch, etaPitch, etaPitchLong, etaPitchLongEnd,
47  circuitsPhi, circuitsEta, diodeRowPerCirc, diodeColPerCirc);
48 
49  std::unique_ptr<PixelModuleDesign> p_dbmdesign = std::make_unique<PixelModuleDesign>(thickness,
50  circuitsPhi,
51  circuitsEta,
52  cellColPerCirc,
53  cellRowPerCirc,
54  diodeColPerCirc,
55  diodeRowPerCirc,
56  fullMatrix,
58  readoutSide);
59 
60 
61  m_design = m_DDmgr->addDesign(std::move(p_dbmdesign));
62 
63 
64 }
65 
66 GeoVPhysVol* DBM_Module::Build()
67 {
68  const PixelID * idHelper = m_gmt_mgr->getIdHelper();
69  int dbmdet = 4*m_gmt_mgr->GetSide();
70  Identifier idwafer;
71  idwafer = idHelper->wafer_id(dbmdet,m_gmt_mgr->GetLD(),m_gmt_mgr->Phi(),m_gmt_mgr->Eta());
72 
73  if(m_sqliteReader) {
74  std::string key ="DBMDiamond_" + std::to_string(dbmdet) +"_"+ std::to_string(m_gmt_mgr->GetLD()) +"_"+ std::to_string(m_gmt_mgr->Phi()) +"_"+ std::to_string(m_gmt_mgr->Eta());
76  // add the element to the manager
77  m_DDmgr->addDetectorElement(element);
78  m_DDmgr->addAlignableTransform(0, idwafer, (*m_mapAX)[key], (*m_mapFPV)[key]);
79  return nullptr;
80  }
81  else {
82  GeoIdentifierTag* diamondTag = new GeoIdentifierTag(400);
83 
84 
85  double safety = 0.003*Gaudi::Units::mm;
86 
87  //diamond dimension
88  double diamond_X = m_gmt_mgr->DBMDiamondX();
89  double diamond_Y = m_gmt_mgr->DBMDiamondY();
90  double diamond_Z = m_gmt_mgr->DBMDiamondZ();
91  double air_gap = m_gmt_mgr->DBMAirGap();
92 
93  //chip, FEI4 dimension
94  double chip_X = m_gmt_mgr->DBMFEI4X();
95  double chip_Y = m_gmt_mgr->DBMFEI4Y();
96  double chip_thick = m_gmt_mgr->DBMFEI4Z();
97 
98  //ceramic dimension
99  double substrate_X = m_gmt_mgr->DBMCeramicX();
100  double substrate_Y = m_gmt_mgr->DBMCeramicY();
101  double substrate_Z = m_gmt_mgr->DBMCeramicZ();
102 
103  //distances from bottom of the ceramic
104  //Hardcoded!
105  double bot2Chip = 0.0*Gaudi::Units::mm;
106  double bot2Diamond = 1.685*Gaudi::Units::mm;
107 
108 
109  //---------------------------------------------
110  // Get parameters for alignable Transform
111 
112  // Position of the corner closest to IP and beamline
113  // Hardcoded, so if change then change in GeoPixelEnvelope and DBM_Det too
114  double ZToIP = 887.002*Gaudi::Units::mm;
115  double RToBeam = 46.678*Gaudi::Units::mm;
116 
117  // layer spacing
118  double Zspacing = m_gmt_mgr->DBMSpacingZ();
119  double Rspacing = m_gmt_mgr->DBMSpacingRadial();
120  // gap between V-slide and first main plate
121  double layer1Space = m_gmt_mgr->DBMSpace();
122 
123  // parameters for rotating the 3-layer unit
124  double angle = m_gmt_mgr->DBMAngle(); // telescope tilting angle in degree
125  double bracketZ = m_gmt_mgr->DBMBracketZ(); // total thickness of the bracket unit,
126  double trapBackY = m_gmt_mgr->DBMTrapezBackY();
127  double trapBackShortZ = m_gmt_mgr->DBMTrapezBackShortZ();
128  double coolingSidePlateY = m_gmt_mgr->DBMCoolingSidePlateY();
129  double brcktLockZ = m_gmt_mgr->DBMBrcktLockZ();
130 
131  //double lyRadius = sqrt(layerUnitY*layerUnitY/4 + layerUnitZ*layerUnitZ/4);
132  //double lyAngle = atan(layerUnitY/layerUnitZ);
133  // position of the 3-layer unit's corner closest to the IP and beamline, which is the rotation point
134  double layerUnitPos_Y = (trapBackY/cos(angle) - coolingSidePlateY)*cos(angle);
135  double layerUnitPos_Z = coolingSidePlateY*sin(angle) + trapBackShortZ + bracketZ - brcktLockZ;
136  //---------------------------------------------
137 
138 
139 
140  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
141  //first try the Diamond
142  const GeoMaterial* diamond = m_mat_mgr->getMaterial("pix::Diamond");
143  if(diamond == nullptr)
144  {
145  diamond = m_mat_mgr->getMaterial("std::Carbon");
146  }
147 
148  const GeoMaterial* chip_mat = m_mat_mgr->getMaterial("pix::ChipBase");
149 
150  double max_thick = diamond_Z + air_gap + chip_thick + substrate_Z;
151 
152  //create a outer box to contain all volumes
153  const GeoBox* dbmModuleBox = new GeoBox(substrate_X/2.0 + safety, substrate_Y/2.0 + safety, max_thick/2.0 + safety);
154  const GeoLogVol* dbmModuleLog = new GeoLogVol("dbmModuleLog", dbmModuleBox, air);
155  GeoPhysVol* dbmModulePhys = new GeoPhysVol(dbmModuleLog);
156 
157  GeoTrf::Transform3D rm = GeoTrf::RotateZ3D(90.*Gaudi::Units::deg)*GeoTrf::RotateY3D(270.*Gaudi::Units::deg);
158 
159  //diamond
160  const GeoBox* dbmDiamondBox = new GeoBox(diamond_Z/2.0, diamond_X/2.0, diamond_Y/2.0 );
161  const GeoLogVol* dbmDiamondLog = new GeoLogVol("dbmDiamondLog", dbmDiamondBox, diamond);
162  GeoFullPhysVol* dbmDiamondPhys = new GeoFullPhysVol(dbmDiamondLog);
163 
164  SiDetectorElement* element= new SiDetectorElement(idwafer, m_design, dbmDiamondPhys, m_gmt_mgr->commonItems());
165  // add the element to the manager
166  m_DDmgr->addDetectorElement(element);
167 
168  GeoTrf::Translation3D dbmDiamondPos(0, bot2Diamond+diamond_Y/2.0-substrate_Y/2.0, diamond_Z/2.0-max_thick/2.0);
169  GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(dbmDiamondPos*rm));
170 
171  dbmModulePhys->add(diamondTag);
172  dbmModulePhys->add(xform);
173  dbmModulePhys->add(dbmDiamondPhys);
174 
175  //FEI4 chip
176  const GeoBox* dbmFEI4Box = new GeoBox(chip_thick/2.0, chip_X/2.0, chip_Y/2.0 );
177  const GeoLogVol* dbmFEI4Log = new GeoLogVol("dbmWallLogF4", dbmFEI4Box, chip_mat); //should this be "dbmdiamondLog"?
178  GeoPhysVol* dbmFEI4Phys = new GeoPhysVol(dbmFEI4Log);
179 
180  GeoTrf::Translation3D dbmFEI4Pos(0, bot2Chip+chip_Y/2.0-substrate_Y/2.0, max_thick/2.0-substrate_Z-chip_thick/2.0);
181  xform = new GeoTransform(GeoTrf::Transform3D(dbmFEI4Pos*rm));
182 
183  dbmModulePhys->add(xform);
184  dbmModulePhys->add(dbmFEI4Phys);
185 
186  //ceramic support
187  const GeoBox* dbmSubstBox = new GeoBox(substrate_X/2.0, substrate_Y/2.0, substrate_Z/2.0);
188  const GeoMaterial* aluminiumNitride = m_mat_mgr->getMaterialForVolume("pix::DBMCeramic", dbmSubstBox->volume());
189  const GeoLogVol* dbmSubstLog = new GeoLogVol("dbmWallLogCe", dbmSubstBox, aluminiumNitride);
190  GeoPhysVol* dbmSubstPhys = new GeoPhysVol(dbmSubstLog);
191 
192  GeoTrf::Translate3D dbmSubstPos(0, 0, max_thick/2.0-substrate_Z/2.0);
193  xform = new GeoTransform(dbmSubstPos);
194 
195  dbmModulePhys->add(xform);
196  dbmModulePhys->add(dbmSubstPhys);
197 
198  //-----------------------------------------------------
199  //Add to alignable transform
200  // DBM has only level 0 alignable transform.
201  // So, a transform w.r.t global position is created.
202  // This mean the alignable pos below should be
203  // the global position of the sensor
204 
205  int layer = m_gmt_mgr->GetLD();
206  double sensorPosInModuleCage_Z = layer1Space + layer*Zspacing - (substrate_Z + chip_thick + air_gap + diamond_Z/2.);
207  double sensorPosInModuleCage_Y = Rspacing + bot2Diamond + diamond_Y/2.;
208  double globPosZ = ZToIP + layerUnitPos_Z + (sensorPosInModuleCage_Z * cos(angle) - sensorPosInModuleCage_Y * sin(angle));
209  double globPosY = RToBeam + layerUnitPos_Y + (sensorPosInModuleCage_Z * sin(angle) + sensorPosInModuleCage_Y * cos(angle));
210 
211  GeoTrf::RotateX3D rmX10(-10.*Gaudi::Units::deg);
212  GeoTrf::Translation3D alignTransformPos(0, globPosY, globPosZ);
213  GeoAlignableTransform *xformAlign = new GeoAlignableTransform(GeoTrf::Transform3D(alignTransformPos*rmX10));
214  m_DDmgr->addAlignableTransform(0, idwafer, xformAlign, dbmDiamondPhys);
215  //-----------------------------------------------------
216 
217  return dbmModulePhys;
218  }
219 }
220 
221 
222 std::shared_ptr<const PixelDiodeMatrix> DBM_Module::makeMatrix(double phiPitch, double etaPitch, double etaPitchLong, double etaPitchLongEnd,
223  int circuitsPhi, int circuitsEta, int diodeRowPerCirc, int diodeColPerCirc)
224 {
225  // There are several different cases. Not all are used at the time of wrtiting the code but I
226  // have tried to consider all possible cases for completeness.
227  //
228  // end cell : middle cells : between chip
229  // --------------------------------------
230  // long:normal:long (standard ATLAS case)
231  // normal:normal:normal
232  // normal:normal:long (> 2 chips)
233  // normal:normal:long (2 chips)
234  // end:normal:long (not likely)
235  // end:normal:normal (not likely)
236  // end:normal:end (if single chip)
237 
238  std::shared_ptr<const PixelDiodeMatrix> fullMatrix = nullptr;
239 
240  if (etaPitchLongEnd == etaPitchLong && etaPitchLong != etaPitch) {
241  // long:normal:long (standard ATLAS case)
242  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "DBMModule: Making matrix (long:normal:long, Standard ATLAS case)" << endmsg;
243 
244  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
245  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
246 
247  std::shared_ptr<const PixelDiodeMatrix> singleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
248  bigCell,
249  normalCell,
250  diodeColPerCirc-2,
251  bigCell);
252 
253  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
254  nullptr, singleChipRow, circuitsEta, nullptr);
255 
256  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
257  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
258  } else if (etaPitchLongEnd == etaPitchLong && (etaPitchLong == etaPitch || circuitsEta == 1)) {
259  // normal:normal:normal
260  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "DBMModule: Making matrix (normal:normal:normal)" << endmsg;
261  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
262  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
263  nullptr, normalCell, circuitsEta*diodeColPerCirc, nullptr);
264  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
265  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
266  } else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta > 2) {
267  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "DBMModule: Making matrix (normal:normal:long, > 2 chips)" << endmsg;
268  // normal:normal:long: > 2 chips
269  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
270  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
271 
272  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
273  nullptr,
274  normalCell,
275  diodeColPerCirc-1,
276  bigCell);
277  std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
278  bigCell,
279  normalCell,
280  diodeColPerCirc-2,
281  bigCell);
282  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
283  bigCell,
284  normalCell,
285  diodeColPerCirc-1,
286  nullptr);
287  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
288  lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
289  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
290  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
291  } else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta == 2) {
292  // normal:normal:long: 2 chips (current SLHC case)
293  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "DBMModule: Making matrix (normal:normal:long, 2 chips)" << endmsg;
294  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
295  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
296 
297  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
298  nullptr,
299  normalCell,
300  diodeColPerCirc-1,
301  bigCell);
302  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
303  bigCell,
304  normalCell,
305  diodeColPerCirc-1,
306  nullptr);
307  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
308  lowerSingleChipRow, upperSingleChipRow, 1, nullptr);
309  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
310  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
311  } else if (circuitsEta == 1 || (etaPitchLongEnd != etaPitch && etaPitchLong == etaPitch )){ // etaPitchLongEnd != etaPitch at this stage
312  // end:normal:end (for single chip)
313  // end:normal:normal (not likely)
314  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "DBMModule: Making matrix (end:normal:end, single chips or end:normal:normal)" << endmsg;
315  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
316  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
317 
318  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
319  bigCell,
320  normalCell,
321  circuitsEta*diodeColPerCirc-2,
322  bigCell);
323  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
324  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
325  } else {
326  // end:normal:long (not likely)
327  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG)<< "DBMModule: Making matrix (end:normal:long)" << endmsg;
328  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
329  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
330  std::shared_ptr<const PixelDiodeMatrix> endCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
331 
332  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
333  endCell,
334  normalCell,
335  diodeColPerCirc-2,
336  bigCell);
337  std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
338  bigCell,
339  normalCell,
340  diodeColPerCirc-2,
341  bigCell);
342  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
343  bigCell,
344  normalCell,
345  diodeColPerCirc-2,
346  endCell);
347  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
348  lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
349  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
350  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
351 
352  }
353 
354  return fullMatrix;
355 }
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
PixelGeometryManager::DBMBrcktLockZ
virtual double DBMBrcktLockZ()=0
PixelGeometryManager::DBMBracketZ
virtual double DBMBracketZ()=0
PixelGeometryManager::DBMDiamondZ
virtual double DBMDiamondZ()=0
PixelGeometryManager::DBMSpacingRadial
virtual double DBMSpacingRadial()=0
PixelGeometryManager
Definition: PixelGeometryManager.h:28
PixelGeometryManager::msg
MsgStream & msg(MSG::Level lvl) const
Definition: PixelGeometryManager.h:611
PixelGeometryManager::DBMDiamondX
virtual double DBMDiamondX()=0
DBM_Module::DBM_Module
DBM_Module(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: DBM_Module.cxx:23
PixelGeometryManager::DBMCeramicY
virtual double DBMCeramicY()=0
PixelGeometryManager::DBMTrapezBackShortZ
virtual double DBMTrapezBackShortZ()=0
deg
#define deg
Definition: SbPolyhedron.cxx:17
InDetDD::SiDetectorManager::addDesign
const SiDetectorDesign * addDesign(std::unique_ptr< const SiDetectorDesign > &&)
Access to module design; returns an observer pointer.
Definition: SiDetectorManager.cxx:134
PixelGeometryManager::msgLvl
bool msgLvl(MSG::Level lvl) const
Definition: PixelGeometryManager.h:614
PixelGeometryManager::DBMSpace
virtual double DBMSpace()=0
PixelGeometryManager::GetSide
virtual int GetSide()=0
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
GeoVPixelFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: GeoVPixelFactory.h:48
GeoVPixelFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: GeoVPixelFactory.h:46
DBM_Module.h
PixelID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition: PixelID.h:364
GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: GeoVPixelFactory.h:45
PixelGeometryManager::DBMAirGap
virtual double DBMAirGap()=0
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
GeoVPixelFactory::m_mapFPV
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Definition: GeoVPixelFactory.h:47
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelDetectorManager.h
DBM_Module::makeMatrix
std::shared_ptr< const InDetDD::PixelDiodeMatrix > makeMatrix(double phiPitch, double etaPitch, double etaPitchLong, double etaPitchLongEnd, int circuitsPhi, int circuitsEta, int diodeRowPerCirc, int diodeColPerCirc)
Definition: DBM_Module.cxx:222
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PixelGeometryManager::Eta
virtual int Eta()=0
InDetMaterialManager::getMaterialForVolume
const GeoMaterial * getMaterialForVolume(const std::string &materialName, double volume, const std::string &newName="")
Create and get material with a density calculated to give weight in predefined weight table.
Definition: InDetMaterialManager.cxx:460
PixelGeometryManager::DBMAngle
virtual double DBMAngle()=0
PixelGeometryManager::DBMCoolingSidePlateY
virtual double DBMCoolingSidePlateY()=0
PixelGeometryManager::DBMSpacingZ
virtual double DBMSpacingZ()=0
PixelGeometryManager::DBMTrapezBackY
virtual double DBMTrapezBackY()=0
InDetDD::PixelDetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
Definition: PixelDetectorManager.cxx:262
PixelGeometryManager::DBMCeramicZ
virtual double DBMCeramicZ()=0
PixelGeometryManager::DBMCeramicX
virtual double DBMCeramicX()=0
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
SiDetectorElement.h
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
PixelDiodeMatrix.h
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
PixelModuleDesign.h
DBM_Module::m_design
const InDetDD::SiDetectorDesign * m_design
Definition: DBM_Module.h:38
PixelGeometryManager::DBMDiamondY
virtual double DBMDiamondY()=0
DEBUG
#define DEBUG
Definition: page_access.h:11
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
PixelGeometryManager::DBMFEI4X
virtual double DBMFEI4X()=0
PixelGeometryManager::getIdHelper
virtual const PixelID * getIdHelper()=0
PixelGeometryManager::commonItems
virtual InDetDD::SiCommonItems * commonItems()=0
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
InDetMaterialManager::getMaterial
const GeoMaterial * getMaterial(const std::string &materialName)
Get material. First looks for locally defined material and if not found looks in GeoModel material ma...
Definition: InDetMaterialManager.cxx:96
PixelID
Definition: PixelID.h:67
PixelGeometryManager::DBMFEI4Z
virtual double DBMFEI4Z()=0
DBM_Module::Build
virtual GeoVPhysVol * Build() override
Definition: DBM_Module.cxx:66
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
InDetDD::PixelDetectorManager::addDetectorElement
virtual void addDetectorElement(SiDetectorElement *element) override
Add elememts.
Definition: PixelDetectorManager.cxx:121
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
PixelGeometryManager::DBMFEI4Y
virtual double DBMFEI4Y()=0
PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeometryManager::Phi
virtual int Phi()=0