CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
pat::PATMETProducer Class Reference

Produces the pat::MET. More...

#include "PhysicsTools/PatAlgos/interface/PATMETProducer.h"

Inheritance diagram for pat::PATMETProducer:
edm::stream::EDProducer<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 PATMETProducer (const edm::ParameterSet &iConfig)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~PATMETProducer ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::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 ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

const reco::METCovMatrix getMETCovMatrix (const edm::Event &event) const
 

Private Attributes

bool addEfficiencies_
 
bool addGenMET_
 
bool addMuonCorr_
 
bool addResolutions_
 
bool calculateMETSignificance_
 
pat::helper::EfficiencyLoader efficiencyLoader_
 
GreaterByEt< METeTComparator_
 
edm::EDGetTokenT< edm::View
< reco::GenMET > > 
genMETToken_
 
edm::EDGetTokenT< edm::View
< reco::Jet > > 
jetToken_
 
std::vector< edm::EDGetTokenT
< edm::View< reco::Candidate > > > 
lepTokens_
 
metsig::METSignificancemetSigAlgo_
 
edm::InputTag metSrc_
 
edm::EDGetTokenT< edm::View
< reco::MET > > 
metToken_
 
edm::InputTag muonSrc_
 
edm::EDGetTokenT< edm::View
< reco::Candidate > > 
pfCandToken_
 
pat::helper::KinResolutionsLoader resolutionLoader_
 
pat::PATUserDataHelper< pat::METuserDataHelper_
 
bool useUserData_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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

Produces the pat::MET.

The PATMETProducer produces the analysis-level pat::MET starting from a collection of objects of METType.

Author
Steven Lowette
Version
Id:
PATMETProducer.h,v 1.10 2009/06/25 23:49:35 gpetrucc Exp

Definition at line 38 of file PATMETProducer.h.

Constructor & Destructor Documentation

PATMETProducer::PATMETProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 18 of file PATMETProducer.cc.

References addEfficiencies_, addGenMET_, addResolutions_, calculateMETSignificance_, edm::EDConsumerBase::consumesCollector(), efficiencyLoader_, genMETToken_, edm::ParameterSet::getParameter(), jetToken_, lepTokens_, edm::EDConsumerBase::mayConsume(), metSigAlgo_, METSignificance_cfi::METSignificance, metSrc_, metToken_, pfCandToken_, resolutionLoader_, userDataHelper_, and useUserData_.

18  :
19  useUserData_(iConfig.exists("userData"))
20 {
21  // initialize the configurables
22  metSrc_ = iConfig.getParameter<edm::InputTag>("metSource");
23  metToken_ = consumes<edm::View<reco::MET> >(metSrc_);
24  addGenMET_ = iConfig.getParameter<bool> ("addGenMET");
25  genMETToken_ = mayConsume<edm::View<reco::GenMET> >(iConfig.getParameter<edm::InputTag>("genMETSource"));
26  addResolutions_ = iConfig.getParameter<bool> ("addResolutions");
27 
28  // Efficiency configurables
29  addEfficiencies_ = iConfig.getParameter<bool>("addEfficiencies");
30  if (addEfficiencies_) {
32  }
33 
34  // Resolution configurables
35  addResolutions_ = iConfig.getParameter<bool>("addResolutions");
36  if (addResolutions_) {
38  }
39 
40  // Check to see if the user wants to add user data
41  if ( useUserData_ ) {
43  }
44 
45  // MET Significance
46  calculateMETSignificance_ = iConfig.getParameter<bool>("computeMETSignificance");
48  {
49  metSigAlgo_ = new metsig::METSignificance(iConfig);
50  jetToken_ = mayConsume<edm::View<reco::Jet> >(iConfig.getParameter<edm::InputTag>("srcJets"));
51  pfCandToken_ = mayConsume<edm::View<reco::Candidate> >(iConfig.getParameter<edm::InputTag>("srcPFCands"));
52  std::vector<edm::InputTag> srcLeptonsTags = iConfig.getParameter< std::vector<edm::InputTag> >("srcLeptons");
53  for(std::vector<edm::InputTag>::const_iterator it=srcLeptonsTags.begin();it!=srcLeptonsTags.end();it++) {
54  lepTokens_.push_back( mayConsume<edm::View<reco::Candidate> >( *it ) );
55  }
56  }
57 
58  // produces vector of mets
59  produces<std::vector<MET> >();
60 }
T getParameter(std::string const &) const
Assists in assimilating all pat::UserData into pat objects.
metsig::METSignificance * metSigAlgo_
pat::PATUserDataHelper< pat::MET > userDataHelper_
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::vector< edm::EDGetTokenT< edm::View< reco::Candidate > > > lepTokens_
edm::InputTag metSrc_
edm::EDGetTokenT< edm::View< reco::Candidate > > pfCandToken_
tuple METSignificance
____________________________________________________________________________||
edm::EDGetTokenT< edm::View< reco::Jet > > jetToken_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< edm::View< reco::MET > > metToken_
pat::helper::EfficiencyLoader efficiencyLoader_
pat::helper::KinResolutionsLoader resolutionLoader_
edm::EDGetTokenT< edm::View< reco::GenMET > > genMETToken_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
PATMETProducer::~PATMETProducer ( )

Definition at line 63 of file PATMETProducer.cc.

63  {
64 }

Member Function Documentation

void PATMETProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 131 of file PATMETProducer.cc.

References edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addOptional(), pat::helper::KinResolutionsLoader::fillDescription(), pat::PATUserDataHelper< ObjectType >::fillDescription(), HLT_25ns14e33_v1_cff::InputTag, edm::ParameterSetDescription::setAllowAnything(), and edm::ParameterSetDescription::setComment().

132 {
134  iDesc.setComment("PAT MET producer module");
135 
136  // input source
137  iDesc.add<edm::InputTag>("metSource", edm::InputTag("no default"))->setComment("input collection");
138 
139  // MC configurations
140  iDesc.add<bool>("addGenMET", false);
141  iDesc.add<edm::InputTag>("genMETSource", edm::InputTag("genMetCalo"));
142 
144 
145  // Efficiency configurables
146  edm::ParameterSetDescription efficienciesPSet;
147  efficienciesPSet.setAllowAnything(); // TODO: the pat helper needs to implement a description.
148  iDesc.add("efficiencies", efficienciesPSet);
149  iDesc.add<bool>("addEfficiencies", false);
150 
151  // Check to see if the user wants to add user data
152  edm::ParameterSetDescription userDataPSet;
154  iDesc.addOptional("userData", userDataPSet);
155 
156  // muon correction
157  iDesc.add<bool>("addMuonCorrections", false);
158  iDesc.add<edm::InputTag>("muonSource", edm::InputTag("muons"));
159 
160 }
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
void setAllowAnything()
allow any parameter label/value pairs
static void fillDescription(edm::ParameterSetDescription &iDesc)
void setComment(std::string const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescription(edm::ParameterSetDescription &iDesc)
Method for documentation and validation of PSet.
const reco::METCovMatrix PATMETProducer::getMETCovMatrix ( const edm::Event event) const
private

Definition at line 163 of file PATMETProducer.cc.

References metsig::METSignificance::getCovariance(), HLT_25ns14e33_v1_cff::inputJets, jetToken_, lepTokens_, HLT_25ns14e33_v1_cff::leptons, metSigAlgo_, and pfCandToken_.

Referenced by produce().

163  {
164  std::vector< edm::Handle<reco::CandidateView> > leptons;
165  for ( std::vector<edm::EDGetTokenT<edm::View<reco::Candidate> > >::const_iterator srcLeptons_i = lepTokens_.begin();
166  srcLeptons_i != lepTokens_.end(); ++srcLeptons_i ) {
168  event.getByToken(*srcLeptons_i, leptons_i);
169  leptons.push_back( leptons_i );
170  }
171  // jets
173  event.getByToken( jetToken_, inputJets );
174 
175  //candidates
177  event.getByToken( pfCandToken_, inputCands );
178 
179  //Compute the covariance matrix and fill it
180  reco::METCovMatrix cov = metSigAlgo_->getCovariance( *inputJets, leptons, *inputCands);
181  return cov;
182 }
metsig::METSignificance * metSigAlgo_
ROOT::Math::SMatrix< double, 2 > METCovMatrix
Definition: MET.h:40
std::vector< edm::EDGetTokenT< edm::View< reco::Candidate > > > lepTokens_
edm::EDGetTokenT< edm::View< reco::Candidate > > pfCandToken_
edm::EDGetTokenT< edm::View< reco::Jet > > jetToken_
reco::METCovMatrix getCovariance(const edm::View< reco::Jet > &jets, const std::vector< edm::Handle< reco::CandidateView > > &leptons, const edm::View< reco::Candidate > &pfCandidates)
void PATMETProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::stream::EDProducerBase.

Definition at line 67 of file PATMETProducer.cc.

References addGenMET_, calculateMETSignificance_, efficiencyLoader_, pat::helper::EfficiencyLoader::enabled(), pat::helper::KinResolutionsLoader::enabled(), edm::InputTag::encode(), genMETToken_, edm::Event::getByToken(), getMETCovMatrix(), metsig::METSignificance::getSignificance(), customizeTrackingMonitorSeedNumber::idx, metSigAlgo_, metSrc_, metToken_, pat::helper::EfficiencyLoader::newEvent(), pat::helper::KinResolutionsLoader::newEvent(), metProducer_cfi::patMETs, edm::Event::put(), resolutionLoader_, pat::helper::EfficiencyLoader::setEfficiencies(), pat::MET::setGenMET(), pat::MET::setMETSignificance(), pat::helper::KinResolutionsLoader::setResolutions(), reco::MET::setSignificanceMatrix(), userDataHelper_, and useUserData_.

67  {
68 
69  // Get the vector of MET's from the event
71  iEvent.getByToken(metToken_, mets);
72 
73  if (mets->size() != 1) throw cms::Exception("Corrupt Data") << "The input MET collection " << metSrc_.encode() << " has size " << mets->size() << " instead of 1 as it should.\n";
75  if (resolutionLoader_.enabled()) resolutionLoader_.newEvent(iEvent, iSetup);
76 
77  // Get the vector of generated met from the event if needed
79  if (addGenMET_) {
80  iEvent.getByToken(genMETToken_, genMETs);
81  }
82 
83  // loop over mets
84  std::vector<MET> * patMETs = new std::vector<MET>();
85  for (edm::View<reco::MET>::const_iterator itMET = mets->begin(); itMET != mets->end(); itMET++) {
86  // construct the MET from the ref -> save ref to original object
87  unsigned int idx = itMET - mets->begin();
88  edm::RefToBase<reco::MET> metsRef = mets->refAt(idx);
89  edm::Ptr<reco::MET> metsPtr = mets->ptrAt(idx);
90  MET amet(metsRef);
91  // add the generated MET
92  if (addGenMET_) amet.setGenMET((*genMETs)[idx]);
93 
94  //add the MET significance
96  const reco::METCovMatrix& sigcov = getMETCovMatrix(iEvent);
97  amet.setSignificanceMatrix(sigcov);
98  double metSig=metSigAlgo_->getSignificance(sigcov, amet);
99  amet.setMETSignificance(metSig);
100  }
101 
102  if (efficiencyLoader_.enabled()) {
103  efficiencyLoader_.setEfficiencies( amet, metsRef );
104  }
105 
106  if (resolutionLoader_.enabled()) {
108  }
109 
110 
111  if ( useUserData_ ) {
112  userDataHelper_.add( amet, iEvent, iSetup );
113  }
114 
115 
116  // correct for muons if demanded... never more: it's now done by JetMETCorrections
117  // add the MET to the vector of METs
118  patMETs->push_back(amet);
119  }
120 
121  // sort MET in ET .. don't mess with this
122  // std::sort(patMETs->begin(), patMETs->end(), eTComparator_);
123 
124  // put genEvt object in Event
125  std::auto_ptr<std::vector<MET> > myMETs(patMETs);
126  iEvent.put(myMETs);
127 
128 }
bool enabled() const
&#39;true&#39; if this there is at least one efficiency configured
Analysis-level MET class.
Definition: MET.h:43
void newEvent(const edm::Event &event)
To be called for each new event, reads in the ValueMaps for efficiencies.
metsig::METSignificance * metSigAlgo_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
pat::PATUserDataHelper< pat::MET > userDataHelper_
ROOT::Math::SMatrix< double, 2 > METCovMatrix
Definition: MET.h:40
void setResolutions(pat::PATObject< T > &obj) const
Sets the efficiencies for this object, using the reference to the original objects.
edm::InputTag metSrc_
std::string encode() const
Definition: InputTag.cc:164
bool enabled() const
&#39;true&#39; if this there is at least one efficiency configured
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
void newEvent(const edm::Event &event, const edm::EventSetup &setup)
To be called for each new event, reads in the EventSetup object.
edm::EDGetTokenT< edm::View< reco::MET > > metToken_
pat::helper::EfficiencyLoader efficiencyLoader_
pat::helper::KinResolutionsLoader resolutionLoader_
edm::EDGetTokenT< edm::View< reco::GenMET > > genMETToken_
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
void setEfficiencies(pat::PATObject< T > &obj, const R &originalRef) const
Sets the efficiencies for this object, using the reference to the original objects.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
const reco::METCovMatrix getMETCovMatrix(const edm::Event &event) const
double getSignificance(const reco::METCovMatrix &cov, const reco::MET &met) const

Member Data Documentation

bool pat::PATMETProducer::addEfficiencies_
private

Definition at line 63 of file PATMETProducer.h.

Referenced by PATMETProducer().

bool pat::PATMETProducer::addGenMET_
private

Definition at line 54 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

bool pat::PATMETProducer::addMuonCorr_
private

Definition at line 58 of file PATMETProducer.h.

bool pat::PATMETProducer::addResolutions_
private

Definition at line 56 of file PATMETProducer.h.

Referenced by PATMETProducer().

bool pat::PATMETProducer::calculateMETSignificance_
private

Definition at line 70 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

pat::helper::EfficiencyLoader pat::PATMETProducer::efficiencyLoader_
private

Definition at line 64 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

GreaterByEt<MET> pat::PATMETProducer::eTComparator_
private

Definition at line 61 of file PATMETProducer.h.

edm::EDGetTokenT<edm::View<reco::GenMET> > pat::PATMETProducer::genMETToken_
private

Definition at line 55 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

edm::EDGetTokenT<edm::View<reco::Jet> > pat::PATMETProducer::jetToken_
private

Definition at line 72 of file PATMETProducer.h.

Referenced by getMETCovMatrix(), and PATMETProducer().

std::vector< edm::EDGetTokenT<edm::View<reco::Candidate> > > pat::PATMETProducer::lepTokens_
private

Definition at line 74 of file PATMETProducer.h.

Referenced by getMETCovMatrix(), and PATMETProducer().

metsig::METSignificance* pat::PATMETProducer::metSigAlgo_
private

Definition at line 71 of file PATMETProducer.h.

Referenced by getMETCovMatrix(), PATMETProducer(), and produce().

edm::InputTag pat::PATMETProducer::metSrc_
private

Definition at line 52 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

edm::EDGetTokenT<edm::View<reco::MET> > pat::PATMETProducer::metToken_
private

Definition at line 53 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

edm::InputTag pat::PATMETProducer::muonSrc_
private

Definition at line 59 of file PATMETProducer.h.

edm::EDGetTokenT<edm::View<reco::Candidate> > pat::PATMETProducer::pfCandToken_
private

Definition at line 73 of file PATMETProducer.h.

Referenced by getMETCovMatrix(), and PATMETProducer().

pat::helper::KinResolutionsLoader pat::PATMETProducer::resolutionLoader_
private

Definition at line 57 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

pat::PATUserDataHelper<pat::MET> pat::PATMETProducer::userDataHelper_
private

Definition at line 67 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().

bool pat::PATMETProducer::useUserData_
private

Definition at line 66 of file PATMETProducer.h.

Referenced by PATMETProducer(), and produce().