@@ -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
6267HGCalTestRecHitTool::~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- << " \n Layer # 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
232280DEFINE_FWK_MODULE (HGCalTestRecHitTool);
0 commit comments