CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoEgamma/EgammaHFProducers/plugins/HFClusterAlgo.h

Go to the documentation of this file.
00001 #ifndef RECOLOCALCALO_HFCLUSTERPRODUCER_HFCLUSTERALGO_H
00002 #define RECOLOCALCALO_HFCLUSTERPRODUCER_HFCLUSTERALGO_H 1
00003 
00004 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
00005 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00006 #include "DataFormats/EgammaReco/interface/HFEMClusterShape.h"
00007 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00008 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00009 #include "DataFormats/EgammaReco/interface/HFEMClusterShapeAssociation.h"
00010 #include "DataFormats/EgammaReco/interface/HFEMClusterShape.h"
00011 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00012 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00013 #include <map>
00014 #include <list>
00015 
00020 //$Id:HFClusterAlgo.h,v 1.2 2007/09/19 09:52 K. Klapoetke Minnesota
00021 
00022 class HFClusterAlgo {
00023  public:
00024   HFClusterAlgo(); 
00025 
00026   void setup(double minTowerEnergy, double seedThreshold,double maximumSL,double m_maximumRenergy,bool usePMTflag,bool usePulseflag, bool forcePulseFlagMC, int correctionSet);
00027 
00028   void isMC(bool isMC) { m_isMC=isMC; }
00029 
00031   void clusterize(const HFRecHitCollection& hf, 
00032                   const CaloGeometry& geom,
00033                   reco::HFEMClusterShapeCollection& clusters,
00034                   reco::SuperClusterCollection& SuperClusters);
00035   
00036 
00037   void resetForRun();
00038 
00039  private:
00040   friend class CompareHFCompleteHitET;
00041   friend class CompareHFCore;
00042  
00043   double m_minTowerEnergy, m_seedThreshold,m_maximumSL,m_maximumRenergy;
00044   bool m_usePMTFlag;
00045   bool m_usePulseFlag,m_forcePulseFlagMC;
00046   bool m_isMC;
00047   int m_correctionSet;
00048   std::vector<double> m_cutByEta;
00049   std::vector<double> m_correctionByEta;
00050   std::vector<double> m_seedmnEta;
00051   std::vector<double> m_seedMXeta;
00052   std::vector<double> m_seedmnPhi;
00053   std::vector<double> m_seedMXphi;
00054   struct HFCompleteHit {
00055     HcalDetId id;
00056     double energy, et;
00057   };
00058   bool isPMTHit(const HFRecHit& hfr);
00059   bool makeCluster(const HcalDetId& seedid,
00060                    const HFRecHitCollection& hf, 
00061                    const CaloGeometry& geom,
00062                    reco::HFEMClusterShape& clusShp,
00063                    reco::SuperCluster& SClus);
00064 };
00065 
00066 #endif