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 #ifndef KMAKEMOTHER_H
00045 #define KMAKEMOTHER_H
00046 #include "kfitter/kfitterparticle.h"
00047 #include <vector>
00048
00049 class kmakemother
00050 {
00051 public:
00052 kmakemother(void);
00053 ~kmakemother(void);
00054
00055
00056 void addTrack(const HepLorentzVector&,
00057 const HepPoint3D&,
00058 const HepSymMatrix&,
00059 const double,
00060 const unsigned = KF_AFTER_FIT);
00061 void addTrack(const kfitterparticle&);
00062 void magneticField(const double);
00063 void vertex(const HepPoint3D&);
00064 void errVertex(const HepSymMatrix&);
00065 void correlation(const HepMatrix&);
00066 void correlation(void);
00067 void errVertexTrack(const HepMatrix&);
00068 void errVertexTrack(void);
00069 void atDecayPoint(void);
00070 void notDecayPoint(void);
00071 void beforeAfter(const unsigned);
00072
00073
00074 kfitterparticle track(void);
00075 HepLorentzVector momentum(void);
00076 HepPoint3D position(void);
00077 HepSymMatrix error(void);
00078
00079
00080 unsigned make(void);
00081
00082 #if KF_WITH_OLD_INTERFACE
00083 void add_track(const HepLorentzVector &p, const Hep3Vector &x,
00084 const HepSymMatrix &e, double c) { addTrack(p, static_cast<const HepPoint3D&>(x),e,c);}
00085 void add_track(const kfitterparticle &kp) { addTrack(kp); }
00086 void set_magneticfield(double m) { magneticField(m); }
00087 void set_vertex(const Hep3Vector &v) { vertex(static_cast<const HepPoint3D&>(v)); }
00088 void set_err_vertex(const HepSymMatrix& e) { errVertex(e); }
00089 void set_correlation(const HepMatrix &e) { correlation(e); }
00090 void set_correlation() { correlation(); }
00091 void set_vertex_track_correlation(const HepMatrix &e) { errVertexTrack(e); }
00092 void set_vertex_track_correlation() { errVertexTrack(); }
00093 void set_at_decaypoint() { atDecayPoint(); }
00094 void set_not_decaypoint(){ notDecayPoint(); }
00095
00096 kfitterparticle get_mother_track(){ return track(); }
00097 HepLorentzVector get_4momentum() { return momentum(); }
00098 Hep3Vector get_position() { return static_cast<Hep3Vector>(position()); }
00099 HepSymMatrix get_err_track() { return error(); }
00100
00101 int start() { return static_cast<int>(make()); }
00102 #endif //KF_WITH_OLD_INTERFACE
00103
00104 private:
00105 unsigned m_errorFlag;
00106 unsigned m_atDecayPoint;
00107 unsigned m_trackNum;
00108 unsigned m_errVertexFlag;
00109 unsigned m_correlationFlag;
00110 unsigned m_errVertexTrackFlag;
00111 unsigned m_beforeAfterFlag;
00112 double m_magneticField;
00113
00114
00115 std::vector<kfitterparticle> m_plist;
00116 std::vector<HepMatrix> m_correlation;
00117 std::vector<HepMatrix> m_errVertexTrack;
00118
00119
00120 Hep3Vector m_vertex;
00121 HepSymMatrix m_errVertex;
00122
00123
00124 void m_delMdelC(HepMatrix&);
00125 void m_error(HepSymMatrix&);
00126
00127
00128 double m_charge;
00129 kfitterparticle m_mother;
00130 };
00131
00132 #endif