00001 #ifndef VertexFit_GammaShape_H 00002 #define VertexFit_GammaShape_H 00003 00004 // 00005 //use for gamma dynamic adjust 00006 // 00007 00008 #include <cmath> 00009 #include "CLHEP/Matrix/Vector.h" 00010 #include "CLHEP/Vector/LorentzVector.h" 00011 #include "CLHEP/Vector/ThreeVector.h" 00012 #include "CLHEP/Matrix/SymMatrix.h" 00013 #include "CLHEP/Matrix/Matrix.h" 00014 using CLHEP::HepVector; 00015 using CLHEP::HepLorentzVector; 00016 using CLHEP::Hep3Vector; 00017 using CLHEP::HepMatrix; 00018 using CLHEP::HepSymMatrix; 00019 #include "CLHEP/Geometry/Point3D.h" 00020 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00021 typedef HepGeom::Point3D<double> HepPoint3D; 00022 #endif 00023 00024 00025 00026 class GammaShape { 00027 00028 public: 00029 00030 // constructor & deconstructor 00031 GammaShape(); 00032 ~GammaShape(){;} 00033 00034 GammaShape(const GammaShape &); 00035 00036 00037 GammaShape(const double eorigin, const double epeak); 00038 GammaShape(const HepLorentzVector p4, const double dphi, const double dthe, const double de); 00039 00040 GammaShape & operator = (const GammaShape &); 00041 double peak(const double fitvalue); 00042 double mean(const double epeak); 00043 double tail(const double epeak); 00044 double width(const double epeak); 00045 double de(const double eorigin, const double peak); 00046 double fitm(double x, double pk, double width, double tail, double mean); 00047 // Set function 00048 void settail(const double tail) {m_tail = tail;} 00049 void setwidth(const double width) {m_width = width;} 00050 void setpeak(const double peak) {m_peak = peak;} 00051 void sete(const double e) {m_e = e;} 00052 void setde(const double de) {m_de = de;} 00053 void setdphi(const double dphi) {m_dphi = dphi;} 00054 void setdtheta(const double dtheta) {m_dtheta = dtheta;} 00055 00056 // get function 00057 double gettail() const {return m_tail;} 00058 double getwidth() const {return m_width;} 00059 double getpeak() const {return m_peak;} 00060 double gete() const {return m_e;} 00061 double getde() const {return m_de;} 00062 double getdphi() const {return m_dphi;} 00063 double getdthe() const {return m_dtheta;} 00064 // double getdlambda() const {return m_dlambda;} 00065 protected: 00066 00067 00068 00069 private: 00070 00071 double m_tail; //gamma distribution information 00072 double m_width; 00073 double m_peak; 00074 double m_e; 00075 double m_de; 00076 double m_dphi; 00077 double m_dtheta; 00078 //double m_dlambda; 00079 }; 00080 #endif 00081