/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/KalFitAlg/KalFitAlg-00-07-55-p03/KalFitAlg/lpav/Lpav.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:     <package>
00004 // Module:      Lpav
00005 // 
00006 // Description: <one line class summary>
00007 //
00008 // Usage:
00009 //    <usage>
00010 //
00011 // Author:      KATAYAMA Nobuhiko
00012 // Created:     Fri Feb  6 10:21:38 JST 1998
00013 
00014 #if !defined(PACKAGE_LPAV_H_INCLUDED)
00015 #define PACKAGE_LPAV_H_INCLUDED
00016 
00017 // system include files
00018 #include <iosfwd>
00019 
00020 // user include files
00021 #include "CLHEP/Matrix/SymMatrix.h"
00022 #include "KalFitAlg/lpav/Lpar.h"
00023 
00024     using CLHEP::HepVector; 
00025     using CLHEP::Hep3Vector;
00026     using CLHEP::HepMatrix;
00027     using CLHEP::HepSymMatrix;
00028 
00029 using namespace CLHEP;
00030 
00031 // forward declarations
00032 
00033 class Lpav : public Lpar
00034 {
00035     // friend classes and functions
00036 
00037   public:
00038     // constants, enums and typedefs
00039 
00040     // Constructors and destructor
00041     Lpav();
00042     virtual ~Lpav();
00043 
00044     // member functions
00045     void calculate_average(void);
00046     void calculate_average3(void);
00047     void calculate_average(double x, double y, double w=1);
00048     void calculate_average3(double x, double y, double w=1);
00049     double calculate_lpar(void);
00050     double calculate_lpar3(void);
00051     double fit();
00052     double fit(double x, double y, double w=1);
00053     inline void clear();
00054     void add_point(double x, double y, double w=1);
00055     void add_point_frac(double x, double y, double w, double f);
00056 
00057     // const member functions
00058     double nc() const { return m_nc; }
00059     HepSymMatrix cov(int=0) const;
00060     HepSymMatrix cov_c(int=0) const;
00061     int extrapolate(double, double&, double&) const;
00062     double similarity(double, double) const;
00063     double delta_chisq(double x, double y, double w=1) const;
00064     double chisq() const { return m_chisq; }
00065     double prob() const;
00066     double chi_deg() const;
00067 
00068     // static member functions
00069 
00070     // assignment operator(s)
00071     inline const Lpav& operator=( const Lpav& );
00072     const Lpav& operator=( const Lpar& );
00073     const Lpav& operator+=( const Lpav& );
00074 
00075     friend std::ostream& operator<<(std::ostream &o, const Lpav &s);
00076     friend Lpav operator+(const Lpav &, const Lpav &);
00077     class Singular {}; // exception class, no covarience matrix.
00078     class Singular_c {}; // exception class, no covarience matrix_c
00079 
00080   protected:
00081     // protected member functions
00082 
00083     // protected const member functions
00084 
00085   private:
00086     // Constructors and destructor
00087     inline Lpav( const Lpav& );
00088 
00089     // comparison operators
00090     bool operator==( const Lpav& ) const;
00091     bool operator!=( const Lpav& ) const;
00092 
00093     // private member functions
00094     void add(double x, double y, double w=1, double a=0, double b=0);
00095     void sub(double x, double y, double w=1, double a=0, double b=0);
00096     void calculate_average_n(double xxav, double yyav, double xyav,
00097                                double xrrav, double yrrav, double rrrrav);
00098     double chisq(double chisq) { m_chisq = chisq; return m_chisq; }
00099     double nc(double nc) { m_nc = nc; return m_nc; }
00100     double solve_lambda(void);
00101     double solve_lambda3(void);
00102 
00103     // private const member functions
00104 
00105     // data members
00106     double m_wsum;
00107     double m_xsum;
00108     double m_ysum;
00109     double m_xxsum;
00110     double m_yysum;
00111     double m_xysum;
00112     double m_xrrsum;
00113     double m_yrrsum;
00114     double m_rrrrsum;
00115 
00116     double m_wsum_temp;
00117     double m_xav;
00118     double m_yav;
00119     double m_xyavp;
00120 
00121     double m_rscale;
00122     double m_xxavp;
00123     double m_yyavp;
00124     double m_xrravp;
00125     double m_yrravp;
00126     double m_rrrravp;
00127     double m_sinrot;
00128     double m_cosrot;
00129 
00130     double m_nc;
00131     double m_chisq;
00132 
00133     // static data members
00134 
00135 };
00136 
00137 // inline function definitions
00138 inline const Lpav & Lpav::operator=(const Lpav &lp) {
00139   Lpar::operator=(lp);
00140   m_wsum = lp.m_wsum;
00141   m_xsum = lp.m_xsum;
00142   m_ysum = lp.m_ysum;
00143   m_xxsum = lp.m_xxsum;
00144   m_yysum = lp.m_yysum;
00145   m_xysum = lp.m_xysum;
00146   m_xrrsum = lp.m_xrrsum;
00147   m_yrrsum = lp.m_yrrsum;
00148   m_rrrrsum = lp.m_rrrrsum;
00149   
00150   m_wsum_temp = lp. m_wsum_temp;
00151   m_xav = lp.m_xav;
00152   m_yav = lp.m_yav;
00153   m_xyavp = lp.m_xyavp;
00154   
00155   m_rscale = lp. m_rscale;
00156   m_xxavp = lp.m_xxavp;
00157   m_yyavp = lp.m_yyavp;
00158   m_xrravp = lp.m_xrravp;
00159   m_yrravp = lp.m_yrravp;
00160   m_rrrravp = lp.m_rrrravp;
00161   m_sinrot = lp.m_sinrot;
00162   m_cosrot = lp.m_cosrot;
00163   
00164   m_nc = lp. m_nc;
00165   m_chisq = lp.m_chisq;
00166   return *this;
00167 }
00168 
00169 inline Lpav::Lpav(const Lpav &lp) : Lpar(lp) {
00170   m_wsum = lp.m_wsum;
00171   m_xsum = lp.m_xsum;
00172   m_ysum = lp.m_ysum;
00173   m_xxsum = lp.m_xxsum;
00174   m_yysum = lp.m_yysum;
00175   m_xysum = lp.m_xysum;
00176   m_xrrsum = lp.m_xrrsum;
00177   m_yrrsum = lp.m_yrrsum;
00178   m_rrrrsum = lp.m_rrrrsum;
00179   
00180   m_wsum_temp = lp. m_wsum_temp;
00181   m_xav = lp.m_xav;
00182   m_yav = lp.m_yav;
00183   m_xyavp = lp.m_xyavp;
00184   
00185   m_rscale = lp. m_rscale;
00186   m_xxavp = lp.m_xxavp;
00187   m_yyavp = lp.m_yyavp;
00188   m_xrravp = lp.m_xrravp;
00189   m_yrravp = lp.m_yrravp;
00190   m_rrrravp = lp.m_rrrravp;
00191   m_sinrot = lp.m_sinrot;
00192   m_cosrot = lp.m_cosrot;
00193   
00194   m_nc = lp. m_nc;
00195   m_chisq = lp.m_chisq;
00196   return;
00197 }
00198 
00199 inline void Lpav::clear() {
00200   m_wsum = m_xsum = m_ysum = m_xxsum = m_yysum = m_xysum
00201     = m_xrrsum = m_yrrsum = m_rrrrsum  = m_rscale = m_nc = 0;
00202   m_chisq = -1;
00203 }
00204 
00205 #endif /* PACKAGE_LPAV_H_INCLUDED */
00206 

Generated on Tue Nov 29 23:13:23 2016 for BOSS_7.0.2 by  doxygen 1.4.7