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"
37 GeoModelIO::ReadGeoModel* sqliteReader,
38 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
39 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
40 bool isBLayer,
bool isModule3D)
67 std::shared_ptr<const PixelDiodeMatrix> fullMatrix =
makeMatrix(phiPitch, etaPitch, etaPitchLong, etaPitchLongEnd,
68 circuitsPhi, circuitsEta, diodeRowPerCirc, diodeColPerCirc);
70 std::unique_ptr<PixelModuleDesign> p_barrelDesign2 = std::make_unique<PixelModuleDesign>(thickness,
92 std::vector <int> connections(maxRow-minRow+1);
95 for (
unsigned int iRow = 0; iRow < connections.size(); iRow++){
96 connections[iRow] = iRow + minRow;
121 m_gmt_mgr->
msg(MSG::WARNING) <<
"GeoPixelSiCrystal: Active area not consistent with sensor size. Sensor: "
127 <<
"GeoPixelSiCrystal: Sensor: "
140 GeoFullPhysVol* siPhys{
nullptr};
145 siPhys = (*m_mapFPV)[siName];
155 const GeoBox* siBox =
new GeoBox(thickness*0.5,
width*0.5,
length*0.5);
159 auto *logVolume =
new GeoLogVol(
logname,siBox,siMat);
163 siPhys =
new GeoFullPhysVol(logVolume);
179 int circuitsPhi,
int circuitsEta,
int diodeRowPerCirc,
int diodeColPerCirc)
194 std::shared_ptr<const PixelDiodeMatrix> fullMatrix =
nullptr;
196 if (etaPitchLongEnd == etaPitchLong && etaPitchLong != etaPitch) {
200 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
201 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
203 std::shared_ptr<const PixelDiodeMatrix> singleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
209 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
210 nullptr, singleChipRow, circuitsEta,
nullptr);
212 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
213 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
214 }
else if (etaPitchLongEnd == etaPitchLong && (etaPitchLong == etaPitch || circuitsEta == 1)) {
217 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
218 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
219 nullptr, normalCell, circuitsEta*diodeColPerCirc,
nullptr);
220 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
221 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
222 }
else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta > 2) {
225 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
226 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
228 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
233 std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
238 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
243 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
244 lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
245 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
246 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
247 }
else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta == 2) {
250 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
251 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
253 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
258 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
263 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
264 lowerSingleChipRow, upperSingleChipRow, 1,
nullptr);
265 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
266 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
267 }
else if (circuitsEta == 1 || (etaPitchLongEnd != etaPitch && etaPitchLong == etaPitch )){
271 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
272 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
274 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
277 circuitsEta*diodeColPerCirc-2,
279 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
280 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
284 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
285 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
286 std::shared_ptr<const PixelDiodeMatrix> endCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
288 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
293 std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
298 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
303 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
304 lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
305 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
306 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);