Skip to content

Commit

Permalink
Merge pull request #2624 from bsunanda/Phase2-HE24
Browse files Browse the repository at this point in the history
Protect FlexiLoader against no HE
  • Loading branch information
cmsbuild committed Feb 25, 2014
2 parents 0e77edc + 6ce88ed commit 9ee955e
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 58 deletions.
7 changes: 4 additions & 3 deletions Geometry/HcalCommonData/src/HcalDDDRecConstants.cc
Expand Up @@ -13,6 +13,7 @@
#include "CLHEP/Units/GlobalSystemOfUnits.h"

//#define DebugLog

HcalDDDRecConstants::HcalDDDRecConstants() : tobeInitialized(true), hcons(0) {

#ifdef DebugLog
Expand Down Expand Up @@ -406,9 +407,9 @@ void HcalDDDRecConstants::loadSimConst() {
for (unsigned int i=0; i<etaTableHF.size(); ++i)
std::cout << " [" << i << "] = " << etaTableHF[i];
std::cout << std::endl;
std::cout << "PhiTableHF";
for (unsigned int i=0; i<phiTableHF.size(); ++i)
std::cout << " [" << i << "] = " << phiTableHF[i];
std::cout << "PhiBinHF";
for (unsigned int i=0; i<phibinHF.size(); ++i)
std::cout << " [" << i << "] = " << phibinHF[i];
std::cout << std::endl;
#endif

Expand Down
59 changes: 35 additions & 24 deletions Geometry/HcalTowerAlgo/src/HcalFlexiHardcodeGeometryLoader.cc
Expand Up @@ -141,33 +141,44 @@ std::vector<HcalFlexiHardcodeGeometryLoader::HECellParameters> HcalFlexiHardcode
std::vector<HcalFlexiHardcodeGeometryLoader::HECellParameters> result;
std::vector<std::pair<double,double> > gconsHE = hcons.getConstHBHE(1);
std::vector<double> layerDepths;
layerDepths.push_back(gconsHE[1].first-gconsHE[1].second);
for (unsigned int i=i; i<gconsHE.size(); ++i)
layerDepths.push_back(gconsHE[i].first+gconsHE[i].second);
std::vector<HcalDDDRecConstants::HcalEtaBin> etabins = hcons.getEtaBins(1);
#ifdef DebugLog
std::cout << "HcalFlexiHardcodeGeometryLoader:HE with " << gconsHE.size() << " cells" << std::endl;
#endif
if (gconsHE.size() > 0) {
unsigned int istart = 1;
layerDepths.push_back(gconsHE[istart].first-gconsHE[istart].second);
for (unsigned int i=istart; i<gconsHE.size(); ++i)
layerDepths.push_back(gconsHE[i].first+gconsHE[i].second);
std::vector<HcalDDDRecConstants::HcalEtaBin> etabins = hcons.getEtaBins(1);

#ifdef DebugLog
std::cout << "FlexiGeometryLoader called for HE with " << etabins.size() << " Eta Bins" << std::endl;
std::cout << "FlexiGeometryLoader called for HE with " << etabins.size()
<< " Eta Bins and " << layerDepths.size() << " depths"
<< std::endl;
for (unsigned int i=0; i<layerDepths.size(); ++i)
std::cout << " Depth[" << i << "] = " << layerDepths[i];
std::cout << std::endl;
#endif
for (unsigned int i=0; i<etabins.size(); ++i) {
int iring = etabins[i].ieta;
int nphi = etabins[i].nPhi;
int depth = etabins[i].depthStart;
double dphi = etabins[i].dphi;
int units = int(((dphi*72)/(2*M_PI))+0.5);
int fioff = (units == 4) ? 3 : 1;
nphi *= units;
for (unsigned int k=0; k<etabins[i].layer.size(); ++k) {
double zmin = layerDepths[etabins[i].layer[k].first-1];
double zmax = layerDepths[etabins[i].layer[k].second-1];
for (unsigned int i=0; i<etabins.size(); ++i) {
int iring = etabins[i].ieta;
int nphi = etabins[i].nPhi;
int depth = etabins[i].depthStart;
double dphi = etabins[i].dphi;
int units = int(((dphi*72)/(2*M_PI))+0.5);
int fioff = (units == 4) ? 3 : 1;
nphi *= units;
for (unsigned int k=0; k<etabins[i].layer.size(); ++k) {
double zmin = layerDepths[etabins[i].layer[k].first-1];
double zmax = layerDepths[etabins[i].layer[k].second-1];
#ifdef DebugLog
std::cout << "HERing " << iring << " eta " << etabins[i].etaMin << ":"
<< etabins[i].etaMax << " depth " << depth << " Z " << zmin
<< ":" << zmax << " Phi 1:" << nphi << ":" << etabins[i].phi0
<< ":" << dphi << ":" << units << ":" << fioff << std::endl;
std::cout << "HERing " << iring << " eta " << etabins[i].etaMin << ":"
<< etabins[i].etaMax << " depth " << depth << " Z " << zmin
<< ":" << zmax << " Phi 1:" << nphi << ":" << etabins[i].phi0
<< ":" << dphi << ":" << units << ":" << fioff << std::endl;
#endif
result.push_back(HcalFlexiHardcodeGeometryLoader::HECellParameters(iring, depth, fioff, nphi, units, etabins[i].phi0, dphi, zmin, zmax, etabins[i].etaMin, etabins[i].etaMax));
depth++;
result.push_back(HcalFlexiHardcodeGeometryLoader::HECellParameters(iring, depth, fioff, nphi, units, etabins[i].phi0, dphi, zmin, zmax, etabins[i].etaMin, etabins[i].etaMax));
depth++;
}
}
}
return result;
Expand Down Expand Up @@ -282,7 +293,7 @@ void HcalFlexiHardcodeGeometryLoader::fillHE (CaloSubdetectorGeometry* fGeometry
cellParams.push_back ( fabs( refPoint.eta() ) ) ;
cellParams.push_back ( fabs( refPoint.z() ) ) ;
#ifdef DebugLog
std::cout << "HcalFlexiHardcodeGeometryLoader::fillHBHO-> " << hid << " " << hid.rawId() << " " << std::hex << hid.rawId() << std::dec << " " << hid.ieta() << '/' << hid.iphi() << '/' << hid.depth() << refPoint << '/' << cellParams [0] << '/' << cellParams [1] << '/' << cellParams [2] << std::endl;
std::cout << "HcalFlexiHardcodeGeometryLoader::fillHE-> " << hid << " " << hid.rawId() << " " << std::hex << hid.rawId() << std::dec << " " << hid.ieta() << '/' << hid.iphi() << '/' << hid.depth() << refPoint << '/' << cellParams [0] << '/' << cellParams [1] << '/' << cellParams [2] << std::endl;
#endif
fGeometry->newCell(refPoint, refPoint, refPoint,
CaloCellGeometry::getParmPtr(cellParams,
Expand Down Expand Up @@ -325,7 +336,7 @@ void HcalFlexiHardcodeGeometryLoader::fillHF (CaloSubdetectorGeometry* fGeometry
cellParams.push_back ( fabs( refPoint.eta()));
cellParams.push_back ( fabs( refPoint.z() ) ) ;
#ifdef DebugLog
std::cout << "HcalFlexiHardcodeGeometryLoader::fillHBHO-> " << hid << " " << hid.rawId() << " " << std::hex << hid.rawId() << std::dec << " " << hid.ieta() << '/' << hid.iphi() << '/' << hid.depth() << refPoint << '/' << cellParams [0] << '/' << cellParams [1] << '/' << cellParams [2] << std::endl;
std::cout << "HcalFlexiHardcodeGeometryLoader::fillHF-> " << hid << " " << hid.rawId() << " " << std::hex << hid.rawId() << std::dec << " " << hid.ieta() << '/' << hid.iphi() << '/' << hid.depth() << refPoint << '/' << cellParams [0] << '/' << cellParams [1] << '/' << cellParams [2] << std::endl;
#endif
fGeometry->newCell(refPoint, refPoint, refPoint,
CaloCellGeometry::getParmPtr(cellParams,
Expand Down
68 changes: 38 additions & 30 deletions Geometry/HcalTowerAlgo/test/HcalGeometryTester.cc
Expand Up @@ -97,19 +97,19 @@ void HcalGeometryTester::testClosestCells(CaloSubdetectorGeometry* g,
const HcalTopology& topology ) {

// make sure each cel is its own closest cell
HcalDetId barrelDet(HcalBarrel, 1, 1, 1);
HcalDetId barrelDet1(HcalBarrel, 1, 1, 1);
HcalDetId barrelDet2(HcalBarrel, 16, 50, 1);
HcalDetId endcapDet1(HcalEndcap, -17, 72, 1);
HcalDetId endcapDet2(HcalEndcap, 29, 35, 1);
HcalDetId forwardDet1(HcalForward, 30, 71, 1);
HcalDetId forwardDet3(HcalForward, -40, 71, 1);

testClosestCell(barrelDet , g);
testClosestCell(barrelDet2 , g);
testClosestCell(endcapDet1 , g);
testClosestCell(endcapDet2 , g);
testClosestCell(forwardDet1, g);
testClosestCell(forwardDet3, g);
if (topology.valid(barrelDet1)) testClosestCell(barrelDet1 , g);
if (topology.valid(barrelDet2)) testClosestCell(barrelDet2 , g);
if (topology.valid(endcapDet1)) testClosestCell(endcapDet1 , g);
if (topology.valid(endcapDet2)) testClosestCell(endcapDet2 , g);
if (topology.valid(forwardDet1)) testClosestCell(forwardDet1, g);
if (topology.valid(forwardDet3)) testClosestCell(forwardDet3, g);

const std::vector<DetId>& ids=g->getValidDetIds(DetId::Hcal,HcalBarrel);
for (std::vector<DetId>::const_iterator i=ids.begin(); i!=ids.end(); i++) {
Expand Down Expand Up @@ -149,29 +149,37 @@ void HcalGeometryTester::testTriggerGeometry(const HcalTopology& topology) {
HcalDetId forwardDet3(HcalForward, 40, 71, 1);

typedef std::vector<HcalTrigTowerDetId> TowerDets;
TowerDets barrelTowers = trigTowers.towerIds(barrelDet);
TowerDets endcapTowers = trigTowers.towerIds(endcapDet);
TowerDets forwardTowers1 = trigTowers.towerIds(forwardDet1);
TowerDets forwardTowers2 = trigTowers.towerIds(forwardDet2);
TowerDets forwardTowers3 = trigTowers.towerIds(forwardDet3);

std::cout << "Trigger Tower Size: Barrel " << barrelTowers.size()
<< ", Endcap " << endcapTowers.size() << ", Forward "
<< forwardTowers1.size() << "|" << forwardTowers2.size()
<< "|" << forwardTowers3.size() << std::endl;

assert(barrelTowers.size() ==1);
assert(endcapTowers.size() >=1);
assert(forwardTowers1.size() ==1);
assert(forwardTowers2.size() ==1);
assert(forwardTowers3.size() ==1);

std::cout << barrelTowers[0] << std::endl;
std::cout << endcapTowers[0] << std::endl;
if (endcapTowers.size() > 1) std::cout << endcapTowers[1] << std::endl;
std::cout << forwardTowers1[0] << std::endl;
std::cout << forwardTowers3[0] << std::endl;

if (topology.valid(barrelDet)) {
TowerDets barrelTowers = trigTowers.towerIds(barrelDet);
std::cout << "Trigger Tower Size: Barrel " << barrelTowers.size() << "\n";
assert(barrelTowers.size() ==1);
std::cout << barrelTowers[0] << std::endl;
}
if (topology.valid(endcapDet)) {
TowerDets endcapTowers = trigTowers.towerIds(endcapDet);
std::cout << "Trigger Tower Size: Endcap " << endcapTowers.size() << "\n";
assert(endcapTowers.size() >=1);
std::cout << endcapTowers[0] << std::endl;
if (endcapTowers.size() > 1) std::cout << endcapTowers[1] << std::endl;
}
if (topology.valid(forwardDet1)) {
TowerDets forwardTowers1 = trigTowers.towerIds(forwardDet1);
std::cout << "Trigger Tower Size: Forward1 " << forwardTowers1.size() << "\n";
assert(forwardTowers1.size() ==1);
std::cout << forwardTowers1[0] << std::endl;
}
if (topology.valid(forwardDet1)) {
TowerDets forwardTowers2 = trigTowers.towerIds(forwardDet2);
std::cout << "Trigger Tower Size: Forward2 " << forwardTowers2.size() << "\n";
assert(forwardTowers2.size() ==1);
std::cout << forwardTowers2[0] << std::endl;
}
if (topology.valid(forwardDet1)) {
TowerDets forwardTowers3 = trigTowers.towerIds(forwardDet3);
std::cout << "Trigger Tower Size: Forward3 " << forwardTowers3.size() << "\n";
assert(forwardTowers3.size() ==1);
std::cout << forwardTowers3[0] << std::endl;
}
}

void HcalGeometryTester::testFlexiValidDetIds(CaloSubdetectorGeometry* caloGeom,
Expand Down
3 changes: 2 additions & 1 deletion Geometry/HcalTowerAlgo/test/runHcalGeometryTester_cfg.py
Expand Up @@ -4,7 +4,8 @@
process = cms.Process("HcalGeometryTest")

#process.load("Configuration.Geometry.GeometryExtendedPostLS2_cff")
process.load("Geometry.HcalCommonData.testPhase2GeometryXML_cfi")
#process.load("Geometry.HcalCommonData.testPhase0GeometryXML_cfi")
process.load("Geometry.CMSCommonData.cmsExtendedGeometry2023HGCalXML_cfi")
process.load("Geometry.HcalCommonData.hcalSimNumberingInitialization_cfi")
process.load("Geometry.HcalCommonData.hcalRecNumberingInitialization_cfi")
process.load("Geometry.HcalEventSetup.hcalTopologyIdeal_cfi")
Expand Down

0 comments on commit 9ee955e

Please sign in to comment.