00001 #ifndef Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentTracklet_h 00002 #define Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentTracklet_h 00003 00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00005 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h" 00006 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00007 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00008 00009 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentSetup.h" 00010 00013 00014 00015 class KalmanAlignmentTracklet : public ReferenceCounted 00016 { 00017 00018 public: 00019 00020 typedef std::pair<Trajectory*, reco::Track*> TrajTrackPair; 00021 typedef std::vector< TrajTrackPair > TrajTrackPairCollection; 00022 typedef AlignmentAlgorithmBase::ConstTrajTrackPair ConstTrajTrackPair; 00023 typedef AlignmentAlgorithmBase::ConstTrajTrackPairCollection ConstTrajTrackPairCollection; 00024 00025 typedef ReferenceCountingPointer< KalmanAlignmentTracklet > TrackletPtr; 00026 00028 KalmanAlignmentTracklet( TrajTrackPair& trajTrackPair, 00029 const TrajectoryStateOnSurface& external, 00030 KalmanAlignmentSetup* setup ); 00031 00032 KalmanAlignmentTracklet( TrajTrackPair& trajTrackPair, 00033 KalmanAlignmentSetup* setup ); 00034 00036 ~KalmanAlignmentTracklet( void ); 00037 00038 inline const Trajectory* trajectory( void ) const { return theTrajTrackPair.first; } 00039 inline const reco::Track* track( void ) const { return theTrajTrackPair.second; } 00040 inline const ConstTrajTrackPair trajTrackPair( void ) const { return theTrajTrackPair; } 00041 00042 inline const TrajectoryStateOnSurface externalPrediction( void ) const { return theExternalPrediction; } 00043 inline bool externalPredictionAvailable( void ) const { return theExternalPredictionFlag; } 00044 00045 inline KalmanAlignmentSetup* alignmentSetup( void ) const { return theAlignmentSetup; } 00046 00047 private: 00048 00049 ConstTrajTrackPair theTrajTrackPair; 00050 00051 TrajectoryStateOnSurface theExternalPrediction; 00052 bool theExternalPredictionFlag; 00053 00054 KalmanAlignmentSetup* theAlignmentSetup; 00055 }; 00056 00057 #endif