00001 #ifndef _TRACKER_TRAJECTORYMEASUREMENT_H_
00002 #define _TRACKER_TRAJECTORYMEASUREMENT_H_
00003
00004 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00005 #include "boost/intrusive_ptr.hpp"
00006 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00007
00008 class DetLayer;
00009
00024 class TrajectoryMeasurement {
00025 public:
00026
00027 typedef TransientTrackingRecHit::RecHitPointer RecHitPointer;
00028 typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer;
00029
00030 TrajectoryMeasurement() {}
00031
00033 TrajectoryMeasurement(TrajectoryStateOnSurface fwdTrajectoryStateOnSurface,
00034 ConstRecHitPointer aRecHit) :
00035 theFwdPredictedState(fwdTrajectoryStateOnSurface),
00036 theUpdatedState(fwdTrajectoryStateOnSurface),
00037 theRecHit(aRecHit),
00038 theEstimate(0), theLayer(0) {}
00039
00041 TrajectoryMeasurement(TrajectoryStateOnSurface fwdTrajectoryStateOnSurface,
00042 ConstRecHitPointer aRecHit, float aEstimate) :
00043 theFwdPredictedState(fwdTrajectoryStateOnSurface),
00044 theUpdatedState(fwdTrajectoryStateOnSurface),
00045 theRecHit(aRecHit),
00046 theEstimate(aEstimate), theLayer(0) {}
00047 TrajectoryMeasurement(TrajectoryStateOnSurface fwdTrajectoryStateOnSurface,
00048 ConstRecHitPointer aRecHit, float aEstimate,
00049 const DetLayer* layer) :
00050 theFwdPredictedState(fwdTrajectoryStateOnSurface),
00051 theUpdatedState(fwdTrajectoryStateOnSurface),
00052 theRecHit(aRecHit),
00053 theEstimate(aEstimate), theLayer(layer) {}
00054
00056 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00057 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00058 ConstRecHitPointer aRecHit) :
00059 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00060 theUpdatedState(uTrajectoryStateOnSurface),
00061 theRecHit(aRecHit),
00062 theEstimate(0), theLayer(0) {}
00063
00065 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00066 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00067 ConstRecHitPointer aRecHit, float aEstimate) :
00068 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00069 theUpdatedState(uTrajectoryStateOnSurface),
00070 theRecHit(aRecHit),
00071 theEstimate(aEstimate), theLayer(0) {}
00072 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00073 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00074 ConstRecHitPointer aRecHit, float aEstimate,
00075 const DetLayer* layer) :
00076 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00077 theUpdatedState(uTrajectoryStateOnSurface),
00078 theRecHit(aRecHit),
00079 theEstimate(aEstimate), theLayer(layer) {}
00080
00084 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00085 TrajectoryStateOnSurface bwdPredTrajectoryStateOnSurface,
00086 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00087 ConstRecHitPointer aRecHit) :
00088 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00089 theBwdPredictedState(bwdPredTrajectoryStateOnSurface),
00090 theUpdatedState(uTrajectoryStateOnSurface),
00091 theRecHit(aRecHit),
00092 theEstimate(0), theLayer(0) {}
00093
00097 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00098 TrajectoryStateOnSurface bwdPredTrajectoryStateOnSurface,
00099 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00100 ConstRecHitPointer aRecHit, float aEstimate) :
00101 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00102 theBwdPredictedState(bwdPredTrajectoryStateOnSurface),
00103 theUpdatedState(uTrajectoryStateOnSurface),
00104 theRecHit(aRecHit),
00105 theEstimate(aEstimate), theLayer(0) {}
00106 TrajectoryMeasurement(TrajectoryStateOnSurface fwdPredTrajectoryStateOnSurface,
00107 TrajectoryStateOnSurface bwdPredTrajectoryStateOnSurface,
00108 TrajectoryStateOnSurface uTrajectoryStateOnSurface,
00109 ConstRecHitPointer aRecHit, float aEstimate,
00110 const DetLayer* layer) :
00111 theFwdPredictedState(fwdPredTrajectoryStateOnSurface),
00112 theBwdPredictedState(bwdPredTrajectoryStateOnSurface),
00113 theUpdatedState(uTrajectoryStateOnSurface),
00114 theRecHit(aRecHit),
00115 theEstimate(aEstimate), theLayer(layer) {}
00116
00117 ~TrajectoryMeasurement() {
00118
00119
00120
00121
00122 }
00123
00127 TrajectoryStateOnSurface predictedState() const {
00128 return theFwdPredictedState;
00129 }
00130
00132 TrajectoryStateOnSurface forwardPredictedState() const {
00133 return theFwdPredictedState;
00134 }
00136 TrajectoryStateOnSurface backwardPredictedState() const {
00137 return theBwdPredictedState;
00138 }
00139
00143 TrajectoryStateOnSurface updatedState() const {
00144 return theUpdatedState;
00145 }
00146
00147 ConstRecHitPointer recHit() const {
00148 return theRecHit;
00149 }
00150
00151 float estimate() const { return theEstimate;}
00152
00153 const DetLayer* layer() const { return theLayer;}
00154
00155 private:
00156 TrajectoryStateOnSurface theFwdPredictedState;
00157 TrajectoryStateOnSurface theBwdPredictedState;
00158 TrajectoryStateOnSurface theUpdatedState;
00159 ConstRecHitPointer theRecHit;
00160 float theEstimate;
00161 const DetLayer* theLayer;
00162 };
00163
00164 #endif