diff --git a/Calibration/HcalCalibAlgos/plugins/HcalHBHEMuonAnalyzer.cc b/Calibration/HcalCalibAlgos/plugins/HcalHBHEMuonAnalyzer.cc
index d5cacd693ff3c..a471582ceb5a9 100644
--- a/Calibration/HcalCalibAlgos/plugins/HcalHBHEMuonAnalyzer.cc
+++ b/Calibration/HcalCalibAlgos/plugins/HcalHBHEMuonAnalyzer.cc
@@ -67,15 +67,14 @@ class HcalHBHEMuonAnalyzer : public edm::one::EDAnalyzer
+
diff --git a/Geometry/HcalCommonData/interface/HcalDDDRecConstants.h b/Geometry/HcalCommonData/interface/HcalDDDRecConstants.h
index e3c94b7dba3e1..502cc2cfd337a 100644
--- a/Geometry/HcalCommonData/interface/HcalDDDRecConstants.h
+++ b/Geometry/HcalCommonData/interface/HcalDDDRecConstants.h
@@ -44,6 +44,7 @@ class HcalDDDRecConstants {
struct HcalActiveLength {
int ieta, depth, zside, stype;
double eta, thick;
+ std::vector iphis;
HcalActiveLength(int ie=0, int d=0, int z=0, int s=0, double et=0,
double t=0) : ieta(ie), depth(d), zside(z), stype(s),
eta(et), thick(t) {}
@@ -57,49 +58,51 @@ class HcalDDDRecConstants {
nPhi(nfi), rMin(r1), rMax(r2) {}
};
- std::vector > getConstHBHE(const int type) const {
+ std::vector > getConstHBHE(const int& type) const {
if (type == 0) return gconsHB;
else if (type == 1) return gconsHE;
else {std::vector > gcons; return gcons;}
}
- std::vector getDepth(int det, int phi,
- int zside, unsigned int eta) const;
- std::vector getDepth(unsigned int eta, bool extra) const;
- int getDepthEta16(const int det, const int iphi,
- const int zside) const {return hcons.getDepthEta16(det,iphi,zside);}
- std::vector getEtaBins(int itype) const;
- std::pair getEtaPhi(int subdet, int ieta, int iphi) const;
- std::pair getEtaRange(const int i) const
+ std::vector getDepth(const int& det, const int& phi,
+ const int& zside, const unsigned int& eta) const;
+ std::vector getDepth(const unsigned int& eta, const bool& extra) const;
+ int getDepthEta16(const int& det, const int& iphi,
+ const int& zside) const {return hcons.getDepthEta16(det,iphi,zside);}
+ std::vector getEtaBins(const int& itype) const;
+ std::pair getEtaPhi(const int& subdet, const int& ieta, const int& iphi) const;
+ std::pair getEtaRange(const int& i) const
{return std::pair(iEtaMin[i],iEtaMax[i]);}
const std::vector & getEtaTable() const {return etaTable;}
const std::vector & getEtaTableHF() const {return hpar->etaTableHF;}
- std::pair getEtaLimit(const int i) const
+ std::pair getEtaLimit(const int& i) const
{return std::pair(etaTable[i],etaTable[i+1]);}
- HcalID getHCID(int subdet, int ieta, int iphi, int lay,
- int idepth) const;
+ HcalID getHCID(int subdet, int ieta, int iphi, int lay, int idepth) const;
std::vector getHFCellParameters() const;
- void getLayerDepth(int ieta, std::map& layers) const;
- int getLayerFront(int det, int eta, int phi, int depth) const;
- double getLayer0Wt(int det, int phi, int zside) const {return hcons.getLayer0Wt(det,phi,zside);}
- int getMaxDepth(const int type) const {return maxDepth[type];}
- int getMaxDepth(int itype, int ieta,
- int iphi, int zside) const;
- int getMinDepth(int itype, int ieta,
- int iphi, int zside) const;
+ void getLayerDepth(const int& ieta, std::map& layers) const;
+ int getLayerFront(const int& det, const int& eta, const int& phi,
+ const int& depth) const;
+ double getLayer0Wt(const int& det, const int& phi,
+ const int& zside) const {return hcons.getLayer0Wt(det,phi,zside);}
+ int getMaxDepth(const int& type) const {return maxDepth[type];}
+ int getMaxDepth(const int& itype, const int& ieta,
+ const int& iphi, const int& zside) const;
+ int getMinDepth(const int& itype, const int& ieta,
+ const int& iphi, const int& zside) const;
int getNEta() const {return hpar->etagroup.size();}
- int getNoff(const int i) const {return hpar->noff[i];}
- int getNPhi(const int type) const {return nPhiBins[type];}
- double getPhiBin(const int i) const {return phibin[i];}
- double getPhiOff(const int i) const {return hpar->phioff[i];}
+ int getNoff(const int& i) const {return hpar->noff[i];}
+ int getNPhi(const int& type) const {return nPhiBins[type];}
+ double getPhiBin(const int& i) const {return phibin[i];}
+ double getPhiOff(const int& i) const {return hpar->phioff[i];}
const std::vector & getPhiOffs() const {return hpar->phioff;}
- std::vector > getPhis(int subdet, int ieta) const;
+ std::vector > getPhis(const int& subdet, const int& ieta) const;
const std::vector & getPhiTable() const {return phibin;}
const std::vector & getPhiTableHF() const {return hpar->phitable;}
int getPhiZOne(std::vector >& phiz) const;
- double getRZ(int subdet, int ieta, int depth) const;
- double getRZ(int subdet, int ieta, int iphi, int depth) const;
- double getRZ(int subdet, int layer) const;
- std::vector getThickActive(int type) const;
+ double getRZ(const int& subdet, const int& ieta, const int& depth) const;
+ double getRZ(const int& subdet, const int& ieta, const int& iphi,
+ const int& depth) const;
+ double getRZ(const int& subdet, const int& layer) const;
+ std::vector getThickActive(const int& type) const;
int getTopoMode() const {return ((hpar->topologyMode)&0xFF);}
int getTriggerMode() const {return (((hpar->topologyMode)>>8)&0xFF);}
std::vector HcalCellTypes(HcalSubdetector) const;
diff --git a/Geometry/HcalCommonData/interface/HcalDDDSimConstants.h b/Geometry/HcalCommonData/interface/HcalDDDSimConstants.h
index 8230607fa0d12..db8a41bd30273 100644
--- a/Geometry/HcalCommonData/interface/HcalDDDSimConstants.h
+++ b/Geometry/HcalCommonData/interface/HcalDDDSimConstants.h
@@ -28,79 +28,80 @@ class HcalDDDSimConstants {
HcalDDDSimConstants(const HcalParameters* hp);
~HcalDDDSimConstants();
- HcalCellType::HcalCell cell(int det, int zside,
- int depth, int etaR,
- int iphi) const;
- int findDepth(int det, int eta,
- int phi, int zside,
- int lay) const;
- unsigned int findLayer(int layer, const std::vector& layerGroup) const;
- std::vector > getConstHBHE(int type) const;
- int getDepthEta16(int det, int phi,
- int zside) const;
- int getDepthEta16M(int det) const;
- int getDepthEta29(int phi, int zside, int i) const;
- int getDepthEta29M(int i, bool planOne) const;
- std::pair getDetEta(double eta, int depth);
- int getEta(int det, int lay, double hetaR);
- std::pair getEtaDepth(int det, int etaR, int phi,
- int zside, int depth, int lay);
- double getEtaHO(double& etaR, double& x, double& y,
- double& z) const;
- std::pair getiEtaRange(const int i) const {return std::pair(hpar->etaMin[i],hpar->etaMax[i]);}
+ HcalCellType::HcalCell cell(const int& det, const int& zside, const int& depth,
+ const int& etaR, const int& iphi) const;
+ int findDepth(const int& det, const int& eta, const int& phi,
+ const int& zside, const int& lay) const;
+ unsigned int findLayer(const int& layer, const std::vector& layerGroup) const;
+ std::vector > getConstHBHE(const int& type) const;
+ int getDepthEta16(const int& det, const int& phi,
+ const int& zside) const;
+ int getDepthEta16M(const int& det) const;
+ int getDepthEta29(const int& phi, const int& zside, const int& i) const;
+ int getDepthEta29M(const int& i, const bool& planOne) const;
+ std::pair getDetEta(const double& eta, const int& depth);
+ int getEta(const int& det, const int& lay, const double& hetaR);
+ std::pair getEtaDepth(const int& det, int etaR, const int& phi,
+ const int& zside, int depth, const int& lay);
+ double getEtaHO(const double& etaR, const double& x, const double& y,
+ const double& z) const;
+ std::pair getiEtaRange(const int& i) const {return std::pair(hpar->etaMin[i],hpar->etaMax[i]);}
const std::vector & getEtaTableHF() const {return hpar->etaTableHF;}
const std::vector & getGparHF() const {return hpar->gparHF;}
const std::vector & getIdHF2QIE() const {return idHF2QIE;}
- double getLayer0Wt(int det, int phi,
- int zside) const;
- int getFrontLayer(int det, int eta) const;
- int getLayerFront(int det, int eta,
- int phi, int zside,
- int depth) const;
- int getLayerBack(int det, int eta,
- int phi, int zside,
- int depth) const;
- int getLayerMax(int eta, int depth) const;
- int getMaxDepth(const int type) const {return maxDepth[type];}
- int getMaxDepth(int det, int eta,
- int phi, int zside,
- bool partialOnly) const;
- std::pair getMaxDepthDet(const int i) const {return ((i==1) ? depthMaxDf_ : depthMaxSp_);}
- int getMinDepth(int det, int eta,
- int phi, int zside,
- bool partialOnly) const;
- std::pair getModHalfHBHE(int type) const;
- std::pair getPhiCons(int det, int ieta) const;
- std::vector > getPhis(int subdet, int ieta) const;
+ double getLayer0Wt(const int& det, const int& phi,
+ const int& zside) const;
+ int getFrontLayer(const int& det, const int& eta) const;
+ int getLastLayer(const int& det, const int& eta) const;
+ int getLayerFront(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const int& depth) const;
+ int getLayerBack(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const int& depth) const;
+ int getLayerMax(const int& eta, const int& depth) const;
+ int getMaxDepth(const int& type) const {return maxDepth[type];}
+ int getMaxDepth(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const bool& partialOnly) const;
+ std::pair getMaxDepthDet(const int& i) const {return ((i==1) ? depthMaxDf_ : depthMaxSp_);}
+ int getMinDepth(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const bool& partialOnly) const;
+ std::pair getModHalfHBHE(const int& type) const;
+ std::pair getPhiCons(const int& det, const int& ieta) const;
+ std::vector > getPhis(const int& subdet, const int& ieta) const;
const std::vector & getPhiTableHF() const {return hpar->phitable;}
const std::vector & getRTableHF() const {return hpar->rTable;}
std::vector HcalCellTypes() const;
- std::vector HcalCellTypes(HcalSubdetector, int ieta=-1,
+ std::vector HcalCellTypes(const HcalSubdetector&, int ieta=-1,
int depth=-1) const;
bool isBH() const {return isBH_;}
const HcalLayerDepthMap* ldMap() const {return &ldmap_;}
- int maxHFDepth(int ieta, int iphi) const;
- unsigned int numberOfCells(HcalSubdetector) const;
- int phiNumber(int phi, int unit) const;
+ int maxHFDepth(const int& ieta, const int& iphi) const;
+ unsigned int numberOfCells(const HcalSubdetector&) const;
+ int phiNumber(const int& phi, const int& unit) const;
void printTiles() const;
- int unitPhi(int det, int etaR) const;
- int unitPhi(double dphi) const;
+ int unitPhi(const int& det, const int& etaR) const;
+ int unitPhi(const double& dphi) const;
private:
+
+ static const int nDepthMax=9;
+ static const int maxLayer_=18;
+ static const int maxLayerHB_=16;
+
void initialize();
- double deltaEta(int det, int eta,
- int depth) const;
- double getEta(int det, int etaR,
- int zside, int depth=1) const;
- double getEta(double r, double z) const;
- int getShift(HcalSubdetector subdet,
- int depth) const;
- double getGain (HcalSubdetector subdet,
- int depth) const;
- void printTileHB(int eta, int phi,
- int zside, int depth) const;
- void printTileHE(int eta, int phi,
- int zside, int depth) const;
+ double deltaEta(const int& det, const int& eta, const int& depth) const;
+ double getEta(const int& det, const int& etaR,
+ const int& zside, int depth=1) const;
+ double getEta(const double& r, const double& z) const;
+ int getShift(const HcalSubdetector& subdet, const int& depth) const;
+ double getGain (const HcalSubdetector& subdet, const int& depth) const;
+ void printTileHB(const int& eta, const int& phi,
+ const int& zside, const int& depth) const;
+ void printTileHE(const int& eta, const int& phi,
+ const int& zside, const int& depth) const;
unsigned int layerGroupSize(int eta) const;
unsigned int layerGroup(int eta, int i) const;
unsigned int layerGroup(int det, int eta,
@@ -110,10 +111,6 @@ class HcalDDDSimConstants {
const HcalParameters* hpar;
HcalLayerDepthMap ldmap_;
- static const int nDepthMax=9;
- static const int maxLayer_=18;
- static const int maxLayerHB_=16;
-
std::vector maxDepth; // Maximum depths in HB/HE/HF/HO
int nEta; // Number of bins in eta for HB and HE
int nR; // Number of bins in r
@@ -130,6 +127,8 @@ class HcalDDDSimConstants {
int depthEta29[2]; // maximum depth index for ieta=29
int layFHB[2]; // first layers in HB (normal, special 16)
int layFHE[3]; // first layers in HE (normal, special 16, 18)
+ int layBHB[3]; // last layers in HB (normal, special 15, 16)
+ int layBHE[4]; // last layers in HE (normal, special 16, 17, 18)
bool isBH_; // if HE is BH
std::vector idHF2QIE; // DetId's of HF modules with 2 QIE's
std::pair depthMaxDf_, depthMaxSp_; // (subdet,maximum depth) default,special
diff --git a/Geometry/HcalCommonData/src/HcalDDDRecConstants.cc b/Geometry/HcalCommonData/src/HcalDDDRecConstants.cc
index 6045574e73a9c..c6ddd1787209e 100644
--- a/Geometry/HcalCommonData/src/HcalDDDRecConstants.cc
+++ b/Geometry/HcalCommonData/src/HcalDDDRecConstants.cc
@@ -26,8 +26,8 @@ HcalDDDRecConstants::~HcalDDDRecConstants() {
#endif
}
-std::vector HcalDDDRecConstants::getDepth(const unsigned int eta,
- const bool extra) const {
+std::vector HcalDDDRecConstants::getDepth(const unsigned int& eta,
+ const bool& extra) const {
if (!extra) {
std::vector::const_iterator last = hpar->layerGroupEtaRec.begin();
@@ -47,7 +47,8 @@ std::vector HcalDDDRecConstants::getDepth(const unsigned int eta,
}
}
-std::vector HcalDDDRecConstants::getDepth(const int det, const int phi, const int zside, const unsigned int eta) const {
+std::vector HcalDDDRecConstants::getDepth(const int& det, const int& phi, const int& zside,
+ const unsigned int& eta) const {
std::map layers;
hcons.ldMap()->getLayerDepth(det, eta+1, phi, zside, layers);
if (layers.empty()) {
@@ -61,7 +62,7 @@ std::vector HcalDDDRecConstants::getDepth(const int det, const int phi, con
}
std::vector
-HcalDDDRecConstants::getEtaBins(const int itype) const {
+HcalDDDRecConstants::getEtaBins(const int& itype) const {
std::vector bins;
unsigned int type = (itype == 0) ? 0 : 1;
@@ -131,7 +132,7 @@ HcalDDDRecConstants::getEtaBins(const int itype) const {
}
std::pair
-HcalDDDRecConstants::getEtaPhi(int subdet, int ieta, int iphi) const {
+HcalDDDRecConstants::getEtaPhi(const int& subdet, const int& ieta, const int& iphi) const {
int ietaAbs = (ieta > 0) ? ieta : -ieta;
double eta(0), phi(0);
if ((subdet == static_cast(HcalBarrel)) ||
@@ -270,8 +271,7 @@ HcalDDDRecConstants::getHFCellParameters() const {
return cells;
}
-void HcalDDDRecConstants::getLayerDepth(const int ieta,
- std::map& layers) const {
+void HcalDDDRecConstants::getLayerDepth(const int& ieta, std::map& layers) const {
layers.clear();
for (unsigned int l=0; l 0) ? 1 : -1;
int eta = zside*ieta;
int layFront = hcons.ldMap()->getLayerFront(subdet,eta,iphi,zside,depth);
if (layFront < 0) {
int laymin = hcons.getFrontLayer(subdet, ieta);
- if (eta <= hpar->etaMax[1]) {
+ if (eta == 16 && subdet == 2) {
+ layFront = laymin;
+ } else if (eta <= hpar->etaMax[1]) {
for (unsigned int k=0; k= laymin) {
@@ -313,8 +315,8 @@ int HcalDDDRecConstants::getLayerFront(const int idet, const int ieta,
return layFront;
}
-int HcalDDDRecConstants::getMaxDepth (const int itype, const int ieta,
- const int iphi, const int zside) const {
+int HcalDDDRecConstants::getMaxDepth (const int& itype, const int& ieta,
+ const int& iphi, const int& zside) const {
unsigned int type = (itype == 0) ? 0 : 1;
int lmax = hcons.getMaxDepth(type+1, ieta, iphi, zside, true);
@@ -328,11 +330,15 @@ int HcalDDDRecConstants::getMaxDepth (const int itype, const int ieta,
if (type == 1 && ieta >= hpar->noff[1]) lmax = hcons.getDepthEta29M(0,false);
}
}
+#ifdef EDM_ML_DEBUG
+ std::cout << "getMaxDepth::Input " << itype << ":" << ieta << ":"
+ << iphi << ":" << zside << " Output " << lmax << std::endl;
+#endif
return lmax;
}
-int HcalDDDRecConstants::getMinDepth (const int itype, const int ieta,
- const int iphi, const int zside) const {
+int HcalDDDRecConstants::getMinDepth (const int& itype, const int& ieta,
+ const int& iphi, const int& zside) const {
int lmin = hcons.getMinDepth(itype+1, ieta, iphi, zside, true);
if (lmin < 0) {
@@ -354,7 +360,7 @@ int HcalDDDRecConstants::getMinDepth (const int itype, const int ieta,
}
std::vector >
-HcalDDDRecConstants::getPhis(int subdet, int ieta) const {
+HcalDDDRecConstants::getPhis(const int& subdet, const int& ieta) const {
std::vector > phis;
int ietaAbs = (ieta > 0) ? ieta : -ieta;
@@ -401,13 +407,14 @@ int HcalDDDRecConstants::getPhiZOne(std::vector>& phiz) const
return subdet;
}
-double HcalDDDRecConstants::getRZ(int subdet, int ieta, int depth) const {
+double HcalDDDRecConstants::getRZ(const int& subdet, const int& ieta,
+ const int& depth) const {
return getRZ(subdet, ieta, 1, depth);
}
-double HcalDDDRecConstants::getRZ(int subdet, int ieta, int iphi,
- int depth) const {
+double HcalDDDRecConstants::getRZ(const int& subdet, const int& ieta, const int& iphi,
+ const int& depth) const {
int layf = getLayerFront(subdet,ieta,iphi,depth);
double rz = (layf < 0) ? 0.0 :
((subdet == static_cast(HcalBarrel)) ? (gconsHB[layf].first) :
@@ -420,7 +427,7 @@ double HcalDDDRecConstants::getRZ(int subdet, int ieta, int iphi,
return rz;
}
-double HcalDDDRecConstants::getRZ(int subdet, int layer) const {
+double HcalDDDRecConstants::getRZ(const int& subdet, const int& layer) const {
double rz(0);
if (layer > 0 && layer <= (int)(layerGroupSize(0)))
@@ -435,7 +442,7 @@ double HcalDDDRecConstants::getRZ(int subdet, int layer) const {
std::vector
-HcalDDDRecConstants::getThickActive(const int type) const {
+HcalDDDRecConstants::getThickActive(const int& type) const {
std::vector actives;
std::vector bins = getEtaBins(type);
@@ -446,13 +453,26 @@ HcalDDDRecConstants::getThickActive(const int type) const {
int ieta = bin.ieta;
int zside = bin.zside;
int stype = (bin.phis.size() > 4) ? 0 : 1;
+ int layf = getLayerFront(type+1,zside*ieta,bin.phis[0].first,bin.depthStart) + 1;
+ int layl = hcons.getLastLayer(type+1,zside*ieta) + 1;
double eta = 0.5*(bin.etaMin+bin.etaMax);
double theta = 2*atan(exp(-eta));
double scale = 1.0/((type == 0) ? sin(theta) : cos(theta));
int depth = bin.depthStart;
+#ifdef EDM_ML_DEBUG
+ std::cout << "Eta " << ieta << " zside " << zside << " depth " << depth
+ << " Layers " << layf << ":" << layl << ":" << bin.layer.size();
+ for (auto ll : bin.layer) std::cout << " " << ll.first << ":" << ll.second;
+ std::cout << " phi ";
+ for (auto phi : bin.phis) std::cout << " " << phi.first;
+ std::cout << std::endl;
+#endif
for (unsigned int i = 0; i < bin.layer.size(); ++i) {
double thick(0);
- for (int j = bin.layer[i].first; j <= bin.layer[i].second; ++j) {
+ int lmin = (type == 1 && ieta == iEtaMin[1]) ? layf :
+ std::max(bin.layer[i].first,layf);
+ int lmax = std::min(bin.layer[i].second,layl);
+ for (int j = lmin; j <= lmax; ++j) {
if (type == 0 || j > 1) {
double t = ((type == 0) ? gconsHB[j-1].second : gconsHE[j-1].second);
if (t > 0) thick += t;
@@ -460,6 +480,8 @@ HcalDDDRecConstants::getThickActive(const int type) const {
}
thick *= (2.*scale);
HcalDDDRecConstants::HcalActiveLength active(ieta,depth,zside,stype,zside*eta,thick);
+ for (auto phi : bin.phis)
+ active.iphis.emplace_back(phi.first);
actives.emplace_back(active);
++depth;
#ifdef EDM_ML_DEBUG
@@ -840,7 +862,8 @@ void HcalDDDRecConstants::initialize(void) {
int laymax0 = (imx > 16) ? layerGroup(i,16) : laymax;
if (i+1 == iEtaMax[0]) laymax0 = hcons.getDepthEta16M(1);
#ifdef EDM_ML_DEBUG
- std::cout << "HB " << i << " " << imx << " " << laymax << " " << laymax0 << std::endl;
+ std::cout << "HB " << i << " " << imx << " " << laymax << " "
+ << laymax0 << std::endl;
#endif
if (maxDepth[0] < laymax0) maxDepth[0] = laymax0;
}
@@ -1006,7 +1029,7 @@ void HcalDDDRecConstants::initialize(void) {
}
-unsigned int HcalDDDRecConstants::layerGroupSize(const int eta) const {
+unsigned int HcalDDDRecConstants::layerGroupSize(int eta) const {
unsigned int k = 0;
for (auto const & it : hpar->layerGroupEtaRec) {
if (it.layer == (unsigned int)(eta + 1)) {
@@ -1018,8 +1041,7 @@ unsigned int HcalDDDRecConstants::layerGroupSize(const int eta) const {
return k;
}
-unsigned int HcalDDDRecConstants::layerGroup(const int eta,
- const int i) const {
+unsigned int HcalDDDRecConstants::layerGroup(int eta, int i) const {
unsigned int k = 0;
for (auto const & it : hpar->layerGroupEtaRec) {
if (it.layer == (unsigned int)(eta + 1)) {
diff --git a/Geometry/HcalCommonData/src/HcalDDDSimConstants.cc b/Geometry/HcalCommonData/src/HcalDDDSimConstants.cc
index 59c7694e4cd1e..85a726acfca4e 100644
--- a/Geometry/HcalCommonData/src/HcalDDDSimConstants.cc
+++ b/Geometry/HcalCommonData/src/HcalDDDSimConstants.cc
@@ -28,9 +28,9 @@ HcalDDDSimConstants::~HcalDDDSimConstants() {
#endif
}
-HcalCellType::HcalCell HcalDDDSimConstants::cell(const int idet, const int zside,
- const int depth, const int etaR,
- const int iphi) const {
+HcalCellType::HcalCell HcalDDDSimConstants::cell(const int& idet, const int& zside,
+ const int& depth, const int& etaR,
+ const int& iphi) const {
double etaMn = hpar->etaMin[0];
double etaMx = hpar->etaMax[0];
@@ -120,15 +120,15 @@ HcalCellType::HcalCell HcalDDDSimConstants::cell(const int idet, const int zside
return tmp;
}
-int HcalDDDSimConstants::findDepth(const int det, const int eta,
- const int phi, const int zside,
- const int lay) const {
+int HcalDDDSimConstants::findDepth(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const int& lay) const {
int depth = (ldmap_.isValid(det,phi,zside)) ? ldmap_.getDepth(det,eta,phi,zside,lay) : -1;
return depth;
}
-unsigned int HcalDDDSimConstants::findLayer(const int layer, const std::vector& layerGroup) const {
+unsigned int HcalDDDSimConstants::findLayer(const int& layer, const std::vector& layerGroup) const {
unsigned int id = layerGroup.size();
for (unsigned int i = 0; i < layerGroup.size(); i++) {
@@ -140,7 +140,7 @@ unsigned int HcalDDDSimConstants::findLayer(const int layer, const std::vector > HcalDDDSimConstants::getConstHBHE(const int type) const {
+std::vector > HcalDDDSimConstants::getConstHBHE(const int& type) const {
std::vector > gcons;
if (type == 0) {
@@ -155,8 +155,8 @@ std::vector > HcalDDDSimConstants::getConstHBHE(const i
return gcons;
}
-int HcalDDDSimConstants::getDepthEta16(const int det, const int phi,
- const int zside) const {
+int HcalDDDSimConstants::getDepthEta16(const int& det, const int& phi,
+ const int& zside) const {
int depth = ldmap_.getDepth16(det,phi,zside);
if (depth < 0) depth = (det == 2) ? depthEta16[1] : depthEta16[0];
@@ -166,7 +166,7 @@ int HcalDDDSimConstants::getDepthEta16(const int det, const int phi,
return depth;
}
-int HcalDDDSimConstants::getDepthEta16M(const int det) const {
+int HcalDDDSimConstants::getDepthEta16M(const int& det) const {
int depth = (det == 2) ? depthEta16[1] : depthEta16[0];
std::vector phis;
int detsp = ldmap_.validDet(phis);
@@ -180,16 +180,16 @@ int HcalDDDSimConstants::getDepthEta16M(const int det) const {
return depth;
}
-int HcalDDDSimConstants::getDepthEta29(const int phi, const int zside,
- const int i) const {
+int HcalDDDSimConstants::getDepthEta29(const int& phi, const int& zside,
+ const int& i) const {
int depth = (i == 0) ? ldmap_.getMaxDepthLastHE(2,phi,zside) : -1;
if (depth < 0) depth = (i == 1) ? depthEta29[1] : depthEta29[0];
return depth;
}
-int HcalDDDSimConstants::getDepthEta29M(const int i,
- const bool planOne) const {
+int HcalDDDSimConstants::getDepthEta29M(const int& i,
+ const bool& planOne) const {
int depth = (i == 1) ? depthEta29[1] : depthEta29[0];
if (i == 0 && planOne) {
std::vector phis;
@@ -204,8 +204,8 @@ int HcalDDDSimConstants::getDepthEta29M(const int i,
return depth;
}
-std::pair HcalDDDSimConstants::getDetEta(const double eta,
- const int depth) {
+std::pair HcalDDDSimConstants::getDetEta(const double& eta,
+ const int& depth) {
int hsubdet(0), ieta(0);
double etaR(0);
@@ -229,8 +229,8 @@ std::pair HcalDDDSimConstants::getDetEta(const double eta,
return std::pair(hsubdet,etaR);
}
-int HcalDDDSimConstants::getEta(const int det, const int lay,
- const double hetaR) {
+int HcalDDDSimConstants::getEta(const int& det, const int& lay,
+ const double& hetaR) {
int ieta(0);
if (det == static_cast(HcalForward)) { // Forward HCal
@@ -253,9 +253,9 @@ int HcalDDDSimConstants::getEta(const int det, const int lay,
return ieta;
}
-std::pair HcalDDDSimConstants::getEtaDepth(const int det, int etaR,
- int phi, int zside,
- int depth, int lay) {
+std::pair HcalDDDSimConstants::getEtaDepth(const int& det, int etaR,
+ const int& phi, const int& zside,
+ int depth, const int& lay) {
#ifdef EDM_ML_DEBUG
std::cout << "HcalDDDEsimConstants:getEtaDepth: I/P " << det << ":" << etaR
@@ -299,8 +299,8 @@ std::pair HcalDDDSimConstants::getEtaDepth(const int det, int etaR,
return std::pair(etaR,depth);
}
-double HcalDDDSimConstants::getEtaHO(double& etaR, double& x, double& y,
- double& z) const {
+double HcalDDDSimConstants::getEtaHO(const double& etaR, const double& x, const double& y,
+ const double& z) const {
if (hpar->zHO.size() > 4) {
double eta = fabs(etaR);
@@ -325,31 +325,47 @@ double HcalDDDSimConstants::getEtaHO(double& etaR, double& x, double& y,
}
}
-int HcalDDDSimConstants::getFrontLayer(const int det, const int eta) const {
+int HcalDDDSimConstants::getFrontLayer(const int& det, const int& eta) const {
int lay=0;
if (det == 1) {
- if (eta == 16 || eta == -16) lay = layFHB[1];
- else lay = layFHB[0];
+ if (std::abs(eta) == 16) lay = layFHB[1];
+ else lay = layFHB[0];
} else {
- if (eta == 16 || eta == -16) lay = layFHE[1];
- else if (eta == 18 || eta == -18) lay = layFHE[2];
- else lay = layFHE[0];
+ if (std::abs(eta) == 16) lay = layFHE[1];
+ else if (std::abs(eta) == 18) lay = layFHE[2];
+ else lay = layFHE[0];
}
return lay;
}
-double HcalDDDSimConstants::getLayer0Wt(const int det, const int phi,
- const int zside) const {
+int HcalDDDSimConstants::getLastLayer(const int& det, const int& eta) const {
+
+ int lay=0;
+ if (det == 1) {
+ if (std::abs(eta) == 15) lay = layBHB[1];
+ else if (std::abs(eta) == 16) lay = layBHB[2];
+ else lay = layBHB[0];
+ } else {
+ if (std::abs(eta) == 16) lay = layBHE[1];
+ else if (std::abs(eta) == 17) lay = layBHE[2];
+ else if (std::abs(eta) == 18) lay = layBHE[3];
+ else lay = layBHE[0];
+ }
+ return lay;
+}
+
+double HcalDDDSimConstants::getLayer0Wt(const int& det, const int& phi,
+ const int& zside) const {
double wt = ldmap_.getLayer0Wt(det, phi, zside);
if (wt < 0) wt = (det == 2) ? hpar->Layer0Wt[1] : hpar->Layer0Wt[0];
return wt;
}
-int HcalDDDSimConstants::getLayerFront(const int det, const int eta,
- const int phi, const int zside,
- const int depth) const {
+int HcalDDDSimConstants::getLayerFront(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const int& depth) const {
int layer = ldmap_.getLayerFront(det, eta, phi, zside, depth);
if (layer < 0) {
@@ -367,9 +383,9 @@ int HcalDDDSimConstants::getLayerFront(const int det, const int eta,
return layer;
}
-int HcalDDDSimConstants::getLayerBack(const int det, const int eta,
- const int phi, const int zside,
- const int depth) const {
+int HcalDDDSimConstants::getLayerBack(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const int& depth) const {
int layer = ldmap_.getLayerBack(det, eta, phi, zside, depth);
if (layer < 0) {
@@ -382,15 +398,15 @@ int HcalDDDSimConstants::getLayerBack(const int det, const int eta,
return layer;
}
-int HcalDDDSimConstants::getLayerMax(const int eta, const int depth) const {
+int HcalDDDSimConstants::getLayerMax(const int& eta, const int& depth) const {
int layermx = ((eta < hpar->etaMin[1]) && depth-1 < maxDepth[0]) ? maxLayerHB_+1 : (int)layerGroupSize(eta-1);
return layermx;
}
-int HcalDDDSimConstants::getMaxDepth(const int det, const int eta,
- const int phi, const int zside,
- const bool partialDetOnly) const {
+int HcalDDDSimConstants::getMaxDepth(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const bool& partialDetOnly) const {
int dmax(-1);
if (partialDetOnly) {
@@ -416,9 +432,9 @@ int HcalDDDSimConstants::getMaxDepth(const int det, const int eta,
return dmax;
}
-int HcalDDDSimConstants::getMinDepth(const int det, const int eta,
- const int phi, const int zside,
- const bool partialDetOnly) const {
+int HcalDDDSimConstants::getMinDepth(const int& det, const int& eta,
+ const int& phi, const int& zside,
+ const bool& partialDetOnly) const {
int lmin(-1);
if (partialDetOnly) {
@@ -444,7 +460,7 @@ int HcalDDDSimConstants::getMinDepth(const int det, const int eta,
return lmin;
}
-std::pair HcalDDDSimConstants::getModHalfHBHE(const int type) const {
+std::pair HcalDDDSimConstants::getModHalfHBHE(const int& type) const {
if (type == 0) {
return std::pair(nmodHB,nzHB);
@@ -453,8 +469,8 @@ std::pair HcalDDDSimConstants::getModHalfHBHE(const int type) const {
}
}
-std::pair HcalDDDSimConstants::getPhiCons(const int det,
- const int ieta) const {
+std::pair HcalDDDSimConstants::getPhiCons(const int& det,
+ const int& ieta) const {
double fioff(0), fibin(0);
if (det == static_cast(HcalForward)) { // Forward HCal
@@ -475,7 +491,7 @@ std::pair HcalDDDSimConstants::getPhiCons(const int det,
}
std::vector >
-HcalDDDSimConstants::getPhis(const int subdet, const int ieta) const {
+HcalDDDSimConstants::getPhis(const int& subdet, const int& ieta) const {
std::vector > phis;
int ietaAbs = (ieta > 0) ? ieta : -ieta;
@@ -537,7 +553,8 @@ std::vector HcalDDDSimConstants::HcalCellTypes() const{
return cellTypes;
}
-std::vector HcalDDDSimConstants::HcalCellTypes(const HcalSubdetector subdet, const int ieta, const int depthl) const {
+std::vector HcalDDDSimConstants::HcalCellTypes(const HcalSubdetector& subdet,
+ int ieta, int depthl) const {
std::vector cellTypes;
if (subdet == HcalForward) {
@@ -636,7 +653,7 @@ std::vector HcalDDDSimConstants::HcalCellTypes(const HcalSubdetect
return cellTypes;
}
-int HcalDDDSimConstants::maxHFDepth(const int eta, const int iphi) const {
+int HcalDDDSimConstants::maxHFDepth(const int& eta, const int& iphi) const {
int mxdepth = maxDepth[2];
if (!idHF2QIE.empty()) {
bool ok(false);
@@ -650,7 +667,7 @@ int HcalDDDSimConstants::maxHFDepth(const int eta, const int iphi) const {
return mxdepth;
}
-unsigned int HcalDDDSimConstants::numberOfCells(const HcalSubdetector subdet) const{
+unsigned int HcalDDDSimConstants::numberOfCells(const HcalSubdetector& subdet) const{
unsigned int num = 0;
std::vector cellTypes = HcalCellTypes(subdet);
@@ -665,7 +682,7 @@ unsigned int HcalDDDSimConstants::numberOfCells(const HcalSubdetector subdet) co
return num;
}
-int HcalDDDSimConstants::phiNumber(const int phi, const int units) const {
+int HcalDDDSimConstants::phiNumber(const int& phi, const int& units) const {
int iphi_skip = phi;
if (units==2) iphi_skip = (phi-1)*2+1;
@@ -681,7 +698,9 @@ void HcalDDDSimConstants::printTiles() const {
int kphi = (detsp > 0) ? phis[0] : 1;
int zside = (kphi > 0) ? 1 : -1;
int iphi = (kphi > 0) ? kphi : -kphi;
- std::cout << "Tile Information for HB from " << hpar->etaMin[0] << " to " << hpar->etaMax[0] << "\n\n";
+ edm::LogVerbatim("HcalGeom") << "Tile Information for HB from "
+ << hpar->etaMin[0] << " to " << hpar->etaMax[0]
+ << "\n";
for (int eta=hpar->etaMin[0]; eta<= hpar->etaMax[0]; eta++) {
int dmax = getMaxDepth(1,eta,iphi,-zside,false);
for (int depth=1; depth<=dmax; depth++)
@@ -693,7 +712,9 @@ void HcalDDDSimConstants::printTiles() const {
}
}
- std::cout << "\nTile Information for HE from " << hpar->etaMin[1] << " to " << hpar->etaMax[1] << "\n\n";
+ edm::LogVerbatim("HcalGeom") << "\nTile Information for HE from "
+ << hpar->etaMin[1] << " to " << hpar->etaMax[1]
+ << "\n";
for (int eta=hpar->etaMin[1]; eta<= hpar->etaMax[1]; eta++) {
int dmin = (eta == hpar->etaMin[1]) ? getDepthEta16(2,iphi,-zside) : 1;
int dmax = getMaxDepth(2,eta,iphi,-zside,false);
@@ -707,13 +728,13 @@ void HcalDDDSimConstants::printTiles() const {
}
}
-int HcalDDDSimConstants::unitPhi(const int det, const int etaR) const {
+int HcalDDDSimConstants::unitPhi(const int& det, const int& etaR) const {
double dphi = (det == static_cast(HcalForward)) ? hpar->phitable[etaR-hpar->etaMin[2]] : hpar->phibin[etaR-1];
return unitPhi(dphi);
}
-int HcalDDDSimConstants::unitPhi(const double dphi) const {
+int HcalDDDSimConstants::unitPhi(const double& dphi) const {
const double fiveDegInRad = 2*M_PI/72;
int units = int(dphi/fiveDegInRad+0.5);
@@ -857,8 +878,10 @@ void HcalDDDSimConstants::initialize( void ) {
std::cout << " [" << k << "] " << idHF2QIE[k] << std::endl;
#endif
- layFHB[0] = 0; layFHB[1] = 1;
- layFHE[0] = 1; layFHE[1] = 9; layFHE[2] = 0;
+ layFHB[0] = 0; layFHB[1] = 1;
+ layBHB[0] = 16; layBHB[1] = 15; layBHB[2] = 8;
+ layFHE[0] = 1; layFHE[1] = 4; layFHE[2] = 0;
+ layBHE[0] = 18; layBHE[1] = 9; layBHE[2] = 14; layBHE[3] = 16;
depthMaxSp_ = std::pair(0,0);
int noffk(noffsize+5);
if ((int)(hpar->noff.size()) > (noffsize+5)) {
@@ -906,6 +929,10 @@ void HcalDDDSimConstants::initialize( void ) {
for (int i=0; i<2; ++i) layFHB[i] = hpar->noff[noffm+i+1];
for (int i=0; i<3; ++i) layFHE[i] = hpar->noff[noffm+i+3];
}
+ if (ndnext > 11 && (int)(hpar->noff.size()) >= noffm+ndnext) {
+ for (int i=0; i<3; ++i) layBHB[i] = hpar->noff[noffm+i+6];
+ for (int i=0; i<4; ++i) layBHE[i] = hpar->noff[noffm+i+9];
+ }
}
}
}
@@ -913,6 +940,10 @@ void HcalDDDSimConstants::initialize( void ) {
std::cout << "Front Layer Definition for HB: " << layFHB[0] << ":"
<< layFHB[1] << " and for HE: " << layFHE[0] << ":" << layFHE[1]
<< ":" << layFHE[2] << std::endl;
+ std::cout << "Last Layer Definition for HB: " << layBHB[0] << ":"
+ << layBHB[1] << ":" << layBHB[2] << " and for HE: " << layBHE[0]
+ << ":" << layBHE[1] << ":" << layBHE[2] << ":" << layBHE[3]
+ << std::endl;
#endif
if (depthMaxSp_.first == 0) {
depthMaxSp_ = depthMaxDf_ = std::pair(2,maxDepth[1]);
@@ -931,8 +962,8 @@ void HcalDDDSimConstants::initialize( void ) {
#endif
}
-double HcalDDDSimConstants::deltaEta(const int det, const int etaR,
- const int depth) const {
+double HcalDDDSimConstants::deltaEta(const int& det, const int& etaR,
+ const int& depth) const {
double tmp = 0;
if (det == static_cast(HcalForward)) {
@@ -970,8 +1001,8 @@ double HcalDDDSimConstants::deltaEta(const int det, const int etaR,
return tmp;
}
-double HcalDDDSimConstants::getEta(const int det, const int etaR,
- const int zside, const int depth) const {
+double HcalDDDSimConstants::getEta(const int& det, const int& etaR,
+ const int& zside, int depth) const {
double tmp = 0;
if (det == static_cast(HcalForward)) {
@@ -1010,7 +1041,7 @@ double HcalDDDSimConstants::getEta(const int det, const int etaR,
return tmp;
}
-double HcalDDDSimConstants::getEta(const double r, const double z) const {
+double HcalDDDSimConstants::getEta(const double& r, const double& z) const {
double tmp = 0;
if (z != 0) tmp = -log(tan(0.5*atan(r/z)));
@@ -1021,8 +1052,8 @@ double HcalDDDSimConstants::getEta(const double r, const double z) const {
return tmp;
}
-int HcalDDDSimConstants::getShift(const HcalSubdetector subdet,
- const int depth) const {
+int HcalDDDSimConstants::getShift(const HcalSubdetector& subdet,
+ const int& depth) const {
int shift;
switch(subdet) {
@@ -1042,8 +1073,8 @@ int HcalDDDSimConstants::getShift(const HcalSubdetector subdet,
return shift;
}
-double HcalDDDSimConstants::getGain(const HcalSubdetector subdet,
- const int depth) const {
+double HcalDDDSimConstants::getGain(const HcalSubdetector& subdet,
+ const int& depth) const {
double gain;
switch(subdet) {
@@ -1063,9 +1094,10 @@ double HcalDDDSimConstants::getGain(const HcalSubdetector subdet,
return gain;
}
-void HcalDDDSimConstants::printTileHB(const int eta, const int phi,
- const int zside, const int depth) const {
- std::cout << "HcalDDDSimConstants::printTileHB for eta " << eta << " and depth " << depth << "\n";
+void HcalDDDSimConstants::printTileHB(const int& eta, const int& phi,
+ const int& zside, const int& depth) const {
+ edm::LogVerbatim("HcalGeom") << "HcalDDDSimConstants::printTileHB for eta "
+ << eta << " and depth " << depth;
double etaL = hpar->etaTable.at(eta-1);
double thetaL = 2.*atan(exp(-etaL));
@@ -1073,7 +1105,10 @@ void HcalDDDSimConstants::printTileHB(const int eta, const int phi,
double thetaH = 2.*atan(exp(-etaH));
int layL = getLayerFront(1,eta,phi,zside,depth);
int layH = getLayerBack(1,eta,phi,zside,depth);
- std::cout << "\ntileHB:: eta|depth " << zside*eta << "|" << depth << " theta " << thetaH/CLHEP::deg << ":" << thetaL/CLHEP::deg << " Layer " << layL << ":" << layH-1 << "\n";
+ edm::LogVerbatim("HcalGeom") << "\ntileHB:: eta|depth " << zside*eta << "|"
+ << depth << " theta " << thetaH/CLHEP::deg
+ << ":" << thetaL/CLHEP::deg << " Layer "
+ << layL << ":" << layH-1;
for (int lay=layL; lay area(2,0);
int kk=0;
@@ -1088,12 +1123,15 @@ void HcalDDDSimConstants::printTileHB(const int eta, const int phi,
}
}
}
- if (area[0] > 0) std::cout << std::setw(2) << lay << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << "\n";
+ if (area[0] > 0)
+ edm::LogVerbatim("HcalGeom") << std::setw(2) << lay << " Area "
+ << std::setw(8) << area[0] << " "
+ << std::setw(8) << area[1];
}
}
-void HcalDDDSimConstants::printTileHE(const int eta, const int phi,
- const int zside, const int depth) const {
+void HcalDDDSimConstants::printTileHE(const int& eta, const int& phi,
+ const int& zside, const int& depth) const {
double etaL = hpar->etaTable[eta-1];
double thetaL = 2.*atan(exp(-etaL));
@@ -1104,7 +1142,10 @@ void HcalDDDSimConstants::printTileHE(const int eta, const int phi,
double phib = hpar->phibin[eta-1];
int nphi = 2;
if (phib > 6*CLHEP::deg) nphi = 1;
- std::cout << "\ntileHE:: Eta/depth " << zside*eta << "|" << depth << " theta " << thetaH/CLHEP::deg << ":" << thetaL/CLHEP::deg << " Layer " << layL << ":" << layH-1 << " phi " << nphi << "\n";
+ edm::LogVerbatim("HcalGeom") << "\ntileHE:: Eta/depth " << zside*eta << "|"
+ << depth << " theta " << thetaH/CLHEP::deg
+ << ":" << thetaL/CLHEP::deg << " Layer "
+ << layL << ":" << layH-1 << " phi " << nphi;
for (int lay=layL; lay area(4,0);
int kk=0;
@@ -1138,15 +1179,21 @@ void HcalDDDSimConstants::printTileHE(const int eta, const int phi,
int lay0 = lay-1;
if (eta == 18) lay0++;
if (nphi == 1) {
- std::cout << std::setw(2) << lay0 << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << "\n";
+ edm::LogVerbatim("HcalGeom") << std::setw(2) << lay0 << " Area "
+ << std::setw(8) << area[0] << " "
+ << std::setw(8) << area[1];
} else {
- std::cout << std::setw(2) << lay0 << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << ":" << std::setw(8) << area[2] << " " << std::setw(8) << area[3] << "\n";
+ edm::LogVerbatim("HcalGeom") << std::setw(2) << lay0 << " Area "
+ << std::setw(8) << area[0] << " "
+ << std::setw(8) << area[1] << ":"
+ << std::setw(8) << area[2] << " "
+ << std::setw(8) << area[3];
}
}
}
}
-unsigned int HcalDDDSimConstants::layerGroupSize(const int eta) const {
+unsigned int HcalDDDSimConstants::layerGroupSize(int eta) const {
unsigned int k = 0;
for (auto const & it : hpar->layerGroupEtaSim) {
if (it.layer == (unsigned int)(eta + 1)) {
@@ -1158,8 +1205,7 @@ unsigned int HcalDDDSimConstants::layerGroupSize(const int eta) const {
return k;
}
-unsigned int HcalDDDSimConstants::layerGroup(const int eta,
- const int i) const {
+unsigned int HcalDDDSimConstants::layerGroup(int eta, int i) const {
unsigned int k = 0;
for (auto const & it : hpar->layerGroupEtaSim) {
if (it.layer == (unsigned int)(eta + 1)) {
@@ -1171,9 +1217,9 @@ unsigned int HcalDDDSimConstants::layerGroup(const int eta,
return k;
}
-unsigned int HcalDDDSimConstants::layerGroup(const int det, const int eta,
- const int phi, const int zside,
- const int lay) const {
+unsigned int HcalDDDSimConstants::layerGroup(int det, int eta,
+ int phi, int zside,
+ int lay) const {
int depth0 = findDepth(det,eta,phi,zside,lay);
unsigned int depth = (depth0 > 0) ? (unsigned int)(depth0) : layerGroup(eta-1,lay);