CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h

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 // These data formats cannot be forward declared since they are typedef's,
00021 // so include the headers that define the typedef's
00022 // (no need to include in dependencies in BuildFile):
00023 // class TsosVectorCollection;
00024 // class TkFittedLasBeamCollection;
00025 // class AliClusterValueMap;
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