File indexing completed on 2024-04-06 11:56:10
0001 #ifndef CommonAlignmentMonitor_AlignmentMonitorBase_h
0002 #define CommonAlignmentMonitor_AlignmentMonitorBase_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0025 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h"
0026 #include "Alignment/TrackerAlignment/interface/AlignableTracker.h"
0027 #include "Alignment/MuonAlignment/interface/AlignableMuon.h"
0028 #include "FWCore/Framework/interface/Frameworkfwd.h"
0029 #include "FWCore/Framework/interface/Event.h"
0030 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h"
0031 #include "DataFormats/TrackReco/interface/Track.h"
0032
0033
0034 #include "CommonTools/Utils/interface/TFileDirectory.h"
0035 #include "TH1F.h"
0036 #include "TH2F.h"
0037 #include "TProfile.h"
0038 #include "TTree.h"
0039 #include "FWCore/Framework/interface/ConsumesCollector.h"
0040
0041
0042
0043 class AlignmentMonitorBase {
0044 public:
0045 typedef std::pair<const Trajectory *, const reco::Track *> ConstTrajTrackPair;
0046 typedef std::vector<ConstTrajTrackPair> ConstTrajTrackPairCollection;
0047
0048
0049 AlignmentMonitorBase(const edm::ParameterSet &cfg, const edm::ConsumesCollector &iC, std::string name);
0050
0051
0052 virtual ~AlignmentMonitorBase() {}
0053
0054
0055 void beginOfJob(AlignableTracker *pTracker, AlignableMuon *pMuon, AlignmentParameterStore *pStore);
0056
0057
0058 void startingNewLoop();
0059
0060
0061 void duringLoop(const edm::Event &iEvent,
0062 const edm::EventSetup &iSetup,
0063 const ConstTrajTrackPairCollection &iTrajTracks);
0064
0065
0066 void endOfLoop();
0067
0068
0069 void endOfJob() {}
0070
0071
0072
0073
0074 virtual void book() = 0;
0075
0076
0077 virtual void event(const edm::Event &iEvent,
0078 const edm::EventSetup &iSetup,
0079 const ConstTrajTrackPairCollection &iTrajTracks) {}
0080
0081
0082
0083 virtual void afterAlignment() {}
0084
0085 protected:
0086
0087
0088
0089 TH1F *book1D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX);
0090 TProfile *bookProfile(std::string dir,
0091 std::string name,
0092 std::string title,
0093 int nchX,
0094 double lowX,
0095 double highX,
0096 int nchY = 1,
0097 double lowY = 0.,
0098 double highY = 0.,
0099 const char *option = "s");
0100 TH2F *book2D(std::string dir,
0101 std::string name,
0102 std::string title,
0103 int nchX,
0104 double lowX,
0105 double highX,
0106 int nchY,
0107 double lowY,
0108 double highY);
0109 TFileDirectory *directory(std::string dir);
0110
0111 int iteration() { return m_iteration; }
0112 AlignableTracker *pTracker() { return mp_tracker; }
0113 AlignableMuon *pMuon() { return mp_muon; }
0114 AlignmentParameterStore *pStore() { return mp_store; }
0115 AlignableNavigator *pNavigator() { return mp_navigator; }
0116
0117 const edm::InputTag m_beamSpotTag;
0118
0119 public:
0120 AlignmentMonitorBase(const AlignmentMonitorBase &) = delete;
0121 const AlignmentMonitorBase &operator=(const AlignmentMonitorBase &) = delete;
0122
0123 private:
0124
0125
0126 int m_iteration;
0127 AlignableTracker *mp_tracker;
0128 AlignableMuon *mp_muon;
0129 AlignmentParameterStore *mp_store;
0130 AlignableNavigator *mp_navigator;
0131
0132 std::map<std::vector<std::string>, TFileDirectory *> m_baseDirMap, m_iterDirMap;
0133 };
0134
0135
0136 using AlignmentMonitors = std::vector<std::unique_ptr<AlignmentMonitorBase> >;
0137
0138 #endif