00001 #ifndef BasicMultiTrajectoryState_H 00002 #define BasicMultiTrajectoryState_H 00003 00004 #include "TrackingTools/TrajectoryState/interface/BasicTrajectoryState.h" 00005 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 00006 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00007 #include "FWCore/Utilities/interface/Exception.h" 00008 00017 class BasicMultiTrajectoryState : public BasicTrajectoryState { 00018 00019 typedef TrajectoryStateOnSurface TSOS; 00020 00021 public: 00022 00023 BasicMultiTrajectoryState( const std::vector<TSOS>& tsvec); 00024 00025 BasicMultiTrajectoryState() {} 00026 00027 00034 void rescaleError(double factor); 00035 00036 virtual BasicMultiTrajectoryState* clone() const { 00037 return new BasicMultiTrajectoryState(*this); 00038 } 00039 00040 virtual std::vector<TrajectoryStateOnSurface> components() const { 00041 return theStates; 00042 } 00043 00044 00045 virtual bool canUpdateLocalParameters() const { return false; } 00046 virtual void update( const LocalTrajectoryParameters& p, 00047 const Surface& aSurface, 00048 const MagneticField* field, 00049 const SurfaceSide side ) ; 00050 virtual void update( const LocalTrajectoryParameters& p, 00051 const LocalTrajectoryError& err, 00052 const Surface& aSurface, 00053 const MagneticField* field, 00054 const SurfaceSide side, 00055 double weight ) ; 00056 private: 00057 00058 std::vector<TSOS> theStates; 00059 00060 void combine(); 00061 00062 }; 00063 00064 #endif