File indexing completed on 2024-09-07 04:34:27
0001
0002 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
0003 #define Alignment_CommonAlignmentAlgorithm_AlignmentAlgorithmBase_h
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #include <vector>
0020 #include <utility>
0021 #include <memory>
0022
0023 class AlignableTracker;
0024 class AlignableMuon;
0025 class AlignableExtras;
0026 class AlignmentParameterStore;
0027 class IntegratedCalibrationBase;
0028 class Trajectory;
0029
0030
0031
0032
0033
0034
0035 #include "Alignment/CommonAlignment/interface/Utilities.h"
0036 #include "Alignment/LaserAlignment/interface/TsosVectorCollection.h"
0037 #include "DataFormats/Alignment/interface/TkFittedLasBeamCollectionFwd.h"
0038 #include "DataFormats/Alignment/interface/AliClusterValueMapFwd.h"
0039 #include "FWCore/Framework/interface/Event.h"
0040 #include "FWCore/Framework/interface/ConsumesCollector.h"
0041
0042 namespace edm {
0043 class EventSetup;
0044 class ParameterSet;
0045 }
0046 namespace reco {
0047 class Track;
0048 class BeamSpot;
0049 }
0050
0051
0052 typedef std::pair<const Trajectory *, const reco::Track *> ConstTrajTrackPair;
0053 typedef std::vector<ConstTrajTrackPair> ConstTrajTrackPairs;
0054
0055 typedef std::vector<IntegratedCalibrationBase *> Calibrations;
0056 typedef std::vector<std::unique_ptr<IntegratedCalibrationBase>> CalibrationsOwner;
0057
0058 typedef std::vector<IntegratedCalibrationBase *> Calibrations;
0059
0060 class AlignmentAlgorithmBase {
0061 public:
0062
0063
0064
0065
0066
0067 typedef std::pair<const Trajectory *, const reco::Track *> ConstTrajTrackPair;
0068 typedef std::vector<ConstTrajTrackPair> ConstTrajTrackPairCollection;
0069 using RunNumber = align::RunNumber;
0070 using RunRange = align::RunRange;
0071
0072
0073 class EventInfo {
0074 public:
0075 EventInfo(const edm::EventID &theEventId,
0076 const ConstTrajTrackPairCollection &theTrajTrackPairs,
0077 const reco::BeamSpot &theBeamSpot,
0078 const AliClusterValueMap *theClusterValueMap)
0079 : eventId_(theEventId),
0080 trajTrackPairs_(theTrajTrackPairs),
0081 beamSpot_(theBeamSpot),
0082 clusterValueMap_(theClusterValueMap) {}
0083
0084 const edm::EventID eventId() const { return eventId_; }
0085 const ConstTrajTrackPairCollection &trajTrackPairs() const { return trajTrackPairs_; }
0086 const reco::BeamSpot &beamSpot() const { return beamSpot_; }
0087 const AliClusterValueMap *clusterValueMap() const { return clusterValueMap_; }
0088
0089 private:
0090 const edm::EventID eventId_;
0091 const ConstTrajTrackPairCollection &trajTrackPairs_;
0092 const reco::BeamSpot &beamSpot_;
0093 const AliClusterValueMap *clusterValueMap_;
0094 };
0095
0096
0097 class EndRunInfo {
0098 public:
0099 EndRunInfo(const edm::RunID &theRunId,
0100 const TkFittedLasBeamCollection *theTkLasBeams,
0101 const TsosVectorCollection *theTkLasBeamTsoses)
0102 : runId_(theRunId), tkLasBeams_(theTkLasBeams), tkLasBeamTsoses_(theTkLasBeamTsoses) {}
0103
0104 const edm::RunID runId() const { return runId_; }
0105 const TkFittedLasBeamCollection *tkLasBeams() const { return tkLasBeams_; }
0106 const TsosVectorCollection *tkLasBeamTsoses() const { return tkLasBeamTsoses_; }
0107
0108 private:
0109 const edm::RunID runId_;
0110 const TkFittedLasBeamCollection *tkLasBeams_;
0111 const TsosVectorCollection *tkLasBeamTsoses_;
0112 };
0113
0114
0115 AlignmentAlgorithmBase(const edm::ParameterSet &, const edm::ConsumesCollector &) {}
0116
0117
0118 virtual ~AlignmentAlgorithmBase() {}
0119
0120
0121 virtual void initialize(const edm::EventSetup &setup,
0122 AlignableTracker *tracker,
0123 AlignableMuon *muon,
0124 AlignableExtras *extras,
0125 AlignmentParameterStore *store) = 0;
0126
0127
0128
0129 virtual bool supportsCalibrations() { return false; }
0130
0131
0132 virtual bool addCalibrations(const Calibrations &) { return false; }
0133
0134 bool addCalibrations(const CalibrationsOwner &cals) {
0135 Calibrations tmp;
0136 tmp.reserve(cals.size());
0137 for (const auto &ptr : cals) {
0138 tmp.push_back(ptr.get());
0139 }
0140 return addCalibrations(tmp);
0141 }
0142
0143
0144 virtual bool processesEvents() { return true; }
0145
0146
0147 virtual bool storeAlignments() { return true; }
0148
0149
0150
0151
0152
0153 virtual void startNewLoop() {}
0154
0155
0156 virtual void terminate(const edm::EventSetup &iSetup) = 0;
0157
0158 virtual void terminate() {}
0159
0160
0161 virtual void run(const edm::EventSetup &setup, const EventInfo &eventInfo) = 0;
0162
0163
0164 virtual void beginRun(const edm::Run &, const edm::EventSetup &, bool changed) {}
0165
0166
0167 virtual void endRun(const EndRunInfo &runInfo, const edm::EventSetup &setup) {}
0168
0169
0170 virtual void beginLuminosityBlock(const edm::EventSetup &setup) {}
0171
0172
0173 virtual void endLuminosityBlock(const edm::EventSetup &setup) {}
0174
0175
0176
0177 virtual bool setParametersForRunRange(const RunRange &rr) { return false; };
0178 };
0179
0180
0181 typedef AlignmentAlgorithmBase::EventInfo EventInfo;
0182 typedef AlignmentAlgorithmBase::EndRunInfo EndRunInfo;
0183
0184 #endif