File indexing completed on 2024-04-06 12:27:39
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef RecoPPS_Local_TimingRecHitProducerAlgorithm
0010 #define RecoPPS_Local_TimingRecHitProducerAlgorithm
0011
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "CommonTools/Utils/interface/FormulaEvaluator.h"
0014
0015 #include "CondFormats/PPSObjects/interface/PPSTimingCalibration.h"
0016 #include "CondFormats/PPSObjects/interface/PPSTimingCalibrationLUT.h"
0017
0018
0019
0020
0021 template <typename G, typename D, typename R>
0022 class TimingRecHitProducerAlgorithm {
0023 public:
0024 explicit TimingRecHitProducerAlgorithm(const edm::ParameterSet& iConfig)
0025 : ts_to_ns_(iConfig.getParameter<double>("timeSliceNs")),
0026 apply_calib_(iConfig.getParameter<bool>("applyCalibration")) {}
0027 virtual ~TimingRecHitProducerAlgorithm() = default;
0028
0029 void setCalibration(const PPSTimingCalibration& calib, const PPSTimingCalibrationLUT& calibLUT) {
0030 calib_ = &calib;
0031 calibLUT_ = &calibLUT;
0032 calib_fct_ = std::make_unique<reco::FormulaEvaluator>(calib_->formula());
0033 }
0034 virtual void build(const G&, const D&, R&) = 0;
0035
0036 protected:
0037
0038 double ts_to_ns_;
0039
0040 bool apply_calib_;
0041
0042 const PPSTimingCalibration* calib_{nullptr};
0043 const PPSTimingCalibrationLUT* calibLUT_{nullptr};
0044
0045 std::unique_ptr<reco::FormulaEvaluator> calib_fct_;
0046 };
0047
0048 #endif