FairRoot/PandaRoot
PndEmcXClMoments.h
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 // File and Version Information:
3 //
4 // Description:
5 // Class PndEmcXClMoments.
6 //
7 // Environment:
8 // Software developed for the BaBar Detector at the SLAC B-Factory.
9 //
10 // Author List:
11 // Thorsten Brandt Originator
12 //
13 // Copyright Information:
14 //
15 // Dima Melnichuk, adaption for pandaroot
16 //
17 //------------------------------------------------------------------------
18 //#pragma once
19 #ifndef PNDEMCXCLMOMENTS_H
20 #define PNDEMCXCLMOMENTS_H
21 
23 #include "TObject.h"
24 #include <iostream>
25 #include <vector>
26 
27 class TVector3;
28 class PndEmcDigi;
29 class PndEmcCluster;
30 
32 {
36 };
37 
38 
40 {
41 
42 public:
43 
44  // Constructors
45 
46  PndEmcXClMoments(const PndEmcCluster &cluster, const TClonesArray *digiArray);
48 
49  // Destructor
50 
51  virtual ~PndEmcXClMoments();
52 
53  // Operators
54 
55  // Selectors (const)
56 
57  // Second moment of energy about centroid
58  virtual Double_t SecondMoment() const;
59  virtual Double_t SecondMomentPhi() const;
60  virtual Double_t SecondMomentTheta() const;
61 
62  // Absolute value Zernike-Moment of index(m,n); according to the
63  // definition of the Zernike moments, n and m must satisfy
64  // (a) n>=m (b) n-m even (c) n,m>=0
65  // Otherwise this function returns -1;
66  virtual Double_t AbsZernikeMoment(int n, int m,Double_t R0=15) const;
67 
68  // Parameter for description of the LATeral energydeposition
69  // within the cluster; if cluster contains less than 3 digis,
70  // the function return 0
71  virtual Double_t Lat() const;
72 
73  virtual void Print(const Option_t* opt ="") const;
74 
75  // Modifiers
76 
77 protected:
78 
79  // Helper functions
80 
81  void Init();
82 
83  // explicit implementation of polynomial part of
84  // Zernike-Functions for n<=5;
85 
86  Double_t f00(Double_t r) const;
87  Double_t f11(Double_t r) const;
88  Double_t f20(Double_t r) const;
89  Double_t f22(Double_t r) const;
90  Double_t f31(Double_t r) const;
91  Double_t f33(Double_t r) const;
92  Double_t f40(Double_t r) const;
93  Double_t f42(Double_t r) const;
94  Double_t f44(Double_t r) const;
95  Double_t f51(Double_t r) const;
96  Double_t f53(Double_t r) const;
97  Double_t f55(Double_t r) const;
98 
99  // Calculation of Zernike-Moments for n<=5 :
100  Double_t Fast_AbsZernikeMoment(int n, int m, Double_t R0) const;
101 
102  // Calculation of Zernike-Moments for general values of (n,m)
103  Double_t Calc_AbsZernikeMoment(int n, int m, Double_t R0) const;
104 
105  Double_t Fak(int n) const;
106 
107 private:
108 
109  // These should never get used
112 
113  // Data members
114  std::vector<PndEmcClEnergyDeposition>* fEnergyDistribution;
115  Int_t fClusterSize;
117 // Double_t (PndEmcXClMoments::*fFcn2)( Double_t ); // STE: Is it needed??
118 
119  ClassDef(PndEmcXClMoments,1)
120 };
121 
122 #endif // PNDEMCXCLMOMENTS_HH
Double_t f00(Double_t r) const
std::vector< PndEmcClEnergyDeposition > * fEnergyDistribution
Double_t f55(Double_t r) const
double r
Definition: RiemannTest.C:14
represents the reconstructed hit of one emc crystal
Definition: PndEmcDigi.h:40
__m128 m
Definition: P4_F32vec4.h:28
virtual Double_t Lat() const
Double_t f33(Double_t r) const
virtual ~PndEmcXClMoments()
int n
virtual Double_t SecondMoment() const
virtual Double_t AbsZernikeMoment(int n, int m, Double_t R0=15) const
virtual Double_t SecondMomentTheta() const
Double_t f31(Double_t r) const
Double_t f40(Double_t r) const
Double_t Fast_AbsZernikeMoment(int n, int m, Double_t R0) const
Double_t f44(Double_t r) const
Double_t f53(Double_t r) const
Double_t
Double_t f20(Double_t r) const
PndEmcXClMoments & operator=(const PndEmcXClMoments &)
a cluster (group of neighboring crystals) of hit emc crystals
Definition: PndEmcCluster.h:29
Double_t f22(Double_t r) const
Double_t(PndEmcXClMoments::* fFcn[12])(Double_t) const
Double_t Fak(int n) const
Double_t f42(Double_t r) const
Double_t f11(Double_t r) const
Double_t Calc_AbsZernikeMoment(int n, int m, Double_t R0) const
virtual void Print(const Option_t *opt="") const
Double_t f51(Double_t r) const
virtual Double_t SecondMomentPhi() const