Go to the documentation of this file.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
00030 typedef math::XYZPoint Point;
00031
00032 typedef std::map<DetId, EcalRecHit> RecHitsMap;
00033 typedef std::set<DetId> HitsID;
00034
00035 PreshowerClusterAlgo() :
00036 preshStripEnergyCut_(0.), preshClusterEnergyCut_(0.), preshSeededNstr_(15)
00037 {}
00038
00039 PreshowerClusterAlgo(double stripEnergyCut, double clusterEnergyCut, int nStripCut) :
00040 preshStripEnergyCut_(stripEnergyCut), preshClusterEnergyCut_(clusterEnergyCut), preshSeededNstr_(nStripCut)
00041 {}
00042
00043 ~PreshowerClusterAlgo() {};
00044
00045 reco::PreshowerCluster makeOneCluster(ESDetId strip,
00046 HitsID *used_strips,
00047 RecHitsMap *rechits_map,
00048 const CaloSubdetectorGeometry*& geometry_p,
00049 CaloSubdetectorTopology*& topology_p);
00050
00051 bool goodStrip(RecHitsMap::iterator candidate_it);
00052
00053 void findRoad(ESDetId strip, EcalPreshowerNavigator theESNav, int plane);
00054
00055 private:
00056
00057 double preshStripEnergyCut_;
00058 double preshClusterEnergyCut_;
00059 int preshSeededNstr_;
00060
00061
00062 std::vector<ESDetId> road_2d;
00063
00064
00065 RecHitsMap *rechits_map;
00066
00067
00068 HitsID *used_s;
00069
00070 };
00071 #endif
00072