@@ -43,11 +43,14 @@ class HGCalTestRecHitTool : public edm::one::EDAnalyzer<> {
43
43
double getLayerZ (DetId const &) const ;
44
44
double getLayerZ (int type, int layer) const ;
45
45
GlobalPoint getPosition (DetId const &) const ;
46
+ int getScintMaxIphi (const DetId& id) const ;
47
+ bool isScintillatorFine (const DetId& id) const ;
46
48
47
49
const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> geomToken_;
48
50
const CaloGeometry* geom_;
49
51
const int mode_;
50
52
int layerEE_, layerFH_, layerBH_;
53
+ int eeOffset_, fhOffset_, bhOffset_;
51
54
int layerEE1000_, layerFH1000_, layerBH1000_;
52
55
};
53
56
@@ -56,7 +59,9 @@ HGCalTestRecHitTool::HGCalTestRecHitTool(const edm::ParameterSet& iC)
56
59
geom_ (nullptr ),
57
60
mode_(iC.getParameter<int >(" Mode" )) {
58
61
layerEE_ = layerFH_ = layerBH_ = 0 ;
62
+ eeOffset_ = fhOffset_ = bhOffset_ = 0 ;
59
63
layerEE1000_ = layerFH1000_ = layerBH1000_ = 0 ;
64
+ edm::LogVerbatim (" HGCalGeom" ) << " Instantiate HGCalTestRecHitTool with mode " << mode_;
60
65
}
61
66
62
67
HGCalTestRecHitTool::~HGCalTestRecHitTool () {}
@@ -69,13 +74,19 @@ void HGCalTestRecHitTool::analyze(const edm::Event&, const edm::EventSetup& iSet
69
74
: static_cast <const HGCalGeometry*>(
70
75
geom_->getSubdetectorGeometry (DetId::HGCalEE, ForwardSubdetector::ForwardEmpty)));
71
76
layerEE_ = (geomEE->topology ().dddConstants ()).layers (true );
77
+ eeOffset_ = (geomEE->topology ().dddConstants ()).getLayerOffset ();
72
78
layerEE1000_ = (geomEE->topology ().dddConstants ()).getLayer (10000 ., true );
79
+ edm::LogVerbatim (" HGCalGeom" ) << " EE::Layers " << layerEE_ << " Offset " << eeOffset_ << " Layer # at 1000 cm "
80
+ << layerEE1000_;
73
81
auto geomFH = ((mode_ == 0 ) ? static_cast <const HGCalGeometry*>(
74
82
geom_->getSubdetectorGeometry (DetId::Forward, ForwardSubdetector::HGCHEF))
75
83
: static_cast <const HGCalGeometry*>(geom_->getSubdetectorGeometry (
76
84
DetId::HGCalHSi, ForwardSubdetector::ForwardEmpty)));
77
85
layerFH_ = (geomFH->topology ().dddConstants ()).layers (true );
86
+ fhOffset_ = (geomFH->topology ().dddConstants ()).getLayerOffset ();
78
87
layerFH1000_ = (geomFH->topology ().dddConstants ()).getLayer (10000 ., true );
88
+ edm::LogVerbatim (" HGCalGeom" ) << " FH::Layers " << layerFH_ << " Offsets " << fhOffset_ << " Layer # at 1000 cm "
89
+ << layerFH1000_;
79
90
if (mode_ == 0 ) {
80
91
auto geomBH =
81
92
static_cast <const HcalGeometry*>(geom_->getSubdetectorGeometry (DetId::Hcal, HcalSubdetector::HcalEndcap));
@@ -84,21 +95,35 @@ void HGCalTestRecHitTool::analyze(const edm::Event&, const edm::EventSetup& iSet
84
95
auto geomBH = static_cast <const HGCalGeometry*>(
85
96
geom_->getSubdetectorGeometry (DetId::HGCalHSc, ForwardSubdetector::ForwardEmpty));
86
97
layerBH_ = (geomBH->topology ().dddConstants ()).layers (true );
98
+ bhOffset_ = (geomBH->topology ().dddConstants ()).getLayerOffset ();
87
99
layerBH1000_ = (geomBH->topology ().dddConstants ()).getLayer (10000 ., true );
88
100
}
89
- edm::LogVerbatim (" HGCalGeom" ) << " Layers " << layerEE_ << " :" << layerFH_ << " :" << layerBH_
90
- << " \n Layer # at 1000 cm " << layerEE1000_ << " :" << layerFH1000_ << " :"
101
+ edm::LogVerbatim (" HGCalGeom" ) << " BH::Layers " << layerBH_ << " nOffsets " << bhOffset_ << " Layer # at 1000 cm "
91
102
<< layerBH1000_;
92
103
for (int layer = 1 ; layer <= layerEE_; ++layer)
93
104
edm::LogVerbatim (" HGCalGeom" ) << " EE Layer " << layer << " Wafers "
94
105
<< (geomEE->topology ().dddConstants ()).wafers (layer, 0 ) << " :"
95
106
<< (geomEE->topology ().dddConstants ()).wafers (layer, 1 ) << " :"
96
- << (geomEE->topology ().dddConstants ()).wafers (layer, 2 ) << std::endl ;
107
+ << (geomEE->topology ().dddConstants ()).wafers (layer, 2 );
97
108
for (int layer = 1 ; layer <= layerFH_; ++layer)
98
109
edm::LogVerbatim (" HGCalGeom" ) << " FH Layer " << layer << " Wafers "
99
110
<< (geomFH->topology ().dddConstants ()).wafers (layer, 0 ) << " :"
100
111
<< (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
+ }
102
127
int nlayer = ((mode_ == 0 ) ? (layerEE_ + layerFH_ + layerBH_) : (layerEE_ + layerFH_));
103
128
retrieveLayerPositions (nlayer);
104
129
} else {
@@ -228,5 +253,28 @@ double HGCalTestRecHitTool::getLayerZ(int type, int layer) const {
228
253
return zpos;
229
254
}
230
255
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
+
231
279
// define this as a plug-in
232
280
DEFINE_FWK_MODULE (HGCalTestRecHitTool);
0 commit comments