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

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