72 namespace alcaHcalHBHEMuon {
85 return std::make_unique<alcaHcalHBHEMuon::Counters>();
148 std::vector<HcalDDDRecConstants::HcalActiveLength>
actHB,
actHE;
154 : trigNames_(iConfig.getParameter<std::
vector<std::
string>>(
"triggers")),
155 processName_(iConfig.getParameter<std::
string>(
"processName")),
156 triggerResults_(iConfig.getParameter<edm::
InputTag>(
"triggerResults")),
157 labelEBRecHit_(iConfig.getParameter<edm::
InputTag>(
"labelEBRecHit")),
158 labelEERecHit_(iConfig.getParameter<edm::
InputTag>(
"labelEERecHit")),
159 labelHBHERecHit_(iConfig.getParameter<edm::
InputTag>(
"labelHBHERecHit")),
160 labelVtx_(iConfig.getParameter<std::
string>(
"labelVertex")),
161 labelMuon_(iConfig.getParameter<std::
string>(
"labelMuon")),
162 labelHBHEMuon_(iConfig.getParameter<std::
string>(
"labelHBHEMuon")),
163 collapseDepth_(iConfig.getParameter<bool>(
"collapseDepth")),
164 isItPlan1_(iConfig.getParameter<bool>(
"isItPlan1")),
165 verbosity_(iConfig.getUntrackedParameter<int>(
"verbosity", 0)),
166 isItPreRecHit_(iConfig.getUntrackedParameter<bool>(
"isItPreRecHit",
false)),
167 writeRespCorr_(iConfig.getUntrackedParameter<bool>(
"writeRespCorr",
false)),
168 fileInCorr_(iConfig.getUntrackedParameter<std::
string>(
"fileInCorr",
"")),
173 theHBHETopology_(nullptr),
174 respCorrs_(nullptr) {
193 tok_ddrec_ = esConsumes<HcalDDDRecConstants, HcalRecNumberingRecord, edm::Transition::BeginRun>();
194 tok_htopo_ = esConsumes<HcalTopology, HcalRecNumberingRecord, edm::Transition::BeginRun>();
195 tok_respcorr_ = esConsumes<HcalRespCorrs, HcalRespCorrsRcd, edm::Transition::BeginRun>();
196 tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord, edm::Transition::BeginRun>();
197 tok_magField_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
198 tok_chan_ = esConsumes<EcalChannelStatus, EcalChannelStatusRcd>();
199 tok_sevlv_ = esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>();
200 tok_topo_ = esConsumes<CaloTopology, CaloTopologyRecord>();
223 edm::LogVerbatim(
"HcalIsoTrack") <<
" Expected to produce the collections:\n"
224 <<
"HcalHBHEMuonVariablesCollection with label " <<
labelHBHEMuon_;
234 auto outputHcalHBHEMuonColl = std::make_unique<HcalHBHEMuonVariablesCollection>();
237 unsigned int eventNumber = iEvent.
id().
event();
241 edm::LogVerbatim(
"HBHEMuon") <<
"Run " << runNumber <<
" Event " << eventNumber <<
" Lumi " << lumiNumber <<
" BX "
242 << bxNumber << std::endl;
253 std::vector<std::string>
modules;
255 const std::vector<std::string>& triggerNames_ = triggerNames.
triggerNames();
256 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); iHLT++) {
264 edm::LogVerbatim(
"HBHEMuon") <<
"AlCaHcalHBHEMuonFilter::Trigger " << triggerNames_[iHLT] <<
" Flag " << hlt
265 <<
":" << ok << std::endl;
289 unsigned int goodVertex = 0;
290 reco::VertexCollection::const_iterator firstGoodVertex;
291 if (!vtx.isValid()) {
296 firstGoodVertex = vtx->end();
297 for (reco::VertexCollection::const_iterator it = vtx->begin(); it != vtx->end(); it++) {
299 if (firstGoodVertex == vtx->end())
300 firstGoodVertex = it;
304 if (firstGoodVertex != vtx->end())
305 pvx = firstGoodVertex->position();
308 if (ok && (goodVertex > 0) &&
muons.isValid() && barrelRecHitsHandle.isValid() && endcapRecHitsHandle.isValid() &&
310 for (reco::MuonCollection::const_iterator recMuon =
muons->begin(); recMuon !=
muons->end(); ++recMuon) {
317 hbheMuon.
muonGood_ = (recMuon->isPFMuon());
321 hbheMuon.
etaGlob_ = (recMuon->eta());
322 hbheMuon.
phiGlob_ = (recMuon->phi());
324 hbheMuon.
pMuon_ = (recMuon->p());
326 edm::LogVerbatim(
"HBHEMuon") <<
"Energy:" << recMuon->energy() <<
" P:" << recMuon->p();
330 hbheMuon.
muonTrkKink_ = (recMuon->combinedQuality().trkKink);
334 if (recMuon->track().isNonnull()) {
335 hbheMuon.
trackerLayer_ = (recMuon->track()->hitPattern().trackerLayersWithMeasurement());
339 if (recMuon->innerTrack().isNonnull()) {
341 hbheMuon.
numPixelLayers_ = (recMuon->innerTrack()->hitPattern().pixelLayersWithMeasurement());
342 hbheMuon.
chiTracker_ = (recMuon->innerTrack()->normalizedChi2());
343 hbheMuon.
dxyTracker_ = (fabs(recMuon->innerTrack()->dxy(pvx)));
344 hbheMuon.
dzTracker_ = (fabs(recMuon->innerTrack()->dz(pvx)));
348 hbheMuon.
tightPixelHits_ = (recMuon->innerTrack()->hitPattern().numberOfValidPixelHits());
352 if (recMuon->outerTrack().isNonnull()) {
357 hbheMuon.
outerTrackChi_ = (recMuon->outerTrack()->normalizedChi2());
358 hbheMuon.
outerTrackHits_ = (recMuon->outerTrack()->numberOfValidHits());
362 if (recMuon->globalTrack().isNonnull()) {
364 hbheMuon.
chiGlobal_ = (recMuon->globalTrack()->normalizedChi2());
365 hbheMuon.
globalMuonHits_ = (recMuon->globalTrack()->hitPattern().numberOfValidMuonHits());
366 hbheMuon.
matchedStat_ = (recMuon->numberOfMatchedStations());
371 hbheMuon.
tightLongPara_ = (fabs(recMuon->muonBestTrack()->dz(pvx)));
375 ((recMuon->pfIsolationR04().sumChargedHadronPt +
377 recMuon->pfIsolationR04().sumNeutralHadronEt + recMuon->pfIsolationR04().sumPhotonEt -
378 (0.5 * recMuon->pfIsolationR04().sumPUPt))) /
382 ((recMuon->pfIsolationR03().sumChargedHadronPt +
384 recMuon->pfIsolationR03().sumNeutralHadronEt + recMuon->pfIsolationR03().sumPhotonEt -
385 (0.5 * recMuon->pfIsolationR03().sumPUPt))) /
388 hbheMuon.
ecalEnergy_ = (recMuon->calEnergy().emS9);
389 hbheMuon.
hcalEnergy_ = (recMuon->calEnergy().hadS9);
390 hbheMuon.
hoEnergy_ = (recMuon->calEnergy().hoS9);
392 if (recMuon->innerTrack().isNonnull()) {
393 const reco::Track* pTrack = (recMuon->innerTrack()).
get();
396 double activeLengthTot(0), activeLengthHotTot(0);
409 unsigned int isHot(0);
410 int ieta(-1000), iphi(-1000);
412 eHcalDepth[
i] = eHcalDepthHot[
i] = 0;
413 eHcalDepthC[
i] = eHcalDepthHotC[
i] = 0;
414 cHcalDepthHot[
i] = cHcalDepthHotBG[
i] = 0;
415 eHcalDepthRaw[
i] = eHcalDepthHotRaw[
i] = 0;
416 eHcalDepthCRaw[
i] = eHcalDepthHotCRaw[
i] = 0;
417 cHcalDepthHotRaw[
i] = cHcalDepthHotBGRaw[
i] = 0;
418 eHcalDepthAux[
i] = eHcalDepthHotAux[
i] = 0;
419 eHcalDepthCAux[
i] = eHcalDepthHotCAux[
i] = 0;
420 cHcalDepthHotAux[
i] = cHcalDepthHotBGAux[
i] = 0;
421 activeL[
i] = activeHotL[
i] = 0;
422 matchDepth[
i] = matchDepthHot[
i] =
true;
438 bool okE = trackID.
okECAL;
466 if ((hcidt.ieta() == check.
ieta()) && (hcidt.iphi() == check.
iphi()))
469 edm::LogVerbatim(
"HBHEMuon") <<
"Front " << hcidt <<
" Back " << info.first <<
":" << check <<
" Match "
475 bool hborhe = (
std::abs(ieta) == 16);
478 theHBHETopology_, closestCell, hbhe, 0, 0,
false,
true, -100.0, -100.0, -100.0, -100.0, -500., 500., 0);
480 theHBHETopology_, closestCell, hbhe, 0, 0,
false,
true, -100.0, -100.0, -100.0, -100.0, -500., 500., 1);
482 theHBHETopology_, closestCell, hbhe, 0, 0,
false,
true, -100.0, -100.0, -100.0, -100.0, -500., 500., 2);
483 std::vector<std::pair<double, int>> ehdepth, ehdepthAux, ehdepthRaw;
525 for (
unsigned int i = 0;
i < ehdepth.size(); ++
i) {
530 double ene = ehdepth[
i].first;
531 double eneAux = ehdepthAux[
i].first;
532 double eneRaw = ehdepthRaw[
i].first;
536 edm::LogWarning(
"HBHEMuon") <<
"(1) Invalid ID " << hcid0 <<
" with E = " << ene;
538 for (
const auto& ehd : ehdepth)
550 int depth = ehdepth[
i].second - 1;
553 depth =
id.
depth() - 1;
555 eHcalDepth[
depth] += ene;
556 eHcalDepthC[
depth] += enec;
557 activeL[
depth] += actL;
558 activeLengthTot += actL;
559 matchDepth[
depth] = (matchDepth[
depth] && tmpC);
563 << hcid0 <<
" E " << ene <<
":" << enec <<
" L " << actL <<
" Match " << tmpC;
569 double enecAux(eneAux);
573 int depth = ehdepthAux[
i].second - 1;
576 depth =
id.
depth() - 1;
578 eHcalDepthAux[
depth] += eneAux;
579 eHcalDepthCAux[
depth] += enecAux;
583 << hcid0 <<
" E " << eneAux <<
":" << enecAux <<
" L " << actL <<
" Match " << tmpC;
589 double enecRaw(eneRaw);
593 int depth = ehdepthRaw[
i].second - 1;
596 depth =
id.
depth() - 1;
598 eHcalDepthRaw[
depth] += eneRaw;
599 eHcalDepthCRaw[
depth] += enecRaw;
603 << hcid0 <<
" E " << eneRaw <<
":" << enecRaw <<
" L " << actL <<
" Match " << tmpC;
611 for (
unsigned int k = 0;
k < ehdepth.size(); ++
k)
612 edm::LogVerbatim(
"HBHEMuon") <<
" [" <<
k <<
":" << ehdepth[
k].second <<
"] " << matchDepth[
k];
617 isHot =
matchId(closestCell, hotCell);
623 std::vector<std::pair<double, int>> ehdepth, ehdepthAux, ehdepthRaw;
665 for (
unsigned int i = 0;
i < ehdepth.size(); ++
i) {
670 double ene = ehdepth[
i].first;
674 edm::LogWarning(
"HBHEMuon") <<
"(2) Invalid ID " << hcid0 <<
" with E = " << ene;
676 for (
const auto& ehd : ehdepth)
680 double chg(ene), enec(ene);
686 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
":" <<
id <<
" Corr " << corr <<
" E " << ene <<
":" << enec;
694 int depth = ehdepth[
i].second - 1;
697 depth =
id.
depth() - 1;
699 eHcalDepthHot[
depth] += ene;
700 eHcalDepthHotC[
depth] += enec;
702 activeHotL[
depth] += actL;
703 activeLengthHotTot += actL;
704 matchDepthHot[
depth] = (matchDepthHot[
depth] && tmpC);
708 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" depth " << depth <<
" E " << ene <<
":" << enec <<
" C "
709 << chg <<
" L " << actL <<
" Match " << tmpC;
713 double eneAux = ehdepthAux[
i].first;
716 double chgAux(eneAux), enecAux(eneAux);
723 int depth = ehdepthAux[
i].second - 1;
726 depth =
id.
depth() - 1;
728 eHcalDepthHotAux[
depth] += eneAux;
729 eHcalDepthHotCAux[
depth] += enecAux;
730 cHcalDepthHotAux[
depth] += chgAux;
733 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" depth " << depth <<
" E " << eneAux <<
":" << enecAux
734 <<
" C " << chgAux <<
" L " << actL <<
" Match " << tmpC;
738 double eneRaw = ehdepthRaw[
i].first;
741 double chgRaw(eneRaw), enecRaw(eneRaw);
748 int depth = ehdepthRaw[
i].second - 1;
751 depth =
id.
depth() - 1;
753 eHcalDepthHotRaw[
depth] += eneRaw;
754 eHcalDepthHotCRaw[
depth] += enecRaw;
755 cHcalDepthHotRaw[
depth] += chgRaw;
758 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" depth " << depth <<
" E " << eneRaw <<
":" << enecRaw
759 <<
" C " << chgRaw <<
" L " << actL <<
" Match " << tmpC;
766 std::vector<std::pair<double, int>> ehdeptho, ehdepthoAux, ehdepthoRaw;
806 for (
unsigned int i = 0;
i < ehdeptho.size(); ++
i) {
810 double ene = ehdeptho[
i].first;
813 edm::LogWarning(
"HBHEMuon") <<
"(3) Invalid ID " << hcid0 <<
" with E = " << ene;
814 edm::LogWarning(
"HBHEMuon") << oppCell <<
" with " << ehdeptho.size() <<
" depths:";
815 for (
const auto& ehd : ehdeptho)
825 << hcid0 <<
":" <<
id <<
" Corr " << corr <<
" E " << ene <<
":" << ehdeptho[
i].first;
833 int depth = ehdeptho[
i].second - 1;
836 depth =
id.
depth() - 1;
841 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" Depth " << depth <<
" E " << ene <<
" C " <<
chg;
845 double eneAux = ehdepthoAux[
i].first;
848 double chgAux(eneAux);
855 int depth = ehdepthoAux[
i].second - 1;
858 depth =
id.
depth() - 1;
860 cHcalDepthHotBGAux[
depth] += chgAux;
863 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" Depth " << depth <<
" E " << eneAux <<
" C " << chgAux;
867 double eneRaw = ehdepthoRaw[
i].first;
870 double chgRaw(eneRaw);
877 int depth = ehdepthoRaw[
i].second - 1;
880 depth =
id.
depth() - 1;
882 cHcalDepthHotBGRaw[
depth] += chgRaw;
885 edm::LogVerbatim(
"HBHEMuon") << hcid0 <<
" Depth " << depth <<
" E " << eneRaw <<
" C " << chgRaw;
894 << hbheMuon.
matchedId_ <<
" Hot " << isHot <<
" Energy " << eHcal;
926 if ((recMuon->p() > 10.0) && (trackID.
okHCAL))
927 outputHcalHBHEMuonColl->emplace_back(hbheMuon);
931 if (!outputHcalHBHEMuonColl->empty())
939 std::vector<std::string> triggers = {
"HLT_IsoMu",
"HLT_Mu"};
940 desc.
add<std::vector<std::string>>(
"triggers", triggers);
949 desc.
add<
bool>(
"collapseDepth",
false);
950 desc.
add<
bool>(
"isItPlan1",
false);
956 descriptions.
add(
"alcaHcalHBHEMuonProducer", desc);
961 globalCache()->nAll_ +=
nAll_;
962 globalCache()->nGood_ +=
nGood_;
977 unsigned int k1(0),
k2(0);
979 for (
const auto& act :
actHB) {
980 edm::LogVerbatim(
"HBHEMuon") <<
"[" << k1 <<
"] ieta " << act.ieta <<
" depth " << act.depth <<
" zside "
981 << act.zside <<
" type " << act.stype <<
" phi " << act.iphis.size() <<
":"
982 << act.iphis[0] <<
" L " << act.thick;
989 for (
const auto& act :
actHE) {
990 edm::LogVerbatim(
"HBHEMuon") <<
"[" << k2 <<
"] ieta " << act.ieta <<
" depth " << act.depth <<
" zside "
991 << act.zside <<
" type " << act.stype <<
" phi " << act.iphis.size() <<
":"
992 << act.iphis[0] <<
" L " << act.thick;
1000 bool changed =
true;
1012 edm::LogVerbatim(
"HBHEMuon") <<
"\nTable of Correction Factors for Run " << iRun.
run() <<
"\n";
1013 for (
auto const&
id : ids) {
1032 int match = ((kd1 == kd2) ? 1 : 0);
1038 int ieta =
id.ietaAbs();
1039 int zside =
id.zside();
1040 int iphi =
id.iphi();
1041 std::vector<int> dpths;
1043 std::vector<HcalDetId> ids;
1045 for (
auto idh : ids)
1046 dpths.emplace_back(idh.depth());
1048 dpths.emplace_back(
id.
depth());
1052 for (
unsigned int i = 0;
i <
actHB.size(); ++
i) {
1053 if ((ieta ==
actHB[
i].ieta) && (zside ==
actHB[
i].zside) &&
1054 (
std::find(dpths.begin(), dpths.end(),
actHB[
i].depth) != dpths.end()) &&
1060 for (
unsigned int i = 0;
i <
actHE.size(); ++
i) {
1061 if ((ieta ==
actHE[
i].ieta) && (zside ==
actHE[
i].zside) &&
1062 (
std::find(dpths.begin(), dpths.end(),
actHE[
i].depth) != dpths.end()) &&
1078 if (fabs(vtx.
position().Z()) > 24.)
1098 for (
int capid = 0; capid < 4; ++capid)
1107 int zside = (ieta > 0) ? 1 : -1;
1113 <<
" depth " <<
depth;
1122 std::pair<double, double> rz =
hdc_->
getRZ(hcid);
Log< level::Info, true > LogVerbatim
float muonChi2LocalPosition_
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
EventNumber_t event() const
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
const std::string fileInCorr_
T getUntrackedParameter(std::string const &, T const &) const
void beginRun(edm::Run const &, edm::EventSetup const &) override
const bool collapseDepth_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
const HcalDDDRecConstants * dddConstants() const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_magField_
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_htopo_
const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const override
Get a list of valid detector ids (for the given subdetector)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
uint16_t *__restrict__ id
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_topo_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
std::atomic< unsigned int > nGood_
float tightValidFraction_
HcalDetId mergedDepthDetId(const HcalDetId &id) const
#define DEFINE_FWK_MODULE(type)
std::pair< math::XYZPoint, bool > propagateHCAL(const reco::Track *, const MagneticField *, bool debug=false)
std::vector< float > hcalDepthEnergyCorrRaw_
std::vector< float > hcalDepthEnergyRaw_
std::vector< float > hcalDepthEnergy_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
std::vector< float > hcalDepthEnergyHotRaw_
constexpr uint32_t rawId() const
get the raw id
std::vector< int > hltresults_
int bunchCrossing() const
~AlCaHcalHBHEMuonProducer() override=default
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_chan_
double respCorr(const DetId &id)
edm::ESGetToken< HcalDbService, HcalDbRecord > tok_dbservice_
const HcalDDDRecConstants * hdc_
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< float > hcalDepthChargeHotRaw_
std::vector< bool > hcalDepthMatchHot_
bool validHcal(const HcalDetId &id) const
static std::unique_ptr< alcaHcalHBHEMuon::Counters > initializeGlobalCache(edm::ParameterSet const &)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
LuminosityBlockNumber_t luminosityBlock() const
std::vector< float > hcalDepthChargeHotBGRaw_
std::vector< HcalDDDRecConstants::HcalActiveLength > actHE
const Point & position() const
position
Strings const & triggerNames() const
std::vector< float > hcalDepthEnergyHotAux_
std::vector< float > hcalDepthEnergyHotCorr_
const HcalRespCorrs * respCorrs_
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
bool getData(T &iHolder) const
U second(std::pair< T, U > const &p)
const bool isItPreRecHit_
double activeLength(const DetId &)
constexpr HcalSubdetector subdet() const
get the subdetector
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
const edm::InputTag labelEERecHit_
bool isGoodVertex(const reco::Vertex &vtx)
void endStream() override
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
const bool writeRespCorr_
const std::vector< std::string > trigNames_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
spr::propagatedTrackDirection propagateHCALBack(unsigned int thisTrk, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const CaloGeometry *geo, const MagneticField *bField, bool debug=false)
constexpr int iphi() const
get the cell iphi
std::vector< std::string > all_triggers_
float hcalActiveLengthHot_
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
const std::string labelHBHEMuon_
double getRZ(const int &subdet, const int &ieta, const int &depth) const
std::vector< float > hcalDepthChargeHotAux_
std::vector< float > hcalDepthEnergyHot_
std::atomic< unsigned int > nAll_
Abs< T >::type abs(const T &t)
void endRun(edm::Run const &, edm::EventSetup const &) override
constexpr int ieta() const
get the cell ieta
static const int depthMax_
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
std::vector< float > hcalDepthEnergyCorr_
std::vector< float > hcalDepthActiveLength_
static std::string const triggerResults
ParameterDescriptionBase * add(U const &iLabel, T const &value)
HLTConfigProvider hltConfig_
std::vector< float > hcalDepthEnergyAux_
std::vector< float > hcalDepthEnergyHotCorrRaw_
edm::EDGetTokenT< reco::VertexCollection > tok_Vtx_
std::vector< float > hcalDepthChargeHotBG_
std::map< DetId, double > corrValue_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
const edm::InputTag triggerResults_
XYZPointD XYZPoint
point in space with cartesian internal representation
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
const std::string labelVtx_
const edm::InputTag labelHBHERecHit_
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const HcalTopology * theHBHETopology_
static void globalEndJob(const alcaHcalHBHEMuon::Counters *counters)
unsigned int eventNumber_
const edm::InputTag labelEBRecHit_
edm::EDGetTokenT< HBHERecHitCollection > tok_HBHE_
AlCaHcalHBHEMuonProducer(const edm::ParameterSet &, const alcaHcalHBHEMuon::Counters *)
std::vector< float > hcalDepthChargeHot_
const CaloGeometry * geo_
std::vector< float > hcalDepthEnergyCorrAux_
const std::string labelMuon_
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
std::vector< bool > hcalDepthMatch_
double gainFactor(const HcalDbService *dbserv, const HcalDetId &id)
const std::string processName_
std::vector< HcalActiveLength > getThickActive(const int &type) const
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
std::vector< HcalDDDRecConstants::HcalActiveLength > actHB
int matchId(const HcalDetId &, const HcalDetId &)
constexpr int depth() const
get the tower depth
std::vector< float > hcalDepthEnergyHotCorrAux_
bool goodCell(const HcalDetId &hcid, const reco::Track *pTrack, const CaloGeometry *geo, const MagneticField *bField)
Log< level::Warning, false > LogWarning
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
std::vector< float > hcalDepthActiveLengthHot_
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
void energyHCALCell(HcalDetId detId, edm::Handle< T > &hits, std::vector< std::pair< double, int > > &energyCell, int maxDepth=1, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, int depthHE=3, bool debug=false)
constexpr double respcorrgain(int fCapId) const
get response corrected gain for capid=0..3
void produce(edm::Event &, const edm::EventSetup &) override
int depth16HE(int ieta, int iphi)
edm::ESGetToken< HcalRespCorrs, HcalRespCorrsRcd > tok_respcorr_
std::vector< float > hcalDepthChargeHotBGAux_
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, bool debug=false)
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_