Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:39

0001 /****************************************************************************
0002 *
0003 * This is a part of PPS-TOTEM offline software.
0004 * Authors:
0005 *   Laurent Forthomme (laurent.forthomme@cern.ch)
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 /// \tparam G Geometry condition format definition
0019 /// \tparam D Digis input collection type
0020 /// \tparam R RecHits output collection type
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   /// Conversion constant between time slice and absolute time (in ns)
0038   double ts_to_ns_;
0039   /// Switch on/off the timing calibration
0040   bool apply_calib_;
0041   /// DB-loaded calibration object
0042   const PPSTimingCalibration* calib_{nullptr};
0043   const PPSTimingCalibrationLUT* calibLUT_{nullptr};
0044   /// Timing correction formula
0045   std::unique_ptr<reco::FormulaEvaluator> calib_fct_;
0046 };
0047 
0048 #endif