CMS 3D CMS Logo

ClusterShapeAlgo.h
Go to the documentation of this file.
1 #ifndef RecoEcal_EgammaCoreTools_ClusterShapeAlgo_h
2 #define RecoEcal_EgammaCoreTools_ClusterShapeAlgo_h
3 
13 #include <map>
14 
16 
26 
28 
31  double r;
32  double phi;
33 };
34 
36 public:
39  reco::ClusterShape Calculate(const reco::BasicCluster &passedCluster,
43 
44 private:
45  void Calculate_TopEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits);
46  void Calculate_2ndEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits);
47  void Create_Map(const EcalRecHitCollection *hits, const CaloSubdetectorTopology *topology);
48  void Calculate_e2x2();
49  void Calculate_e3x2();
50  void Calculate_e3x3();
51  void Calculate_e4x4();
52  void Calculate_e5x5();
53  void Calculate_e2x5Right();
54  void Calculate_e2x5Left();
55  void Calculate_e2x5Top();
56  void Calculate_e2x5Bottom();
57  void Calculate_Covariances(const reco::BasicCluster &passedCluster,
58  const EcalRecHitCollection *hits,
59  const CaloSubdetectorGeometry *geometry);
60  void Calculate_BarrelBasketEnergyFraction(const reco::BasicCluster &passedCluster,
61  const EcalRecHitCollection *hits,
62  const int EtaPhi,
63  const CaloSubdetectorGeometry *geometry);
64  // defines a energy deposition topology in a reference system centered on the cluster
65  void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster,
66  const EcalRecHitCollection *hits,
67  const CaloSubdetectorGeometry *geometry,
68  bool logW = true);
69  void Calculate_Polynomials(double rho);
70  double factorial(int n) const;
71  void Calculate_lat(const reco::BasicCluster &passedCluster);
72  void Calculate_ComplexZernikeMoments(const reco::BasicCluster &passedCluster);
73  // explicit implementation of polynomial part of
74  // Zernike-Functions for n<=5;
75  double f00(double r);
76  double f11(double r);
77  double f20(double r);
78  double f22(double r);
79  double f31(double r);
80  double f33(double r);
81  double f40(double r);
82  double f42(double r);
83  double f44(double r);
84  double f51(double r);
85  double f53(double r);
86  double f55(double r);
87  double absZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0 = 6.6);
88  double fast_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0);
89  // Calculation of Zernike-Moments for general values of (n,m)
90  double calc_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0);
91 
93 
94  std::pair<DetId, double> energyMap_[5][5];
95  int e2x2_Diagonal_X_, e2x2_Diagonal_Y_;
96 
97  double covEtaEta_, covEtaPhi_, covPhiPhi_;
98  double eMax_, e2nd_, e2x2_, e3x2_, e3x3_, e4x4_, e5x5_;
99  double e2x5Right_, e2x5Left_, e2x5Top_, e2x5Bottom_;
100  double e3x2Ratio_;
101  double lat_;
102  double etaLat_;
103  double phiLat_;
104  double A20_, A42_;
105  std::vector<double> energyBasketFractionEta_;
106  std::vector<double> energyBasketFractionPhi_;
107  DetId eMaxId_, e2ndId_;
108  std::vector<EcalClusterEnergyDeposition> energyDistribution_;
109  std::vector<double> fcn_;
110 
111  enum { Eta, Phi };
112 };
113 
114 #endif
std::vector< double > fcn_
CaloTopology const * topology(0)
std::vector< EcalClusterEnergyDeposition > energyDistribution_
edm::ParameterSet parameterSet_
Helper class for the calculation of a top and a W boson mass estime.
Definition: DetId.h:17
std::vector< double > energyBasketFractionPhi_
int factorial(int n)
factorial function
std::vector< double > energyBasketFractionEta_