CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFECALSuperClusterAlgo.h
Go to the documentation of this file.
1 #ifndef RecoEcal_EgammaClusterAlgos_PFECALSuperClusterAlgo_h
2 #define RecoEcal_EgammaClusterAlgos_PFECALSuperClusterAlgo_h
3 
4 
11 
16 
18 
19 #include "TVector2.h"
20 
21 #include <string>
22 #include <vector>
23 #include <unordered_map>
24 #include <set>
25 
26 #include <memory>
27 
28 class TFile;
29 class TH2F;
30 
32 
38 // hash function for edm::Ptr<reco::PFCluster
39 namespace std {
40  template <> struct hash<edm::Ptr<reco::PFCluster> > {
41  size_t operator()(const edm::Ptr<reco::PFCluster> & x) const {
42  return hash<ptrdiff_t>()((ptrdiff_t)x.get());
43  }
44  };
45 }
46 
48  public:
50 
51  // simple class for associating calibrated energies
53  public:
55  const double ce) : cluptr(p), calib_e(ce) {}
56 
57  double energy() const { return calib_e; }
58  double energy_nocalib() const { return cluptr->energy(); }
59  double eta() const { return cluptr->positionREP().eta(); }
60  double phi() const { return cluptr->positionREP().phi(); }
61 
62  void resetCalibratedEnergy(const double ce) { calib_e = ce; }
63 
65 
66  private:
68  double calib_e;
69  };
70  typedef std::shared_ptr<CalibratedPFCluster> CalibratedClusterPtr;
71  typedef std::vector<CalibratedClusterPtr> CalibratedClusterPtrVector;
72 
73 
76 
78 
79  void setClusteringType(clustering_type thetype) { _clustype = thetype; }
80 
81  void setUseDynamicDPhi(bool useit) { _useDynamicDPhi = useit; }
82 
87 
88  void setPhiwidthSuperClusterBarrel( double phiwidth ){ phiwidthSuperClusterBarrel_ = phiwidth;}
89  void setEtawidthSuperClusterBarrel( double etawidth ){ etawidthSuperClusterBarrel_ = etawidth;}
90  void setPhiwidthSuperClusterEndcap( double phiwidth ){ phiwidthSuperClusterEndcap_ = phiwidth;}
91  void setEtawidthSuperClusterEndcap( double etawidth ){ etawidthSuperClusterEndcap_ = etawidth;}
92  void setUsePS( bool useit ){ usePS = useit; }
93 
94  void setPFClusterCalibration(const std::shared_ptr<PFEnergyCalibration>&);
95 
97 
98  void setSatelliteMerging( const bool doit ) { doSatelliteClusterMerge_ = doit; }
99  void setSatelliteThreshold( const double t ) { satelliteThreshold_ = t; }
100  void setMajorityFraction( const double f ) { fractionForMajority_ = f; }
101  //void setThreshPFClusterMustacheOutBarrel(double thresh){ threshPFClusterMustacheOutBarrel_ = thresh;}
102  //void setThreshPFClusterMustacheOutEndcap(double thresh){ threshPFClusterMustacheOutEndcap_ = thresh;}
103 
104  void setCrackCorrections( bool applyCrackCorrections) { applyCrackCorrections_ = applyCrackCorrections;}
105 
106  std::auto_ptr<reco::SuperClusterCollection>
108  std::auto_ptr<reco::SuperClusterCollection>
110 
111  void loadAndSortPFClusters(const edm::View<reco::PFCluster>& ecalclusters,
112  const edm::View<reco::PFCluster>& psclusters);
113 
114  void run();
115 
116  private:
117 
120  std::unordered_map<edm::Ptr<reco::PFCluster>,
122  std::auto_ptr<reco::SuperClusterCollection> superClustersEB_;
123  std::auto_ptr<reco::SuperClusterCollection> superClustersEE_;
124  std::shared_ptr<PFEnergyCalibration> _pfEnergyCalibration;
127  double seedthresh);
130 
131  bool verbose_;
132 
137 
143 
148 
149  bool doSatelliteClusterMerge_; //rock it
151 
153 
155 
156  bool usePS;
157 
158 };
159 
160 #endif
std::auto_ptr< reco::SuperClusterCollection > superClustersEB_
void setMajorityFraction(const double f)
void setSatelliteMerging(const bool doit)
void setThreshPFClusterSeedEndcap(double thresh)
std::auto_ptr< reco::SuperClusterCollection > getEEOutputSCCollection()
std::unordered_map< edm::Ptr< reco::PFCluster >, edm::PtrVector< reco::PFCluster > > _psclustersforee
void setCrackCorrections(bool applyCrackCorrections)
void setThreshPFClusterBarrel(double thresh)
edm::Ptr< reco::PFCluster > the_ptr() const
void setEtawidthSuperClusterBarrel(double etawidth)
void setClusteringType(clustering_type thetype)
void setEtawidthSuperClusterEndcap(double etawidth)
void setPhiwidthSuperClusterBarrel(double phiwidth)
void setVerbosityLevel(bool verbose)
std::vector< CalibratedClusterPtr > CalibratedClusterPtrVector
std::shared_ptr< CalibratedPFCluster > CalibratedClusterPtr
void buildAllSuperClusters(CalibratedClusterPtrVector &, double seedthresh)
std::shared_ptr< PFEnergyCalibration > _pfEnergyCalibration
void setThreshPFClusterEndcap(double thresh)
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:143
size_t operator()(const edm::Ptr< reco::PFCluster > &x) const
CalibratedClusterPtrVector _clustersEE
double f[11][100]
void loadAndSortPFClusters(const edm::View< reco::PFCluster > &ecalclusters, const edm::View< reco::PFCluster > &psclusters)
void setThreshPFClusterSeedBarrel(double thresh)
std::auto_ptr< reco::SuperClusterCollection > superClustersEE_
void buildSuperCluster(CalibratedClusterPtr &, CalibratedClusterPtrVector &)
void setUseDynamicDPhi(bool useit)
CalibratedPFCluster(const edm::Ptr< reco::PFCluster > &p, const double ce)
void setPhiwidthSuperClusterEndcap(double phiwidth)
std::auto_ptr< reco::SuperClusterCollection > getEBOutputSCCollection()
void setThreshPFClusterES(double thresh)
Definition: DDAxes.h:10
void setSatelliteThreshold(const double t)
void setPFClusterCalibration(const std::shared_ptr< PFEnergyCalibration > &)
CalibratedClusterPtrVector _clustersEB