55#include " SimG4CMS/Calo/interface/HGCalNumberingScheme.h"
66#include " FWCore/MessageLogger/interface/MessageLogger.h"
77#include " DataFormats/ForwardDetId/interface/ForwardSubdetector.h"
8+ #include " DataFormats/ForwardDetId/interface/HGCSiliconDetId.h"
89#include " Geometry/HGCalCommonData/interface/HGCalTypes.h"
10+ #include " Geometry/HGCalCommonData/interface/HGCalWaferIndex.h"
911#include < iostream>
1012
1113// #define EDM_ML_DEBUG
@@ -36,8 +38,7 @@ uint32_t HGCalNumberingScheme::getUnitID(int layer, int module, int cell, int iz
3638 << HGCalGeometryMode::Hexagon8File << " :" << HGCalGeometryMode::Trapezoid << " :"
3739 << HGCalGeometryMode::TrapezoidFile;
3840#endif
39- if ((mode_ == HGCalGeometryMode::Hexagon8Full) || (mode_ == HGCalGeometryMode::Hexagon8) ||
40- (mode_ == HGCalGeometryMode::Hexagon8File)) {
41+ if (hgcons_.waferHexagon8 ()) {
4142 int cellU (0 ), cellV (0 ), waferType (-1 ), waferU (0 ), waferV (0 );
4243 if (cell >= 0 ) {
4344 waferType = HGCalTypes::getUnpackedType (module );
@@ -50,6 +51,19 @@ uint32_t HGCalNumberingScheme::getUnitID(int layer, int module, int cell, int iz
5051 hgcons_.waferFromPosition (xx, pos.y (), layer, waferU, waferV, cellU, cellV, waferType, wt);
5152 }
5253 if (waferType >= 0 ) {
54+ if (mode_ == HGCalGeometryMode::Hexagon8File) {
55+ int type = hgcons_.waferType (layer, waferU, waferV, true );
56+ if (type != waferType) {
57+ #ifdef EDM_ML_DEBUG
58+ edm::LogVerbatim (" HGCSim" ) << " HGCalNumberingScheme:: " << name_ << " Layer|u|v|Index|module|cell " << layer
59+ << " :" << waferU << " :" << waferV << " :"
60+ << HGCalWaferIndex::waferIndex (layer, waferU, waferV, false ) << " :" << module
61+ << " :" << cell << " has a type mismatch " << waferType << " :" << type;
62+ #endif
63+ if (type != HGCSiliconDetId::HGCalCoarseThick)
64+ waferType = type;
65+ }
66+ }
5367 index = HGCSiliconDetId (det_, iz, waferType, layer, waferU, waferV, cellU, cellV).rawId ();
5468#ifdef EDM_ML_DEBUG
5569 edm::LogVerbatim (" HGCSim" ) << " OK WaferType " << waferType << " Wafer " << waferU << " :" << waferV << " Cell "
@@ -59,7 +73,7 @@ uint32_t HGCalNumberingScheme::getUnitID(int layer, int module, int cell, int iz
5973 << waferV;
6074#endif
6175 }
62- } else if ((mode_ == HGCalGeometryMode::Trapezoid) || (mode_ == HGCalGeometryMode::TrapezoidFile )) {
76+ } else if (hgcons_. tileTrapezoid ( )) {
6377 std::array<int , 3 > id = hgcons_.assignCellTrap (pos.x (), pos.y (), pos.z (), layer, false );
6478 if (id[2 ] >= 0 ) {
6579 index = HGCScintillatorDetId (id[2 ], layer, iz * id[0 ], id[1 ]).rawId ();
0 commit comments