ATLAS Offline Software
GeoPixelSiCrystal.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //
6 // This class builds one Si Crystal to be placed in one module
7 //
8 // The information on which layer to build is retrieved by the Geometry Manager
9 //
10 // Contained by: PixelModule_log
11 //
12 // Contains: nothing
13 //
14 #include "GeoPixelSiCrystal.h"
15 #include "GeoModelKernel/GeoBox.h"
16 #include "GeoModelKernel/GeoLogVol.h"
17 #include "GeoModelKernel/GeoFullPhysVol.h"
18 #include "GeoModelKernel/GeoMaterial.h"
19 #include "GaudiKernel/SystemOfUnits.h"
20 #include "Identifier/Identifier.h"
23 
29 
30 #include <algorithm> //for std::min, std::max
31 #include <utility>
32 #include <vector>
33 
34 using namespace InDetDD;
35 
38  GeoModelIO::ReadGeoModel* sqliteReader,
39  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
40  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
41  bool isBLayer, bool isModule3D)
42  : GeoVPixelFactory (ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX))
43 {
44  //
45  //Builds the design for this crystal
46  m_isBLayer = isBLayer;
47  m_isModule3D = isModule3D;
48 
49  // Dimensions
50  const double thickness = m_gmt_mgr->PixelBoardThickness(m_isModule3D);
53 
54  int circuitsPhi = m_gmt_mgr->DesignCircuitsPhi(m_isModule3D); // Warning col/row naming opposite to chip
55  int circuitsEta = m_gmt_mgr->DesignCircuitsEta(m_isModule3D); // Warning col/row naming opposite to chip
56  int cellRowPerCirc = m_gmt_mgr->DesignCellRowsPerCircuit(m_isModule3D);
57  int cellColPerCirc = m_gmt_mgr->DesignCellColumnsPerCircuit(m_isModule3D);
58  int diodeRowPerCirc = m_gmt_mgr->DesignDiodeRowsPerCircuit(m_isModule3D);
59  int diodeColPerCirc = m_gmt_mgr->DesignDiodeColumnsPerCircuit(m_isModule3D);
60  int readoutSide = m_gmt_mgr->DesignReadoutSide(m_isModule3D);
61 
62  double etaPitchLongEnd = m_gmt_mgr->DesignPitchZLongEnd(m_isModule3D);
63  double etaPitchLong = m_gmt_mgr->DesignPitchZLong(m_isModule3D);
64  double phiPitch = m_gmt_mgr->DesignPitchRP(m_isModule3D);
65  double etaPitch = m_gmt_mgr->DesignPitchZ(m_isModule3D);
66 
67 
68  std::shared_ptr<const PixelDiodeMatrix> fullMatrix = makeMatrix(phiPitch, etaPitch, etaPitchLong, etaPitchLongEnd,
69  circuitsPhi, circuitsEta, diodeRowPerCirc, diodeColPerCirc);
70 
71  std::unique_ptr<PixelModuleDesign> p_barrelDesign2 = std::make_unique<PixelModuleDesign>(thickness,
72  circuitsPhi,
73  circuitsEta,
74  cellColPerCirc,
75  cellRowPerCirc,
76  diodeColPerCirc,
77  diodeRowPerCirc,
78  fullMatrix,
80  readoutSide);
81 
82  // Multiple connections (ganged pixels)
83  if (m_gmt_mgr->NumberOfEmptyRows() > 0) {
84  int minRow = m_gmt_mgr->EmptyRows(0);
85  int maxRow = minRow;
86  for (int iConnect = 0; iConnect < m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
87  minRow = std::min(minRow, m_gmt_mgr->EmptyRows(iConnect));
88  minRow = std::min(minRow, m_gmt_mgr->EmptyRowConnections(iConnect));
89  maxRow = std::max(maxRow, m_gmt_mgr->EmptyRows(iConnect));
90  maxRow = std::max(maxRow, m_gmt_mgr->EmptyRowConnections(iConnect));
91  }
92 
93  std::vector <int> connections(maxRow-minRow+1);
94 
95  // We fill them all with a one to one correspondence first.
96  for (unsigned int iRow = 0; iRow < connections.size(); iRow++){
97  connections[iRow] = iRow + minRow;
98  }
99 
100  // Now make the connections.
101  for (int iConnect = 0; iConnect < m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
102  connections[m_gmt_mgr->EmptyRows(iConnect)-minRow] = m_gmt_mgr->EmptyRowConnections(iConnect);
103  }
104 
105  p_barrelDesign2->addMultipleRowConnection(minRow, connections);
106 
107  } else {
108  // No empty rows.
109  if (!m_gmt_mgr->ibl()) {
110  m_gmt_mgr->msg(MSG::WARNING) << "GeoPixelSiCrystal: No ganged pixels" << endmsg;
111  } else {
112  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: No ganged pixels" << endmsg;
113  }
114  }
115 
116  // Check that the active area seems reasonable
117 
122  m_gmt_mgr->msg(MSG::WARNING) << "GeoPixelSiCrystal: Active area not consistent with sensor size. Sensor: "
123  << width/Gaudi::Units::mm << " x " << length/Gaudi::Units::mm << ", Active: "
125  << endmsg;
126  } else {
128  << "GeoPixelSiCrystal: Sensor: "
129  << width/Gaudi::Units::mm << " x " << length/Gaudi::Units::mm << ", Active: "
131  << endmsg;
132  }
133 
134 
135  m_design = m_DDmgr->addDesign(std::move(p_barrelDesign2));
136 
137 
138 }
139 GeoVPhysVol* GeoPixelSiCrystal::Build() {
140 
141  GeoFullPhysVol* siPhys{nullptr};
142  int brl_ec= m_gmt_mgr->isEndcap() ? 2*m_gmt_mgr->GetSide() : 0;
143 
144  if(m_sqliteReader) {
145  std::string siName ="SiPhys_" + std::to_string(brl_ec) +"_"+ std::to_string(m_gmt_mgr->GetLD()) +"_"+ std::to_string(m_gmt_mgr->Phi()) +"_"+ std::to_string(m_gmt_mgr->Eta());
146  siPhys = (*m_mapFPV)[siName];
147  }
148  else {
149  //(sar) code moved from c'tor..
150  const double thickness = m_gmt_mgr->PixelBoardThickness(m_isModule3D);
152  const double width = m_gmt_mgr->PixelBoardWidth(m_isModule3D);
153  //
154  std::string matName = m_gmt_mgr->getMaterialName("Sensor");
155  const GeoMaterial* siMat = m_mat_mgr->getMaterial(matName);
156  const GeoBox* siBox = new GeoBox(thickness*0.5,width*0.5,length*0.5);
157  std::string logname{"siLog"};
158  // There is not a strong need to give the blayer a different name but leave it for now.
159  if(m_isBLayer) logname = "siBLayLog";
160  auto *logVolume = new GeoLogVol(logname,siBox,siMat);
161  //(sar) ...to here
162 
163 
164  siPhys = new GeoFullPhysVol(logVolume);
165  }
166 
167  // Build the Identifier for the silicon:
168  //
169  const PixelID * idHelper = m_gmt_mgr->getIdHelper();
170  m_id = idHelper->wafer_id(brl_ec,m_gmt_mgr->GetLD(),m_gmt_mgr->Phi(),m_gmt_mgr->Eta());
172 
173  // add the element to the manager
174  m_DDmgr->addDetectorElement(element);
175  return siPhys;
176 }
177 
178 
179 std::shared_ptr<const PixelDiodeMatrix> GeoPixelSiCrystal::makeMatrix(double phiPitch, double etaPitch, double etaPitchLong, double etaPitchLongEnd,
180  int circuitsPhi, int circuitsEta, int diodeRowPerCirc, int diodeColPerCirc)
181 {
182  // There are several different cases. Not all are used at the time of wrtiting the code but I
183  // have tried to consider all possible cases for completeness.
184  //
185  // end cell : middle cells : between chip
186  // --------------------------------------
187  // long:normal:long (standard ATLAS case)
188  // normal:normal:normal
189  // normal:normal:long (> 2 chips)
190  // normal:normal:long (2 chips)
191  // end:normal:long (not likely)
192  // end:normal:normal (not likely)
193  // end:normal:end (if single chip)
194 
195  std::shared_ptr<const PixelDiodeMatrix> fullMatrix = nullptr;
196 
197  if (etaPitchLongEnd == etaPitchLong && etaPitchLong != etaPitch) {
198  // long:normal:long (standard ATLAS case)
199  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (long:normal:long, Standard ATLAS case)" << endmsg;
200 
201  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
202  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
203 
204  std::shared_ptr<const PixelDiodeMatrix> singleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
205  bigCell,
206  std::move(normalCell),
207  diodeColPerCirc-2,
208  bigCell);
209 
210  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
211  nullptr, std::move(singleChipRow), circuitsEta, nullptr);
212 
213  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
214  nullptr, std::move(singleRow), circuitsPhi*diodeRowPerCirc, nullptr);
215  } else if (etaPitchLongEnd == etaPitchLong && (etaPitchLong == etaPitch || circuitsEta == 1)) {
216  // normal:normal:normal
217  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (normal:normal:normal)" << endmsg;
218  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
219  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
220  nullptr, std::move(normalCell), circuitsEta*diodeColPerCirc, nullptr);
221  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
222  nullptr, std::move(singleRow), circuitsPhi*diodeRowPerCirc, nullptr);
223  } else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta > 2) {
224  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (normal:normal:long, > 2 chips)" << endmsg;
225  // normal:normal:long: > 2 chips
226  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
227  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
228 
229  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
230  nullptr,
231  normalCell,
232  diodeColPerCirc-1,
233  bigCell);
234  std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
235  bigCell,
236  normalCell,
237  diodeColPerCirc-2,
238  bigCell);
239  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
240  bigCell,
241  normalCell,
242  diodeColPerCirc-1,
243  nullptr);
244  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
245  std::move(lowerSingleChipRow), std::move(middleSingleChipRow), circuitsEta-2, std::move(upperSingleChipRow));
246  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
247  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
248  } else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta == 2) {
249  // normal:normal:long: 2 chips (current SLHC case)
250  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (normal:normal:long, 2 chips)" << endmsg;
251  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
252  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
253 
254  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
255  nullptr,
256  normalCell,
257  diodeColPerCirc-1,
258  bigCell);
259  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
260  bigCell,
261  normalCell,
262  diodeColPerCirc-1,
263  nullptr);
264  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
265  std::move(lowerSingleChipRow), std::move(upperSingleChipRow), 1, nullptr);
266  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
267  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
268  } else if (circuitsEta == 1 || (etaPitchLongEnd != etaPitch && etaPitchLong == etaPitch )){ // etaPitchLongEnd != etaPitch at this stage
269  // end:normal:end (for single chip)
270  // end:normal:normal (not likely)
271  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (end:normal:end, single chips or end:normal:normal)" << endmsg;
272  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
273  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
274 
275  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
276  bigCell,
277  std::move(normalCell),
278  circuitsEta*diodeColPerCirc-2,
279  bigCell);
280  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
281  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
282  } else {
283  // end:normal:long (not likely)
284  if (m_gmt_mgr->msgLvl(MSG::DEBUG)) m_gmt_mgr->msg(MSG::DEBUG) << "GeoPixelSiCrystal: Making matrix (end:normal:long)" << endmsg;
285  std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
286  std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
287  std::shared_ptr<const PixelDiodeMatrix> endCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
288 
289  std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
290  endCell,
291  normalCell,
292  diodeColPerCirc-2,
293  bigCell);
294  std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
295  bigCell,
296  normalCell,
297  diodeColPerCirc-2,
298  bigCell);
299  std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
300  bigCell,
301  normalCell,
302  diodeColPerCirc-2,
303  endCell);
304  std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
305  std::move(lowerSingleChipRow), std::move(middleSingleChipRow), circuitsEta-2, std::move(upperSingleChipRow));
306  fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
307  nullptr, singleRow, circuitsPhi*diodeRowPerCirc, nullptr);
308 
309  }
310 
311  return fullMatrix;
312 }
PixelGeometryManager::DesignCellRowsPerCircuit
virtual int DesignCellRowsPerCircuit(bool isModule3D=false)=0
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
PixelGeometryManager::NumberOfEmptyRows
virtual int NumberOfEmptyRows(bool isModule3D=false)=0
GeoPixelSiCrystal::m_id
Identifier m_id
Definition: GeoPixelSiCrystal.h:36
GeoPixelSiCrystal::m_design
const InDetDD::SiDetectorDesign * m_design
Definition: GeoPixelSiCrystal.h:37
PixelGeometryManager
Definition: PixelGeometryManager.h:28
PixelGeometryManager::msg
MsgStream & msg(MSG::Level lvl) const
Definition: PixelGeometryManager.h:611
PixelGeometryManager::DesignDiodeColumnsPerCircuit
virtual int DesignDiodeColumnsPerCircuit(bool isModule3D=false)=0
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
PixelGeometryManager::DesignPitchZLongEnd
virtual double DesignPitchZLongEnd(bool isModule3D=false)=0
PixelGeometryManager::ibl
virtual bool ibl() const =0
GeoPixelSiCrystal::m_isModule3D
bool m_isModule3D
Definition: GeoPixelSiCrystal.h:39
PixelGeometryManager::DesignCircuitsEta
virtual int DesignCircuitsEta(bool isModule3D=false)=0
GeoPixelSiCrystal.h
PixelGeometryManager::DesignZActiveArea
virtual double DesignZActiveArea(bool isModule3D=false)=0
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::EmptyRowConnections
virtual int EmptyRowConnections(int index)=0
PixelGeometryManager::GetSide
virtual int GetSide()=0
GeoPixelSiCrystal::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelSiCrystal.cxx:139
GeoVPixelFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: GeoVPixelFactory.h:46
PixelGeometryManager::DesignPitchZ
virtual double DesignPitchZ(bool isModule3D=false)=0
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
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelGeometryManager::DesignRPActiveArea
virtual double DesignRPActiveArea(bool isModule3D=false)=0
InDetDD_Defs.h
PixelDetectorManager.h
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
SiCommonItems.h
PixelGeometryManager::DesignDiodeRowsPerCircuit
virtual int DesignDiodeRowsPerCircuit(bool isModule3D=false)=0
GeoPixelSiCrystal::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: GeoPixelSiCrystal.cxx:179
PixelGeometryManager::PixelBoardThickness
virtual double PixelBoardThickness(bool isModule3D=false)=0
PixelGeometryManager::Eta
virtual int Eta()=0
PixelGeometryManager::DesignCircuitsPhi
virtual int DesignCircuitsPhi(bool isModule3D=false)=0
PixelGeometryManager::DesignPitchZLong
virtual double DesignPitchZLong(bool isModule3D=false)=0
PixelGeometryManager::isEndcap
virtual bool isEndcap()=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
PixelGeometryManager::DesignReadoutSide
virtual int DesignReadoutSide(bool isModule3D=false)=0
SiDetectorElement.h
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
PixelGeometryManager::PixelBoardLength
virtual double PixelBoardLength(bool isModule3D=false)=0
PixelDiodeMatrix.h
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
PixelModuleDesign.h
DEBUG
#define DEBUG
Definition: page_access.h:11
InDetDD::PixelModuleDesign::addMultipleRowConnection
void addMultipleRowConnection(const int lowerRow, const std::vector< int > &connections)
Add a new multiple connection for rows: lower diode row for which the connection scheme is given vect...
Definition: PixelModuleDesign.h:284
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
PixelGeometryManager::getIdHelper
virtual const PixelID * getIdHelper()=0
PixelGeometryManager::PixelBoardWidth
virtual double PixelBoardWidth(bool isModule3D=false)=0
PixelGeometryManager::getMaterialName
virtual std::string getMaterialName(const std::string &volumeName, int layerdisk=0, int typenum=0)=0
PixelGeometryManager::commonItems
virtual InDetDD::SiCommonItems * commonItems()=0
PixelGeometryManager::EmptyRows
virtual int EmptyRows(int index)=0
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
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
PixelGeometryManager::DesignPitchRP
virtual double DesignPitchRP(bool isModule3D=false)=0
MakeSliceSet.logname
logname
Definition: MakeSliceSet.py:34
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
InDetDD::PixelDetectorManager::addDetectorElement
virtual void addDetectorElement(SiDetectorElement *element) override
Add elememts.
Definition: PixelDetectorManager.cxx:121
PixelGeometryManager::DesignCellColumnsPerCircuit
virtual int DesignCellColumnsPerCircuit(bool isModule3D=false)=0
GeoPixelSiCrystal::GeoPixelSiCrystal
GeoPixelSiCrystal(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, bool isBLayer, bool isModule3D=false)
Definition: GeoPixelSiCrystal.cxx:36
GeoPixelSiCrystal::m_isBLayer
bool m_isBLayer
Definition: GeoPixelSiCrystal.h:38
PixelGeometryManager::GetLD
virtual int GetLD()=0
PixelGeometryManager::Phi
virtual int Phi()=0