Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:51

0001 #ifndef RECOLOCALCALO_HFCLUSTERPRODUCER_HFCLUSTERALGO_H
0002 #define RECOLOCALCALO_HFCLUSTERPRODUCER_HFCLUSTERALGO_H 1
0003 
0004 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
0005 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0006 #include "DataFormats/EgammaReco/interface/HFEMClusterShape.h"
0007 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
0008 #include "DataFormats/EgammaReco/interface/HFEMClusterShapeAssociation.h"
0009 #include "DataFormats/EgammaReco/interface/HFEMClusterShape.h"
0010 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
0011 
0012 /** \class HFClusterAlgo
0013  
0014   * \author K. Klapoetke -- Minnesota
0015   */
0016 //$Id:HFClusterAlgo.h,v 1.2 2007/09/19 09:52 K. Klapoetke Minnesota
0017 
0018 class HFClusterAlgo {
0019 public:
0020   HFClusterAlgo();
0021 
0022   void setup(double minTowerEnergy,
0023              double seedThreshold,
0024              double maximumSL,
0025              double m_maximumRenergy,
0026              bool usePMTflag,
0027              bool usePulseflag,
0028              bool forcePulseFlagMC,
0029              int correctionSet);
0030 
0031   void isMC(bool isMC) { m_isMC = isMC; }
0032 
0033   /** Analyze the hits */
0034   void clusterize(const HFRecHitCollection& hf,
0035                   const CaloGeometry& geom,
0036                   reco::HFEMClusterShapeCollection& clusters,
0037                   reco::SuperClusterCollection& SuperClusters);
0038 
0039   void resetForRun();
0040 
0041 private:
0042   friend class CompareHFCompleteHitET;
0043   friend class CompareHFCore;
0044 
0045   double m_minTowerEnergy, m_seedThreshold, m_maximumSL, m_maximumRenergy;
0046   bool m_usePMTFlag;
0047   bool m_usePulseFlag, m_forcePulseFlagMC;
0048   bool m_isMC;
0049   int m_correctionSet;
0050   std::vector<double> m_cutByEta;
0051   std::vector<double> m_correctionByEta;
0052   std::vector<double> m_seedmnEta;
0053   std::vector<double> m_seedMXeta;
0054   std::vector<double> m_seedmnPhi;
0055   std::vector<double> m_seedMXphi;
0056   struct HFCompleteHit {
0057     HcalDetId id;
0058     double energy, et;
0059   };
0060   bool isPMTHit(const HFRecHit& hfr);
0061   bool makeCluster(const HcalDetId& seedid,
0062                    const HFRecHitCollection& hf,
0063                    const CaloGeometry* geom,
0064                    reco::HFEMClusterShape& clusShp,
0065                    reco::SuperCluster& SClus);
0066 };
0067 
0068 #endif