46 GeoModelIO::ReadGeoModel* sqliteReader,
47 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
48 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
49 bool isBLayer,
bool isModule3D,
bool even_odd_phi_design)
75 auto readoutTechnology = getPixelReadoutTechnology(rowsPerCircuit,columnsPerCircuit );
76 auto circuitsPerPhi_corr = circuitsPerPhi;
77 auto rowsPerCircuit_corr = rowsPerCircuit;
82 circuitsPerPhi_corr*=2;
83 rowsPerCircuit_corr/=2;
89 for (
unsigned int design_i=0; design_i<
m_nPhiDesigns ; ++design_i) {
99 std::array<int,kNDirections>{circuitsPerPhi_corr,circuitsPerEta},
100 std::array<int,kNDirections>{rowsPerCircuit_corr,columnsPerCircuit},
101 std::array<std::array<double,kNDirections>,kNPixelLocations>{
102 std::array<double,kNDirections>{pitchPhi,pitchEta},
103 std::array<double,kNDirections>{0.,pitchEtaLongEnd},
104 std::array<double,kNDirections>{0.,pitchEtaLong}},
107 std::unique_ptr<PixelModuleDesign> p_barrelDesign2 = std::make_unique<PixelModuleDesign>(thickness,
114 std::move(diode_tree),
122 if (
m_gmt_mgr->NumberOfEmptyRows() > 0) {
125 for (
int iConnect = 0; iConnect <
m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
126 minRow = std::min(minRow,
m_gmt_mgr->EmptyRows(iConnect));
127 minRow = std::min(minRow,
m_gmt_mgr->EmptyRowConnections(iConnect));
128 maxRow = std::max(maxRow,
m_gmt_mgr->EmptyRows(iConnect));
129 maxRow = std::max(maxRow,
m_gmt_mgr->EmptyRowConnections(iConnect));
132 std::vector <int> connections(maxRow-minRow+1);
135 for (
unsigned int iRow = 0; iRow < connections.size(); iRow++){
136 connections[iRow] = iRow + minRow;
140 for (
int iConnect = 0; iConnect <
m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
141 connections[
m_gmt_mgr->EmptyRows(iConnect)-minRow] =
m_gmt_mgr->EmptyRowConnections(iConnect);
144 p_barrelDesign2->addMultipleRowConnection(minRow, connections);
149 m_gmt_mgr->msg(MSG::WARNING) <<
"GeoPixelSiCrystal: No ganged pixels" <<
endmsg;
161 m_gmt_mgr->msg(MSG::WARNING) <<
"GeoPixelSiCrystal: Active area not consistent with sensor size. Sensor: "
162 <<
width/Gaudi::Units::mm <<
" x " <<
length/Gaudi::Units::mm <<
", Active: "
167 <<
"GeoPixelSiCrystal: Sensor: "
168 <<
width/Gaudi::Units::mm <<
" x " <<
length/Gaudi::Units::mm <<
", Active: "
174 m_design.at(design_i) =
m_DDmgr->addDesign(std::move(p_barrelDesign2));
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, bool even_odd_phi_design=false)
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)
PixelDiodeTree makePixelDiodeTree(T_MsgParent *gmt_mgr, InDetDD::PixelReadoutTechnology readoutTechnology, const std::array< int, kNDirections > &circuits, const std::array< int, kNDirections > &dimPerCircuit, const std::array< std::array< double, kNDirections >, kNPixelLocations > &pitch, FENumbering fe_numbering)