CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentSetup.h

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