32 for (
int i = 1;
i != 7;
i++) {
37 for (
int j = off;
j !=
end; ++
j) {
50 if (ptp.
vpars.size() != 6) {
52 <<
"Tracker parameters block from XMLs called vPars is expected to have 6 entries, but has " << ptp.
vpars.size()
58 const int BIG_PIX_PER_ROC_X = ptp.
vpars[2];
59 const int BIG_PIX_PER_ROC_Y = ptp.
vpars[3];
65 std::vector<const GeometricDet*>
comp;
73 std::vector<GeometricDet::GDEnumType> gdsubdetmap(
77 LogDebug(
"SubDetectorGeometricDetType") <<
"GeometriDet enumerator values of the subdetectors";
78 for (
unsigned int i = 0;
i < subdetgd.size(); ++
i) {
79 assert(subdetgd[
i]->geographicalId().subdetId() > 0 && subdetgd[
i]->geographicalId().subdetId() < 7);
80 gdsubdetmap[subdetgd[
i]->geographicalId().subdetId() - 1] = subdetgd[
i]->type();
81 LogTrace(
"SubDetectorGeometricDetType")
82 <<
"subdet " <<
i <<
" type " << subdetgd[
i]->type() <<
" detid " << subdetgd[
i]->geographicalId().rawId()
83 <<
" subdetid " << subdetgd[
i]->geographicalId().subdetId();
86 std::vector<const GeometricDet*> dets[6];
87 std::vector<const GeometricDet*>& pixB = dets[0];
88 pixB.reserve(
comp.size());
89 std::vector<const GeometricDet*>& pixF = dets[1];
90 pixF.reserve(
comp.size());
91 std::vector<const GeometricDet*>& tib = dets[2];
92 tib.reserve(
comp.size());
93 std::vector<const GeometricDet*>& tid = dets[3];
94 tid.reserve(
comp.size());
95 std::vector<const GeometricDet*>& tob = dets[4];
96 tob.reserve(
comp.size());
97 std::vector<const GeometricDet*>& tec = dets[5];
98 tec.reserve(
comp.size());
101 dets[
i->geographicalId().subdetId() - 1].emplace_back(
i);
107 for (
unsigned int i = 0;
i < 6; ++
i) {
131 for (
unsigned int i = 0;
i < 6; ++
i) {
142 for (
unsigned int i = 0;
i < 6; ++
i) {
146 <<
"Subdetector " <<
i + 1 <<
" is unknown but it is not empty: " << dets[
i].size();
162 int BIG_PIX_PER_ROC_X,
163 int BIG_PIX_PER_ROC_Y)
165 LogDebug(
"BuildingGeomDetUnits") <<
" Pixel type. Size of vector: " << gdv.size()
166 <<
" GeomDetType subdetector: " << det
168 <<
" big pix per ROC x: " << BIG_PIX_PER_ROC_X <<
" y: " << BIG_PIX_PER_ROC_Y;
172 for (
auto const&
i : gdv) {
175 std::unique_ptr<const Bounds>
bounds(
i->bounds());
177 (
int)
i->pixROCRows(),
178 (
int)
i->pixROCCols(),
192 tracker->addDetUnitId(
i->geographicalId());
201 LogDebug(
"BuildingGeomDetUnits") <<
" Phase2 Pixel type. Size of vector: " << gdv.size()
202 <<
" GeomDetType subdetector: " << det
207 for (
auto const&
i : gdv) {
210 std::unique_ptr<const Bounds>
bounds(
i->bounds());
211 int BIG_PIX_PER_ROC_X =
i->bigPixelsx();
212 int BIG_PIX_PER_ROC_Y =
i->bigPixelsy();
213 float BIG_PIX_PITCH_X =
i->bigPixelsPitchx();
214 float BIG_PIX_PITCH_Y =
i->bigPixelsPitchy();
216 (
int)
i->pixROCRows(),
217 (
int)
i->pixROCCols(),
233 tracker->addDetUnitId(
i->geographicalId());
242 LogDebug(
"BuildingGeomDetUnits") <<
" Strip type. Size of vector: " << gdv.size()
243 <<
" GeomDetType subdetector: " << det
249 for (
auto const&
i : gdv) {
252 std::unique_ptr<const Bounds>
bounds(
i->bounds());
264 tracker->addDetUnitId(
i->geographicalId());
271 auto const& gdu =
tracker->detUnits();
272 auto const& gduId =
tracker->detUnitIds();
274 for (u_int32_t
i = 0;
i < gdu.size();
i++) {
277 string gduTypeName = gdu[
i]->type().name();
280 if ((gduTypeName.find(
"Ster") != std::string::npos || gduTypeName.find(
"Lower") != std::string::npos ||
281 gduTypeName.find(
"One") != std::string::npos) &&
283 int partner_pos = -1;
284 for (u_int32_t
jj = 0;
jj < gduId.size();
jj++) {
290 if (partner_pos == -1) {
291 throw cms::Exception(
"Configuration") <<
"Module Type is Stereo or Lower but no partner detector found \n" 292 <<
"There is a problem on Tracker geometry configuration\n";
297 std::vector<const GeomDetUnit*> composed(2);
301 if (gduTypeName.find(
"Ster") != std::string::npos) {
306 tracker->addDetId(composedDetId);
308 }
else if (gduTypeName.find(
"Lower") != std::string::npos) {
314 tracker->addDetId(composedDetId);
315 }
else if (gduTypeName.find(
"One") != std::string::npos) {
321 tracker->addDetId(composedDetId);
void buildPixel(std::vector< const GeometricDet *> const &, const PTrackerAdditionalParametersPerDet *const &, TrackerGeometry *, GeomDetType::SubDetector det, int BIG_PIX_PER_ROC_X, int BIG_PIX_PER_ROC_Y)
PlaneBuilderFromGeometricDet::ResultType buildPlaneWithMaterial(const GeometricDet *gd, double scaleFactor=1.) const
void buildPixelPhase2(std::vector< const GeometricDet *> const &, const PTrackerAdditionalParametersPerDet *const &, TrackerGeometry *, GeomDetType::SubDetector det)
constexpr SubDetector subDetGeom[21]
void buildGeomDet(TrackerGeometry *)
TrackerGeometry * build(const GeometricDet *gd, const PTrackerAdditionalParametersPerDet *ptitp, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
std::map< std::string, const PixelGeomDetType * > thePixelDetTypeMap
unsigned int offsetDU(SubDetector sid) const
std::map< std::string, const StripGeomDetType * > theStripDetTypeMap
ResultType plane(const GeometricDet *gd) const
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
ConstGeometricDetContainer & components()
uint32_t doubleSensor(const DetId &id) const
ResultType plane(const std::vector< const GeomDetUnit *> &dets) const
PixelTopology * build(const Bounds *bounds, int ROWS_PER_ROC, int COLS_PER_ROC, int BIG_PIX_PER_ROC_X, int BIG_PIX_PER_ROC_Y, int ROCS_X, int ROCS_Y)
PixelTopology * build(const Bounds *bounds, int ROWS_PER_ROC, int COLS_PER_ROC, int BIG_PIX_PER_ROC_X, int BIG_PIX_PER_ROC_Y, float BIG_PIX_PITCH_X, float BIG_PIX_PITCH_Y, int ROCS_X, int ROCS_Y)
uint32_t stack(const DetId &id) const
unsigned int endsetDU(SubDetector sid) const
DetId partnerDetId(const DetId &id) const
std::vector< GeometricDet const * > ConstGeometricDetContainer
uint32_t glued(const DetId &id) const
const Plane & surface() const
The nominal surface of the GeomDet.
ConstGeometricDetContainer deepComponents() const
void buildSilicon(std::vector< const GeometricDet *> const &, TrackerGeometry *, GeomDetType::SubDetector det, const std::string &part)
const TrackerTopology * theTopo
constexpr SubDetector tkDetEnum[8]
StripTopology * build(const Bounds *, double, const std::string &)