00001
00002
00003
00004 #ifndef PropagatorB_h
00005 #define PropagatorB_h 1
00006
00007 #include "Kalman/Interface_IPropagator.h"
00008 #include "Kalman/Interface_IModel.h"
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 class PropagatorB : public IPropagator
00034 {
00035 public:
00036
00037
00038 PropagatorB() {}
00039
00040
00041 PropagatorB(IModel* pm){m_model=pm;}
00042
00043
00044 virtual ~PropagatorB() {}
00045
00046
00047
00048
00049
00050
00051 virtual bool propagate(const IState& ini,
00052 const ISurface& is,
00053 const HyperVector& natHV,
00054 IState& end);
00055
00056
00057 virtual HyperVector computeDynamicHV(const IState& ini,
00058 const HyperVector& natHV,
00059 const HyperVector& runHV);
00060
00061
00062
00063 virtual EVector computeDynamicVector(const IState& iniS,
00064 const HyperVector& natHV,
00065 const HyperVector& runHV);
00066
00067
00068
00069 virtual HyperVector computeRunningHV(const IState& ini, const HyperVector& natHV)
00070 {
00071 std::cout << "PropagatorB::computeRunningHV called with: " << natHV << std::endl;
00072 ini.info(2);
00073 return natHV;
00074 }
00075
00076
00077
00078 virtual EMatrix computeFMatrix(const IState& ini,
00079 const HyperVector& natHV,
00080 const HyperVector& runHV);
00081
00082
00083
00084
00085
00086 virtual EMatrix FMatrix() {return m_F;}
00087
00088
00089
00090 virtual EMatrix QMatrix() {return m_Q;}
00091
00092
00093 virtual EMatrix AMatrix(const IPoint& point);
00094
00095
00096 virtual EMatrix BMatrix(const IPoint& point);
00097
00098
00099
00100
00101
00102 virtual const int dynamicNdim() const {return m_model->dynamicNdim();}
00103
00104
00105
00106
00107 virtual void setVerbosity(int v){m_verbosity=v;}
00108
00109 virtual int verbosity() {return m_verbosity;}
00110
00111
00112 virtual std::string propagatorProperties()
00113 {cout << "There are not specific properties !!!" <<endl; return "";}
00114
00115 virtual void setPropagatorProperties(void* prop)
00116 {cout << "You cannot select specific properties !!! " << (int)prop << endl;};
00117
00118
00119
00120
00121 virtual bool applyEnergyLoss(IState& state,
00122 const HyperVector& natHV);
00123
00124 virtual double computeEnergyLoss(const double m, const double e0,
00125 const double s);
00126
00127 protected:
00128
00129
00130 virtual const IModel& model() const {return *m_model;};
00131
00132 virtual void setModel(IModel* p) {m_model = p;};
00133
00134
00135 virtual void computeParameters(const IState& iniS,
00136 const ISurface& surf,
00137 const HyperVector& natHV){
00138 if (m_verbosity > 9){
00139 iniS.info();
00140 surf.info();
00141 natHV.info();
00142 }
00143 }
00144
00145 protected:
00146
00147
00148 const IState* m_iniState;
00149
00150
00151 const ISurface* m_surface;
00152
00153
00154 IState* m_endState;
00155
00156
00157 EMatrix m_F;
00158
00159
00160 EMatrix m_Q;
00161
00162
00163 IModel* m_model;
00164
00165
00166 int m_verbosity;
00167
00168 };
00169
00170 #endif
00171