CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h

Go to the documentation of this file.
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 AlignableExtras;
00016 class AlignmentParameterStore;
00017 class Trajectory;
00018 // These data formats cannot be forward declared since they are typedef's,
00019 // so include the headers that define the typedef's
00020 // (no need to include in dependencies in BuildFile):
00021 // class TsosVectorCollection;
00022 // class TkFittedLasBeamCollection;
00023 // class AliClusterValueMap;
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