10 #include "Math/Interpolator.h" 17 : theEBthreshold(-1000.),
18 theEEthreshold(-1000.),
20 theUseEtEBTresholdFlag(
false),
21 theUseEtEETresholdFlag(
false),
22 theUseSymEBTresholdFlag(
false),
23 theUseSymEETresholdFlag(
false),
25 theHcalThreshold(-1000.),
26 theHBthreshold(-1000.),
27 theHBthreshold1(-1000.),
28 theHBthreshold2(-1000.),
29 theHESthreshold(-1000.),
30 theHESthreshold1(-1000.),
31 theHEDthreshold(-1000.),
32 theHEDthreshold1(-1000.),
33 theHOthreshold0(-1000.),
34 theHOthresholdPlus1(-1000.),
35 theHOthresholdMinus1(-1000.),
36 theHOthresholdPlus2(-1000.),
37 theHOthresholdMinus2(-1000.),
38 theHF1threshold(-1000.),
39 theHF2threshold(-1000.),
47 theHESWeights(
std::
vector<double>(5, 1.)),
49 theHEDWeights(
std::
vector<double>(5, 1.)),
53 theHF1Weights(
std::
vector<double>(5, 1.)),
55 theHF2Weights(
std::
vector<double>(5, 1.)),
65 theEBSumThreshold(-1000.),
66 theEESumThreshold(-1000.),
75 theHcalTopology(nullptr),
77 theTowerConstituentsMap(nullptr),
78 theHcalAcceptSeverityLevel(0),
79 theRecoveredHcalHitsAreUsed(
false),
80 theRecoveredEcalHitsAreUsed(
false),
81 useRejectedHitsOnly(
false),
82 theHcalAcceptSeverityLevelForRejectedHit(0),
83 useRejectedRecoveredHcalHits(0),
84 useRejectedRecoveredEcalHits(0),
88 theMomConstrMethod(0),
100 bool useSymEBTreshold,
101 bool useSymEETreshold,
108 double HESthreshold1,
110 double HEDthreshold1,
112 double HOthresholdPlus1,
113 double HOthresholdMinus1,
114 double HOthresholdPlus2,
115 double HOthresholdMinus2,
138 : theEBthreshold(EBthreshold),
139 theEEthreshold(EEthreshold),
141 theUseEtEBTresholdFlag(useEtEBTreshold),
142 theUseEtEETresholdFlag(useEtEETreshold),
143 theUseSymEBTresholdFlag(useSymEBTreshold),
144 theUseSymEETresholdFlag(useSymEETreshold),
147 theHBthreshold(HBthreshold),
148 theHBthreshold1(HBthreshold1),
149 theHBthreshold2(HBthreshold2),
150 theHESthreshold(HESthreshold),
151 theHESthreshold1(HESthreshold1),
152 theHEDthreshold(HEDthreshold),
153 theHEDthreshold1(HEDthreshold1),
154 theHOthreshold0(HOthreshold0),
155 theHOthresholdPlus1(HOthresholdPlus1),
156 theHOthresholdMinus1(HOthresholdMinus1),
157 theHOthresholdPlus2(HOthresholdPlus2),
158 theHOthresholdMinus2(HOthresholdMinus2),
159 theHF1threshold(HF1threshold),
160 theHF2threshold(HF2threshold),
162 theEBWeights(
std::
vector<double>(5, 1.)),
164 theEEWeights(
std::
vector<double>(5, 1.)),
166 theHBWeights(
std::
vector<double>(5, 1.)),
168 theHESWeights(
std::
vector<double>(5, 1.)),
170 theHEDWeights(
std::
vector<double>(5, 1.)),
172 theHOWeights(
std::
vector<double>(5, 1.)),
174 theHF1Weights(
std::
vector<double>(5, 1.)),
176 theHF2Weights(
std::
vector<double>(5, 1.)),
177 theEBweight(EBweight),
178 theEEweight(EEweight),
179 theHBweight(HBweight),
180 theHESweight(HESweight),
181 theHEDweight(HEDweight),
182 theHOweight(HOweight),
183 theHF1weight(HF1weight),
184 theHF2weight(HF2weight),
196 theHcalTopology(nullptr),
197 theGeometry(nullptr),
198 theTowerConstituentsMap(nullptr),
199 theHcalAcceptSeverityLevel(0),
200 theRecoveredHcalHitsAreUsed(
false),
201 theRecoveredEcalHitsAreUsed(
false),
202 useRejectedHitsOnly(
false),
203 theHcalAcceptSeverityLevelForRejectedHit(0),
204 useRejectedRecoveredHcalHits(0),
205 useRejectedRecoveredEcalHits(0),
209 theMomConstrMethod(momConstrMethod),
210 theMomHBDepth(momHBDepth),
211 theMomHEDepth(momHEDepth),
212 theMomEBDepth(momEBDepth),
213 theMomEEDepth(momEEDepth),
214 theHcalPhase(hcalPhase) {}
218 bool useEtEBTreshold,
219 bool useEtEETreshold,
220 bool useSymEBTreshold,
221 bool useSymEETreshold,
228 double HESthreshold1,
230 double HEDthreshold1,
232 double HOthresholdPlus1,
233 double HOthresholdMinus1,
234 double HOthresholdPlus2,
235 double HOthresholdMinus2,
238 const std::vector<double>&
EBGrid,
240 const std::vector<double>&
EEGrid,
242 const std::vector<double>&
HBGrid,
244 const std::vector<double>&
HESGrid,
246 const std::vector<double>&
HEDGrid,
248 const std::vector<double>&
HOGrid,
250 const std::vector<double>&
HF1Grid,
252 const std::vector<double>&
HF2Grid,
274 : theEBthreshold(EBthreshold),
275 theEEthreshold(EEthreshold),
277 theUseEtEBTresholdFlag(useEtEBTreshold),
278 theUseEtEETresholdFlag(useEtEETreshold),
279 theUseSymEBTresholdFlag(useSymEBTreshold),
280 theUseSymEETresholdFlag(useSymEETreshold),
283 theHBthreshold(HBthreshold),
284 theHBthreshold1(HBthreshold1),
285 theHBthreshold2(HBthreshold2),
286 theHESthreshold(HESthreshold),
287 theHESthreshold1(HESthreshold1),
288 theHEDthreshold(HEDthreshold),
289 theHEDthreshold1(HEDthreshold1),
290 theHOthreshold0(HOthreshold0),
291 theHOthresholdPlus1(HOthresholdPlus1),
292 theHOthresholdMinus1(HOthresholdMinus1),
293 theHOthresholdPlus2(HOthresholdPlus2),
294 theHOthresholdMinus2(HOthresholdMinus2),
295 theHF1threshold(HF1threshold),
296 theHF2threshold(HF2threshold),
313 theEBweight(EBweight),
314 theEEweight(EEweight),
315 theHBweight(HBweight),
316 theHESweight(HESweight),
317 theHEDweight(HEDweight),
318 theHOweight(HOweight),
319 theHF1weight(HF1weight),
320 theHF2weight(HF2weight),
332 theHcalTopology(nullptr),
333 theGeometry(nullptr),
334 theTowerConstituentsMap(nullptr),
335 theHcalAcceptSeverityLevel(0),
336 theRecoveredHcalHitsAreUsed(
false),
337 theRecoveredEcalHitsAreUsed(
false),
338 useRejectedHitsOnly(
false),
339 theHcalAcceptSeverityLevelForRejectedHit(0),
340 useRejectedRecoveredHcalHits(0),
341 useRejectedRecoveredEcalHits(0),
345 theMomConstrMethod(momConstrMethod),
346 theMomHBDepth(momHBDepth),
347 theMomHEDepth(momHEDepth),
348 theMomEBDepth(momEBDepth),
349 theMomEEDepth(momEEDepth),
350 theHcalPhase(hcalPhase) {
436 double newE_em = ctcItr->emEnergy();
437 double newE_had = ctcItr->hadEnergy();
438 double newE_outer = ctcItr->outerEnergy();
445 double E_short = 0.5 * newE_had;
446 double E_long = newE_em + 0.5 * newE_had;
451 newE_em = E_long - E_short;
452 newE_had = 2.0 * E_short;
458 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
459 DetId constId = ctcItr->constituent(iConst);
467 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
468 DetId constId = ctcItr->constituent(iConst);
478 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
479 DetId constId = ctcItr->constituent(iConst);
501 double f_em = 1.0 / cosh(emPoint.
eta());
502 double f_had = 1.0 / cosh(hadPoint.
eta());
512 double newE_tot = newE_em + newE_had;
518 CaloTower rescaledTower(twrId, newE_em, newE_had, newE_outer, -1, -1, towerP4, emPoint, hadPoint);
520 rescaledTower.
setEcalTime(
int(ctcItr->ecalTime() * 100.0 + 0.5));
521 rescaledTower.
setHcalTime(
int(ctcItr->hcalTime() * 100.0 + 0.5));
529 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
530 contains.push_back(ctcItr->constituent(iConst));
582 if (towerDetId.
null())
588 tower29.numBadHcalCells += 1;
594 if (towerDetId.
null())
602 tower29.numRecHcalCells += 1;
605 tower29.numProbHcalCells += 1;
609 double e28 = 0.5 *
e;
610 double e29 = 0.5 *
e;
612 tower28.
E_had += e28;
614 std::pair<DetId, float>
mc(
detId, e28);
617 tower29.E_had += e29;
619 tower29.metaConstituents.push_back(
mc);
627 tower29.hadSumTimeTimesE += (e29 *
recHit->time());
628 tower29.hadSumEForTime += e29;
633 tower29.E_outer += e29;
644 if (towerDetId.
null())
650 tower.numBadHcalCells += 1;
660 tower.numRecHcalCells += 1;
662 tower.numProbHcalCells += 1;
667 std::pair<DetId, float>
mc(
detId,
e);
668 tower.metaConstituents.push_back(
mc);
678 if (towerDetId.
null())
681 tower.numBadHcalCells += 1;
686 if (towerDetId.
null())
690 if (hcalDetId.
depth() == 1) {
700 tower.numRecHcalCells += 1;
702 tower.numProbHcalCells += 1;
709 tower.hadSumEForTime +=
e;
712 std::pair<DetId, float>
mc(
detId,
e);
713 tower.metaConstituents.push_back(
mc);
723 if (towerDetId.
null())
726 tower.numBadHcalCells += 1;
729 if (towerDetId.
null())
735 tower.numRecHcalCells += 1;
737 tower.numProbHcalCells += 1;
744 tower.hadSumEForTime +=
e;
752 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 27) ||
753 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 16)) {
761 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 17) ||
762 (hcalDetId.
depth() == 4 && hcalDetId.
ietaAbs() == 16)) {
768 std::pair<DetId, float>
mc(
detId,
e);
769 tower.metaConstituents.push_back(
mc);
782 unsigned int chStatusForCT;
783 bool ecalIsBad =
false;
804 bool passEmThreshold =
false;
824 if (towerDetId.
null())
839 ++
tower.numBadEcalCells;
848 tower.numRecEcalCells += 1;
850 tower.numProbEcalCells += 1;
862 std::pair<DetId, float>
mc(
detId,
e);
863 tower.metaConstituents.push_back(
mc);
874 if (towerDetId.
null())
881 for (
unsigned int i = 0;
i <
ct->constituentsSize();
i++) {
890 if (hcalDetId.
depth() == 1)
892 if (hcalDetId.
depth() == 2)
904 std::pair<DetId, float>
mc(
detId, 0);
905 tower.metaConstituents.push_back(
mc);
909 tower.emSumTimeTimesE =
ct->ecalTime();
910 tower.hadSumTimeTimesE =
ct->hcalTime();
911 tower.emSumEForTime = 1.0;
912 tower.hadSumEForTime = 1.0;
936 double E_em =
mt.E_em;
937 double E_had =
mt.E_had;
938 double E_outer =
mt.E_outer;
947 std::vector<std::pair<DetId, float> > metaContains =
mt.metaConstituents;
951 std::vector<std::pair<DetId, float> > metaContains_noecal;
953 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
955 metaContains_noecal.push_back(*
i);
956 metaContains.swap(metaContains_noecal);
966 std::vector<std::pair<DetId, float> > metaContains_nohcal;
968 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
970 metaContains_nohcal.push_back(*
i);
971 metaContains.swap(metaContains_nohcal);
974 if (metaContains.empty())
993 bool massless =
true;
1000 double momEmDepth = 0.;
1001 double momHadDepth = 0.;
1014 towerP4 =
p.basicVector().unit();
1030 emPoint =
emShwrPos(metaContains, momEmDepth, E_em);
1033 towerP4 = emP4 * E_em;
1038 if ((E_had + E_outer) > 0) {
1039 massless = (E_em <= 0);
1044 auto diff = lP4 - emP4;
1062 towerP4 =
p.basicVector().unit();
1089 towerP4 =
p.basicVector().unit();
1104 if UNLIKELY ((towerP4[3] == 0) & (E_outer > 0)) {
1117 id, E_em, E_had, E_outer, -1, -1,
GlobalVector(towerP4), towerP4[3], mass2, emPoint, hadPoint);
1131 float ecalTime = (
mt.emSumEForTime > 0) ?
mt.emSumTimeTimesE /
mt.emSumEForTime : -9999;
1132 float hcalTime = (
mt.hadSumEForTime > 0) ?
mt.hadSumTimeTimesE /
mt.hadSumEForTime : -9999;
1146 unsigned int numBadHcalChan =
mt.numBadHcalCells;
1148 unsigned int numBadEcalChan = 0;
1150 unsigned int numRecHcalChan =
mt.numRecHcalCells;
1151 unsigned int numRecEcalChan =
mt.numRecEcalCells;
1152 unsigned int numProbHcalChan =
mt.numProbHcalCells;
1153 unsigned int numProbEcalChan =
mt.numProbEcalCells;
1158 numBadHcalChan += dropChItr->second.first;
1214 caloTower.setCaloTowerStatus(
1215 numBadHcalChan, numBadEcalChan, numRecHcalChan, numRecEcalChan, numProbHcalChan, numProbEcalChan);
1217 double maxCellE = -999.0;
1220 contains.reserve(metaContains.size());
1221 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i) {
1224 if (maxCellE < i->
second) {
1231 maxCellE =
i->second;
1234 maxCellE =
i->second;
1236 maxCellE =
i->second;
1244 caloTower.setHottestCellE(maxCellE);
1333 else if (hcalDetId.
ieta() < 0) {
1348 if (hcalDetId.
depth() == 1) {
1365 edm::LogError(
"CaloTowersCreationAlgo") <<
"Bad cell: " << det << std::endl;
1370 if (
scale > 0.00001)
1377 if (
scale > 0.00001)
1384 if (
scale > 0.00001)
1391 if (
scale > 0.00001)
1398 if (
scale > 0.00001)
1405 if (
scale > 0.00001)
1412 if (
scale > 0.00001)
1419 if (
scale > 0.00001)
1434 const GlobalPoint& backPoint = cellGeometry->getBackPoint();
1451 std::cout <<
"hadShwrPos called with " << metaContains.size() <<
" elements and energy " << hadE <<
":" << fracDepth
1463 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1464 for (; mc_it != metaContains.end(); ++mc_it) {
1481 return GlobalPoint(hadX / nConst, hadY / nConst, hadZ / nConst);
1490 std::cout <<
"hadShwrPos " <<
towerId <<
" frac " << fracDepth << std::endl;
1494 else if (fracDepth > 1)
1511 int frontDepth = 1000;
1512 int backDepth = -1000;
1513 for (
unsigned i = 0;
i <
items.size();
i++) {
1532 std::cout <<
"Front " << frontCellId <<
" Back " << backCellId <<
" Depths " << frontDepth <<
":" << backDepth
1540 std::cout << towerId28 <<
" with " << items28.size() <<
" constituents:";
1541 for (
unsigned k = 0;
k < items28.size(); ++
k)
1546 for (
unsigned i = 0;
i < items28.size();
i++) {
1560 std::cout <<
"Back " << backDepth <<
" ID " << backCellId << std::endl;
1572 HcalDetId hid1(frontCellId), hid2(backCellId);
1588 const GlobalPoint& backPoint = backCellGeometry->getBackPoint();
1607 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1608 for (; mc_it != metaContains.end(); ++mc_it) {
1612 double e = mc_it->second;
1622 return GlobalPoint(emX / eSum, emY / eSum, emZ / eSum);
1633 double sumWeights = 0;
1635 double crystalThresh = 0.015 * emE;
1637 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1638 for (; mc_it != metaContains.end(); ++mc_it) {
1639 if (mc_it->second < 0)
1641 if (mc_it->first.det() ==
DetId::Ecal && mc_it->second > crystalThresh)
1642 sumEmE += mc_it->second;
1645 for (mc_it = metaContains.begin(); mc_it != metaContains.end(); ++mc_it) {
1646 if (mc_it->first.det() !=
DetId::Ecal || mc_it->second < crystalThresh)
1651 weight = 4.2 +
log(mc_it->second / sumEmE);
1659 return GlobalPoint(emX / sumWeights, emY / sumWeights, emZ / sumWeights);
1663 const float timeUnit = 0.01;
1670 return int(
time / timeUnit + 0.5);
1685 std::cout <<
"DropChMap with " << allChanInStatusCont.size() <<
" channels" << std::endl;
1687 for (std::vector<DetId>::iterator
it = allChanInStatusCont.begin();
it != allChanInStatusCont.end(); ++
it) {
1712 if (pair.second.first == 0)
1714 int ngood = 0, nbad = 0;
1728 if (nbad > 0 && nbad >= ngood) {
1732 pair.second.second =
true;
1753 for (std::vector<DetId>::iterator ac_it = allConstituents.begin(); ac_it != allConstituents.end(); ++ac_it) {
1760 std::vector<int>::const_iterator sevit =
1785 std::cout <<
"ChanStatusForCaloTower for " << hid <<
" to " <<
HcalDetId(
id) << std::endl;
1787 const uint32_t recHitFlag =
hit->flags();
1866 std::vector<int>::const_iterator sevit =
1903 return std::make_tuple(
std::vector< double > theHBGrid
bool mergedDepth29(HcalDetId id) const
bool getMergePositionFlag() const
bool theUseEtEETresholdFlag
const HcalChannelQuality * theHcalChStatus
uint32_t sizeForDenseIndexing() const
bool contains(EventRange const &lh, EventID const &rh)
int ietaAbs() const
get the absolute value of the tower ieta
int merge(int argc, char *argv[])
void getThresholdAndWeight(const DetId &detId, double &threshold, double &weight) const
helper method to look up the appropriate threshold & weight
constexpr int ietaAbs() const
get the absolute value of the cell ieta
void setHF1EScale(double scale)
Geom::Phi< T > phi() const
void setCaloTowerStatus(unsigned int numBadHcalChan, unsigned int numBadEcalChan, unsigned int numRecHcalChan, unsigned int numRecEcalChan, unsigned int numProbHcalChan, unsigned int numProbEcalChan)
bool recoveredRecHit(const DetId &myid, const uint32_t &myflag) const
CaloTowerDetId towerOf(const DetId &id) const
Get the tower id for this det id (or null if not known)
std::vector< double > theHESGrid
std::vector< double > theHEDGrid
GlobalPoint emCrystalShwrPos(DetId detId, float fracDepth)
void assignHitHcal(const CaloRecHit *recHit)
std::vector< int > theEcalSeveritiesToBeUsedInBadTowers
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
float missingHcalRescaleFactorForEcal
Global3DPoint GlobalPoint
std::vector< T >::const_iterator const_iterator
void push_back(T const &t)
void setHF2EScale(double scale)
void finish(CaloTowerCollection &destCollection)
std::vector< double > theHOWeights
MetaTower & find(const CaloTowerDetId &id)
looks for a given tower in the internal cache. If it can't find it, it makes it.
Log< level::Error, false > LogError
std::vector< double > theEEGrid
void rescale(const CaloTower *ct)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
constexpr Detector det() const
get the detector field from this detid
void setHcalSubdet(int lastHB, int lastHE, int lastHF, int lastHO)
void setHBEScale(double scale)
const Item * getValues(DetId fId, bool throwOnFail=true) const
const EcalPFRecHitThresholds * ecalCuts
EcalSeverityLevel::SeverityLevel severityLevel(const DetId &id) const
Evaluate status from id use channelStatus from DB.
std::vector< double > theEEWeights
std::vector< double > theHESWeights
U second(std::pair< T, U > const &p)
void setGeometry(const CaloTowerTopology *cttopo, const CaloTowerConstituentsMap *ctmap, const HcalTopology *htopo, const CaloGeometry *geo)
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
constexpr bool null() const
is this a null id ?
constexpr HcalSubdetector subdet() const
get the subdetector
const CaloSubdetectorGeometry * theTowerGeometry
void addConstituents(const std::vector< DetId > &ids)
unsigned int hcalChanStatusForCaloTower(const CaloRecHit *hit)
CaloTowerDetId detIdFromDenseIndex(uint32_t din) const
std::vector< double > theHF2Grid
HcalDetId idFront(const HcalDetId &id) const
std::vector< double > theHEDWeights
unsigned towerId(DetId const &, EcalElectronicsMapping const *)
unsigned int useRejectedRecoveredEcalHits
void rescaleTowers(const CaloTowerCollection &ctInput, CaloTowerCollection &ctResult)
static const int SubdetId
constexpr int ieta() const
get the cell ieta
const CaloGeometry * theGeometry
int convertCTtoHcal(int ct_ieta) const
HcalDetId idBack(const HcalDetId &id) const
Abs< T >::type abs(const T &t)
std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id.
std::vector< double > theHOGrid
void assignHitEcal(const EcalRecHit *recHit)
adds a single hit to the tower
std::vector< DetId > getAllChannels() const
const CaloTowerConstituentsMap * theTowerConstituentsMap
double theHOthresholdPlus1
void convert(const CaloTowerDetId &id, const MetaTower &mt, CaloTowerCollection &collection)
const CaloTowerTopology * theTowerTopology
std::vector< double > theHF1Weights
const_iterator begin() const
GlobalPoint hadSegmentShwrPos(DetId detId, float fracDepth)
MathVector const & mathVector() const
const BasicVectorType & basicVector() const
bool theRecoveredHcalHitsAreUsed
uint32_t getValue() const
bool theHOIsUsed
only affects energy and ET calculation. HO is still recorded in the tower
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
void process(const HBHERecHitCollection &hbhe)
unsigned int useRejectedRecoveredHcalHits
const_iterator end() const
double theHOthresholdMinus2
std::vector< double > theHBWeights
const HcalSeverityLevelComputer * theHcalSevLvlComputer
void setHESEScale(double scale)
void setHEDEScale(double scale)
unsigned int theTowerMapSize
GlobalPoint hadShwrPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double hadE)
bool theUseSymEBTresholdFlag
void setEEEScale(double scale)
int iphi() const
get the tower iphi
constexpr uint32_t rawId() const
get the raw id
int compactTime(float time)
int firstHEDoublePhiRing() const
GlobalPoint hadShwPosFromCells(DetId frontCell, DetId backCell, float fracDepth)
int ieta() const
get the tower ieta
const HcalTopology * theHcalTopology
bool validHcal(const HcalDetId &id) const
std::vector< int > theEcalSeveritiesToBeExcluded
std::vector< unsigned short > ecalBadChs
void setHOEScale(double scale)
HcalDetId mergedDepthDetId(const HcalDetId &id) const
void setThresFromDB(const EcalPFRecHitThresholds *EcalCuts, const HcalPFCuts *HcalCuts)
double theHOthresholdMinus1
GlobalPoint emShwrPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double totEmE)
const EcalSeverityLevelAlgo * theEcalSevLvlAlgo
int zside() const
get the z-side of the tower (1/-1)
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
std::vector< double > theHF1Grid
uint32_t denseIndex(const DetId &id) const
std::vector< double > theEBGrid
missingHcalRescaleFactorForEcal
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Basic3DVector unit() const
std::vector< double > theHF2Weights
bool theUseEtEBTresholdFlag
unsigned int theHcalAcceptSeverityLevelForRejectedHit
std::tuple< unsigned int, bool > ecalChanStatusForCaloTower(const EcalRecHit *hit)
const HcalPFCuts * hcalCuts
HcalDropChMap hcalDropChMap
void setEBEScale(double scale)
std::vector< double > theEBWeights
double theHOthresholdPlus2
bool theRecoveredEcalHitsAreUsed
if(threadIdxLocalY==0 &&threadIdxLocalX==0)
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
unsigned int theHcalAcceptSeverityLevel
std::vector< DetId > constituentsOf(const CaloTowerDetId &id) const
Get the constituent detids for this tower id ( not yet implemented )
bool theUseSymEETresholdFlag
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Global3DVector GlobalVector
GlobalPoint emShwrLogWeightPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double totEmE)
bool dropChannel(const uint32_t &mystatus) const
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
constexpr int depth() const
get the tower depth