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) {
433 double newE_em = ctcItr->emEnergy();
434 double newE_had = ctcItr->hadEnergy();
435 double newE_outer = ctcItr->outerEnergy();
442 double E_short = 0.5 * newE_had;
443 double E_long = newE_em + 0.5 * newE_had;
448 newE_em = E_long - E_short;
449 newE_had = 2.0 * E_short;
455 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
456 DetId constId = ctcItr->constituent(iConst);
464 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
465 DetId constId = ctcItr->constituent(iConst);
475 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
476 DetId constId = ctcItr->constituent(iConst);
498 double f_em = 1.0 / cosh(emPoint.
eta());
499 double f_had = 1.0 / cosh(hadPoint.
eta());
509 double newE_tot = newE_em + newE_had;
515 CaloTower rescaledTower(twrId, newE_em, newE_had, newE_outer, -1, -1, towerP4, emPoint, hadPoint);
517 rescaledTower.
setEcalTime(
int(ctcItr->ecalTime() * 100.0 + 0.5));
518 rescaledTower.
setHcalTime(
int(ctcItr->hcalTime() * 100.0 + 0.5));
526 for (
unsigned int iConst = 0; iConst < ctcItr->constituentsSize(); ++iConst) {
527 contains.push_back(ctcItr->constituent(iConst));
579 if (towerDetId.
null())
585 tower29.numBadHcalCells += 1;
591 if (towerDetId.
null())
599 tower29.numRecHcalCells += 1;
602 tower29.numProbHcalCells += 1;
606 double e28 = 0.5 *
e;
607 double e29 = 0.5 *
e;
609 tower28.
E_had += e28;
611 std::pair<DetId, float>
mc(
detId, e28);
614 tower29.E_had += e29;
616 tower29.metaConstituents.push_back(
mc);
624 tower29.hadSumTimeTimesE += (e29 *
recHit->time());
625 tower29.hadSumEForTime += e29;
630 tower29.E_outer += e29;
641 if (towerDetId.
null())
647 tower.numBadHcalCells += 1;
657 tower.numRecHcalCells += 1;
659 tower.numProbHcalCells += 1;
664 std::pair<DetId, float>
mc(
detId,
e);
665 tower.metaConstituents.push_back(
mc);
675 if (towerDetId.
null())
678 tower.numBadHcalCells += 1;
683 if (towerDetId.
null())
687 if (hcalDetId.
depth() == 1) {
697 tower.numRecHcalCells += 1;
699 tower.numProbHcalCells += 1;
706 tower.hadSumEForTime +=
e;
709 std::pair<DetId, float>
mc(
detId,
e);
710 tower.metaConstituents.push_back(
mc);
720 if (towerDetId.
null())
723 tower.numBadHcalCells += 1;
726 if (towerDetId.
null())
732 tower.numRecHcalCells += 1;
734 tower.numProbHcalCells += 1;
741 tower.hadSumEForTime +=
e;
749 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 27) ||
750 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 16)) {
758 (hcalDetId.
depth() == 3 && hcalDetId.
ietaAbs() == 17) ||
759 (hcalDetId.
depth() == 4 && hcalDetId.
ietaAbs() == 16)) {
765 std::pair<DetId, float>
mc(
detId,
e);
766 tower.metaConstituents.push_back(
mc);
779 unsigned int chStatusForCT;
780 bool ecalIsBad =
false;
801 bool passEmThreshold =
false;
821 if (towerDetId.
null())
836 ++
tower.numBadEcalCells;
845 tower.numRecEcalCells += 1;
847 tower.numProbEcalCells += 1;
859 std::pair<DetId, float>
mc(
detId,
e);
860 tower.metaConstituents.push_back(
mc);
871 if (towerDetId.
null())
887 if (hcalDetId.
depth() == 1)
889 if (hcalDetId.
depth() == 2)
901 std::pair<DetId, float>
mc(
detId, 0);
902 tower.metaConstituents.push_back(
mc);
908 tower.emSumEForTime = 1.0;
909 tower.hadSumEForTime = 1.0;
933 double E_em =
mt.E_em;
934 double E_had =
mt.E_had;
935 double E_outer =
mt.E_outer;
944 std::vector<std::pair<DetId, float> > metaContains =
mt.metaConstituents;
948 std::vector<std::pair<DetId, float> > metaContains_noecal;
950 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
952 metaContains_noecal.push_back(*
i);
953 metaContains.swap(metaContains_noecal);
963 std::vector<std::pair<DetId, float> > metaContains_nohcal;
965 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i)
967 metaContains_nohcal.push_back(*
i);
968 metaContains.swap(metaContains_nohcal);
971 if (metaContains.empty())
990 bool massless =
true;
997 double momEmDepth = 0.;
998 double momHadDepth = 0.;
1011 towerP4 =
p.basicVector().unit();
1027 emPoint =
emShwrPos(metaContains, momEmDepth, E_em);
1030 towerP4 = emP4 * E_em;
1035 if ((E_had + E_outer) > 0) {
1036 massless = (E_em <= 0);
1041 auto diff = lP4 - emP4;
1059 towerP4 =
p.basicVector().unit();
1086 towerP4 =
p.basicVector().unit();
1101 if UNLIKELY ((towerP4[3] == 0) & (E_outer > 0)) {
1114 id, E_em, E_had, E_outer, -1, -1,
GlobalVector(towerP4), towerP4[3], mass2, emPoint, hadPoint);
1128 float ecalTime = (
mt.emSumEForTime > 0) ?
mt.emSumTimeTimesE /
mt.emSumEForTime : -9999;
1129 float hcalTime = (
mt.hadSumEForTime > 0) ?
mt.hadSumTimeTimesE /
mt.hadSumEForTime : -9999;
1143 unsigned int numBadHcalChan =
mt.numBadHcalCells;
1145 unsigned int numBadEcalChan = 0;
1147 unsigned int numRecHcalChan =
mt.numRecHcalCells;
1148 unsigned int numRecEcalChan =
mt.numRecEcalCells;
1149 unsigned int numProbHcalChan =
mt.numProbHcalCells;
1150 unsigned int numProbEcalChan =
mt.numProbEcalCells;
1155 numBadHcalChan += dropChItr->second.first;
1211 caloTower.setCaloTowerStatus(
1212 numBadHcalChan, numBadEcalChan, numRecHcalChan, numRecEcalChan, numProbHcalChan, numProbEcalChan);
1214 double maxCellE = -999.0;
1217 contains.reserve(metaContains.size());
1218 for (
std::vector<std::pair<DetId, float> >::iterator
i = metaContains.begin();
i != metaContains.end(); ++
i) {
1221 if (maxCellE < i->
second) {
1228 maxCellE =
i->second;
1231 maxCellE =
i->second;
1233 maxCellE =
i->second;
1241 caloTower.setHottestCellE(maxCellE);
1322 else if (hcalDetId.
ieta() < 0) {
1337 if (hcalDetId.
depth() == 1) {
1354 edm::LogError(
"CaloTowersCreationAlgo") <<
"Bad cell: " << det << std::endl;
1359 if (
scale > 0.00001)
1366 if (
scale > 0.00001)
1373 if (
scale > 0.00001)
1380 if (
scale > 0.00001)
1387 if (
scale > 0.00001)
1394 if (
scale > 0.00001)
1401 if (
scale > 0.00001)
1408 if (
scale > 0.00001)
1423 const GlobalPoint& backPoint = cellGeometry->getBackPoint();
1440 std::cout <<
"hadShwrPos called with " << metaContains.size() <<
" elements and energy " << hadE <<
":" << fracDepth
1452 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1453 for (; mc_it != metaContains.end(); ++mc_it) {
1470 return GlobalPoint(hadX / nConst, hadY / nConst, hadZ / nConst);
1479 std::cout <<
"hadShwrPos " <<
towerId <<
" frac " << fracDepth << std::endl;
1483 else if (fracDepth > 1)
1500 int frontDepth = 1000;
1501 int backDepth = -1000;
1502 for (
unsigned i = 0;
i <
items.size();
i++) {
1521 std::cout <<
"Front " << frontCellId <<
" Back " << backCellId <<
" Depths " << frontDepth <<
":" << backDepth
1529 std::cout << towerId28 <<
" with " << items28.size() <<
" constituents:";
1530 for (
unsigned k = 0;
k < items28.size(); ++
k)
1535 for (
unsigned i = 0;
i < items28.size();
i++) {
1549 std::cout <<
"Back " << backDepth <<
" ID " << backCellId << std::endl;
1561 HcalDetId hid1(frontCellId), hid2(backCellId);
1577 const GlobalPoint& backPoint = backCellGeometry->getBackPoint();
1596 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1597 for (; mc_it != metaContains.end(); ++mc_it) {
1601 double e = mc_it->second;
1611 return GlobalPoint(emX / eSum, emY / eSum, emZ / eSum);
1622 double sumWeights = 0;
1624 double crystalThresh = 0.015 * emE;
1626 std::vector<std::pair<DetId, float> >::const_iterator mc_it = metaContains.begin();
1627 for (; mc_it != metaContains.end(); ++mc_it) {
1628 if (mc_it->second < 0)
1630 if (mc_it->first.det() ==
DetId::Ecal && mc_it->second > crystalThresh)
1631 sumEmE += mc_it->second;
1634 for (mc_it = metaContains.begin(); mc_it != metaContains.end(); ++mc_it) {
1635 if (mc_it->first.det() !=
DetId::Ecal || mc_it->second < crystalThresh)
1640 weight = 4.2 +
log(mc_it->second / sumEmE);
1648 return GlobalPoint(emX / sumWeights, emY / sumWeights, emZ / sumWeights);
1652 const float timeUnit = 0.01;
1659 return int(
time / timeUnit + 0.5);
1674 std::cout <<
"DropChMap with " << allChanInStatusCont.size() <<
" channels" << std::endl;
1676 for (std::vector<DetId>::iterator
it = allChanInStatusCont.begin();
it != allChanInStatusCont.end(); ++
it) {
1701 if (pair.second.first == 0)
1703 int ngood = 0, nbad = 0;
1717 if (nbad > 0 && nbad >= ngood) {
1721 pair.second.second =
true;
1742 for (std::vector<DetId>::iterator ac_it = allConstituents.begin(); ac_it != allConstituents.end(); ++ac_it) {
1749 std::vector<int>::const_iterator sevit =
1774 std::cout <<
"ChanStatusForCaloTower for " << hid <<
" to " <<
HcalDetId(
id) << std::endl;
1776 const uint32_t recHitFlag =
hit->flags();
1855 std::vector<int>::const_iterator sevit =
1892 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
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)
missingHcalRescaleFactorForEcal
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.
void setThresFromDB(const HcalPFCuts *cuts)
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)
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)
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)
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)
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)
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
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