14 edm::LogInfo(
"OutputInfo") <<
" Hcal RecHit Task histograms will NOT be saved";
42 if (eventype_ ==
"multi")
etype_ = 2;
45 if(sign_ ==
"-")
iz = -1;
46 if(sign_ ==
"*")
iz = 0;
127 if(
depth == 0){ sprintf (histo,
"N_HB" );}
128 else{ sprintf (histo,
"N_HB_depth%d",
depth );}
130 Nhb.push_back( ibooker.
book1D(histo, histo, NBins, 0., (
float)NBins) );
133 if(
depth == 0){ sprintf (histo,
"N_HE" );}
134 else{ sprintf (histo,
"N_HE_depth%d",
depth );}
136 Nhe.push_back( ibooker.
book1D(histo, histo, NBins,0., (
float)NBins) );
139 if(
depth == 0){ sprintf (histo,
"N_HO" );}
140 else{ sprintf (histo,
"N_HO_depth%d",
depth );}
142 Nho.push_back( ibooker.
book1D(histo, histo, NBins,0., (
float)NBins) );
145 if(
depth == 0){ sprintf (histo,
"N_HF" );}
146 else{ sprintf (histo,
"N_HF_depth%d",
depth );}
148 Nhf.push_back( ibooker.
book1D(histo, histo, NBins,0., (
float)NBins) );
159 sprintf (histo,
"emap_depth%d",
depth );
160 emap.push_back( ibooker.
book2D(histo, histo, 84, -42., 42., 72, 0., 72.) );
166 sprintf (histo,
"emean_vs_ieta_HB%d",
depth );
169 sprintf (histo,
"emean_vs_ieta_M0_HB%d",
depth );
172 sprintf (histo,
"emean_vs_ieta_M3_HB%d",
depth );
176 sprintf (histo,
"emean_vs_ieta_HE%d",
depth );
179 sprintf (histo,
"emean_vs_ieta_M0_HE%d",
depth );
182 sprintf (histo,
"emean_vs_ieta_M3_HE%d",
depth );
186 sprintf (histo,
"emean_vs_ieta_HF%d",
depth );
189 sprintf (histo,
"emean_vs_ieta_HO" );
196 sprintf (histo,
"occupancy_map_HB%d",
depth );
201 sprintf (histo,
"occupancy_map_HE%d",
depth );
205 sprintf (histo,
"occupancy_map_HO" );
209 sprintf (histo,
"occupancy_map_HF%d",
depth );
216 sprintf (histo,
"occupancy_vs_ieta_HB%d",
depth );
221 sprintf (histo,
"occupancy_vs_ieta_HE%d",
depth );
225 sprintf (histo,
"occupancy_vs_ieta_HO" );
229 sprintf (histo,
"occupancy_vs_ieta_HF%d",
depth );
235 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWord_HB" ) ;
238 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWord_HE" ) ;
241 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWord_HF" ) ;
244 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWord_HO" ) ;
248 sprintf (histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HB" ) ;
251 sprintf (histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HE" ) ;
254 sprintf (histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HF" ) ;
257 sprintf (histo,
"HcalRecHitTask_RecHit_Aux_StatusWord_HO" ) ;
263 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWordCorr_HB");
266 sprintf (histo,
"HcalRecHitTask_RecHit_StatusWordCorr_HE");
274 sprintf (histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths");
277 sprintf (histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_E");
280 sprintf (histo,
"HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_EH");
289 sprintf(histo,
"HcalRecHitTask_severityLevel_HB");
292 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_HB" ) ;
295 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M0_HB" ) ;
298 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M3_HB" ) ;
301 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M2vM0_HB" ) ;
304 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M3vM0_HB" ) ;
307 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M3vM2_HB" ) ;
310 sprintf (histo,
"HcalRecHitTask_M2Log10Chi2_of_rechits_HB" ) ;
313 sprintf (histo,
"HcalRecHitTask_timing_HB" ) ;
317 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_Low_HB" ) ;
320 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_HB" ) ;
321 meTE_HB = ibooker.
book2D(histo, histo, 150, -5., 295., 70, -48., 92.);
323 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_High_HB" ) ;
326 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HB" ) ;
329 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_HB" ) ;
332 sprintf (histo,
"HcalRecHitTask_Log10Chi2_vs_energy_profile_HB" ) ;
335 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_High_HB" ) ;
345 sprintf(histo,
"HcalRecHitTask_severityLevel_HE");
348 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_HE" ) ;
351 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M0_HE" ) ;
354 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M3_HE" ) ;
357 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M2vM0_HE" ) ;
360 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M3vM0_HE" ) ;
363 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_M2vM0_HE" ) ;
366 sprintf (histo,
"HcalRecHitTask_M2Log10Chi2_of_rechits_HE" ) ;
369 sprintf (histo,
"HcalRecHitTask_timing_HE" ) ;
372 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_Low_HE" ) ;
375 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_HE" ) ;
376 meTE_HE = ibooker.
book2D(histo, histo, 200, -5., 395., 70, -48., 92.);
378 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HE" ) ;
381 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_HE" ) ;
384 sprintf (histo,
"HcalRecHitTask_Log10Chi2_vs_energy_profile_HE" ) ;
395 sprintf(histo,
"HcalRecHitTask_severityLevel_HO");
398 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_HO" ) ;
401 sprintf (histo,
"HcalRecHitTask_timing_HO" ) ;
404 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_HO" ) ;
405 meTE_HO= ibooker.
book2D(histo, histo, 60, -5., 55., 70, -48., 92.);
407 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_High_HO" ) ;
410 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_HO" ) ;
413 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_High_HO" ) ;
423 sprintf(histo,
"HcalRecHitTask_severityLevel_HF");
426 sprintf (histo,
"HcalRecHitTask_energy_of_rechits_HF" ) ;
429 sprintf (histo,
"HcalRecHitTask_timing_HF" ) ;
432 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_Low_HF" ) ;
435 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_HF" ) ;
436 meTE_HF = ibooker.
book2D(histo, histo, 200, -5., 995., 70, -48., 92.);
438 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_Low_HF" ) ;
441 sprintf (histo,
"HcalRecHitTask_timing_vs_energy_profile_HF" ) ;
460 int nrechitsThresh = 0;
466 double eEcalCone = 0.;
473 double etaHot = 99999.;
474 double phiHot = 99999.;
536 for (; RecHit != RecHitEnd ; ++RecHit) {
538 double en = RecHit->energy();
553 for (; RecHit != RecHitEnd ; ++RecHit) {
555 double en = RecHit->energy();
573 for (
unsigned int i = 0;
i <
cen.size();
i++) {
589 if( depth < 1 )
continue;
595 if( sub ==1 ){ nhb_v[
depth]++; nhb_v[0]++;}
596 if( sub ==2 ){ nhe_v[
depth]++; nhe_v[0]++;}
597 if( sub ==3 ){ nho_v[
depth]++; nho_v[0]++;}
598 if( sub ==4 ){ nhf_v[
depth]++; nhf_v[0]++;}
607 if (ieta2 < 0) ieta2--;
611 emap[depth2-1]->Fill(
double(ieta2),
double(iphi),en);
614 if( depth == 1 || depth == 2 ) {
617 if (ieta1 < 0) ieta1--;
648 unsigned int isw67 = 0;
651 unsigned int sw27 = 27;
652 unsigned int sw13 = 13;
654 uint32_t statadd27 = 0x1<<sw27;
655 uint32_t statadd13 = 0x1<<sw13;
660 if(stwd & statadd27) status27 = 1;
661 if(stwd & statadd13) status13 = 1;
665 }
else if (sub == 2){
670 for (
unsigned int isw = 0; isw < 32; isw++){
671 statadd = 0x1<<(isw);
678 if (isw == 6) isw67 += 1;
679 if (isw == 7) isw67 += 2;
684 for (
unsigned int isw =0; isw < 32; isw++){
685 statadd = 0x1<<(isw);
686 if( auxstwd & statadd ){
698 for(
int depth = 0; depth <=
maxDepthHE_; depth++)
Nhe[depth]->
Fill(
double(nhe_v[depth]));
699 for(
int depth = 0; depth <=
maxDepthHO_; depth++)
Nho[depth]->
Fill(
double(nho_v[depth]));
700 for(
int depth = 0; depth <=
maxDepthHF_; depth++)
Nhf[depth]->
Fill(
double(nhf_v[depth]));
708 double clusEta = 999.;
709 double clusPhi = 999.;
712 double HcalCone = 0.;
724 for (
unsigned int i = 0;
i <
cen.size();
i++) {
735 double rhot =
dR(etaHot, phiHot, eta, phi);
736 if(rhot < partR && en > 1.) {
737 clusEta = (clusEta * clusEn + eta * en)/(clusEn + en);
738 clusPhi =
phi12(clusPhi, clusEn, phi, en);
745 if(en > 1. ) nrechitsThresh++;
850 if( subdet_ == 1 || subdet_ == 2 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
860 double eta = cellGeometry->getPosition(cell).eta () ;
861 double phi = cellGeometry->getPosition(cell).phi () ;
862 double zc = cellGeometry->getPosition(cell).z ();
863 int sub = cell.subdet();
864 int depth = cell.depth();
865 int inteta = cell.ieta();
866 int intphi = cell.iphi();
867 double en =
j->energy();
868 double enM0 =
j->eraw();
869 double enM3 =
j->eaux();
870 double chi2 =
j->chi2();
871 double t =
j->time();
872 int stwd =
j->flags();
873 int auxstwd =
j->aux();
882 if((
iz > 0 && eta > 0.) || (
iz < 0 && eta <0.) ||
iz == 0) {
886 cenM0.push_back(enM0);
887 cenM3.push_back(enM3);
888 cchi2.push_back(chi2);
892 cieta.push_back(inteta);
893 ciphi.push_back(intphi);
896 cstwd.push_back(stwd);
903 if( subdet_ == 4 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
912 geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ;
913 double eta = cellGeometry->getPosition().eta () ;
914 double phi = cellGeometry->getPosition().phi () ;
915 double zc = cellGeometry->getPosition().z ();
916 int sub = cell.subdet();
917 int depth = cell.depth();
918 int inteta = cell.ieta();
919 int intphi = cell.iphi();
920 double en =
j->energy();
924 double t =
j->time();
925 int stwd =
j->flags();
926 int auxstwd =
j->aux();
933 if((
iz > 0 && eta > 0.) || (
iz < 0 && eta <0.) ||
iz == 0) {
937 cenM0.push_back(enM0);
938 cenM3.push_back(enM3);
939 cchi2.push_back(chi2);
943 cieta.push_back(inteta);
944 ciphi.push_back(intphi);
947 cstwd.push_back(stwd);
954 if( subdet_ == 3 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
962 geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ;
963 double eta = cellGeometry->getPosition().eta () ;
964 double phi = cellGeometry->getPosition().phi () ;
965 double zc = cellGeometry->getPosition().z ();
966 int sub = cell.subdet();
967 int depth = cell.depth();
968 int inteta = cell.ieta();
969 int intphi = cell.iphi();
970 double t =
j->time();
971 double en =
j->energy();
975 int stwd =
j->flags();
976 int auxstwd =
j->aux();
983 if((
iz > 0 && eta > 0.) || (
iz < 0 && eta <0.) ||
iz == 0) {
986 cenM0.push_back(enM0);
987 cenM3.push_back(enM3);
988 cchi2.push_back(chi2);
992 cieta.push_back(inteta);
993 ciphi.push_back(intphi);
996 cstwd.push_back(stwd);
1004 double PI = 3.1415926535898;
1005 double deltaphi= phi1 - phi2;
1006 if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
1007 if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
1008 double deltaeta = eta2 - eta1;
1009 double tmp =
sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
1017 double PI = 3.1415926535898;
1018 double a1 = phi1;
double a2 = phi2;
1020 if( a1 > 0.5*PI && a2 < 0.) a2 += 2*
PI;
1021 if( a2 > 0.5*PI && a1 < 0.) a1 += 2*
PI;
1022 tmp = (a1 * en1 + a2 * en2)/(en1 + en2);
1023 if(tmp > PI) tmp -= 2.*
PI;
1033 double PI = 3.1415926535898;
1034 double a1 = phi1;
double a2 = phi2;
1035 double tmp = a2 - a1;
1037 if(a1 > 0.5 * PI) tmp += 2.*
PI;
1038 if(a2 > 0.5 * PI) tmp -= 2.*
PI;
1051 const uint32_t recHitFlag = hit->
flags();
int getNPhi(const int type) const
std::string hcalselector_
MonitorElement * sevLvl_HF
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
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
MonitorElement * sevLvl_HE
MonitorElement * RecHit_Aux_StatusWord_HO
MonitorElement * bookProfile(Args &&...args)
unsigned int getHxSize(const int type) const
double dPhiWsign(double phi1, double phi2)
const DetId & detid() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * meTE_Low_HE
#define DEFINE_FWK_MODULE(type)
std::vector< MonitorElement * > Nhb
MonitorElement * meRecHitsEnergyHEM3
std::vector< int > cdepth
const HcalTopology * theHcalTopology
int hcalSevLvl(const CaloRecHit *hit)
std::vector< EcalRecHit >::const_iterator const_iterator
std::vector< int > hcalHBSevLvlVec
std::vector< MonitorElement * > emap
MonitorElement * occupancy_map_HO
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< MonitorElement * > emean_vs_ieta_HBM3
std::vector< double > ceta
edm::EDGetTokenT< EBRecHitCollection > tok_EB_
MonitorElement * meEnConeEtaProfile_EH
std::vector< MonitorElement * > emean_vs_ieta_HBM0
std::vector< MonitorElement * > emean_vs_ieta_HF
std::vector< int > hcalHESevLvlVec
double phi12(double phi1, double en1, double phi2, double en2)
MonitorElement * meRecHitsEnergyM3vM0HE
MonitorElement * meTE_Low_HB
MonitorElement * meTEprofileHF_Low
const HcalSeverityLevelComputer * theHcalSevLvlComputer
MonitorElement * meRecHitsEnergyM2vM0HB
MonitorElement * sevLvl_HO
virtual void fillRecHitsTmp(int subdet_, edm::Event const &ev)
int getMaxDepth(const int type) const
std::vector< MonitorElement * > Nhe
std::vector< MonitorElement * > emean_vs_ieta_HEM0
MonitorElement * meRecHitsEnergyM2vM0HE
std::vector< MonitorElement * > occupancy_vs_ieta_HF
const HcalChannelQuality * theHcalChStatus
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * meEnConeEtaProfile_E
MonitorElement * meTEprofileHO
std::string ecalselector_
MonitorElement * meTEprofileHB
edm::EDGetTokenT< HORecHitCollection > tok_ho_
std::vector< double > cchi2
MonitorElement * meLog10Chi2profileHE
MonitorElement * book1D(Args &&...args)
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
MonitorElement * emean_vs_ieta_HO
MonitorElement * sevLvl_HB
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< MonitorElement * > occupancy_vs_ieta_HB
const_iterator end() const
MonitorElement * meTimeHE
MonitorElement * meTimeHO
MonitorElement * meRecHitsEnergyHF
std::vector< MonitorElement * > emean_vs_ieta_HB
std::vector< double > cenM3
HcalRecHitsAnalyzer(edm::ParameterSet const &conf)
MonitorElement * meEnConeEtaProfile
MonitorElement * meTEprofileHE
void setCurrentFolder(const std::string &fullpath)
std::vector< uint32_t > cstwd
std::vector< MonitorElement * > Nho
std::vector< MonitorElement * > occupancy_map_HE
T const * product() const
MonitorElement * book2D(Args &&...args)
MonitorElement * RecHit_Aux_StatusWord_HB
virtual void analyze(edm::Event const &ev, edm::EventSetup const &c) override
virtual void dqmBeginRun(const edm::Run &run, const edm::EventSetup &c) override
MonitorElement * meRecHitsEnergyM3vM2HB
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
MonitorElement * meLog10Chi2profileHB
std::pair< int, int > getEtaRange(const int i) const
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< std::vector< double > > tmp
MonitorElement * meTE_High_HB
std::vector< int > hcalHFSevLvlVec
MonitorElement * RecHit_StatusWord_HB
MonitorElement * meTEprofileHO_High
std::vector< MonitorElement * > emean_vs_ieta_HEM3
const HcalDDDRecConstants * hcons
MonitorElement * meTEprofileHB_Low
edm::EDGetTokenT< EERecHitCollection > tok_EE_
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
std::vector< MonitorElement * > occupancy_map_HF
MonitorElement * meTimeHB
std::vector< MonitorElement * > occupancy_map_HB
MonitorElement * meTEprofileHF
MonitorElement * RecHit_Aux_StatusWord_HF
MonitorElement * RecHit_Aux_StatusWord_HE
uint32_t getValue() const
bool withSpecialRBXHBHE() const
T const * product() const
MonitorElement * RecHit_StatusWordCorr_HB
std::vector< MonitorElement * > Nhf
std::vector< MonitorElement * > occupancy_vs_ieta_HE
edm::ESHandle< CaloGeometry > geometry
const_iterator begin() const
std::vector< MonitorElement * > emean_vs_ieta_HE
MonitorElement * meRecHitsEnergyHE
MonitorElement * meTE_Low_HF