00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h 00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h 00003 00004 // 00005 // Base class for the alignment algorithm 00006 // 00007 // Any algorithm should derive from this class 00008 // 00009 00010 #include <vector> 00011 #include <utility> 00012 00013 class AlignableTracker; 00014 class AlignableMuon; 00015 class AlignmentParameterStore; 00016 class Trajectory; 00017 00018 namespace edm { class EventSetup; class ParameterSet; } 00019 namespace reco { class Track; } 00020 00021 class AlignmentAlgorithmBase 00022 { 00023 00024 public: 00025 00026 typedef std::pair<const Trajectory*, const reco::Track*> ConstTrajTrackPair; 00027 typedef std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection; 00028 00030 AlignmentAlgorithmBase(const edm::ParameterSet& cfg); 00031 00033 virtual ~AlignmentAlgorithmBase() {}; 00034 00036 virtual void initialize( const edm::EventSetup& setup, 00037 AlignableTracker* tracker, 00038 AlignableMuon* muon, 00039 AlignmentParameterStore* store ) = 0; 00042 virtual void startNewLoop(void) {} 00043 00045 virtual void terminate(void) = 0; 00046 00048 virtual void run( const edm::EventSetup& setup, 00049 const ConstTrajTrackPairCollection& tracks ) = 0; 00050 00051 }; 00052 00053 #endif