Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:15

0001 //
0002 // L1FastjetCorrector
0003 // ------------------
0004 //
0005 // 08/09/2009 Philipp Schieferdecker <philipp.schieferdecker@cern.ch>
0006 //
0007 #ifndef JetMETCorrections_JetCorrector_L1FastjetCorrectorImpl_h
0008 #define JetMETCorrections_JetCorrector_L1FastjetCorrectorImpl_h 1
0009 
0010 #include "JetMETCorrections/JetCorrector/interface/JetCorrectorImpl.h"
0011 #include "JetMETCorrections/Algorithms/interface/JetCorrectorImplMakerBase.h"
0012 #include "CondFormats/JetMETObjects/interface/FactorizedJetCorrectorCalculator.h"
0013 #include "FWCore/Utilities/interface/EDGetToken.h"
0014 
0015 namespace edm {
0016   class ParameterSet;
0017   class Event;
0018   class EventSetup;
0019   class ConsumesCollector;
0020   class ConfigurationDescriptions;
0021 }  // namespace edm
0022 
0023 class L1FastjetCorrectorImplMaker : public JetCorrectorImplMakerBase {
0024 public:
0025   L1FastjetCorrectorImplMaker(edm::ParameterSet const&, edm::ConsumesCollector);
0026   std::unique_ptr<reco::JetCorrectorImpl> make(edm::Event const&, edm::EventSetup const&);
0027 
0028   static void fillDescriptions(edm::ConfigurationDescriptions& iDescriptions);
0029 
0030 private:
0031   edm::EDGetTokenT<double> rhoToken_;
0032 };
0033 
0034 class L1FastjetCorrectorImpl : public reco::JetCorrectorImpl {
0035 public:
0036   typedef L1FastjetCorrectorImplMaker Maker;
0037 
0038   // construction / destruction
0039   L1FastjetCorrectorImpl(std::shared_ptr<FactorizedJetCorrectorCalculator const> corrector, double rho)
0040       : rho_(rho), corrector_(corrector) {}
0041 
0042   //member functions
0043 
0044   /// apply correction using Jet information only
0045   double correction(const LorentzVector& fJet) const override;
0046   /// apply correction using Jet information only
0047   double correction(const reco::Jet& fJet) const override;
0048 
0049   //----- if correction needs a jet reference -------------
0050   bool refRequired() const override { return false; }
0051 
0052 private:
0053   // member data
0054   double rho_;
0055   std::shared_ptr<FactorizedJetCorrectorCalculator const> corrector_;
0056 };
0057 
0058 #endif