Go to the documentation of this file.00001 #ifndef Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentSetup_h
00002 #define Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentSetup_h
00003
00004 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00005 #include "TrackingTools/TrackFitters/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