00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef TRKEXCHANGEPAR_H
00018 #define TRKEXCHANGEPAR_H
00019 #include "CLHEP/Matrix/Vector.h"
00020 #include "CLHEP/Matrix/Matrix.h"
00021 #include "CLHEP/Matrix/SymMatrix.h"
00022
00023 #include <iosfwd>
00024
00025 using CLHEP::Hep3Vector;
00026 using CLHEP::HepVector;
00027 using CLHEP::HepMatrix;
00028 using CLHEP::HepSymMatrix;
00029
00030 class TrkExchangePar {
00031 public:
00032 enum {nParam = 5};
00033 enum {ex_d0, ex_phi0, ex_omega, ex_z0, ex_tanDip};
00034
00035 TrkExchangePar(const HepVector&, const HepMatrix&);
00036 TrkExchangePar(const HepVector&, const HepSymMatrix&);
00037 TrkExchangePar(const HepVector&);
00038 TrkExchangePar(double d0In, double phi0In, double omegaIn,
00039 double z0In, double tanDipIn);
00040 ~TrkExchangePar();
00041
00042 double d0() const {return paramVec[ex_d0];}
00043 double phi0() const {return paramVec[ex_phi0];}
00044 double omega() const {return paramVec[ex_omega];}
00045 double z0() const {return paramVec[ex_z0];}
00046 double tanDip() const {return paramVec[ex_tanDip];}
00047
00048 const HepVector& params() const {return paramVec;}
00049 HepVector& params() {return paramVec;}
00050 const HepSymMatrix& covariance() const {return paramErr;}
00051 HepSymMatrix& covariance() {return paramErr;}
00052
00053 void setD0(double in) {paramVec[ex_d0] = in;}
00054 void setPhi0(double in) {paramVec[ex_phi0] = in;}
00055 void setOmega(double in) {paramVec[ex_omega] = in;}
00056 void setZ0(double in) {paramVec[ex_z0] = in;}
00057 void setTanDip(double in) {paramVec[ex_tanDip] = in;}
00058 void setError(const HepSymMatrix& in) {paramErr = in;}
00059
00060 void print(std::ostream& o) const;
00061 void printAll(std::ostream& o) const;
00062
00063 private:
00064 HepVector paramVec;
00065 HepSymMatrix paramErr;
00066
00067 };
00068
00069
00070 std::ostream& operator<<(std::ostream& o, const TrkExchangePar& helix);
00071
00072 #endif