Skip to content

Commit ee08414

Browse files
authored
Merge pull request #46029 from bsunanda/Phase2-hgx360B
Phase2-hgx360B Enable reconstruction geometry to be created for the V19 option of HGCal Geometry
2 parents b065732 + 7ee4c71 commit ee08414

File tree

4 files changed

+55
-14
lines changed

4 files changed

+55
-14
lines changed

Geometry/HGCalCommonData/data/hgcalCons/v19/hgcalCons.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<SpecPar name="HGCalEELayer">
3939
<PartSelector path="//HGCalEELayer.*"/>
4040
<Parameter name="Volume" value="HGCalEELayer" eval="false"/>
41-
<Parameter name="GeometryMode" value="HGCalGeometryMode::Hexagon8FineCell" eval="false"/>
41+
<Parameter name="GeometryMode" value="HGCalGeometryMode::Hexagon8CalibCell" eval="false"/>
4242
<Parameter name="LevelZSide" value="3"/>
4343
<Parameter name="LevelTop" value="9"/>
4444
<Parameter name="LevelTop" value="12"/>
@@ -102,7 +102,7 @@
102102
<SpecPar name="HGCalHESiliconLayer">
103103
<PartSelector path="//HGCalHESiliconLayer.*"/>
104104
<Parameter name="Volume" value="HGCalHESiliconLayer" eval="false"/>
105-
<Parameter name="GeometryMode" value="HGCalGeometryMode::Hexagon8FineCell" eval="false"/>
105+
<Parameter name="GeometryMode" value="HGCalGeometryMode::Hexagon8CalibCell" eval="false"/>
106106
<Parameter name="LevelZSide" value="3"/>
107107
<Parameter name="LevelTop" value="9"/>
108108
<Parameter name="LevelTop" value="12"/>

Geometry/HGCalCommonData/interface/HGCalParameters.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ class HGCalParameters {
205205
std::vector<std::pair<int, int> > tileRingRange_;
206206
std::vector<std::pair<double, double> > tileRingFineR_;
207207
std::vector<std::pair<int, int> > tileRingFineRange_;
208+
std::vector<int> nPhiLayer_;
208209
int cassettes_ = 0;
209210
int nphiCassette_ = 0;
210211
int nphiFineCassette_ = 0;

Geometry/HGCalCommonData/src/HGCalGeomParameters.cc

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

19771998
void 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()

Geometry/HGCalCommonData/test/python/g4OverlapCheck_cfg.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# Way to use this:
33
# cmsRun g4OverlapCheck_cfg.py type=V17 tol=0.01
44
#
5-
# Options for type V16, V17, V17n, V17ng, V18, V18n, V18O, Wafer, WaferFR,
6-
# WaferPR
5+
# Options for type V16, V17, V17n, V17ng, V18, V18n, V18O, V19, Wafer,
6+
# WaferFR, WaferPR
77
# tol 1.0, 0.1, 0.01, 0.0
88
#
99
###############################################################################
@@ -18,7 +18,7 @@
1818
"V17",
1919
VarParsing.VarParsing.multiplicity.singleton,
2020
VarParsing.VarParsing.varType.string,
21-
"type of operations: V16, V17, V17n, V7ng, V18, V18n, V18O, Wafer, WaferFR, WaferPR")
21+
"type of operations: V16, V17, V17n, V7ng, V18, V18n, V18O, V19, Wafer, WaferFR, WaferPR")
2222
options.register('tol',
2323
0.01,
2424
VarParsing.VarParsing.multiplicity.singleton,

0 commit comments

Comments
 (0)