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);
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,
62  const int EtaPhi,
64  // defines a energy deposition topology in a reference system centered on the cluster
65  void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster,
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];
96 
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_;
108  std::vector<EcalClusterEnergyDeposition> energyDistribution_;
109  std::vector<double> fcn_;
110 
111  enum { Eta, Phi };
112 };
113 
114 #endif
EcalClusterEnergyDeposition
Definition: ClusterShapeAlgo.h:29
ClusterShapeAlgo::covEtaPhi_
double covEtaPhi_
Definition: ClusterShapeAlgo.h:97
ClusterShapeAlgo::Calculate_lat
void Calculate_lat(const reco::BasicCluster &passedCluster)
Definition: ClusterShapeAlgo.cc:469
PositionCalc.h
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
ClusterShapeAlgo::e3x2_
double e3x2_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::e2x5Left_
double e2x5Left_
Definition: ClusterShapeAlgo.h:99
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ClusterShapeAlgo::f31
double f31(double r)
Definition: ClusterShapeAlgo.cc:548
ClusterShapeAlgo::e5x5_
double e5x5_
Definition: ClusterShapeAlgo.h:98
ESHandle.h
ClusterShapeAlgo::Calculate_e2x5Top
void Calculate_e2x5Top()
Definition: ClusterShapeAlgo.cc:328
BasicCluster.h
ClusterShapeAlgo::e2x2_
double e2x2_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::f42
double f42(double r)
Definition: ClusterShapeAlgo.cc:554
geometry
Definition: geometry.py:1
ClusterShapeAlgo::Calculate_TopEnergy
void Calculate_TopEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
Definition: ClusterShapeAlgo.cc:70
ClusterShapeAlgo::f11
double f11(double r)
Definition: ClusterShapeAlgo.cc:542
ClusterShapeAlgo::f53
double f53(double r)
Definition: ClusterShapeAlgo.cc:560
EcalClusterEnergyDeposition::r
double r
Definition: ClusterShapeAlgo.h:31
edm::SortedCollection< EcalRecHit >
ClusterShapeAlgo::e2x5Top_
double e2x5Top_
Definition: ClusterShapeAlgo.h:99
ClusterShapeAlgo::eMax_
double eMax_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::e3x3_
double e3x3_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::e3x2Ratio_
double e3x2Ratio_
Definition: ClusterShapeAlgo.h:100
EcalRecHitCollections.h
ClusterShapeAlgo::Calculate_Polynomials
void Calculate_Polynomials(double rho)
Definition: ClusterShapeAlgo.cc:685
ClusterShapeAlgo::f22
double f22(double r)
Definition: ClusterShapeAlgo.cc:546
ClusterShapeAlgo::f51
double f51(double r)
Definition: ClusterShapeAlgo.cc:558
DetId
Definition: DetId.h:17
ClusterShapeAlgo::Calculate_e2x2
void Calculate_e2x2()
Definition: ClusterShapeAlgo.cc:136
ClusterShapeAlgo::Eta
Definition: ClusterShapeAlgo.h:111
ClusterShapeAlgo::fast_AbsZernikeMoment
double fast_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
Definition: ClusterShapeAlgo.cc:564
ClusterShapeAlgo::ClusterShapeAlgo
ClusterShapeAlgo()
Definition: ClusterShapeAlgo.h:38
ClusterShapeAlgo::phiLat_
double phiLat_
Definition: ClusterShapeAlgo.h:103
ecaldqm::topology
const CaloTopology * topology(nullptr)
ClusterShapeAlgo::Calculate_2ndEnergy
void Calculate_2ndEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
Definition: ClusterShapeAlgo.cc:94
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
ClusterShapeAlgo::e2x5Right_
double e2x5Right_
Definition: ClusterShapeAlgo.h:99
reco::CaloCluster
Definition: CaloCluster.h:31
reco::ClusterShape
Definition: ClusterShape.h:21
ClusterShapeAlgo
Definition: ClusterShapeAlgo.h:35
EcalClusterEnergyDeposition::phi
double phi
Definition: ClusterShapeAlgo.h:32
DDAxes::rho
ClusterShapeAlgo::f20
double f20(double r)
Definition: ClusterShapeAlgo.cc:544
ClusterShape.h
ClusterShapeAlgo::f55
double f55(double r)
Definition: ClusterShapeAlgo.cc:562
ClusterShapeAlgo::energyBasketFractionPhi_
std::vector< double > energyBasketFractionPhi_
Definition: ClusterShapeAlgo.h:106
edm::ParameterSet
Definition: ParameterSet.h:36
ClusterShapeAlgo::e2x5Bottom_
double e2x5Bottom_
Definition: ClusterShapeAlgo.h:99
ClusterShapeAlgo::Calculate_e2x5Right
void Calculate_e2x5Right()
Definition: ClusterShapeAlgo.cc:292
ClusterShapeAlgo::e2x2_Diagonal_Y_
int e2x2_Diagonal_Y_
Definition: ClusterShapeAlgo.h:95
ClusterShapeAlgo::Calculate_BarrelBasketEnergyFraction
void Calculate_BarrelBasketEnergyFraction(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const int EtaPhi, const CaloSubdetectorGeometry *geometry)
Definition: ClusterShapeAlgo.cc:406
ClusterShapeAlgo::Calculate_e2x5Bottom
void Calculate_e2x5Bottom()
Definition: ClusterShapeAlgo.cc:316
ClusterShapeAlgo::Calculate_e2x5Left
void Calculate_e2x5Left()
Definition: ClusterShapeAlgo.cc:304
ClusterShapeAlgo::parameterSet_
edm::ParameterSet parameterSet_
Definition: ClusterShapeAlgo.h:92
ClusterShapeAlgo::Calculate_e3x3
void Calculate_e3x3()
Definition: ClusterShapeAlgo.cc:242
ClusterShapeAlgo::absZernikeMoment
double absZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0=6.6)
Definition: ClusterShapeAlgo.cc:525
HLT_2018_cff.R0
R0
Definition: HLT_2018_cff.py:7317
ClusterShapeAlgo::f44
double f44(double r)
Definition: ClusterShapeAlgo.cc:556
ClusterShapeAlgo::Calculate_e4x4
void Calculate_e4x4()
Definition: ClusterShapeAlgo.cc:252
CaloSubdetectorTopology
Definition: CaloSubdetectorTopology.h:17
ClusterShapeAlgo::Phi
Definition: ClusterShapeAlgo.h:111
EcalClusterEnergyDeposition::deposited_energy
double deposited_energy
Definition: ClusterShapeAlgo.h:30
EcalRecHit.h
ClusterShapeAlgo::energyBasketFractionEta_
std::vector< double > energyBasketFractionEta_
Definition: ClusterShapeAlgo.h:105
ClusterShapeAlgo::f00
double f00(double r)
Definition: ClusterShapeAlgo.cc:540
alignCSCRings.r
r
Definition: alignCSCRings.py:93
ClusterShapeAlgo::energyMap_
std::pair< DetId, double > energyMap_[5][5]
Definition: ClusterShapeAlgo.h:94
ClusterShapeAlgo::e2x2_Diagonal_X_
int e2x2_Diagonal_X_
Definition: ClusterShapeAlgo.h:95
ClusterShapeAlgo::Calculate_EnergyDepTopology
void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, bool logW=true)
Definition: ClusterShapeAlgo.cc:619
ClusterShapeAlgo::Calculate
reco::ClusterShape Calculate(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology)
Definition: ClusterShapeAlgo.cc:21
ClusterShapeAlgo::A20_
double A20_
Definition: ClusterShapeAlgo.h:104
ClusterShapeAlgo::Calculate_Covariances
void Calculate_Covariances(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
Definition: ClusterShapeAlgo.cc:340
DetId.h
ClusterShapeAlgo::factorial
double factorial(int n) const
Definition: ClusterShapeAlgo.cc:700
CaloGeometry.h
ClusterShapeAlgo::covPhiPhi_
double covPhiPhi_
Definition: ClusterShapeAlgo.h:97
ClusterShapeAlgo::eMaxId_
DetId eMaxId_
Definition: ClusterShapeAlgo.h:107
ClusterShapeAlgo::A42_
double A42_
Definition: ClusterShapeAlgo.h:104
Point3D.h
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
ClusterShapeAlgo::e2ndId_
DetId e2ndId_
Definition: ClusterShapeAlgo.h:107
ClusterShapeAlgo::e2nd_
double e2nd_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::calc_AbsZernikeMoment
double calc_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
Definition: ClusterShapeAlgo.cc:588
ClusterShapeAlgo::fcn_
std::vector< double > fcn_
Definition: ClusterShapeAlgo.h:109
ClusterShapeAlgo::e4x4_
double e4x4_
Definition: ClusterShapeAlgo.h:98
ClusterShapeAlgo::lat_
double lat_
Definition: ClusterShapeAlgo.h:101
ParameterSet.h
ClusterShapeAlgo::Calculate_e3x2
void Calculate_e3x2()
Definition: ClusterShapeAlgo.cc:177
ClusterShapeAlgo::covEtaEta_
double covEtaEta_
Definition: ClusterShapeAlgo.h:97
ClusterShapeAlgo::Create_Map
void Create_Map(const EcalRecHitCollection *hits, const CaloSubdetectorTopology *topology)
Definition: ClusterShapeAlgo.cc:118
ClusterShapeAlgo::Calculate_ComplexZernikeMoments
void Calculate_ComplexZernikeMoments(const reco::BasicCluster &passedCluster)
Definition: ClusterShapeAlgo.cc:518
ClusterShapeAlgo::Calculate_e5x5
void Calculate_e5x5()
Definition: ClusterShapeAlgo.cc:282
ClusterShapeAlgo::f40
double f40(double r)
Definition: ClusterShapeAlgo.cc:552
ClusterShapeAlgo::energyDistribution_
std::vector< EcalClusterEnergyDeposition > energyDistribution_
Definition: ClusterShapeAlgo.h:108
ClusterShapeAlgo::etaLat_
double etaLat_
Definition: ClusterShapeAlgo.h:102
ClusterShapeAlgo::f33
double f33(double r)
Definition: ClusterShapeAlgo.cc:550