CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Attributes
reco::CorrectedJetProducer< T > Class Template Reference

#include <CorrectedJetProducer.h>

Inheritance diagram for reco::CorrectedJetProducer< T >:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Types

typedef std::vector< TJetCollection
 
- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

 CorrectedJetProducer (const edm::ParameterSet &fParameters)
 
virtual void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 
virtual ~CorrectedJetProducer ()
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

const std::vector
< edm::EDGetTokenT
< reco::JetCorrector > > 
mCorrectorTokens
 
const edm::EDGetTokenT
< JetCollection
mInput
 
const bool mVerbose
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

template<class T>
class reco::CorrectedJetProducer< T >

Definition at line 28 of file CorrectedJetProducer.h.

Member Typedef Documentation

template<class T >
typedef std::vector<T> reco::CorrectedJetProducer< T >::JetCollection

Definition at line 31 of file CorrectedJetProducer.h.

Constructor & Destructor Documentation

template<class T >
reco::CorrectedJetProducer< T >::CorrectedJetProducer ( const edm::ParameterSet fParameters)
explicit

Definition at line 47 of file CorrectedJetProducer.h.

References GlobalPosition_Frontier_DevDB_cff::tag.

48  : mInput(consumes<JetCollection>(fConfig.getParameter <edm::InputTag> ("src")))
49  , mCorrectorTokens(edm::vector_transform(fConfig.getParameter<std::vector<edm::InputTag> >("correctors"), [this](edm::InputTag const & tag){return consumes<reco::JetCorrector>(tag);}))
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
const edm::EDGetTokenT< JetCollection > mInput
const std::vector< edm::EDGetTokenT< reco::JetCorrector > > mCorrectorTokens
template<class T >
virtual reco::CorrectedJetProducer< T >::~CorrectedJetProducer ( )
inlinevirtual

Definition at line 33 of file CorrectedJetProducer.h.

33 {}

Member Function Documentation

template<class T >
void reco::CorrectedJetProducer< T >::produce ( edm::StreamID  ,
edm::Event fEvent,
const edm::EventSetup fSetup 
) const
overridevirtual

Implements edm::global::EDProducerBase.

Definition at line 60 of file CorrectedJetProducer.h.

References HLT_25ns14e33_v1_cff::correctors, gather_cfg::cout, edm::Event::getByToken(), patZpeak::handle, i, cmsHarvester::index, metsig::jet, fwrapper::jets, reco::mVerbose(), edm::Handle< T >::product(), edm::Event::put(), query::result, pileupReCalc_HLTpaths::scale, and python.multivaluedict::sort().

61  {
62  // FIXME - use something more efficient instead of an std::vector
63  std::vector<reco::JetCorrector const *> correctors(mCorrectorTokens.size(), nullptr);
64 
65  // look for correctors
66  for (unsigned i = 0; i < mCorrectorTokens.size(); i++)
67  {
69  fEvent.getByToken (mCorrectorTokens [i], handle);
70  correctors[i] = handle.product();
71  }
72  edm::Handle<JetCollection> jets; //Define Inputs
73  fEvent.getByToken (mInput, jets); //Get Inputs
74  std::auto_ptr<JetCollection> result (new JetCollection); //Corrected jets
75  typename JetCollection::const_iterator jet;
76  for (jet = jets->begin(); jet != jets->end(); jet++)
77  {
78  const T* referenceJet = &*jet;
79  int index = jet-jets->begin();
81  T correctedJet = *jet; //copy original jet
82  if (mVerbose)
83  std::cout<<"CorrectedJetProducer::produce-> original jet: "
84  <<jet->print()<<std::endl;
85  for (unsigned i = 0; i < mCorrectorTokens.size(); ++i)
86  {
87  if ( !(correctors[i]->vectorialCorrection()) ) {
88  // Scalar correction
89  double scale = 1.;
90  if (!(correctors[i]->refRequired()))
91  scale = correctors[i]->correction (*referenceJet);
92  else
93  scale = correctors[i]->correction (*referenceJet,jetRef);
94  if (mVerbose)
95  std::cout<<"CorrectedJetProducer::produce-> Corrector # "
96  <<i<<", correction factor: "<<scale<<std::endl;
97  correctedJet.scaleEnergy (scale); // apply scalar correction
98  referenceJet = &correctedJet;
99  } else {
100  // Vectorial correction
102  double scale = correctors[i]->correction (*referenceJet, jetRef, corrected);
103  if (mVerbose)
104  std::cout<<"CorrectedJetProducer::produce-> Corrector # "
105  <<i<<", correction factor: "<<scale<<std::endl;
106  correctedJet.setP4( corrected ); // apply vectorial correction
107  referenceJet = &correctedJet;
108  }
109  }
110  if (mVerbose)
111  std::cout<<"CorrectedJetProducer::produce-> corrected jet: "
112  <<correctedJet.print ()<<std::endl;
113  result->push_back (correctedJet);
114  }
115  NumericSafeGreaterByPt<T> compJets;
116  // reorder corrected jets
117  std::sort (result->begin (), result->end (), compJets);
118  // put corrected jet collection into event
119  fEvent.put(result);
120  }
int i
Definition: DBlmapReader.cc:9
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
const edm::EDGetTokenT< JetCollection > mInput
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
vector< PseudoJet > jets
tuple result
Definition: query.py:137
tuple handle
Definition: patZpeak.py:22
const std::vector< edm::EDGetTokenT< reco::JetCorrector > > mCorrectorTokens
T const * product() const
Definition: Handle.h:81
reco::Particle::LorentzVector LorentzVector
Definition: JetCorrector.h:43
tuple cout
Definition: gather_cfg.py:121
long double T

Member Data Documentation

template<class T >
const std::vector<edm::EDGetTokenT<reco::JetCorrector> > reco::CorrectedJetProducer< T >::mCorrectorTokens
private

Definition at line 37 of file CorrectedJetProducer.h.

template<class T >
const edm::EDGetTokenT<JetCollection> reco::CorrectedJetProducer< T >::mInput
private

Definition at line 36 of file CorrectedJetProducer.h.

template<class T >
const bool reco::CorrectedJetProducer< T >::mVerbose
private

Definition at line 38 of file CorrectedJetProducer.h.