BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/KalFitAlg/include/KalFitAlg/lpav/Lpav.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// Package: <package>
4// Module: Lpav
5//
6// Description: <one line class summary>
7//
8// Usage:
9// <usage>
10//
11// Author: KATAYAMA Nobuhiko
12// Created: Fri Feb 6 10:21:38 JST 1998
13
14#pragma once
15
16// system include files
17#include <iosfwd>
18
19// user include files
20#include "CLHEP/Matrix/SymMatrix.h"
21#include "KalFitAlg/lpav/Lpar.h"
22
23using CLHEP::Hep3Vector;
24using CLHEP::HepMatrix;
25using CLHEP::HepSymMatrix;
26using CLHEP::HepVector;
27
28using namespace CLHEP;
29
30// forward declarations
31namespace KalmanFit {
32 class Lpav : public Lpar {
33 // friend classes and functions
34
35 public:
36 // constants, enums and typedefs
37
38 // Constructors and destructor
40 virtual ~Lpav();
41
42 // member functions
43 void calculate_average( void );
44 void calculate_average3( void );
45 void calculate_average( double x, double y, double w = 1 );
46 void calculate_average3( double x, double y, double w = 1 );
47 double calculate_lpar( void );
48 double calculate_lpar3( void );
49 double fit();
50 double fit( double x, double y, double w = 1 );
51 inline void clear();
52 void add_point( double x, double y, double w = 1 );
53 void add_point_frac( double x, double y, double w, double f );
54
55 // const member functions
56 double nc() const { return m_nc; }
57 HepSymMatrix cov( int = 0 ) const;
58 HepSymMatrix cov_c( int = 0 ) const;
59 int extrapolate( double, double&, double& ) const;
60 double similarity( double, double ) const;
61 double delta_chisq( double x, double y, double w = 1 ) const;
62 double chisq() const { return m_chisq; }
63 double prob() const;
64 double chi_deg() const;
65
66 // static member functions
67
68 // assignment operator(s)
69 inline const Lpav& operator=( const Lpav& );
70 const Lpav& operator=( const Lpar& );
71 const Lpav& operator+=( const Lpav& );
72
73 friend std::ostream& operator<<( std::ostream& o, const Lpav& s );
74 friend Lpav operator+( const Lpav&, const Lpav& );
75 class Singular {}; // exception class, no covarience matrix.
76 class Singular_c {}; // exception class, no covarience matrix_c
77
78 protected:
79 // protected member functions
80
81 // protected const member functions
82
83 private:
84 // Constructors and destructor
85 inline Lpav( const Lpav& );
86
87 // comparison operators
88 bool operator==( const Lpav& ) const;
89 bool operator!=( const Lpav& ) const;
90
91 // private member functions
92 void add( double x, double y, double w = 1, double a = 0, double b = 0 );
93 void sub( double x, double y, double w = 1, double a = 0, double b = 0 );
94 void calculate_average_n( double xxav, double yyav, double xyav, double xrrav,
95 double yrrav, double rrrrav );
96 double chisq( double chisq ) {
97 m_chisq = chisq;
98 return m_chisq;
99 }
100 double nc( double nc ) {
101 m_nc = nc;
102 return m_nc;
103 }
104 double solve_lambda( void );
105 double solve_lambda3( void );
106
107 // private const member functions
108
109 // data members
110 double m_wsum;
111 double m_xsum;
112 double m_ysum;
113 double m_xxsum;
114 double m_yysum;
115 double m_xysum;
116 double m_xrrsum;
117 double m_yrrsum;
118 double m_rrrrsum;
119
120 double m_wsum_temp;
121 double m_xav;
122 double m_yav;
123 double m_xyavp;
124
125 double m_rscale;
126 double m_xxavp;
127 double m_yyavp;
128 double m_xrravp;
129 double m_yrravp;
130 double m_rrrravp;
131 double m_sinrot;
132 double m_cosrot;
133
134 double m_nc;
135 double m_chisq;
136
137 // static data members
138 };
139
140 // inline function definitions
141 inline const Lpav& Lpav::operator=( const Lpav& lp ) {
142 Lpar::operator=( lp );
143 m_wsum = lp.m_wsum;
144 m_xsum = lp.m_xsum;
145 m_ysum = lp.m_ysum;
146 m_xxsum = lp.m_xxsum;
147 m_yysum = lp.m_yysum;
148 m_xysum = lp.m_xysum;
149 m_xrrsum = lp.m_xrrsum;
150 m_yrrsum = lp.m_yrrsum;
151 m_rrrrsum = lp.m_rrrrsum;
152
153 m_wsum_temp = lp.m_wsum_temp;
154 m_xav = lp.m_xav;
155 m_yav = lp.m_yav;
156 m_xyavp = lp.m_xyavp;
157
158 m_rscale = lp.m_rscale;
159 m_xxavp = lp.m_xxavp;
160 m_yyavp = lp.m_yyavp;
161 m_xrravp = lp.m_xrravp;
162 m_yrravp = lp.m_yrravp;
163 m_rrrravp = lp.m_rrrravp;
164 m_sinrot = lp.m_sinrot;
165 m_cosrot = lp.m_cosrot;
166
167 m_nc = lp.m_nc;
168 m_chisq = lp.m_chisq;
169 return *this;
170 }
171
172 inline Lpav::Lpav( const Lpav& lp ) : Lpar( lp ) {
173 m_wsum = lp.m_wsum;
174 m_xsum = lp.m_xsum;
175 m_ysum = lp.m_ysum;
176 m_xxsum = lp.m_xxsum;
177 m_yysum = lp.m_yysum;
178 m_xysum = lp.m_xysum;
179 m_xrrsum = lp.m_xrrsum;
180 m_yrrsum = lp.m_yrrsum;
181 m_rrrrsum = lp.m_rrrrsum;
182
183 m_wsum_temp = lp.m_wsum_temp;
184 m_xav = lp.m_xav;
185 m_yav = lp.m_yav;
186 m_xyavp = lp.m_xyavp;
187
188 m_rscale = lp.m_rscale;
189 m_xxavp = lp.m_xxavp;
190 m_yyavp = lp.m_yyavp;
191 m_xrravp = lp.m_xrravp;
192 m_yrravp = lp.m_yrravp;
193 m_rrrravp = lp.m_rrrravp;
194 m_sinrot = lp.m_sinrot;
195 m_cosrot = lp.m_cosrot;
196
197 m_nc = lp.m_nc;
198 m_chisq = lp.m_chisq;
199 return;
200 }
201
202 inline void Lpav::clear() {
203 m_wsum = m_xsum = m_ysum = m_xxsum = m_yysum = m_xysum = m_xrrsum = m_yrrsum = m_rrrrsum =
204 m_rscale = m_nc = 0;
205 m_chisq = -1;
206 }
207} // namespace KalFitAlg
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
bool operator!=(const DataPtr< T > &lhs, const DataPtr< T > &rhs)
double w
bool operator==(const double &x, const ICache::ID64 &y)
Definition cache.h:397
double s(double x, double y) const
double prob() const
void calculate_average3(void)
void calculate_average3(double x, double y, double w=1)
int extrapolate(double, double &, double &) const
HepSymMatrix cov(int=0) const
double calculate_lpar(void)
HepSymMatrix cov_c(int=0) const
friend std::ostream & operator<<(std::ostream &o, const Lpav &s)
virtual ~Lpav()
friend Lpav operator+(const Lpav &, const Lpav &)
double delta_chisq(double x, double y, double w=1) const
double chi_deg() const
void add_point(double x, double y, double w=1)
double calculate_lpar3(void)
void add_point_frac(double x, double y, double w, double f)
void calculate_average(double x, double y, double w=1)
double fit(double x, double y, double w=1)
const Lpav & operator=(const Lpav &)
double similarity(double, double) const
const Lpav & operator=(const Lpar &)
void calculate_average(void)
const Lpav & operator+=(const Lpav &)