CMS 3D CMS Logo

JetCorrFactorsProducer.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_PatAlgos_JetCorrFactorsProducer_h
2 #define PhysicsTools_PatAlgos_JetCorrFactorsProducer_h
3 
39 #include <map>
40 #include <string>
41 #include <memory>
42 
45 
50 
56 
57 
58 namespace pat {
59 
61  public:
65  typedef std::map<JetCorrFactors::Flavor, std::vector<std::string> > FlavorCorrLevelMap;
66 
67  public:
71  ~JetCorrFactorsProducer() override {};
73  void produce(edm::Event& event, const edm::EventSetup& setup) override;
75  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
76 
77  private:
79  bool flavorDependent() const { return (levels_.size()>1); };
81  std::vector<JetCorrectorParameters> params(const JetCorrectorParametersCollection& parameters, const std::vector<std::string>& levels) const;
85  std::vector<std::string> expand(const std::vector<std::string>& levels, const JetCorrFactors::Flavor& flavor);
89  int numberOf(const edm::Handle<std::vector<reco::Vertex> >& primaryVertices);
92 
93  private:
95  bool emf_;
106  std::vector<std::string> extraJPTOffset_;
114  bool useNPV_;
115  bool useRho_;
126  FlavorCorrLevelMap levels_;
128  unsigned long long cacheId_;
130  std::map<JetCorrFactors::Flavor, std::unique_ptr<FactorizedJetCorrector> > correctors_;
132  std::unique_ptr<FactorizedJetCorrector> extraJPTOffsetCorrector_;
133  };
134 
135  inline int
137  {
138  int npv=0;
139  for(std::vector<reco::Vertex>::const_iterator pv=primaryVertices->begin(); pv!=primaryVertices->end(); ++pv){
140  if(pv->ndof()>=4) ++npv;
141  }
142  return npv;
143  }
144 }
145 
146 #endif
edm::EDGetTokenT< double > rhoToken_
std::string payload()
map jet algorithm to payload in DB
~JetCorrFactorsProducer() override
default destructor
std::string label_
label of jec factors
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
edm::EDGetTokenT< std::vector< reco::Vertex > > primaryVerticesToken_
std::vector< std::string > extraJPTOffset_
bool emf_
use electromagnetic fraction for jet energy corrections or not (will only have an effect for jets Cal...
std::string payload_
label of payload
Definition: HeavyIon.h:7
JetCorrFactorsProducer(const edm::ParameterSet &cfg)
default constructor
bool flavorDependent() const
return true if the jec levels contain at least one flavor dependent correction level ...
void produce(edm::Event &event, const edm::EventSetup &setup) override
everything that needs to be done per event
int numberOf(const edm::Handle< std::vector< reco::Vertex > > &primaryVertices)
determines the number of valid primary vertices for the standard L1Offset correction of JetMET ...
def pv(vc)
Definition: MetAnalyzer.py:7
Produces a ValueMap between JetCorrFactors and the to the originating reco jets.
edm::ValueMap< pat::JetCorrFactors > JetCorrFactorsMap
value map for JetCorrFactors (to be written into the event)
std::vector< std::string > expand(const std::vector< std::string > &levels, const JetCorrFactors::Flavor &flavor)
primaryVertices
Definition: jets_cff.py:24
edm::EDGetTokenT< edm::View< reco::Jet > > srcToken_
input jet collection
std::vector< JetCorrectorParameters > params(const JetCorrectorParametersCollection &parameters, const std::vector< std::string > &levels) const
return the jec parameters as input to the FactorizedJetCorrector for different flavors ...
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
std::unique_ptr< FactorizedJetCorrector > extraJPTOffsetCorrector_
cache container for JPTOffset jet corrections
std::map< JetCorrFactors::Flavor, std::unique_ptr< FactorizedJetCorrector > > correctors_
cache container for jet corrections
edm::InputTag primaryVertices_
label for L1Offset primaryVertex collection
edm::InputTag rho_
label for L1FastJet energy density parameter rho
bool useNPV_
use the NPV and rho with the JEC? (used for L1Offset/L1FastJet and L1FastJet, resp.)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
description of configuration file parameters
std::string type_
type of flavor dependent JEC factors (only &#39;J&#39; and &#39;T&#39; are allowed)
float evaluate(edm::View< reco::Jet >::const_iterator &jet, const JetCorrFactors::Flavor &flavor, int level)
evaluate jet correction factor up to a given level
std::map< JetCorrFactors::Flavor, std::vector< std::string > > FlavorCorrLevelMap
map of correction levels to different flavors
unsigned long long cacheId_
cache identifier for JetCorrectionsRecord
Definition: event.py:1