@@ -338,7 +338,8 @@ bool HGCalDDDConstants::cassetteShiftScintillator(int zside, int layer, int iphi
338338
339339double HGCalDDDConstants::cellArea (const HGCSiliconDetId& id, bool reco) const {
340340 double area (0 );
341- int32_t indx = HGCalWaferIndex::waferIndex (id.layer (), id.waferU (), id.waferV ());
341+ int waferU = (id.zside () > 0 ) ? -id.waferU () : id.waferU ();
342+ int32_t indx = HGCalWaferIndex::waferIndex (id.layer (), waferU, id.waferV ());
342343 auto ktr = hgpar_->waferInfoMap_ .find (indx);
343344 if (ktr != hgpar_->waferInfoMap_ .end ()) {
344345 if (ktr->second .part == HGCalTypes::WaferFull) {
@@ -1150,15 +1151,15 @@ bool HGCalDDDConstants::maskCell(const DetId& detId, int corners) const {
11501151 HFNoseDetId id (detId);
11511152 N = getUVMax (id.type ());
11521153 layer = id.layer ();
1153- waferU = id.waferU ();
1154+ waferU = (id. zside () > 0 ) ? -id. waferU () : id.waferU ();
11541155 waferV = id.waferV ();
11551156 u = id.cellU ();
11561157 v = id.cellV ();
11571158 } else {
11581159 HGCSiliconDetId id (detId);
11591160 N = getUVMax (id.type ());
11601161 layer = id.layer ();
1161- waferU = id.waferU ();
1162+ waferU = (id. zside () > 0 ) ? -id. waferU () : id.waferU ();
11621163 waferV = id.waferV ();
11631164 u = id.cellU ();
11641165 v = id.cellV ();
@@ -1373,7 +1374,8 @@ int32_t HGCalDDDConstants::placementIndex(const HGCSiliconDetId& id) const {
13731374 int32_t place (0 );
13741375 int32_t layer = id.layer ();
13751376 int32_t layertype = layerType (layer);
1376- int32_t indx = HGCalWaferIndex::waferIndex (layer, id.waferU (), id.waferV ());
1377+ int32_t waferU = (id.zside () > 0 ) ? -id.waferU () : id.waferU ();
1378+ int32_t indx = HGCalWaferIndex::waferIndex (layer, waferU, id.waferV ());
13771379 auto ktr = hgpar_->waferInfoMap_ .find (indx);
13781380 if (ktr != hgpar_->waferInfoMap_ .end ()) {
13791381 place = HGCalCell::cellPlacementIndex (id.zside (), layertype, (ktr->second ).orient );
@@ -1788,7 +1790,8 @@ void HGCalDDDConstants::waferFromPosition(const double x,
17881790 if ((dx - rmax) <= tolc && (dy - hexside) <= tolc) {
17891791 if (((dy - 0.5 * hexside) <= tolc) || ((dx * tan30deg_ - (hexside - dy)) <= tolc)) {
17901792 if (waferHexagon8File ()) {
1791- int index = HGCalWaferIndex::waferIndex (layer, waferU, waferV);
1793+ int index = (zside > 0 ) ? HGCalWaferIndex::waferIndex (layer, -waferU, waferV)
1794+ : HGCalWaferIndex::waferIndex (layer, waferU, waferV);
17921795 celltype = HGCalWaferType::getType (index, hgpar_->waferInfoMap_ );
17931796 if (debug)
17941797 edm::LogVerbatim (" HGCalGeom" )
@@ -1835,7 +1838,8 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18351838 }
18361839 }
18371840 if (waferHexagon8File ()) {
1838- int index = HGCalWaferIndex::waferIndex (layer, waferU, waferV);
1841+ int index = (zside > 0 ) ? HGCalWaferIndex::waferIndex (layer, -waferU, waferV)
1842+ : HGCalWaferIndex::waferIndex (layer, waferU, waferV);
18391843 celltype = HGCalWaferType::getType (index, hgpar_->waferInfoMap_ );
18401844 if (debug)
18411845 edm::LogVerbatim (" HGCalGeom" ) << " Position (" << x << " , " << y << " ) Wafer type:partial:orient:cassette "
@@ -1853,6 +1857,9 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18531857 }
18541858 }
18551859 }
1860+ if (debug)
1861+ edm::LogVerbatim (" HGCalGeomX" ) << " waferFromPosition: waferu " << waferU << " :" << hgpar_->waferUVMax_ << " :"
1862+ << (std::abs (waferU) <= hgpar_->waferUVMax_ ) << " celltype " << celltype;
18561863 if ((std::abs (waferU) <= hgpar_->waferUVMax_ ) && (celltype >= 0 )) {
18571864 int place (HGCalCell::cellPlacementOld), part (HGCalTypes::WaferFull);
18581865 if (cassetteMode ()) {
@@ -1870,9 +1877,20 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18701877 bool fineCoarse =
18711878 ((celltype == HGCSiliconDetId::HGCalHD120) || (celltype == HGCSiliconDetId::HGCalHD200)) ? false : true ;
18721879 cellHex (xx, yy, fineCoarse, place, part, cellU, cellV, extend, debug);
1880+ auto info = (zside > 0 ) ? waferInfo (layer, -waferU, waferV) : waferInfo (layer, waferU, waferV);
1881+ celltype = info.type ;
18731882 wt = (((celltype == HGCSiliconDetId::HGCalHD120) && (hgpar_->useSimWt_ > 0 ))
18741883 ? (hgpar_->cellThickness_ [celltype] / hgpar_->waferThick_ )
18751884 : 1.0 );
1885+ if (debug) {
1886+ std::ostringstream st1;
1887+ st1 << hgpar_->cellThickness_ .size () << " CellThickneses" ;
1888+ for (unsigned j = 0 ; j < hgpar_->cellThickness_ .size (); ++j)
1889+ st1 << " : " << hgpar_->cellThickness_ [j];
1890+ edm::LogVerbatim (" HGCalGeomX" ) << " waferfFromPosition: celltype " << celltype << " Layer " << layer << " Wafer "
1891+ << waferU << " :" << waferV << " having " << st1.str () << " SimWt "
1892+ << hgpar_->useSimWt_ << " waferThick " << hgpar_->waferThick_ << " wt " << wt;
1893+ }
18761894 } else {
18771895 cellU = cellV = 2 * hgpar_->nCellsFine_ ;
18781896 wt = 1.0 ;
@@ -2058,12 +2076,12 @@ int HGCalDDDConstants::waferType(DetId const& id, bool fromFile) const {
20582076 if (id.det () != DetId::Forward) {
20592077 HGCSiliconDetId hid (id);
20602078 layer = hid.layer ();
2061- waferU = hid.waferU ();
2079+ waferU = (hid. zside () > 0 ) ? -hid. waferU () : hid.waferU ();
20622080 waferV = hid.waferV ();
20632081 } else {
20642082 HFNoseDetId hid (id);
20652083 layer = hid.layer ();
2066- waferU = hid.waferU ();
2084+ waferU = (hid. zside () > 0 ) ? -hid. waferU () : hid.waferU ();
20672085 waferV = hid.waferV ();
20682086 }
20692087 auto itr = hgpar_->waferInfoMap_ .find (HGCalWaferIndex::waferIndex (layer, waferU, waferV));
@@ -2098,7 +2116,8 @@ int HGCalDDDConstants::waferType(int layer, int waferU, int waferV, bool fromFil
20982116}
20992117
21002118std::tuple<int , int , int > HGCalDDDConstants::waferType (HGCSiliconDetId const & id, bool fromFile) const {
2101- const auto & index = HGCalWaferIndex::waferIndex (id.layer (), id.waferU (), id.waferV ());
2119+ int waferU = (id.zside () > 0 ) ? -id.waferU () : id.waferU ();
2120+ const auto & index = HGCalWaferIndex::waferIndex (id.layer (), waferU, id.waferV ());
21022121 int type (-1 ), part (-1 ), orient (-1 );
21032122 if (fromFile && (waferFileSize () > 0 )) {
21042123 auto itr = hgpar_->waferInfoMap_ .find (index);
0 commit comments