File indexing completed on 2024-04-06 12:18:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <memory>
0015
0016
0017 #include "FWCore/Framework/interface/Frameworkfwd.h"
0018 #include "FWCore/Framework/interface/stream/EDFilter.h"
0019 #include "FWCore/Framework/interface/Event.h"
0020 #include "FWCore/Framework/interface/EventSetup.h"
0021 #include "FWCore/Framework/interface/ESHandle.h"
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023 #include "DataFormats/Common/interface/Handle.h"
0024
0025 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0026 #include "FWCore/Utilities/interface/InputTag.h"
0027
0028 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
0029 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0030
0031
0032 #include "Geometry/Records/interface/CaloTopologyRecord.h"
0033 #include "Geometry/CaloTopology/interface/CaloTopology.h"
0034 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
0035 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0036 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
0037 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0038 #include "Geometry/CaloTopology/interface/EcalEndcapTopology.h"
0039 #include "Geometry/CaloTopology/interface/EcalBarrelTopology.h"
0040 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0041
0042 #include "DataFormats/EcalDetId/interface/EBDetId.h"
0043 #include "DataFormats/EcalDetId/interface/EEDetId.h"
0044 #include "DataFormats/DetId/interface/DetId.h"
0045
0046 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
0047 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
0048 #include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h"
0049
0050
0051 #include "DataFormats/EgammaReco/interface/PreshowerCluster.h"
0052 #include "RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h"
0053 #include "Geometry/EcalAlgo/interface/EcalPreshowerGeometry.h"
0054 #include "Geometry/CaloTopology/interface/EcalPreshowerTopology.h"
0055 #include "DataFormats/EgammaReco/interface/PreshowerClusterFwd.h"
0056
0057
0058 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
0059 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
0060
0061 #include <algorithm>
0062 #include <utility>
0063 #include <vector>
0064
0065 namespace edm {
0066 class ConfigurationDescriptions;
0067 }
0068
0069 class HLTRegionalEcalResonanceFilter : public edm::stream::EDFilter<> {
0070 public:
0071 explicit HLTRegionalEcalResonanceFilter(const edm::ParameterSet &);
0072 ~HLTRegionalEcalResonanceFilter() override;
0073
0074 bool filter(edm::Event &, const edm::EventSetup &) override;
0075 static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0076
0077 private:
0078
0079 void doSelection(int detector,
0080 const reco::BasicClusterCollection *clusterCollection,
0081 const EcalRecHitCollection *hitCollection,
0082 const EcalChannelStatus &channelStatus,
0083 const CaloSubdetectorTopology *topology_p,
0084 std::map<int, std::vector<EcalRecHit> > &RecHits5x5_clus,
0085 std::vector<int> &indCandClus,
0086 std::vector<int> &indIsoClus,
0087 std::vector<int> &indClusSelected
0088 );
0089
0090 void makeClusterES(
0091 float x, float y, float z, const CaloSubdetectorGeometry *iSubGeom, const CaloSubdetectorTopology *topology_p);
0092
0093 void calcPaircluster(const reco::BasicCluster &bc1,
0094 const reco::BasicCluster &bc2,
0095 float &mpair,
0096 float &ptpair,
0097 float &etapair,
0098 float &phipair);
0099
0100 bool checkStatusOfEcalRecHit(const EcalChannelStatus &channelStatus, const EcalRecHit &rh);
0101
0102 void calcShowerShape(const reco::BasicCluster &bc,
0103 const EcalChannelStatus &channelStatus,
0104 const EcalRecHitCollection *recHits,
0105 const CaloSubdetectorTopology *topology_p,
0106 bool calc5x5,
0107 std::vector<EcalRecHit> &rechit5x5,
0108 float res[]);
0109
0110 void convxtalid(int &, int &);
0111 int diff_neta_s(int, int);
0112 int diff_nphi_s(int, int);
0113
0114 edm::ESGetToken<CaloTopology, CaloTopologyRecord> const caloTopologyRecordToken_;
0115 edm::ESGetToken<EcalChannelStatus, EcalChannelStatusRcd> const ecalChannelStatusRcdToken_;
0116 edm::ESGetToken<CaloGeometry, CaloGeometryRecord> const caloGeometryRecordToken_;
0117
0118
0119 edm::InputTag barrelHits_;
0120 edm::InputTag endcapHits_;
0121 edm::InputTag barrelClusters_;
0122 edm::InputTag endcapClusters_;
0123
0124 edm::EDGetTokenT<EBRecHitCollection> barrelHitsToken_;
0125 edm::EDGetTokenT<EERecHitCollection> endcapHitsToken_;
0126 edm::EDGetTokenT<ESRecHitCollection> preshHitsToken_;
0127 edm::EDGetTokenT<reco::BasicClusterCollection> barrelClustersToken_;
0128 edm::EDGetTokenT<reco::BasicClusterCollection> endcapClustersToken_;
0129
0130
0131 std::string BarrelHits_;
0132 std::string EndcapHits_;
0133 std::string ESHits_;
0134
0135
0136 bool doSelBarrel_;
0137
0138
0139 double region1_Barrel_;
0140 double selePtGammaBarrel_region1_;
0141 double selePtPairBarrel_region1_;
0142 double seleS4S9GammaBarrel_region1_;
0143 double seleIsoBarrel_region1_;
0144 double seleNxtalBarrel_region1_;
0145
0146
0147 double selePtGammaBarrel_region2_;
0148 double selePtPairBarrel_region2_;
0149 double seleS4S9GammaBarrel_region2_;
0150 double seleIsoBarrel_region2_;
0151 double seleNxtalBarrel_region2_;
0152
0153 double seleMinvMaxBarrel_;
0154 double seleMinvMinBarrel_;
0155
0156
0157
0158
0159
0160 double seleS9S25Gamma_;
0161
0162
0163 double seleBeltDR_;
0164 double seleBeltDeta_;
0165 double ptMinForIsolation_;
0166
0167 bool removePi0CandidatesForEta_;
0168 double massLowPi0Cand_;
0169 double massHighPi0Cand_;
0170 bool store5x5RecHitEB_;
0171
0172 bool doSelEndcap_;
0173
0174
0175 double region1_EndCap_;
0176 double selePtGammaEndCap_region1_;
0177 double selePtPairEndCap_region1_;
0178 double seleS4S9GammaEndCap_region1_;
0179 double seleIsoEndCap_region1_;
0180 double seleNxtalEndCap_region1_;
0181
0182
0183 double region2_EndCap_;
0184 double selePtGammaEndCap_region2_;
0185 double selePtPairEndCap_region2_;
0186 double seleS4S9GammaEndCap_region2_;
0187 double seleIsoEndCap_region2_;
0188 double seleNxtalEndCap_region2_;
0189
0190
0191 double selePtGammaEndCap_region3_;
0192 double selePtPairEndCap_region3_;
0193 double selePtPairMaxEndCap_region3_;
0194 double seleS4S9GammaEndCap_region3_;
0195 double seleIsoEndCap_region3_;
0196 double seleNxtalEndCap_region3_;
0197
0198 double seleMinvMaxEndCap_;
0199 double seleMinvMinEndCap_;
0200
0201
0202
0203 double seleS9S25GammaEndCap_;
0204
0205
0206 double seleBeltDREndCap_;
0207 double seleBeltDetaEndCap_;
0208 double ptMinForIsolationEndCap_;
0209 bool store5x5RecHitEE_;
0210
0211 bool useRecoFlag_;
0212 bool useDBStatus_;
0213 int flagLevelRecHitsToUse_;
0214 int statusLevelRecHitsToUse_;
0215
0216 bool storeRecHitES_;
0217 edm::InputTag preshHitProducer_;
0218 int preshNclust_;
0219 float preshClustECut;
0220 double etThresh_;
0221 double calib_planeX_;
0222 double calib_planeY_;
0223 double mip_;
0224 double gamma_;
0225
0226 PreshowerClusterAlgo *presh_algo_;
0227
0228 std::map<DetId, EcalRecHit> m_esrechit_map;
0229 std::set<DetId> m_used_strips;
0230
0231 int debug_;
0232 };