Go to the documentation of this file.00001
00002 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
00003 #define Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
00004
00010
00011 #include <vector>
00012 #include <utility>
00013
00014 class AlignableTracker;
00015 class AlignableMuon;
00016 class AlignableExtras;
00017 class AlignmentParameterStore;
00018 class IntegratedCalibrationBase;
00019 class Trajectory;
00020
00021
00022
00023
00024
00025
00026 #include "CondCore/DBCommon/interface/Time.h"
00027 #include "Alignment/LaserAlignment/interface/TsosVectorCollection.h"
00028 #include "DataFormats/Alignment/interface/TkFittedLasBeamCollectionFwd.h"
00029 #include "DataFormats/Alignment/interface/AliClusterValueMapFwd.h"
00030
00031 namespace edm { class EventID; class RunID; class EventSetup; class ParameterSet; }
00032 namespace reco { class Track; class BeamSpot; }
00033
00034 class AlignmentAlgorithmBase
00035 {
00036
00037 public:
00038
00039 typedef std::pair<const Trajectory*, const reco::Track*> ConstTrajTrackPair;
00040 typedef std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection;
00041 typedef cond::RealTimeType<cond::runnumber>::type RunNumber;
00042 typedef std::pair<RunNumber,RunNumber> RunRange;
00043
00045 struct EventInfo {
00046 EventInfo(const edm::EventID &eventId,
00047 const ConstTrajTrackPairCollection &trajTrackPairs,
00048 const reco::BeamSpot &beamSpot,
00049 const AliClusterValueMap *clusterValueMap)
00050 : eventId_(eventId), trajTrackPairs_(trajTrackPairs), beamSpot_(beamSpot), clusterValueMap_(clusterValueMap) {}
00051
00052 const edm::EventID &eventId_;
00053 const ConstTrajTrackPairCollection &trajTrackPairs_;
00054 const reco::BeamSpot &beamSpot_;
00055 const AliClusterValueMap *clusterValueMap_;
00056 };
00057
00059 struct EndRunInfo {
00060 EndRunInfo(const edm::RunID &runId, const TkFittedLasBeamCollection *tkLasBeams,
00061 const TsosVectorCollection *tkLasBeamTsoses)
00062 : runId_(runId), tkLasBeams_(tkLasBeams), tkLasBeamTsoses_(tkLasBeamTsoses) {}
00063 const edm::RunID &runId_;
00064 const TkFittedLasBeamCollection *tkLasBeams_;
00065 const TsosVectorCollection *tkLasBeamTsoses_;
00066 };
00067
00069 AlignmentAlgorithmBase(const edm::ParameterSet& cfg);
00070
00072 virtual ~AlignmentAlgorithmBase() {};
00073
00075 virtual void initialize( const edm::EventSetup& setup,
00076 AlignableTracker* tracker,
00077 AlignableMuon* muon,
00078 AlignableExtras* extras,
00079 AlignmentParameterStore* store ) = 0;
00084 virtual bool addCalibrations(const std::vector<IntegratedCalibrationBase*> &iCals){return false;}
00085
00088 virtual void startNewLoop() {}
00089
00091 virtual void terminate(const edm::EventSetup& iSetup) = 0;
00092
00094 virtual void run( const edm::EventSetup &setup, const EventInfo &eventInfo) = 0;
00095
00097 virtual void beginRun(const edm::EventSetup &setup) {};
00098
00100 virtual void endRun(const EndRunInfo &runInfo, const edm::EventSetup &setup) {};
00101
00103 virtual void beginLuminosityBlock(const edm::EventSetup &setup) {};
00104
00106 virtual void endLuminosityBlock(const edm::EventSetup &setup) {};
00107
00110 virtual bool setParametersForRunRange(const RunRange& rr) { return false; };
00111 };
00112
00113 #endif