Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
00003
00004
00005
00006
00007
00008
00009
00010 #include <vector>
00011 #include <utility>
00012
00013 class AlignableTracker;
00014 class AlignableMuon;
00015 class AlignableExtras;
00016 class AlignmentParameterStore;
00017 class Trajectory;
00018
00019
00020
00021
00022
00023
00024 #include "Alignment/LaserAlignment/interface/TsosVectorCollection.h"
00025 #include "DataFormats/Alignment/interface/TkFittedLasBeamCollectionFwd.h"
00026 #include "DataFormats/Alignment/interface/AliClusterValueMapFwd.h"
00027
00028 namespace edm { class EventID; class RunID; class EventSetup; class ParameterSet; }
00029 namespace reco { class Track; class BeamSpot; }
00030
00031 class AlignmentAlgorithmBase
00032 {
00033
00034 public:
00035
00036 typedef std::pair<const Trajectory*, const reco::Track*> ConstTrajTrackPair;
00037 typedef std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection;
00038
00040 struct EventInfo {
00041 EventInfo(const edm::EventID &eventId,
00042 const ConstTrajTrackPairCollection &trajTrackPairs,
00043 const reco::BeamSpot &beamSpot,
00044 const AliClusterValueMap *clusterValueMap)
00045 : eventId_(eventId), trajTrackPairs_(trajTrackPairs), beamSpot_(beamSpot), clusterValueMap_(clusterValueMap) {}
00046
00047 const edm::EventID &eventId_;
00048 const ConstTrajTrackPairCollection &trajTrackPairs_;
00049 const reco::BeamSpot &beamSpot_;
00050 const AliClusterValueMap *clusterValueMap_;
00051 };
00052
00054 struct EndRunInfo {
00055 EndRunInfo(const edm::RunID &runId, const TkFittedLasBeamCollection *tkLasBeams,
00056 const TsosVectorCollection *tkLasBeamTsoses)
00057 : runId_(runId), tkLasBeams_(tkLasBeams), tkLasBeamTsoses_(tkLasBeamTsoses) {}
00058 const edm::RunID &runId_;
00059 const TkFittedLasBeamCollection *tkLasBeams_;
00060 const TsosVectorCollection *tkLasBeamTsoses_;
00061 };
00062
00064 AlignmentAlgorithmBase(const edm::ParameterSet& cfg);
00065
00067 virtual ~AlignmentAlgorithmBase() {};
00068
00070 virtual void initialize( const edm::EventSetup& setup,
00071 AlignableTracker* tracker,
00072 AlignableMuon* muon,
00073 AlignableExtras* extras,
00074 AlignmentParameterStore* store ) = 0;
00077 virtual void startNewLoop() {}
00078
00080 virtual void terminate() = 0;
00081
00083 virtual void run( const edm::EventSetup &setup, const EventInfo &eventInfo) = 0;
00084
00086 virtual void beginRun(const edm::EventSetup &setup) {};
00087
00089 virtual void endRun(const EndRunInfo &runInfo, const edm::EventSetup &setup) {};
00090
00092 virtual void beginLuminosityBlock(const edm::EventSetup &setup) {};
00093
00095 virtual void endLuminosityBlock(const edm::EventSetup &setup) {};
00096 };
00097
00098 #endif