Go to the documentation of this file.00001 #ifndef CommonAlignmentMonitor_AlignmentMonitorBase_h
00002 #define CommonAlignmentMonitor_AlignmentMonitorBase_h
00003
00004
00005
00006
00007
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00025 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h"
00026 #include "Alignment/TrackerAlignment/interface/AlignableTracker.h"
00027 #include "Alignment/MuonAlignment/interface/AlignableMuon.h"
00028 #include "FWCore/Framework/interface/Frameworkfwd.h"
00029 #include "FWCore/Framework/interface/Event.h"
00030 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h"
00031 #include "DataFormats/TrackReco/interface/Track.h"
00032
00033
00034 #include "CommonTools/Utils/interface/TFileDirectory.h"
00035 #include "TH1F.h"
00036 #include "TH2F.h"
00037 #include "TProfile.h"
00038 #include "TTree.h"
00039
00040
00041
00042 class AlignmentMonitorBase
00043 {
00044 public:
00045 typedef std::pair<const Trajectory*, const reco::Track*> ConstTrajTrackPair;
00046 typedef std::vector<ConstTrajTrackPair> ConstTrajTrackPairCollection;
00047
00049 AlignmentMonitorBase(const edm::ParameterSet &cfg, std::string name);
00050
00052 virtual ~AlignmentMonitorBase() {}
00053
00055 void beginOfJob(AlignableTracker *pTracker, AlignableMuon *pMuon, AlignmentParameterStore *pStore);
00056
00058 void startingNewLoop();
00059
00061 void duringLoop(const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks);
00062
00064 void endOfLoop(const edm::EventSetup &iSetup);
00065
00067 void endOfJob() {}
00068
00070
00072 virtual void book() = 0;
00073
00075 virtual void event(const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks) { }
00076
00079 virtual void afterAlignment(const edm::EventSetup &iSetup) { }
00080
00081 protected:
00085 TH1F *book1D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX);
00086 TProfile *bookProfile(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY=1, double lowY=0., double highY=0., const char *option="s");
00087 TH2F *book2D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY, double lowY, double highY);
00088 TFileDirectory *directory(std::string dir);
00089
00090 int iteration() { return m_iteration; }
00091 AlignableTracker *pTracker() { return mp_tracker; }
00092 AlignableMuon *pMuon() { return mp_muon; }
00093 AlignmentParameterStore *pStore() { return mp_store; }
00094 AlignableNavigator *pNavigator() { return mp_navigator; }
00095
00096 const edm::InputTag m_beamSpotTag;
00097
00098 private:
00099 AlignmentMonitorBase(const AlignmentMonitorBase&);
00100 const AlignmentMonitorBase& operator=(const AlignmentMonitorBase&);
00101
00102
00103
00104 int m_iteration;
00105 AlignableTracker *mp_tracker;
00106 AlignableMuon *mp_muon;
00107 AlignmentParameterStore *mp_store;
00108 AlignableNavigator *mp_navigator;
00109
00110 std::map<std::vector<std::string>, TFileDirectory*> m_baseDirMap, m_iterDirMap;
00111 };
00112
00113
00114 #endif