00001 #ifndef Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentSetup_h 00002 #define Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentSetup_h 00003 00004 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" 00005 #include "TrackingTools/PatternTools/interface/TrajectoryFitter.h" 00006 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00007 00008 #include "Alignment/ReferenceTrajectories/interface/TrajectoryFactoryBase.h" 00009 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentUpdator.h" 00010 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentMetricsUpdator.h" 00011 00012 #include <vector> 00013 #include <string> 00014 00015 00016 class KalmanAlignmentSetup 00017 { 00018 00019 public: 00020 00021 typedef int SubDetId; 00022 typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer; 00023 00024 enum SortingDirection { sortInsideOut, sortOutsideIn, sortUpsideDown, sortDownsideUp }; 00025 00026 KalmanAlignmentSetup( const std::string& id, 00027 const TrajectoryFitter* fitter, 00028 const Propagator* propagator, 00029 const std::vector< SubDetId >& trackingIds, 00030 const unsigned int minTrackingHits, 00031 const SortingDirection sortingDir, 00032 const TrajectoryFitter* externalFitter, 00033 const Propagator* externalPropagator, 00034 const std::vector< SubDetId >& externalIds, 00035 const unsigned int minExternalHits, 00036 const SortingDirection externalSortingDir, 00037 TrajectoryFactoryBase* trajectoryFactory, 00038 KalmanAlignmentUpdator* alignmentUpdator, 00039 KalmanAlignmentMetricsUpdator* metricsUpdator ); 00040 00041 KalmanAlignmentSetup( const KalmanAlignmentSetup& setup ); 00042 00043 ~KalmanAlignmentSetup( void ); 00044 00045 inline const std::string id( void ) const { return theId; } 00046 00047 inline const TrajectoryFitter* fitter( void ) const { return theFitter; } 00048 inline const TrajectoryFitter* externalFitter( void ) const { return theExternalFitter; } 00049 00050 inline const Propagator* propagator( void ) const { return thePropagator; } 00051 inline const Propagator* externalPropagator( void ) const { return theExternalPropagator; } 00052 00053 inline const std::vector< SubDetId >& getTrackingSubDetIds( void ) const { return theTrackingSubDetIds; } 00054 inline const std::vector< SubDetId >& getExternalTrackingSubDetIds( void ) const { return theExternalTrackingSubDetIds; } 00055 00056 inline const unsigned int minTrackingHits( void ) const { return theMinTrackingHits; } 00057 inline const unsigned int minExternalHits( void ) const { return theMinExternalHits; } 00058 00059 inline const SortingDirection sortingDirection( void ) const { return theSortingDir; } 00060 inline const SortingDirection externalSortingDirection( void ) const { return theExternalSortingDir; } 00061 00062 bool useForTracking( const ConstRecHitPointer& recHit ) const; 00063 bool useForExternalTracking( const ConstRecHitPointer& recHit ) const; 00064 00065 TrajectoryFactoryBase* trajectoryFactory( void ) const { return theTrajectoryFactory; } 00066 KalmanAlignmentUpdator* alignmentUpdator( void ) const { return theAlignmentUpdator; } 00067 KalmanAlignmentMetricsUpdator* metricsUpdator( void ) const { return theMetricsUpdator; } 00068 00069 private: 00070 00071 std::string theId; 00072 00073 TrajectoryFitter* theFitter; 00074 Propagator* thePropagator; 00075 std::vector< SubDetId > theTrackingSubDetIds; 00076 unsigned int theMinTrackingHits; 00077 SortingDirection theSortingDir; 00078 00079 TrajectoryFitter* theExternalFitter; 00080 Propagator* theExternalPropagator; 00081 std::vector< SubDetId > theExternalTrackingSubDetIds; 00082 unsigned int theMinExternalHits; 00083 SortingDirection theExternalSortingDir; 00084 00085 TrajectoryFactoryBase* theTrajectoryFactory; 00086 KalmanAlignmentUpdator* theAlignmentUpdator; 00087 KalmanAlignmentMetricsUpdator* theMetricsUpdator; 00088 00089 }; 00090 00091 #endif