7 : topFolderName_(conf.getParameter<
std::
string>(
"TopFolderName")) {
14 edm::LogInfo(
"OutputInfo") <<
" Hcal RecHit Task histograms will NOT be saved";
54 if (eventype_ ==
"multi")
149 sprintf(histo,
"N_HB");
151 sprintf(histo,
"N_HB_depth%d",
depth);
154 Nhb.push_back(ibooker.
book1D(histo, histo, NBins, 0., (
float)NBins));
158 sprintf(histo,
"N_HE");
160 sprintf(histo,
"N_HE_depth%d",
depth);
163 Nhe.push_back(ibooker.
book1D(histo, histo, NBins, 0., (
float)NBins));
167 sprintf(histo,
"N_HO");
169 sprintf(histo,
"N_HO_depth%d",
depth);
172 Nho.push_back(ibooker.
book1D(histo, histo, NBins, 0., (
float)NBins));
176 sprintf(histo,
"N_HF");
178 sprintf(histo,
"N_HF_depth%d",
depth);
181 Nhf.push_back(ibooker.
book1D(histo, histo, NBins, 0., (
float)NBins));
191 sprintf(histo,
"emap_depth%d",
depth);
194 sprintf(histo,
"emap_HO");
200 sprintf(histo,
"emean_vs_ieta_HB%d",
depth);
203 sprintf(histo,
"emean_vs_ieta_M0_HB%d",
depth);
207 sprintf(histo,
"emean_vs_ieta_M3_HB%d",
depth);
212 sprintf(histo,
"emean_vs_ieta_HE%d",
depth);
215 sprintf(histo,
"emean_vs_ieta_M0_HE%d",
depth);
219 sprintf(histo,
"emean_vs_ieta_M3_HE%d",
depth);
226 sprintf(histo,
"emean_vs_ieta_HEP17_depth%d",
depth);
230 sprintf(histo,
"emean_vs_ieta_M0_HEP17_depth%d",
depth);
234 sprintf(histo,
"emean_vs_ieta_M3_HEP17_depth%d",
depth);
241 sprintf(histo,
"emean_vs_ieta_HF%d",
depth);
244 sprintf(histo,
"emean_vs_ieta_HO");
251 sprintf(histo,
"occupancy_map_HB%d",
depth);
257 sprintf(histo,
"occupancy_map_HE%d",
depth);
262 sprintf(histo,
"occupancy_map_HO");
266 sprintf(histo,
"occupancy_map_HF%d",
depth);
273 sprintf(histo,
"occupancy_vs_ieta_HB%d",
depth);
275 sprintf(histo,
"nrechits_vs_iphi_HBP_d%d",
depth);
277 sprintf(histo,
"nrechits_vs_iphi_HBM_d%d",
depth);
282 sprintf(histo,
"occupancy_vs_ieta_HE%d",
depth);
284 sprintf(histo,
"nrechits_vs_iphi_HEP_d%d",
depth);
286 sprintf(histo,
"nrechits_vs_iphi_HEM_d%d",
depth);
290 sprintf(histo,
"occupancy_vs_ieta_HO");
292 sprintf(histo,
"nrechits_vs_iphi_HOP");
294 sprintf(histo,
"nrechits_vs_iphi_HOM");
298 sprintf(histo,
"occupancy_vs_ieta_HF%d",
depth);
300 sprintf(histo,
"nrechits_vs_iphi_HFP_d%d",
depth);
302 sprintf(histo,
"nrechits_vs_iphi_HFM_d%d",
depth);
307 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWord_HB");
310 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWord_HE");
313 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWord_HF");
316 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWord_HO");
320 sprintf(histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HB");
323 sprintf(histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HE");
326 sprintf(histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HF");
329 sprintf(histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HO");
335 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWordCorr_HB");
338 sprintf(histo,
"HcalRecHitTask_RecHit_StatusWordCorr_HE");
345 sprintf(histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths");
348 sprintf(histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_E");
351 sprintf(histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_EH");
360 sprintf(histo,
"HcalRecHitTask_severityLevel_HB");
363 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HB");
366 sprintf(histo,
"HcalRecHitTask_cleaned_energy_of_rechits_HB");
369 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M0_HB");
372 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3_HB");
375 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M2vM0_HB");
378 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3vM0_HB");
381 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3vM2_HB");
384 sprintf(histo,
"HcalRecHitTask_M2Log10Chi2_of_rechits_HB");
387 sprintf(histo,
"HcalRecHitTask_timing_HB");
391 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_Low_HB");
394 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_HB");
395 meTE_HB = ibooker.
book2D(histo, histo, 150, -5., 295., 70, -48., 92.);
397 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_High_HB");
400 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HB");
403 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_HB");
406 sprintf(histo,
"HcalRecHitTask_Log10Chi2_vs_energy_profile_HB");
409 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_High_HB");
417 sprintf(histo,
"HcalRecHitTask_severityLevel_HE");
420 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HE");
423 sprintf(histo,
"HcalRecHitTask_cleaned_energy_of_rechits_HE");
426 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M0_HE");
429 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3_HE");
433 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HEP17");
436 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M0_HEP17");
439 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3_HEP17");
442 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HEP17_depth%d",
depth);
445 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M0_HEP17_depth%d",
depth);
448 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3_HEP17_depth%d",
depth);
453 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M2vM0_HE");
456 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3vM0_HE");
459 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_M3vM2_HE");
462 sprintf(histo,
"HcalRecHitTask_M2Log10Chi2_of_rechits_HE");
465 sprintf(histo,
"HcalRecHitTask_timing_HE");
468 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_Low_HE");
471 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_HE");
472 meTE_HE = ibooker.
book2D(histo, histo, 200, -5., 395., 70, -48., 92.);
474 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HE");
477 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_HE");
480 sprintf(histo,
"HcalRecHitTask_Log10Chi2_vs_energy_profile_HE");
489 sprintf(histo,
"HcalRecHitTask_severityLevel_HO");
492 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HO");
495 sprintf(histo,
"HcalRecHitTask_cleaned_energy_of_rechits_HO");
498 sprintf(histo,
"HcalRecHitTask_timing_HO");
501 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_HO");
502 meTE_HO = ibooker.
book2D(histo, histo, 60, -5., 55., 70, -48., 92.);
504 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_High_HO");
507 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_HO");
510 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_High_HO");
519 sprintf(histo,
"HcalRecHitTask_severityLevel_HF");
522 sprintf(histo,
"HcalRecHitTask_energy_of_rechits_HF");
525 sprintf(histo,
"HcalRecHitTask_cleaned_energy_of_rechits_HF");
528 sprintf(histo,
"HcalRecHitTask_timing_HF");
531 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_Low_HF");
534 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_HF");
535 meTE_HF = ibooker.
book2D(histo, histo, 200, -5., 995., 70, -48., 92.);
537 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HF");
540 sprintf(histo,
"HcalRecHitTask_timing_vs_energy_profile_HF");
555 int nrechitsThresh = 0;
561 double eEcalCone = 0.;
568 double etaHot = 99999.;
569 double phiHot = 99999.;
626 double en =
recHit.energy();
635 double en =
recHit.energy();
652 for (
unsigned int i = 0;
i <
cen.size();
i++) {
667 bool isHEP17 = (sub == 2) && (iphi >= 63) && (iphi <= 66) && (ieta > 0) && (
hep17_);
714 emap[depth2 - 1]->Fill(
double(ieta2),
double(iphi), en);
717 if (depth == 1 || depth == 2) {
773 unsigned int isw67 = 0;
776 unsigned int sw27 = 27;
777 unsigned int sw13 = 13;
779 uint32_t statadd27 = 0x1 << sw27;
780 uint32_t statadd13 = 0x1 << sw13;
785 if (stwd & statadd27)
787 if (stwd & statadd13)
792 }
else if (sub == 2) {
796 for (
unsigned int isw = 0; isw < 32; isw++) {
797 statadd = 0x1 << (isw);
798 if (stwd & statadd) {
815 for (
unsigned int isw = 0; isw < 32; isw++) {
816 statadd = 0x1 << (isw);
817 if (auxstwd & statadd) {
833 Nhe[depth]->
Fill(
double(nhe_v[depth]));
835 Nho[depth]->
Fill(
double(nho_v[depth]));
837 Nhf[depth]->
Fill(
double(nhf_v[depth]));
844 double clusEta = 999.;
845 double clusPhi = 999.;
848 double HcalCone = 0.;
860 for (
unsigned int i = 0;
i <
cen.size();
i++) {
870 double chi2_log10 = 9.99;
872 chi2_log10 = log10(chi2);
877 bool isHEP17 = (sub == 2) && (iphi >= 63) && (iphi <= 66) && (ieta > 0) && (
hep17_);
881 double rhot =
dR(etaHot, phiHot, eta, phi);
882 if (rhot < partR && en > 1.) {
883 clusEta = (clusEta * clusEn + eta * en) / (clusEn + en);
884 clusPhi =
phi12(clusPhi, clusEn, phi, en);
1013 if (subdet_ == 1 || subdet_ == 2 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
1020 double eta = cellGeometry->getPosition(cell).eta();
1021 double phi = cellGeometry->getPosition(cell).phi();
1022 double zc = cellGeometry->getPosition(cell).z();
1023 int sub = cell.subdet();
1024 int depth = cell.depth();
1025 int inteta = cell.ieta();
1026 int intphi = cell.iphi();
1027 double en =
j->energy();
1028 double enM0 =
j->eraw();
1029 double enM3 =
j->eaux();
1030 double chi2 =
j->chi2();
1031 double t =
j->time();
1032 int stwd =
j->flags();
1033 int auxstwd =
j->aux();
1042 if ((
iz > 0 && eta > 0.) || (
iz < 0 && eta < 0.) ||
iz == 0) {
1043 csub.push_back(sub);
1045 cenM0.push_back(enM0);
1046 cenM3.push_back(enM3);
1047 cchi2.push_back(chi2);
1048 ceta.push_back(eta);
1049 cphi.push_back(phi);
1051 cieta.push_back(inteta);
1052 ciphi.push_back(intphi);
1055 cstwd.push_back(stwd);
1057 csevlev.push_back(severityLevel);
1063 if (subdet_ == 4 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
1070 double eta = cellGeometry->getPosition().eta();
1071 double phi = cellGeometry->getPosition().phi();
1072 double zc = cellGeometry->getPosition().z();
1073 int sub = cell.subdet();
1074 int depth = cell.depth();
1075 int inteta = cell.ieta();
1076 int intphi = cell.iphi();
1077 double en =
j->energy();
1081 double t =
j->time();
1082 int stwd =
j->flags();
1083 int auxstwd =
j->aux();
1090 if ((
iz > 0 && eta > 0.) || (
iz < 0 && eta < 0.) ||
iz == 0) {
1091 csub.push_back(sub);
1093 cenM0.push_back(enM0);
1094 cenM3.push_back(enM3);
1095 cchi2.push_back(chi2);
1096 ceta.push_back(eta);
1097 cphi.push_back(phi);
1099 cieta.push_back(inteta);
1100 ciphi.push_back(intphi);
1103 cstwd.push_back(stwd);
1105 csevlev.push_back(severityLevel);
1112 if (subdet_ == 3 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
1118 double eta = cellGeometry->getPosition().eta();
1119 double phi = cellGeometry->getPosition().phi();
1120 double zc = cellGeometry->getPosition().z();
1121 int sub = cell.subdet();
1122 int depth = cell.depth();
1123 int inteta = cell.ieta();
1124 int intphi = cell.iphi();
1125 double t =
j->time();
1126 double en =
j->energy();
1130 int stwd =
j->flags();
1131 int auxstwd =
j->aux();
1138 if ((
iz > 0 && eta > 0.) || (
iz < 0 && eta < 0.) ||
iz == 0) {
1139 csub.push_back(sub);
1141 cenM0.push_back(enM0);
1142 cenM3.push_back(enM3);
1143 cchi2.push_back(chi2);
1144 ceta.push_back(eta);
1145 cphi.push_back(phi);
1147 cieta.push_back(inteta);
1148 ciphi.push_back(intphi);
1151 cstwd.push_back(stwd);
1153 csevlev.push_back(severityLevel);
1161 double PI = 3.1415926535898;
1162 double deltaphi = phi1 - phi2;
1164 deltaphi = phi2 - phi1;
1166 if (deltaphi > PI) {
1167 deltaphi = 2. * PI - deltaphi;
1169 double deltaeta = eta2 -
eta1;
1170 double tmp =
sqrt(deltaeta * deltaeta + deltaphi * deltaphi);
1178 double PI = 3.1415926535898;
1182 if (a1 > 0.5 * PI && a2 < 0.)
1184 if (a2 > 0.5 * PI && a1 < 0.)
1186 tmp = (a1 * en1 + a2 * en2) / (en1 + en2);
1197 double PI = 3.1415926535898;
1200 double tmp = a2 - a1;
1216 const uint32_t recHitFlag = hit->
flags();
std::string hcalselector_
MonitorElement * nrechits_vs_iphi_HOP
MonitorElement * sevLvl_HF
std::vector< MonitorElement * > emean_vs_ieta_HEP17M3
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meTEprofileHB_High
MonitorElement * RecHit_StatusWord_HE
std::vector< int > csevlev
MonitorElement * meRecHitsM2Chi2HB
MonitorElement * meTimeHF
std::vector< double > cphi
std::vector< int > hcalHOSevLvlVec
double dR(double eta1, double phi1, double eta2, double phi2)
MonitorElement * RecHit_StatusWord_HF
MonitorElement * meRecHitsEnergyM3vM2HE
std::vector< MonitorElement * > Nho
std::vector< MonitorElement * > emean_vs_ieta_HBM3
MonitorElement * sevLvl_HE
std::vector< MonitorElement * > occupancy_vs_ieta_HB
MonitorElement * RecHit_Aux_StatusWord_HO
unsigned int getHxSize(const int type) const
double dPhiWsign(double phi1, double phi2)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * meTE_Low_HE
void setCurrentFolder(std::string const &fullpath)
constexpr const DetId & detid() const
MonitorElement * book1DD(TString const &name, TString const &title, int nchX, double lowX, double highX)
MonitorElement * meRecHitsEnergyHEM3
std::vector< int > cdepth
std::vector< MonitorElement * > occupancy_map_HE
const HcalTopology * theHcalTopology
int hcalSevLvl(const CaloRecHit *hit)
std::vector< T >::const_iterator const_iterator
std::vector< int > hcalHBSevLvlVec
MonitorElement * occupancy_map_HO
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< MonitorElement * > occupancy_map_HF
std::vector< double > ceta
edm::EDGetTokenT< EBRecHitCollection > tok_EB_
MonitorElement * meEnConeEtaProfile_EH
CaloGeometry const * getGeometry()
std::vector< int > hcalHESevLvlVec
double phi12(double phi1, double en1, double phi2, double en2)
bool getMergePositionFlag() const
MonitorElement * meRecHitsEnergyM3vM0HE
std::vector< MonitorElement * > Nhe
MonitorElement * meTE_Low_HB
MonitorElement * meTEprofileHF_Low
const HcalSeverityLevelComputer * theHcalSevLvlComputer
std::vector< MonitorElement * > Nhf
MonitorElement * meRecHitsEnergyM2vM0HB
std::vector< MonitorElement * > nrechits_vs_iphi_HEP
MonitorElement * sevLvl_HO
virtual void fillRecHitsTmp(int subdet_, edm::Event const &ev)
std::vector< MonitorElement * > emean_vs_ieta_HEP17
std::vector< MonitorElement * > emean_vs_ieta_HBM0
MonitorElement * meRecHitsEnergyM2vM0HE
std::vector< MonitorElement * > occupancy_vs_ieta_HF
std::vector< MonitorElement * > occupancy_vs_ieta_HE
#define DEFINE_FWK_MODULE(type)
std::vector< MonitorElement * > emean_vs_ieta_HB
const HcalChannelQuality * theHcalChStatus
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::vector< MonitorElement * > occupancy_map_HB
MonitorElement * meEnConeEtaProfile_E
std::vector< MonitorElement * > emap
std::vector< MonitorElement * > nrechits_vs_iphi_HFP
MonitorElement * meTEprofileHO
std::string ecalselector_
MonitorElement * meTEprofileHB
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, char const *option="s")
edm::EDGetTokenT< HORecHitCollection > tok_ho_
std::vector< double > cchi2
MonitorElement * meLog10Chi2profileHE
std::vector< MonitorElement * > nrechits_vs_iphi_HFM
MonitorElement * meRecHitsEnergyHBM0
MonitorElement * meTE_High_HO
MonitorElement * meRecHitsEnergyHO
MonitorElement * meRecHitsM2Chi2HE
std::vector< uint32_t > cauxstwd
MonitorElement * meRecHitsEnergyHEM0
MonitorElement * occupancy_vs_ieta_HO
MonitorElement * meTEprofileHE_Low
MonitorElement * RecHit_StatusWord_HO
MonitorElement * meRecHitsEnergyHB
std::vector< MonitorElement * > emean_vs_ieta_HE
MonitorElement * nrechits_vs_iphi_HOM
MonitorElement * emean_vs_ieta_HO
MonitorElement * sevLvl_HB
std::vector< MonitorElement * > emean_vs_ieta_HEP17M0
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< MonitorElement * > nrechits_vs_iphi_HBP
const_iterator end() const
MonitorElement * meTimeHE
std::vector< MonitorElement * > nrechits_vs_iphi_HEM
MonitorElement * meTimeHO
MonitorElement * meRecHitsEnergyHF
std::vector< double > cenM3
HcalRecHitsAnalyzer(edm::ParameterSet const &conf)
MonitorElement * meEnConeEtaProfile
std::vector< MonitorElement * > emean_vs_ieta_HEM3
std::string topFolderName_
MonitorElement * meRecHitsCleanedEnergyHF
MonitorElement * meTEprofileHE
std::vector< uint32_t > cstwd
T const * product() const
std::vector< MonitorElement * > meRecHitsEnergyHEP17
MonitorElement * RecHit_Aux_StatusWord_HB
void analyze(edm::Event const &ev, edm::EventSetup const &c) override
void dqmBeginRun(const edm::Run &run, const edm::EventSetup &c) override
int getMaxDepth(const int &type) const
std::vector< MonitorElement * > emean_vs_ieta_HF
MonitorElement * meRecHitsEnergyM3vM2HB
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
std::vector< MonitorElement * > meRecHitsEnergyHEP17M0
MonitorElement * meLog10Chi2profileHB
std::vector< MonitorElement * > nrechits_vs_iphi_HBM
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * meRecHitsCleanedEnergyHB
MonitorElement * meTE_High_HB
std::vector< int > hcalHFSevLvlVec
MonitorElement * RecHit_StatusWord_HB
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
MonitorElement * meTEprofileHO_High
const HcalDDDRecConstants * hcons
MonitorElement * meTEprofileHB_Low
edm::EDGetTokenT< EERecHitCollection > tok_EE_
std::vector< MonitorElement * > Nhb
MonitorElement * meRecHitsCleanedEnergyHE
std::vector< double > ctime
std::vector< double > cen
MonitorElement * meRecHitsEnergyM3vM0HB
HcalDetId idFront(const HcalDetId &id) const
MonitorElement * meRecHitsEnergyHBM3
std::vector< double > cenM0
MonitorElement * RecHit_StatusWordCorr_HE
MonitorElement * meTimeHB
std::pair< int, int > getEtaRange(const int &i) const
MonitorElement * meTEprofileHF
MonitorElement * RecHit_Aux_StatusWord_HF
MonitorElement * RecHit_Aux_StatusWord_HE
uint32_t getValue() const
T const * product() const
constexpr uint32_t flags() const
MonitorElement * RecHit_StatusWordCorr_HB
std::vector< MonitorElement * > meRecHitsEnergyHEP17M3
edm::ESHandle< CaloGeometry > geometry
const_iterator begin() const
int getNPhi(const int &type) const
MonitorElement * meRecHitsCleanedEnergyHO
std::vector< MonitorElement * > emean_vs_ieta_HEM0
MonitorElement * meRecHitsEnergyHE
MonitorElement * meTE_Low_HF