Go to the documentation of this file.00001 #ifndef RecoEcal_EgammaClusterAlgos_Multi5x5BremRecoveryClusterAlgo_h_
00002 #define RecoEcal_EgammaClusterAlgos_Multi5x5BremRecoveryClusterAlgo_h_
00003
00004 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00005 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00006 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00007 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00008 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00009 #include "RecoEcal/EgammaCoreTools/interface/BremRecoveryPhiRoadAlgo.h"
00010
00011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00012
00013 #include <vector>
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 class Multi5x5BremRecoveryClusterAlgo
00025 {
00026 public:
00027
00028 enum VerbosityLevel { pDEBUG = 0, pWARNING = 1, pINFO = 2, pERROR = 3 };
00029
00030 Multi5x5BremRecoveryClusterAlgo(const edm::ParameterSet &bremRecoveryPset,
00031 double eb_sc_road_etasize = 0.06,
00032 double eb_sc_road_phisize = 0.80,
00033 double ec_sc_road_etasize = 0.14,
00034 double ec_sc_road_phisize = 0.40,
00035 bool dynamicPhiRoad = true,
00036 double theSeedTransverseEnergyThreshold = 0.40,
00037 VerbosityLevel the_verbosity = pERROR
00038 )
00039 {
00040
00041
00042 eb_rdeta_ = eb_sc_road_etasize / 2;
00043 eb_rdphi_ = eb_sc_road_phisize / 2;
00044 ec_rdeta_ = ec_sc_road_etasize / 2;
00045 ec_rdphi_ = ec_sc_road_phisize / 2;
00046
00047 seedTransverseEnergyThreshold = theSeedTransverseEnergyThreshold;
00048 dynamicPhiRoad_ = dynamicPhiRoad;
00049 if (dynamicPhiRoad_) phiRoadAlgo_ = new BremRecoveryPhiRoadAlgo(bremRecoveryPset);
00050
00051 verbosity = the_verbosity;
00052 }
00053
00054
00055 ~Multi5x5BremRecoveryClusterAlgo()
00056 {
00057 if (dynamicPhiRoad_) delete phiRoadAlgo_;
00058 }
00059
00060 void setVerbosity(VerbosityLevel the_verbosity)
00061 {
00062 verbosity = the_verbosity;
00063 }
00064
00065
00066 reco::SuperClusterCollection makeSuperClusters(reco::CaloClusterPtrVector & clusters);
00067
00068 private:
00069
00070
00071 void makeIslandSuperClusters(reco::CaloClusterPtrVector &clusters_v,
00072 double etaRoad, double phiRoad);
00073
00074
00075 bool match(reco::CaloClusterPtr seed_p,
00076 reco::CaloClusterPtr cluster_p,
00077 double etaRoad, double phiRoad);
00078
00079
00080
00081 VerbosityLevel verbosity;
00082
00083 double eb_rdeta_;
00084 double eb_rdphi_;
00085 double ec_rdeta_;
00086 double ec_rdphi_;
00087
00088 double seedTransverseEnergyThreshold;
00089 bool dynamicPhiRoad_;
00090 BremRecoveryPhiRoadAlgo *phiRoadAlgo_;
00091
00092 reco::SuperClusterCollection superclusters_v;
00093
00094 };
00095
00096 #endif