@@ -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,7 @@ 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) : HGCalWaferIndex::waferIndex (layer, waferU, waferV);
17921794 celltype = HGCalWaferType::getType (index, hgpar_->waferInfoMap_ );
17931795 if (debug)
17941796 edm::LogVerbatim (" HGCalGeom" )
@@ -1835,7 +1837,7 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18351837 }
18361838 }
18371839 if (waferHexagon8File ()) {
1838- int index = HGCalWaferIndex::waferIndex (layer, waferU, waferV);
1840+ int index = (zside > 0 ) ? HGCalWaferIndex::waferIndex (layer, -waferU, waferV) : HGCalWaferIndex::waferIndex (layer, waferU, waferV);
18391841 celltype = HGCalWaferType::getType (index, hgpar_->waferInfoMap_ );
18401842 if (debug)
18411843 edm::LogVerbatim (" HGCalGeom" ) << " Position (" << x << " , " << y << " ) Wafer type:partial:orient:cassette "
@@ -1853,6 +1855,8 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18531855 }
18541856 }
18551857 }
1858+ if (debug)
1859+ edm::LogVerbatim (" HGCalGeomX" ) << " waferFromPosition: waferu " << waferU << " :" << hgpar_->waferUVMax_ << " :" << (std::abs (waferU) <= hgpar_->waferUVMax_ ) << " celltype " << celltype;
18561860 if ((std::abs (waferU) <= hgpar_->waferUVMax_ ) && (celltype >= 0 )) {
18571861 int place (HGCalCell::cellPlacementOld), part (HGCalTypes::WaferFull);
18581862 if (cassetteMode ()) {
@@ -1870,9 +1874,18 @@ void HGCalDDDConstants::waferFromPosition(const double x,
18701874 bool fineCoarse =
18711875 ((celltype == HGCSiliconDetId::HGCalHD120) || (celltype == HGCSiliconDetId::HGCalHD200)) ? false : true ;
18721876 cellHex (xx, yy, fineCoarse, place, part, cellU, cellV, extend, debug);
1877+ auto info = (zside > 0 ) ? waferInfo (layer, -waferU, waferV) : waferInfo (layer, waferU, waferV);
1878+ celltype = info.type ;
18731879 wt = (((celltype == HGCSiliconDetId::HGCalHD120) && (hgpar_->useSimWt_ > 0 ))
18741880 ? (hgpar_->cellThickness_ [celltype] / hgpar_->waferThick_ )
18751881 : 1.0 );
1882+ if (debug) {
1883+ std::ostringstream st1;
1884+ st1 << hgpar_->cellThickness_ .size () << " CellThickneses" ;
1885+ for (unsigned j = 0 ; j < hgpar_->cellThickness_ .size (); ++j)
1886+ st1 << " : " << hgpar_->cellThickness_ [j];
1887+ edm::LogVerbatim (" HGCalGeomX" ) << " waferfFromPosition: celltype " << celltype << " Layer " << layer << " Wafer " << waferU << " :" << waferV << " having " << st1.str () << " SimWt " << hgpar_->useSimWt_ << " waferThick " << hgpar_->waferThick_ << " wt " << wt;
1888+ }
18761889 } else {
18771890 cellU = cellV = 2 * hgpar_->nCellsFine_ ;
18781891 wt = 1.0 ;
@@ -2058,12 +2071,12 @@ int HGCalDDDConstants::waferType(DetId const& id, bool fromFile) const {
20582071 if (id.det () != DetId::Forward) {
20592072 HGCSiliconDetId hid (id);
20602073 layer = hid.layer ();
2061- waferU = hid.waferU ();
2074+ waferU = (hid. zside () > 0 ) ? -hid. waferU () : hid.waferU ();
20622075 waferV = hid.waferV ();
20632076 } else {
20642077 HFNoseDetId hid (id);
20652078 layer = hid.layer ();
2066- waferU = hid.waferU ();
2079+ waferU = (hid. zside () > 0 ) ? -hid. waferU () : hid.waferU ();
20672080 waferV = hid.waferV ();
20682081 }
20692082 auto itr = hgpar_->waferInfoMap_ .find (HGCalWaferIndex::waferIndex (layer, waferU, waferV));
@@ -2098,7 +2111,8 @@ int HGCalDDDConstants::waferType(int layer, int waferU, int waferV, bool fromFil
20982111}
20992112
21002113std::tuple<int , int , int > HGCalDDDConstants::waferType (HGCSiliconDetId const & id, bool fromFile) const {
2101- const auto & index = HGCalWaferIndex::waferIndex (id.layer (), id.waferU (), id.waferV ());
2114+ int waferU = (id.zside () > 0 ) ? -id.waferU () : id.waferU ();
2115+ const auto & index = HGCalWaferIndex::waferIndex (id.layer (), waferU, id.waferV ());
21022116 int type (-1 ), part (-1 ), orient (-1 );
21032117 if (fromFile && (waferFileSize () > 0 )) {
21042118 auto itr = hgpar_->waferInfoMap_ .find (index);
0 commit comments