CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ClusterShapeAlgo.h
Go to the documentation of this file.
1 #ifndef RecoEcal_EgammaCoreTools_ClusterShapeAlgo_h
2 #define RecoEcal_EgammaCoreTools_ClusterShapeAlgo_h
3 
14 #include <map>
15 
17 
27 
29 
31 {
33  double r;
34  double phi;
35 };
36 
38 {
39 
40  public:
43  reco::ClusterShape Calculate(const reco::BasicCluster &passedCluster,
44  const EcalRecHitCollection *hits,
46  const CaloSubdetectorTopology* topology);
47 
48  private:
49  void Calculate_TopEnergy(const reco::BasicCluster &passedCluster,const EcalRecHitCollection *hits);
50  void Calculate_2ndEnergy(const reco::BasicCluster &passedCluster,const EcalRecHitCollection *hits);
51  void Create_Map(const EcalRecHitCollection *hits, const CaloSubdetectorTopology* topology);
52  void Calculate_e2x2();
53  void Calculate_e3x2();
54  void Calculate_e3x3();
55  void Calculate_e4x4();
56  void Calculate_e5x5();
57  void Calculate_e2x5Right();
58  void Calculate_e2x5Left();
59  void Calculate_e2x5Top();
60  void Calculate_e2x5Bottom();
61  void Calculate_Covariances(const reco::BasicCluster &passedCluster,
62  const EcalRecHitCollection* hits,
65  const int EtaPhi,const CaloSubdetectorGeometry * geometry);
66  // defines a energy deposition topology in a reference system centered on the cluster
67  void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster,const EcalRecHitCollection *hits, const CaloSubdetectorGeometry * geometry, bool logW=true);
68  void Calculate_Polynomials(double rho);
69  double factorial(int n) const;
70  void Calculate_lat(const reco::BasicCluster &passedCluster);
71  void Calculate_ComplexZernikeMoments(const reco::BasicCluster &passedCluster);
72  // explicit implementation of polynomial part of
73  // Zernike-Functions for n<=5;
74  double f00(double r);
75  double f11(double r);
76  double f20(double r);
77  double f22(double r);
78  double f31(double r);
79  double f33(double r);
80  double f40(double r);
81  double f42(double r);
82  double f44(double r);
83  double f51(double r);
84  double f53(double r);
85  double f55(double r);
86  double absZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0=6.6);
87  double fast_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0);
88  // Calculation of Zernike-Moments for general values of (n,m)
89  double calc_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0);
90 
92 
93  std::pair<DetId, double> energyMap_[5][5];
95 
99  double e3x2Ratio_;
100  double lat_;
101  double etaLat_ ;
102  double phiLat_ ;
103  double A20_, A42_;
104  std::vector<double> energyBasketFractionEta_;
105  std::vector<double> energyBasketFractionPhi_;
107  std::vector<EcalClusterEnergyDeposition> energyDistribution_;
108  std::vector<double> fcn_;
109 
110  enum { Eta, Phi };
111 
112 };
113 
114 #endif
double f20(double r)
void Create_Map(const EcalRecHitCollection *hits, const CaloSubdetectorTopology *topology)
double fast_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
std::vector< double > fcn_
std::vector< EcalClusterEnergyDeposition > energyDistribution_
edm::ParameterSet parameterSet_
double f00(double r)
double f44(double r)
Definition: DDAxes.h:10
void Calculate_BarrelBasketEnergyFraction(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const int EtaPhi, const CaloSubdetectorGeometry *geometry)
double calc_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
std::pair< DetId, double > energyMap_[5][5]
double factorial(int n) const
double f31(double r)
double absZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0=6.6)
double f55(double r)
reco::ClusterShape Calculate(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology)
void Calculate_Covariances(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
double f42(double r)
void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, bool logW=true)
double f40(double r)
double f33(double r)
void Calculate_TopEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
void Calculate_Polynomials(double rho)
double f11(double r)
Definition: DetId.h:20
double f51(double r)
std::vector< double > energyBasketFractionPhi_
void Calculate_ComplexZernikeMoments(const reco::BasicCluster &passedCluster)
double f22(double r)
void Calculate_lat(const reco::BasicCluster &passedCluster)
ESHandle< TrackerGeometry > geometry
std::vector< double > energyBasketFractionEta_
double f53(double r)
void Calculate_2ndEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
const double par[8 *NPar][4]