00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef KMASSVERTEXFITTER_H
00051 #define KMASSVERTEXFITTER_H
00052 #include "kfitter/kfitterbase2.h"
00053
00054 class kmassvertexfitter : public kfitterbase2
00055 {
00056 public:
00057 kmassvertexfitter(void);
00058 ~kmassvertexfitter(void);
00059
00060
00061 void initialVertex(const HepPoint3D&);
00062 void invariantMass(const double);
00063 void fixMass(void);
00064 void unfixMass(void);
00065 void correlation(const HepMatrix&);
00066 void correlation(void);
00067
00068
00069 HepPoint3D vertex(const unsigned = KF_AFTER_FIT);
00070 HepSymMatrix errVertex(void);
00071 HepMatrix errVertexTrack(const unsigned);
00072 double invariantMass(void);
00073 double chisq(void);
00074 double chisq(const unsigned n);
00075 HepMatrix correlation(const unsigned n, const unsigned m, const unsigned flag = KF_AFTER_FIT);
00076
00077 void clear(void);
00078
00079 #if KF_WITH_OLD_INTERFACE
00080 void set_initial_vertex(const Hep3Vector &v){ initialVertex(static_cast<const HepPoint3D&>(v)); }
00081 void set_initial_vertex(double x,double y,double z)
00082 { HepPoint3D t(x,y,z); initialVertex(t); }
00083 void set_invariant_mass(double mass){ invariantMass(mass); }
00084
00085 Hep3Vector get_vertex(){ return static_cast<Hep3Vector>(vertex()); }
00086 double get_vx() { return vertex().x(); }
00087 double get_vy() { return vertex().y(); }
00088 double get_vz() { return vertex().z(); }
00089 HepSymMatrix get_err_vertex(){ return errVertex(); }
00090 double get_err_vertex(int i,int j){ return errVertex()[i][j]; }
00091 HepMatrix get_err_vertex_track(int i){ return errVertexTrack(i); }
00092 #endif //KF_WITH_OLD_INTERFACE
00093
00094 private:
00095
00096 HepPoint3D m_vertex_b;
00097
00098
00099 HepPoint3D m_vertex_a;
00100 HepSymMatrix m_errVertex_a;
00101 std::vector<HepMatrix> m_errVertexTrack_a;
00102
00103
00104 double m_invariantMass;
00105
00106
00107 unsigned m_setInputMatrix(void);
00108 unsigned m_setInputSubMatrix(void);
00109 unsigned m_setCorrelation(void);
00110
00111
00112 unsigned m_setOutputMatrix(void);
00113 std::vector<int> m_isFixMass;
00114
00115
00116 unsigned m_makeCoreMatrix(void);
00117 unsigned m_calDgf(void);
00118 };
00119
00120 #endif