CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h

Go to the documentation of this file.
00001 #ifndef RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h
00002 #define RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h
00003 //
00004 // $Id: PreshowerClusterAlgo.h,v 1.13 2011/07/18 18:48:11 argiro Exp $
00005 //
00006 
00007 //#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
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 // C/C++ headers
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    // The map of hits
00065    RecHitsMap *rechits_map;
00066 
00067    // The set of used DetID's
00068    HitsID *used_s;
00069 
00070 };
00071 #endif
00072