File indexing completed on 2024-09-11 04:32:44
0001
0002
0003
0004
0005
0006
0007
0008 #include <cmath>
0009 #include <iostream>
0010 #include <memory>
0011
0012
0013 #include "DQMOffline/Ecal/interface/ESRecoSummary.h"
0014
0015 #include "FWCore/Framework/interface/Frameworkfwd.h"
0016
0017 #include "FWCore/Framework/interface/Event.h"
0018 #include "FWCore/Framework/interface/MakerMacros.h"
0019
0020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0021
0022 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0023 #include "Geometry/Records/interface/CaloTopologyRecord.h"
0024 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0025 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0026 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
0027 #include "Geometry/CaloTopology/interface/CaloTopology.h"
0028
0029 #include "DataFormats/EcalDetId/interface/ESDetId.h"
0030 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
0031 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
0032 #include "DataFormats/EgammaReco/interface/PreshowerCluster.h"
0033 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
0034 #include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h"
0035 #include "RecoEcal/EgammaCoreTools/interface/EcalTools.h"
0036 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalCleaningAlgo.h"
0037 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
0038
0039
0040
0041
0042 ESRecoSummary::ESRecoSummary(const edm::ParameterSet &ps) {
0043 prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
0044
0045
0046 esRecHitCollection_ = consumes<ESRecHitCollection>(ps.getParameter<edm::InputTag>("recHitCollection_ES"));
0047 esClusterCollectionX_ =
0048 consumes<reco::PreshowerClusterCollection>(ps.getParameter<edm::InputTag>("ClusterCollectionX_ES"));
0049 esClusterCollectionY_ =
0050 consumes<reco::PreshowerClusterCollection>(ps.getParameter<edm::InputTag>("ClusterCollectionY_ES"));
0051
0052 superClusterCollection_EE_ =
0053 consumes<reco::SuperClusterCollection>(ps.getParameter<edm::InputTag>("superClusterCollection_EE"));
0054 }
0055
0056 void ESRecoSummary::bookHistograms(DQMStore::IBooker &iBooker, edm::Run const &, edm::EventSetup const &) {
0057
0058 iBooker.setCurrentFolder(prefixME_ + "/ESRecoSummary");
0059
0060
0061 h_recHits_ES_energyMax = iBooker.book1D("recHits_ES_energyMax", "recHits_ES_energyMax", 200, 0., 0.01);
0062 h_recHits_ES_time = iBooker.book1D("recHits_ES_time", "recHits_ES_time", 200, -100., 100.);
0063
0064 h_esClusters_energy_plane1 = iBooker.book1D("esClusters_energy_plane1", "esClusters_energy_plane1", 200, 0., 0.01);
0065 h_esClusters_energy_plane2 = iBooker.book1D("esClusters_energy_plane2", "esClusters_energy_plane2", 200, 0., 0.01);
0066 h_esClusters_energy_ratio = iBooker.book1D("esClusters_energy_ratio", "esClusters_energy_ratio", 200, 0., 20.);
0067 }
0068
0069
0070
0071
0072
0073
0074 void ESRecoSummary::analyze(const edm::Event &ev, const edm::EventSetup &) {
0075
0076 edm::Handle<ESRecHitCollection> recHitsES;
0077 ev.getByToken(esRecHitCollection_, recHitsES);
0078 const ESRecHitCollection *thePreShowerRecHits = recHitsES.product();
0079
0080 if (!recHitsES.isValid()) {
0081 std::cerr << "ESRecoSummary::analyze --> recHitsES not found" << std::endl;
0082 }
0083
0084 float maxRecHitEnergyES = -999.;
0085
0086 for (ESRecHitCollection::const_iterator esItr = thePreShowerRecHits->begin(); esItr != thePreShowerRecHits->end();
0087 ++esItr) {
0088 h_recHits_ES_time->Fill(esItr->time());
0089 if (esItr->energy() > maxRecHitEnergyES)
0090 maxRecHitEnergyES = esItr->energy();
0091
0092 }
0093
0094 h_recHits_ES_energyMax->Fill(maxRecHitEnergyES);
0095
0096
0097 edm::Handle<reco::PreshowerClusterCollection> esClustersX;
0098 ev.getByToken(esClusterCollectionX_, esClustersX);
0099 const reco::PreshowerClusterCollection *ESclustersX = esClustersX.product();
0100
0101
0102 edm::Handle<reco::PreshowerClusterCollection> esClustersY;
0103 ev.getByToken(esClusterCollectionY_, esClustersY);
0104 const reco::PreshowerClusterCollection *ESclustersY = esClustersY.product();
0105
0106
0107 edm::Handle<reco::SuperClusterCollection> superClusters_EE_h;
0108 ev.getByToken(superClusterCollection_EE_, superClusters_EE_h);
0109 const reco::SuperClusterCollection *theEndcapSuperClusters = superClusters_EE_h.product();
0110 if (!superClusters_EE_h.isValid()) {
0111 std::cerr << "EcalRecHitSummary::analyze --> superClusters_EE_h not found" << std::endl;
0112 }
0113
0114
0115 for (reco::SuperClusterCollection::const_iterator itSC = theEndcapSuperClusters->begin();
0116 itSC != theEndcapSuperClusters->end();
0117 ++itSC) {
0118 if (fabs(itSC->eta()) < 1.65 || fabs(itSC->eta()) > 2.6)
0119 continue;
0120
0121 float ESenergyPlane1 = 0.;
0122 float ESenergyPlane2 = 0.;
0123
0124
0125 for (reco::CaloCluster_iterator ecalBasicCluster = itSC->clustersBegin(); ecalBasicCluster != itSC->clustersEnd();
0126 ecalBasicCluster++) {
0127 const reco::CaloClusterPtr ecalBasicClusterPtr = *(ecalBasicCluster);
0128
0129 for (reco::PreshowerClusterCollection::const_iterator iESClus = ESclustersX->begin();
0130 iESClus != ESclustersX->end();
0131 ++iESClus) {
0132 const reco::CaloClusterPtr preshBasicCluster = iESClus->basicCluster();
0133 const reco::PreshowerCluster *esCluster = &*iESClus;
0134 if (preshBasicCluster == ecalBasicClusterPtr) {
0135 ESenergyPlane1 += esCluster->energy();
0136 }
0137 }
0138
0139 for (reco::PreshowerClusterCollection::const_iterator iESClus = ESclustersY->begin();
0140 iESClus != ESclustersY->end();
0141 ++iESClus) {
0142 const reco::CaloClusterPtr preshBasicCluster = iESClus->basicCluster();
0143 const reco::PreshowerCluster *esCluster = &*iESClus;
0144 if (preshBasicCluster == ecalBasicClusterPtr) {
0145 ESenergyPlane2 += esCluster->energy();
0146 }
0147 }
0148 }
0149
0150
0151 h_esClusters_energy_plane1->Fill(ESenergyPlane1);
0152 h_esClusters_energy_plane2->Fill(ESenergyPlane2);
0153 if (ESenergyPlane1 > 0 && ESenergyPlane2 > 0)
0154 h_esClusters_energy_ratio->Fill(ESenergyPlane1 / ESenergyPlane2);
0155
0156 }
0157 }
0158
0159
0160 DEFINE_FWK_MODULE(ESRecoSummary);