@@ -1659,6 +1659,7 @@ void HGCalGeomParameters::loadSpecParsTrapezoid(const DDFilteredView& fv, HGCalP
16591659 std::vector<double > tileRMin, tileRMax, tileRMinFine, tileRMaxFine;
16601660 std::vector<int > tileRingMin, tileRingMax, tileRingMinFine, tileRingMaxFine;
16611661 std::vector<double > cassetteShift;
1662+ php.nPhiLayer_ = dbl_to_int (fv.vector (" NPhiLayer" ));
16621663 tileIndx = dbl_to_int (fv.vector (" TileIndex" ));
16631664 tileProperty = dbl_to_int (fv.vector (" TileProperty" ));
16641665 tileHEX1 = dbl_to_int (fv.vector (" TileHEX1" ));
@@ -1694,10 +1695,13 @@ void HGCalGeomParameters::loadSpecParsTrapezoid(const DDFilteredView& fv, HGCalP
16941695 if (php.cassettes_ > 0 )
16951696 php.nphiCassette_ = php.nCellsCoarse_ / php.cassettes_ ;
16961697 cassetteShift = fv.vector (" CassetteShiftHE" );
1697- rescale (cassetteShift, HGCalParameters::k_ScaleFromDDD);
16981698 }
16991699
1700- php.cassetteShift_ = cassetteShift;
1700+ rescale (cassetteShift, HGCalParameters::k_ScaleFromDDD);
1701+ if (php.waferMaskMode_ == scintillatorFineCell)
1702+ php.cassetteShiftTile_ = cassetteShift;
1703+ else
1704+ php.cassetteShift_ = cassetteShift;
17011705 loadSpecParsTrapezoid (php,
17021706 tileIndx,
17031707 tileProperty,
@@ -1782,6 +1786,9 @@ void HGCalGeomParameters::loadSpecParsTrapezoid(const cms::DDFilteredView& fv,
17821786 } else if (dd4hep::dd::compareEqual (dd4hep::dd::noNamespace (it.first ), " TileProperty" )) {
17831787 for (const auto & i : it.second )
17841788 tileProperty.emplace_back (std::round (i));
1789+ } else if (dd4hep::dd::compareEqual (dd4hep::dd::noNamespace (it.first ), " NPhiLayer" )) {
1790+ for (const auto & i : it.second )
1791+ php.nPhiLayer_ .emplace_back (std::round (i));
17851792 } else if (dd4hep::dd::compareEqual (dd4hep::dd::noNamespace (it.first ), " TileHEX1" )) {
17861793 for (const auto & i : it.second )
17871794 tileHEX1.emplace_back (std::round (i));
@@ -1854,7 +1861,10 @@ void HGCalGeomParameters::loadSpecParsTrapezoid(const cms::DDFilteredView& fv,
18541861 }
18551862
18561863 rescale (cassetteShift, HGCalParameters::k_ScaleFromDD4hep);
1857- php.cassetteShift_ = cassetteShift;
1864+ if (php.waferMaskMode_ == scintillatorFineCell)
1865+ php.cassetteShiftTile_ = cassetteShift;
1866+ else
1867+ php.cassetteShift_ = cassetteShift;
18581868 loadSpecParsTrapezoid (php,
18591869 tileIndx,
18601870 tileProperty,
@@ -1972,6 +1982,17 @@ void HGCalGeomParameters::loadSpecParsTrapezoid(HGCalParameters& php,
19721982 edm::LogVerbatim (" HGCalGeom" ) << " TileRingRange[" << k << " ] " << tileRingMin[k] << " :" << tileRingMax[k];
19731983#endif
19741984 }
1985+ #ifdef EDM_ML_DEBUG
1986+ std::ostringstream st1, st2;
1987+ st1 << " Scintillator CassetteShift for " << php.cassetteShiftTile_ .size () << " tiles:" ;
1988+ for (unsigned int k = 0 ; k < php.cassetteShiftTile_ .size (); ++k)
1989+ st1 << " " << php.cassetteShiftTile_ [k];
1990+ edm::LogVerbatim (" HGCalGeom" ) << st1.str ();
1991+ st2 << " NPhi for scntillator " << php.nPhiLayer_ .size () << " layers:" ;
1992+ for (unsigned int k = 0 ; k < php.nPhiLayer_ .size (); ++k)
1993+ st2 << " " << php.nPhiLayer_ [k];
1994+ edm::LogVerbatim (" HGCalGeom" ) << st2.str ();
1995+ #endif
19751996}
19761997
19771998void HGCalGeomParameters::loadWaferHexagon (HGCalParameters& php) {
@@ -2335,13 +2356,19 @@ void HGCalGeomParameters::loadCellTrapezoid(HGCalParameters& php) {
23352356 << php.zLayerHex_ [k];
23362357#endif
23372358 // Find the radius of each eta-partitions
2338-
23392359 if ((php.mode_ == HGCalGeometryMode::TrapezoidFile) || (php.mode_ == HGCalGeometryMode::TrapezoidModule) ||
23402360 (php.mode_ == HGCalGeometryMode::TrapezoidCassette) || (php.mode_ == HGCalGeometryMode::TrapezoidFineCell)) {
23412361 // Ring radii for each partition
2362+ #ifdef EDM_ML_DEBUG
2363+ edm::LogVerbatim (" HGCalGeom" ) << " HGCalParameters: Mode " << php.mode_ << " :"
2364+ << HGCalGeometryMode::TrapezoidFineCell << " Sizes " << php.tileRingFineR_ .size ()
2365+ << " :" << php.tileRingR_ .size ();
2366+ #endif
23422367 for (unsigned int k = 0 ; k < 2 ; ++k) {
2343- for (unsigned int kk = 0 ; kk < php.tileRingR_ .size (); ++kk) {
2344- if ((k == 0 ) && (php.mode_ == HGCalGeometryMode::TrapezoidFineCell))
2368+ bool fine = ((k == 0 ) && (php.mode_ == HGCalGeometryMode::TrapezoidFineCell));
2369+ unsigned int sizeR = (fine) ? php.tileRingFineR_ .size () : php.tileRingR_ .size ();
2370+ for (unsigned int kk = 0 ; kk < sizeR; ++kk) {
2371+ if (fine)
23452372 php.radiusLayer_ [k].emplace_back (php.tileRingFineR_ [kk].first );
23462373 else
23472374 php.radiusLayer_ [k].emplace_back (php.tileRingR_ [kk].first );
@@ -2353,15 +2380,28 @@ void HGCalGeomParameters::loadCellTrapezoid(HGCalParameters& php) {
23532380 edm::LogVerbatim (" HGCalGeom" ) << " New [" << kk << " ] new R = " << rv << " Eta = " << eta;
23542381#endif
23552382 }
2356- if ((k == 0 ) && (php. mode_ == HGCalGeometryMode::TrapezoidFineCell) )
2383+ if (fine )
23572384 php.radiusLayer_ [k].emplace_back (php.tileRingFineR_ [php.tileRingFineR_ .size () - 1 ].second );
23582385 else
23592386 php.radiusLayer_ [k].emplace_back (php.tileRingR_ [php.tileRingR_ .size () - 1 ].second );
23602387 }
23612388 // Minimum and maximum radius index for each layer
2389+ #ifdef EDM_ML_DEBUG
2390+ edm::LogVerbatim (" HGCalGeom" ) << " Till Ring Range size " << php.tileRingFineRange_ .size () << " :"
2391+ << php.tileRingRange_ .size () << " :" << php.nPhiBinBH_ .size () << " :"
2392+ << php.zLayerHex_ .size () << " :" << php.nPhiLayer_ .size ();
2393+ #endif
2394+ unsigned int k1 (0 ), k2 (0 );
23622395 for (unsigned int k = 0 ; k < php.zLayerHex_ .size (); ++k) {
2363- php.iradMinBH_ .emplace_back (1 + php.tileRingRange_ [k].first );
2364- php.iradMaxBH_ .emplace_back (1 + php.tileRingRange_ [k].second );
2396+ if (php.nPhiLayer_ [k] > 288 ) {
2397+ php.iradMinBH_ .emplace_back (1 + php.tileRingFineRange_ [k1].first );
2398+ php.iradMaxBH_ .emplace_back (1 + php.tileRingFineRange_ [k1].second );
2399+ ++k1;
2400+ } else {
2401+ php.iradMinBH_ .emplace_back (1 + php.tileRingRange_ [k2].first );
2402+ php.iradMaxBH_ .emplace_back (1 + php.tileRingRange_ [k2].second );
2403+ ++k2;
2404+ }
23652405#ifdef EDM_ML_DEBUG
23662406 int kk = php.scintType (php.firstLayer_ + static_cast <int >(k));
23672407 edm::LogVerbatim (" HGCalGeom" ) << " New Layer " << k << " Type " << kk << " Low edge " << php.iradMinBH_ .back ()
0 commit comments