Skip to content

Commit f556d3f

Browse files
authored
Merge pull request #48268 from bsunanda/Phase2-hgx364L
Phase2-hgx364L Provide 2 methods in RechitTool to distinguish fine vs coarse tile sizes
2 parents cad258f + d926b7a commit f556d3f

File tree

4 files changed

+60
-10
lines changed

4 files changed

+60
-10
lines changed

Geometry/HGCalCommonData/interface/HGCalDDDConstants.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ class HGCalDDDConstants {
158158
std::pair<double, double> rangeRLayer(int lay, bool reco) const;
159159
std::pair<double, double> rangeZ(bool reco) const;
160160
std::pair<int, int> rowColumnWafer(const int wafer) const;
161+
bool scintFine(int layer) const { return (hgpar_->scintFine(layer - hgpar_->firstLayer_)); }
161162
inline int sectors() const { return hgpar_->nSectors_; }
162163
double sensorSizeOffset(bool reco) const;
163164
std::pair<int, int> simToReco(int cell, int layer, int mod, bool half) const;

Geometry/HGCalCommonData/src/HGCalDDDConstants.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@ int HGCalDDDConstants::maxCells(int lay, bool reco) const {
12171217
}
12181218
return cells;
12191219
} else if (tileTrapezoid()) {
1220-
return hgpar_->scintCells(index.first + hgpar_->firstLayer_);
1220+
return hgpar_->scintCells(lay); //(index.first + hgpar_->firstLayer_);
12211221
} else {
12221222
return 0;
12231223
}

Geometry/HGCalGeometry/test/HGCalTestRecHitTool.cc

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,14 @@ class HGCalTestRecHitTool : public edm::one::EDAnalyzer<> {
4343
double getLayerZ(DetId const&) const;
4444
double getLayerZ(int type, int layer) const;
4545
GlobalPoint getPosition(DetId const&) const;
46+
int getScintMaxIphi(const DetId& id) const;
47+
bool isScintillatorFine(const DetId& id) const;
4648

4749
const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> geomToken_;
4850
const CaloGeometry* geom_;
4951
const int mode_;
5052
int layerEE_, layerFH_, layerBH_;
53+
int eeOffset_, fhOffset_, bhOffset_;
5154
int layerEE1000_, layerFH1000_, layerBH1000_;
5255
};
5356

@@ -56,7 +59,9 @@ HGCalTestRecHitTool::HGCalTestRecHitTool(const edm::ParameterSet& iC)
5659
geom_(nullptr),
5760
mode_(iC.getParameter<int>("Mode")) {
5861
layerEE_ = layerFH_ = layerBH_ = 0;
62+
eeOffset_ = fhOffset_ = bhOffset_ = 0;
5963
layerEE1000_ = layerFH1000_ = layerBH1000_ = 0;
64+
edm::LogVerbatim("HGCalGeom") << "Instantiate HGCalTestRecHitTool with mode " << mode_;
6065
}
6166

6267
HGCalTestRecHitTool::~HGCalTestRecHitTool() {}
@@ -69,13 +74,19 @@ void HGCalTestRecHitTool::analyze(const edm::Event&, const edm::EventSetup& iSet
6974
: static_cast<const HGCalGeometry*>(
7075
geom_->getSubdetectorGeometry(DetId::HGCalEE, ForwardSubdetector::ForwardEmpty)));
7176
layerEE_ = (geomEE->topology().dddConstants()).layers(true);
77+
eeOffset_ = (geomEE->topology().dddConstants()).getLayerOffset();
7278
layerEE1000_ = (geomEE->topology().dddConstants()).getLayer(10000., true);
79+
edm::LogVerbatim("HGCalGeom") << "EE::Layers " << layerEE_ << " Offset " << eeOffset_ << " Layer # at 1000 cm "
80+
<< layerEE1000_;
7381
auto geomFH = ((mode_ == 0) ? static_cast<const HGCalGeometry*>(
7482
geom_->getSubdetectorGeometry(DetId::Forward, ForwardSubdetector::HGCHEF))
7583
: static_cast<const HGCalGeometry*>(geom_->getSubdetectorGeometry(
7684
DetId::HGCalHSi, ForwardSubdetector::ForwardEmpty)));
7785
layerFH_ = (geomFH->topology().dddConstants()).layers(true);
86+
fhOffset_ = (geomFH->topology().dddConstants()).getLayerOffset();
7887
layerFH1000_ = (geomFH->topology().dddConstants()).getLayer(10000., true);
88+
edm::LogVerbatim("HGCalGeom") << "FH::Layers " << layerFH_ << " Offsets " << fhOffset_ << " Layer # at 1000 cm "
89+
<< layerFH1000_;
7990
if (mode_ == 0) {
8091
auto geomBH =
8192
static_cast<const HcalGeometry*>(geom_->getSubdetectorGeometry(DetId::Hcal, HcalSubdetector::HcalEndcap));
@@ -84,21 +95,35 @@ void HGCalTestRecHitTool::analyze(const edm::Event&, const edm::EventSetup& iSet
8495
auto geomBH = static_cast<const HGCalGeometry*>(
8596
geom_->getSubdetectorGeometry(DetId::HGCalHSc, ForwardSubdetector::ForwardEmpty));
8697
layerBH_ = (geomBH->topology().dddConstants()).layers(true);
98+
bhOffset_ = (geomBH->topology().dddConstants()).getLayerOffset();
8799
layerBH1000_ = (geomBH->topology().dddConstants()).getLayer(10000., true);
88100
}
89-
edm::LogVerbatim("HGCalGeom") << "Layers " << layerEE_ << ":" << layerFH_ << ":" << layerBH_
90-
<< "\nLayer # at 1000 cm " << layerEE1000_ << ":" << layerFH1000_ << ":"
101+
edm::LogVerbatim("HGCalGeom") << "BH::Layers " << layerBH_ << " nOffsets " << bhOffset_ << " Layer # at 1000 cm "
91102
<< layerBH1000_;
92103
for (int layer = 1; layer <= layerEE_; ++layer)
93104
edm::LogVerbatim("HGCalGeom") << "EE Layer " << layer << " Wafers "
94105
<< (geomEE->topology().dddConstants()).wafers(layer, 0) << ":"
95106
<< (geomEE->topology().dddConstants()).wafers(layer, 1) << ":"
96-
<< (geomEE->topology().dddConstants()).wafers(layer, 2) << std::endl;
107+
<< (geomEE->topology().dddConstants()).wafers(layer, 2);
97108
for (int layer = 1; layer <= layerFH_; ++layer)
98109
edm::LogVerbatim("HGCalGeom") << "FH Layer " << layer << " Wafers "
99110
<< (geomFH->topology().dddConstants()).wafers(layer, 0) << ":"
100111
<< (geomFH->topology().dddConstants()).wafers(layer, 1) << ":"
101-
<< (geomFH->topology().dddConstants()).wafers(layer, 2) << std::endl;
112+
<< (geomFH->topology().dddConstants()).wafers(layer, 2);
113+
if (mode_ != 0) {
114+
auto geomBH = static_cast<const HGCalGeometry*>(
115+
geom_->getSubdetectorGeometry(DetId::HGCalHSc, ForwardSubdetector::ForwardEmpty));
116+
int firstL = (geomBH->topology().dddConstants()).firstLayer();
117+
edm::LogVerbatim("HGCalGeom") << "BH First Layer " << firstL << " Total " << layerBH_;
118+
for (int lay = 1; lay <= layerBH_; ++lay) {
119+
int layer = firstL + lay - 1;
120+
int ring = (geomBH->topology().dddConstants()).tileRings(layer).first + 1;
121+
auto typm = (geomBH->topology().dddConstants()).tileType(layer, ring, 1);
122+
HGCScintillatorDetId id(typm.first, layer, ring, 1, false, typm.second, 0);
123+
edm::LogVerbatim("HGCalGeom") << "BH Layer " << layer << " Ring " << ring << " Max phi "
124+
<< getScintMaxIphi(DetId(id)) << " Fine " << isScintillatorFine(DetId(id));
125+
}
126+
}
102127
int nlayer = ((mode_ == 0) ? (layerEE_ + layerFH_ + layerBH_) : (layerEE_ + layerFH_));
103128
retrieveLayerPositions(nlayer);
104129
} else {
@@ -228,5 +253,28 @@ double HGCalTestRecHitTool::getLayerZ(int type, int layer) const {
228253
return zpos;
229254
}
230255

256+
int HGCalTestRecHitTool::getScintMaxIphi(const DetId& id) const {
257+
if (id.det() == DetId::HGCalHSc) {
258+
int layer = HGCScintillatorDetId(id).layer();
259+
auto hg = static_cast<const HGCalGeometry*>(
260+
geom_->getSubdetectorGeometry(DetId::HGCalHSc, ForwardSubdetector::ForwardEmpty));
261+
return hg->topology().dddConstants().maxCells(layer, true);
262+
} else {
263+
return 0;
264+
}
265+
}
266+
267+
bool HGCalTestRecHitTool::isScintillatorFine(const DetId& id) const {
268+
edm::LogVerbatim("HGCalGeom") << "isScintillatorFine " << id.det() << ":" << DetId::HGCalHSc << ":" << bhOffset_;
269+
if (id.det() == DetId::HGCalHSc) {
270+
int layer = HGCScintillatorDetId(id).layer();
271+
auto hg = static_cast<const HGCalGeometry*>(
272+
geom_->getSubdetectorGeometry(DetId::HGCalHSc, ForwardSubdetector::ForwardEmpty));
273+
return hg->topology().dddConstants().scintFine(layer);
274+
} else {
275+
return false;
276+
}
277+
}
278+
231279
//define this as a plug-in
232280
DEFINE_FWK_MODULE(HGCalTestRecHitTool);

Geometry/HGCalGeometry/test/python/testHGCalRecHitTool_cfg.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
# Way to use this:
33
# cmsRun testHGCalRecHitTool_cfg.py geometry=D110
44
#
5-
# Options for type D95, D96, D98, D99, D100, D101, D102, D103, D104, D105,
6-
# D106, D107, D108, D109, D110, D111, D112, D113, D114,
7-
# D115, D116, D117, D118, D119, D120
5+
# Options for geometry D95, D96, D98, D99, D100, D101, D102, D103, D104,
6+
# D105, D106, D107, D108, D109, D110, D111, D112, D113,
7+
# D114, D115, D116, D117, D118, D119, D120, D121, D122,
8+
# D123
89
#
910
###############################################################################
1011
import FWCore.ParameterSet.Config as cms
@@ -71,8 +72,8 @@
7172
)
7273

7374
process.prodTest = cms.EDAnalyzer("HGCalTestRecHitTool",
74-
Mode = cms.int32(0),
75-
# Mode = cms.int32(1),
75+
# Mode = cms.int32(0),
76+
Mode = cms.int32(1),
7677
)
7778

7879
process.p1 = cms.Path(process.generator*process.prodTest)

0 commit comments

Comments
 (0)