00001 #ifndef RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h
00002 #define RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h
00003
00004
00005
00006
00007
00008 #include "DataFormats/EgammaReco/interface/PreshowerCluster.h"
00009 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
00010 #include "DataFormats/Math/interface/Point3D.h"
00011 #include "DataFormats/EcalDetId/interface/ESDetId.h"
00012 #include "DataFormats/DetId/interface/DetId.h"
00013 #include "RecoCaloTools/Navigation/interface/EcalPreshowerNavigator.h"
00014
00015
00016 #include <string>
00017 #include <vector>
00018 #include <set>
00019
00020 class CaloSubdetectorGeometry;
00021 class CaloSubdetectorTopology;
00022
00023
00024 class PreshowerClusterAlgo {
00025
00026
00027 public:
00028
00029 enum DebugLevel { pDEBUG = 0, pINFO = 1, pERROR = 2 };
00030
00031 typedef math::XYZPoint Point;
00032
00033 typedef std::map<DetId, EcalRecHit> RecHitsMap;
00034 typedef std::set<DetId> HitsID;
00035
00036 PreshowerClusterAlgo() :
00037 preshStripEnergyCut_(0.), preshClusterEnergyCut_(0.), preshSeededNstr_(15), debugLevel_(pINFO)
00038 {}
00039
00040 PreshowerClusterAlgo(double stripEnergyCut, double clusterEnergyCut, int nStripCut, DebugLevel debugLevel = pINFO) :
00041 preshStripEnergyCut_(stripEnergyCut), preshClusterEnergyCut_(clusterEnergyCut), preshSeededNstr_(nStripCut), debugLevel_(debugLevel)
00042 {}
00043
00044 ~PreshowerClusterAlgo() {};
00045
00046 reco::PreshowerCluster makeOneCluster(ESDetId strip,
00047 HitsID *used_strips,
00048 RecHitsMap *rechits_map,
00049 const CaloSubdetectorGeometry*& geometry_p,
00050 CaloSubdetectorTopology*& topology_p);
00051
00052 bool goodStrip(RecHitsMap::iterator candidate_it);
00053
00054 void findRoad(ESDetId strip, EcalPreshowerNavigator theESNav, int plane);
00055
00056 private:
00057
00058 double preshStripEnergyCut_;
00059 double preshClusterEnergyCut_;
00060 int preshSeededNstr_;
00061 int debugLevel_;
00062
00063 std::vector<ESDetId> road_2d;
00064
00065
00066 RecHitsMap *rechits_map;
00067
00068
00069 HitsID *used_s;
00070
00071 };
00072 #endif
00073