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) {
431 double newE_em = ctcItr->emEnergy();
432 double newE_had = ctcItr->hadEnergy();
433 double newE_outer = ctcItr->outerEnergy();
440 double E_short = 0.5 * newE_had;
441 double E_long = newE_em + 0.5 * newE_had;
446 newE_em = E_long - E_short;
447 newE_had = 2.0 * E_short;
453 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
454 DetId constId = ctcItr->constituent(iConst);
462 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
463 DetId constId = ctcItr->constituent(iConst);
473 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
474 DetId constId = ctcItr->constituent(iConst);
496 double f_em = 1.0 / cosh(emPoint.
eta());
497 double f_had = 1.0 / cosh(hadPoint.
eta());
507 double newE_tot = newE_em + newE_had;
513 CaloTower rescaledTower(twrId, newE_em, newE_had, newE_outer, -1, -1, towerP4, emPoint, hadPoint);
515 rescaledTower.
setEcalTime(
int(ctcItr->ecalTime() * 100.0 + 0.5));
516 rescaledTower.
setHcalTime(
int(ctcItr->hcalTime() * 100.0 + 0.5));
524 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
525 contains.push_back(ctcItr->constituent(iConst));
577 if (towerDetId.
null())
583 tower29.numBadHcalCells += 1;
589 if (towerDetId.
null())
597 tower29.numRecHcalCells += 1;
600 tower29.numProbHcalCells += 1;
604 double e28 = 0.5 *
e;
605 double e29 = 0.5 *
e;
607 tower28.
E_had += e28;
609 std::pair<DetId, float>
mc(detId, e28);
612 tower29.E_had += e29;
614 tower29.metaConstituents.push_back(
mc);
622 tower29.hadSumTimeTimesE += (e29 *
recHit->time());
623 tower29.hadSumEForTime += e29;
628 tower29.E_outer += e29;
639 if (towerDetId.
null())
645 tower.numBadHcalCells += 1;
655 tower.numRecHcalCells += 1;
657 tower.numProbHcalCells += 1;
662 std::pair<DetId, float>
mc(detId,
e);
663 tower.metaConstituents.push_back(
mc);
673 if (towerDetId.
null())
676 tower.numBadHcalCells += 1;
681 if (towerDetId.
null())
685 if (hcalDetId.
depth() == 1) {
695 tower.numRecHcalCells += 1;
697 tower.numProbHcalCells += 1;
704 tower.hadSumEForTime +=
e;
707 std::pair<DetId, float>
mc(detId,
e);
708 tower.metaConstituents.push_back(
mc);
718 if (towerDetId.
null())
721 tower.numBadHcalCells += 1;
724 if (towerDetId.
null())
730 tower.numRecHcalCells += 1;
732 tower.numProbHcalCells += 1;
739 tower.hadSumEForTime +=
e;
747 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 27) ||
748 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 16)) {
756 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 17) ||
757 (hcalDetId.
depth() == 4 && hcalDetId.
ietaAbs() == 16)) {
763 std::pair<DetId, float>
mc(detId,
e);
764 tower.metaConstituents.push_back(
mc);
777 unsigned int chStatusForCT;
778 bool ecalIsBad =
false;
799 bool passEmThreshold =
false;
819 if (towerDetId.
null())
834 ++
tower.numBadEcalCells;
843 tower.numRecEcalCells += 1;
845 tower.numProbEcalCells += 1;
857 std::pair<DetId, float>
mc(detId,
e);
858 tower.metaConstituents.push_back(
mc);
869 if (towerDetId.
null())
885 if (hcalDetId.
depth() == 1)
887 if (hcalDetId.
depth() == 2)
899 std::pair<DetId, float>
mc(detId, 0);
900 tower.metaConstituents.push_back(
mc);
906 tower.emSumEForTime = 1.0;
907 tower.hadSumEForTime = 1.0;
931 double E_em =
mt.E_em;
932 double E_had =
mt.E_had;
933 double E_outer =
mt.E_outer;
942 std::vector<std::pair<DetId, float> > metaContains =
mt.metaConstituents;
946 std::vector<std::pair<DetId, float> > metaContains_noecal;
948 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
950 metaContains_noecal.push_back(*
i);
951 metaContains.swap(metaContains_noecal);
961 std::vector<std::pair<DetId, float> > metaContains_nohcal;
963 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
965 metaContains_nohcal.push_back(*
i);
966 metaContains.swap(metaContains_nohcal);
969 if (metaContains.empty())
988 bool massless =
true;
995 double momEmDepth = 0.;
996 double momHadDepth = 0.;
997 if (
id.ietaAbs() <= 17) {
1009 towerP4 =
p.basicVector().unit();
1025 emPoint =
emShwrPos(metaContains, momEmDepth, E_em);
1028 towerP4 = emP4 * E_em;
1033 if ((E_had + E_outer) > 0) {
1034 massless = (E_em <= 0);
1039 auto diff = lP4 - emP4;
1057 towerP4 =
p.basicVector().unit();
1084 towerP4 =
p.basicVector().unit();
1099 if UNLIKELY ((towerP4[3] == 0) & (E_outer > 0)) {
1112 id, E_em, E_had, E_outer, -1, -1,
GlobalVector(towerP4), towerP4[3], mass2, emPoint, hadPoint);
1126 float ecalTime = (
mt.emSumEForTime > 0) ?
mt.emSumTimeTimesE /
mt.emSumEForTime : -9999;
1127 float hcalTime = (
mt.hadSumEForTime > 0) ?
mt.hadSumTimeTimesE /
mt.hadSumEForTime : -9999;
1141 unsigned int numBadHcalChan =
mt.numBadHcalCells;
1143 unsigned int numBadEcalChan = 0;
1145 unsigned int numRecHcalChan =
mt.numRecHcalCells;
1146 unsigned int numRecEcalChan =
mt.numRecEcalCells;
1147 unsigned int numProbHcalChan =
mt.numProbHcalCells;
1148 unsigned int numProbEcalChan =
mt.numProbEcalCells;
1153 numBadHcalChan += dropChItr->second.first;
1209 caloTower.setCaloTowerStatus(
1210 numBadHcalChan, numBadEcalChan, numRecHcalChan, numRecEcalChan, numProbHcalChan, numProbEcalChan);
1212 double maxCellE = -999.0;
1215 contains.reserve(metaContains.size());
1216 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i) {
1219 if (maxCellE < i->
second) {
1226 maxCellE =
i->second;
1229 maxCellE =
i->second;
1231 maxCellE =
i->second;
1239 caloTower.setHottestCellE(maxCellE);
1305 else if (hcalDetId.
ieta() < 0) {
1320 if (hcalDetId.
depth() == 1) {
1337 edm::LogError(
"CaloTowersCreationAlgo") <<
"Bad cell: " << det << std::endl;
1342 if (
scale > 0.00001)
1349 if (
scale > 0.00001)
1356 if (
scale > 0.00001)
1363 if (
scale > 0.00001)
1370 if (
scale > 0.00001)
1377 if (
scale > 0.00001)
1384 if (
scale > 0.00001)
1391 if (
scale > 0.00001)
1406 const GlobalPoint& backPoint = cellGeometry->getBackPoint();
1423 std::cout <<
"hadShwrPos called with " << metaContains.size() <<
" elements and energy " << hadE <<
":" << fracDepth
1435 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1436 for (; mc_it != metaContains.end(); ++mc_it) {
1453 return GlobalPoint(hadX / nConst, hadY / nConst, hadZ / nConst);
1462 std::cout <<
"hadShwrPos " <<
towerId <<
" frac " << fracDepth << std::endl;
1466 else if (fracDepth > 1)
1483 int frontDepth = 1000;
1484 int backDepth = -1000;
1485 for (
unsigned i = 0;
i <
items.size();
i++) {
1504 std::cout <<
"Front " << frontCellId <<
" Back " << backCellId <<
" Depths " << frontDepth <<
":" << backDepth
1512 std::cout << towerId28 <<
" with " << items28.size() <<
" constituents:";
1513 for (
unsigned k = 0;
k < items28.size(); ++
k)
1518 for (
unsigned i = 0;
i < items28.size();
i++) {
1532 std::cout <<
"Back " << backDepth <<
" ID " << backCellId << std::endl;
1544 HcalDetId hid1(frontCellId), hid2(backCellId);
1560 const GlobalPoint& backPoint = backCellGeometry->getBackPoint();
1579 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1580 for (; mc_it != metaContains.end(); ++mc_it) {
1584 double e = mc_it->second;
1594 return GlobalPoint(emX / eSum, emY / eSum, emZ / eSum);
1605 double sumWeights = 0;
1607 double crystalThresh = 0.015 * emE;
1609 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1610 for (; mc_it != metaContains.end(); ++mc_it) {
1611 if (mc_it->second < 0)
1613 if (mc_it->first.det() ==
DetId::Ecal && mc_it->second > crystalThresh)
1614 sumEmE += mc_it->second;
1617 for (mc_it = metaContains.begin(); mc_it != metaContains.end(); ++mc_it) {
1618 if (mc_it->first.det() !=
DetId::Ecal || mc_it->second < crystalThresh)
1623 weight = 4.2 +
log(mc_it->second / sumEmE);
1631 return GlobalPoint(emX / sumWeights, emY / sumWeights, emZ / sumWeights);
1635 const float timeUnit = 0.01;
1642 return int(
time / timeUnit + 0.5);
1657 std::cout <<
"DropChMap with " << allChanInStatusCont.size() <<
" channels" << std::endl;
1659 for (std::vector<DetId>::iterator it = allChanInStatusCont.begin(); it != allChanInStatusCont.end(); ++it) {
1684 if (pair.second.first == 0)
1686 int ngood = 0, nbad = 0;
1700 if (nbad > 0 && nbad >= ngood) {
1704 pair.second.second =
true;
1725 for (std::vector<DetId>::iterator ac_it = allConstituents.begin(); ac_it != allConstituents.end(); ++ac_it) {
1732 std::vector<int>::const_iterator sevit =
1757 std::cout <<
"ChanStatusForCaloTower for " << hid <<
" to " <<
HcalDetId(
id) << std::endl;
1759 const uint32_t recHitFlag =
hit->flags();
1838 std::vector<int>::const_iterator sevit =
1875 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)
double outerEnergy() const
int ietaAbs() const
get the absolute value of the tower ieta
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
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)
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
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::vector< double > theHF1Weights
const_iterator begin() const
GlobalPoint hadSegmentShwrPos(DetId detId, float fracDepth)
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.
DetId constituent(size_t i) const
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)
missingHcalRescaleFactorForEcal
int iphi() const
get the tower iphi
int compactTime(float time)
int firstHEDoublePhiRing() const
GlobalPoint hadShwPosFromCells(DetId frontCell, DetId backCell, float fracDepth)
size_t constituentsSize() const
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
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
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)
HcalDropChMap hcalDropChMap
void setEBEScale(double scale)
std::vector< double > theEBWeights
double theHOthresholdPlus2
bool theRecoveredEcalHitsAreUsed
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
CaloTowerDetId id() const
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
def merge(dictlist, TELL=False)