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.),
40 theEBGrid(std::
vector<double>(5, 10.)),
41 theEBWeights(std::
vector<double>(5, 1.)),
42 theEEGrid(std::
vector<double>(5, 10.)),
43 theEEWeights(std::
vector<double>(5, 1.)),
44 theHBGrid(std::
vector<double>(5, 10.)),
45 theHBWeights(std::
vector<double>(5, 1.)),
46 theHESGrid(std::
vector<double>(5, 10.)),
47 theHESWeights(std::
vector<double>(5, 1.)),
48 theHEDGrid(std::
vector<double>(5, 10.)),
49 theHEDWeights(std::
vector<double>(5, 1.)),
50 theHOGrid(std::
vector<double>(5, 10.)),
51 theHOWeights(std::
vector<double>(5, 1.)),
52 theHF1Grid(std::
vector<double>(5, 10.)),
53 theHF1Weights(std::
vector<double>(5, 1.)),
54 theHF2Grid(std::
vector<double>(5, 10.)),
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),
146 theHcalThreshold(HcalThreshold),
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),
161 theEBGrid(std::
vector<double>(5, 10.)),
162 theEBWeights(std::
vector<double>(5, 1.)),
163 theEEGrid(std::
vector<double>(5, 10.)),
164 theEEWeights(std::
vector<double>(5, 1.)),
165 theHBGrid(std::
vector<double>(5, 10.)),
166 theHBWeights(std::
vector<double>(5, 1.)),
167 theHESGrid(std::
vector<double>(5, 10.)),
168 theHESWeights(std::
vector<double>(5, 1.)),
169 theHEDGrid(std::
vector<double>(5, 10.)),
170 theHEDWeights(std::
vector<double>(5, 1.)),
171 theHOGrid(std::
vector<double>(5, 10.)),
172 theHOWeights(std::
vector<double>(5, 1.)),
173 theHF1Grid(std::
vector<double>(5, 10.)),
174 theHF1Weights(std::
vector<double>(5, 1.)),
175 theHF2Grid(std::
vector<double>(5, 10.)),
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),
185 theEcutTower(EcutTower),
186 theEBSumThreshold(EBSumThreshold),
187 theEESumThreshold(EESumThreshold),
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),
282 theHcalThreshold(HcalThreshold),
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),
298 theEBWeights(EBWeights),
300 theEEWeights(EEWeights),
302 theHBWeights(HBWeights),
304 theHESWeights(HESWeights),
306 theHEDWeights(HEDWeights),
308 theHOWeights(HOWeights),
310 theHF1Weights(HF1Weights),
312 theHF2Weights(HF2Weights),
313 theEBweight(EBweight),
314 theEEweight(EEweight),
315 theHBweight(HBweight),
316 theHESweight(HESweight),
317 theHEDweight(HEDweight),
318 theHOweight(HOweight),
319 theHF1weight(HF1weight),
320 theHF2weight(HF2weight),
321 theEcutTower(EcutTower),
322 theEBSumThreshold(EBSumThreshold),
323 theEESumThreshold(EESumThreshold),
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);
482 newE_outer *= weight;
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;
586 else if (0.5 * energy >= threshold) {
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())
648 else if (energy >= threshold) {
662 std::pair<DetId, float> mc(detId, e);
673 if (towerDetId.
null())
679 else if (energy >= threshold) {
681 if (towerDetId.
null())
685 if (hcalDetId.
depth() == 1) {
707 std::pair<DetId, float> mc(detId, e);
718 if (towerDetId.
null())
722 }
else if (energy >= threshold) {
724 if (towerDetId.
null())
745 if (theHcalPhase == 0) {
747 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 27) ||
748 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 16)) {
753 else if (theHcalPhase == 1) {
756 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 17) ||
757 (hcalDetId.
depth() == 4 && hcalDetId.
ietaAbs() == 16)) {
763 std::pair<DetId, float> mc(detId, e);
777 unsigned int chStatusForCT;
778 bool ecalIsBad =
false;
799 bool passEmThreshold =
false;
805 passEmThreshold = (fabs(energy) >=
threshold);
813 passEmThreshold = (fabs(energy) >=
threshold);
819 if (towerDetId.
null())
857 std::pair<DetId, float> mc(detId, e);
869 if (towerDetId.
null())
885 if (hcalDetId.
depth() == 1)
887 if (hcalDetId.
depth() == 2)
899 std::pair<DetId, float> mc(detId, 0);
931 double E_em = mt.
E_em;
932 double E_had = mt.
E_had;
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) {
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;
1099 if UNLIKELY ((towerP4[3] == 0) & (E_outer > 0)) {
1101 collection.emplace_back(
id,
1111 collection.emplace_back(
1112 id, E_em, E_had, E_outer, -1, -1,
GlobalVector(towerP4), towerP4[3], mass2, emPoint, hadPoint);
1114 auto& caloTower = collection.
back();
1143 unsigned int numBadEcalChan = 0;
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) {
1217 contains.push_back(
i->first);
1219 if (maxCellE < i->
second) {
1226 maxCellE =
i->second;
1229 maxCellE =
i->second;
1231 maxCellE =
i->second;
1238 caloTower.setConstituents(
std::move(contains));
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();
1407 point += fracDepth * (backPoint -
point);
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)
1471 int iEta = towerId.
ieta();
1472 int iPhi = towerId.
iphi();
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();
1562 point += fracDepth * (backPoint -
point);
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();
1790 if (severityLevel == 0)
1838 std::vector<int>::const_iterator sevit =
1875 return std::make_tuple(
constexpr float energy() const
std::vector< double > theHBGrid
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
bool theUseEtEETresholdFlag
tuple missingHcalRescaleFactorForEcal
const HcalChannelQuality * theHcalChStatus
static std::vector< std::string > checklist log
constexpr int ietaAbs() const
get the absolute value of the cell ieta
bool mergedDepth29(HcalDetId id) const
size_t constituentsSize() const
bool contains(EventRange const &lh, EventID const &rh)
EcalSeverityLevel::SeverityLevel severityLevel(const DetId &id) const
Evaluate status from id use channelStatus from DB.
int ietaAbs() const
get the absolute value of the tower ieta
DetId constituent(size_t i) const
constexpr bool null() const
is this a null id ?
void setHF1EScale(double scale)
constexpr const DetId & detid() const
void setCaloTowerStatus(unsigned int numBadHcalChan, unsigned int numBadEcalChan, unsigned int numRecHcalChan, unsigned int numRecEcalChan, unsigned int numProbHcalChan, unsigned int numProbEcalChan)
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.
Geom::Phi< T > phi() const
Basic3DVector unit() const
float missingHcalRescaleFactorForEcal
Global3DPoint GlobalPoint
const DetId & detid() const
std::vector< T >::const_iterator const_iterator
void push_back(T const &t)
void setHF2EScale(double scale)
void finish(CaloTowerCollection &destCollection)
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< double > theHOWeights
bool validHcal(const HcalDetId &id) const
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)
void setHcalSubdet(int lastHB, int lastHE, int lastHF, int lastHO)
bool getMergePositionFlag() const
void setHBEScale(double scale)
std::vector< DetId > constituentsOf(const CaloTowerDetId &id) const
Get the constituent detids for this tower id ( not yet implemented )
HcalDetId mergedDepthDetId(const HcalDetId &id) const
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 HcalSubdetector subdet() const
get the subdetector
const CaloSubdetectorGeometry * theTowerGeometry
CaloTowerDetId detIdFromDenseIndex(uint32_t din) const
void addConstituents(const std::vector< DetId > &ids)
unsigned int hcalChanStatusForCaloTower(const CaloRecHit *hit)
CaloTowerDetId towerOf(const DetId &id) const
Get the tower id for this det id (or null if not known)
std::vector< double > theHF2Grid
std::vector< double > theHEDWeights
unsigned towerId(DetId const &, EcalElectronicsMapping const *)
unsigned int useRejectedRecoveredEcalHits
void rescaleTowers(const CaloTowerCollection &ctInput, CaloTowerCollection &ctResult)
static const int SubdetId
std::vector< DetId > getAllChannels() const
bool recoveredRecHit(const DetId &myid, const uint32_t &myflag) const
if(conf_.getParameter< bool >("UseStripCablingDB"))
const CaloGeometry * theGeometry
constexpr float time() const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
int iphi() const
get the tower iphi
Abs< T >::type abs(const T &t)
constexpr int ieta() const
get the cell ieta
std::vector< double > theHOGrid
void assignHitEcal(const EcalRecHit *recHit)
adds a single hit to the tower
bool dropChannel(const uint32_t &mystatus) const
const CaloTowerConstituentsMap * theTowerConstituentsMap
double theHOthresholdPlus1
void convert(const CaloTowerDetId &id, const MetaTower &mt, CaloTowerCollection &collection)
const CaloTowerTopology * theTowerTopology
std::vector< double > theHF1Weights
int firstHEDoublePhiRing() const
GlobalPoint hadSegmentShwrPos(DetId detId, float fracDepth)
bool theRecoveredHcalHitsAreUsed
bool theHOIsUsed
only affects energy and ET calculation. HO is still recorded in the tower
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)
uint32_t denseIndex(const DetId &id) const
unsigned int theTowerMapSize
GlobalPoint hadShwrPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double hadE)
bool theUseSymEBTresholdFlag
void setEEEScale(double scale)
CaloTowerDetId id() const
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.
int compactTime(float time)
GlobalPoint hadShwPosFromCells(DetId frontCell, DetId backCell, float fracDepth)
int zside() const
get the z-side of the tower (1/-1)
void getThresholdAndWeight(const DetId &detId, double &threshold, double &weight) const
helper method to look up the appropriate threshold & weight
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
const HcalTopology * theHcalTopology
std::vector< int > theEcalSeveritiesToBeExcluded
std::vector< unsigned short > ecalBadChs
void setHOEScale(double scale)
double theHOthresholdMinus1
HcalDetId idBack(const HcalDetId &id) const
GlobalPoint emShwrPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double totEmE)
const EcalSeverityLevelAlgo * theEcalSevLvlAlgo
std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id.
std::vector< double > theHF1Grid
void reserve(size_type n)
int convertCTtoHcal(int ct_ieta) const
std::vector< double > theEBGrid
HcalDetId idFront(const HcalDetId &id) const
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
std::vector< double > theHF2Weights
constexpr int depth() const
get the tower depth
int ieta() const
get the tower ieta
bool theUseEtEBTresholdFlag
uint32_t getValue() const
unsigned int theHcalAcceptSeverityLevelForRejectedHit
std::tuple< unsigned int, bool > ecalChanStatusForCaloTower(const EcalRecHit *hit)
const BasicVectorType & basicVector() const
HcalDropChMap hcalDropChMap
void setEBEScale(double scale)
std::vector< double > theEBWeights
double theHOthresholdPlus2
bool theRecoveredEcalHitsAreUsed
constexpr uint32_t flags() const
unsigned int theHcalAcceptSeverityLevel
bool theUseSymEETresholdFlag
uint32_t sizeForDenseIndexing() const
*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
double outerEnergy() const
const_iterator begin() const
const_reference back() const
Global3DVector GlobalVector
GlobalPoint emShwrLogWeightPos(const std::vector< std::pair< DetId, float >> &metaContains, float fracDepth, double totEmE)
constexpr Detector det() const
get the detector field from this detid
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.