CMS 3D CMS Logo

ShiftedPFCandidateProducerForPFNoPUMEt.cc
Go to the documentation of this file.
1 
36 
37 #include <string>
38 #include <vector>
39 
41 public:
44 
45 private:
46  void produce(edm::Event&, const edm::EventSetup&) override;
47 
49 
52 
58 
60 
61  double minJetPt_;
62 
63  double shiftBy_;
64 
66 };
67 
68 const double dR2Match = 0.01 * 0.01;
69 
71  : srcPFCandidatesToken_(consumes<reco::PFCandidateCollection>(cfg.getParameter<edm::InputTag>("srcPFCandidates"))),
72  srcJetsToken_(consumes<reco::PFJetCollection>(cfg.getParameter<edm::InputTag>("srcJets"))) {
73  jetCorrUncertaintyTag_ = cfg.getParameter<std::string>("jetCorrUncertaintyTag");
74 
75  jecValidFileName_ = cfg.exists("jetCorrInputFileName");
76  if (jecValidFileName_) {
77  jetCorrInputFileName_ = cfg.getParameter<edm::FileInPath>("jetCorrInputFileName");
79  throw cms::Exception("ShiftedJetProducerT")
80  << " Failed to find JEC parameter file = " << jetCorrInputFileName_ << " !!\n";
81  edm::LogInfo("ShiftedPFCandidateProducerForPFNoPUMEt")
82  << "Reading JEC parameters = " << jetCorrUncertaintyTag_ << " from file = " << jetCorrInputFileName_.fullPath()
83  << "." << std::endl;
86  } else {
87  edm::LogInfo("ShiftedPFCandidateProducerForPFNoPUMEt")
88  << "Reading JEC parameters = " << jetCorrUncertaintyTag_ << " from DB/SQLlite file." << std::endl;
89  jetCorrPayloadName_ = cfg.getParameter<std::string>("jetCorrPayloadName");
90  }
91 
92  minJetPt_ = cfg.getParameter<double>("minJetPt");
93 
94  shiftBy_ = cfg.getParameter<double>("shiftBy");
95 
96  unclEnUncertainty_ = cfg.getParameter<double>("unclEnUncertainty");
97 
98  produces<reco::PFCandidateCollection>();
99 }
100 
102  if (jecValidFileName_) {
103  delete jetCorrParameters_;
104  delete jecUncertainty_;
105  }
106 }
107 
109  edm::Handle<reco::PFCandidateCollection> originalPFCandidates;
110  evt.getByToken(srcPFCandidatesToken_, originalPFCandidates);
111 
114 
115  std::vector<const reco::PFJet*> selectedJets;
116  for (reco::PFJetCollection::const_iterator jet = jets->begin(); jet != jets->end(); ++jet) {
117  if (jet->pt() > minJetPt_)
118  selectedJets.push_back(&(*jet));
119  }
120 
121  if (!jetCorrPayloadName_.empty()) {
123  es.get<JetCorrectionsRecord>().get(jetCorrPayloadName_, jetCorrParameterSet);
124  const JetCorrectorParameters& jetCorrParameters = (*jetCorrParameterSet)[jetCorrUncertaintyTag_];
125  delete jecUncertainty_;
126  jecUncertainty_ = new JetCorrectionUncertainty(jetCorrParameters);
127  }
128 
129  auto shiftedPFCandidates = std::make_unique<reco::PFCandidateCollection>();
130 
131  for (reco::PFCandidateCollection::const_iterator originalPFCandidate = originalPFCandidates->begin();
132  originalPFCandidate != originalPFCandidates->end();
133  ++originalPFCandidate) {
134  const reco::PFJet* jet_matched = nullptr;
135  for (auto jet : selectedJets) {
136  for (const auto& jetc : jet->getPFConstituents()) {
137  if (deltaR2(originalPFCandidate->p4(), jetc->p4()) < dR2Match) {
138  jet_matched = jet;
139  break;
140  }
141  }
142  if (jet_matched)
143  break;
144  }
145 
146  double shift = 0.;
147  if (jet_matched != nullptr) {
148  jecUncertainty_->setJetEta(jet_matched->eta());
149  jecUncertainty_->setJetPt(jet_matched->pt());
150 
152  } else {
154  }
155 
156  shift *= shiftBy_;
157 
158  reco::Candidate::LorentzVector shiftedPFCandidateP4 = originalPFCandidate->p4();
159  shiftedPFCandidateP4 *= (1. + shift);
160 
161  reco::PFCandidate shiftedPFCandidate(*originalPFCandidate);
162  shiftedPFCandidate.setP4(shiftedPFCandidateP4);
163 
164  shiftedPFCandidates->push_back(shiftedPFCandidate);
165  }
166 
167  evt.put(std::move(shiftedPFCandidates));
168 }
169 
171 
ShiftedPFCandidateProducerForPFNoPUMEt::jetCorrInputFileName_
edm::FileInPath jetCorrInputFileName_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:53
EDProducer.h
ESHandle.h
PFCandidate.h
ShiftedPFCandidateProducerForPFNoPUMEt::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:108
edm::EDGetTokenT< reco::PFCandidateCollection >
edm
HLT enums.
Definition: AlignableModifier.h:19
PFJet.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
PFJetCollection.h
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition: LeafCandidate.h:146
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
ShiftedPFCandidateProducerForPFNoPUMEt::shiftBy_
double shiftBy_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:63
dR2Match
const double dR2Match
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:68
edm::Handle
Definition: AssociativeIterator.h:50
ShiftedPFCandidateProducerForPFNoPUMEt::jecUncertainty_
JetCorrectionUncertainty * jecUncertainty_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:57
JetCorrectionUncertainty::setJetEta
void setJetEta(float fEta)
Definition: JetCorrectionUncertainty.cc:204
ShiftedPFCandidateProducerForPFNoPUMEt::ShiftedPFCandidateProducerForPFNoPUMEt
ShiftedPFCandidateProducerForPFNoPUMEt(const edm::ParameterSet &)
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:70
JetCorrectionsRecord.h
edm::FileInPath
Definition: FileInPath.h:61
JetCorrectionUncertainty.h
MakerMacros.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
JetCorrectorParameters.h
ShiftedPFCandidateProducerForPFNoPUMEt
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:40
edm::ESHandle
Definition: DTSurvey.h:22
ShiftedPFCandidateProducerForPFNoPUMEt::srcPFCandidatesToken_
edm::EDGetTokenT< reco::PFCandidateCollection > srcPFCandidatesToken_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:50
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
JetCorrectionsRecord
Definition: JetCorrectionsRecord.h:11
JetCorrectionUncertainty::setJetPt
void setJetPt(float fPt)
Definition: JetCorrectionUncertainty.cc:209
FileInPath.h
edm::FileInPath::location
LocationCode location() const
Where was the file found?
Definition: FileInPath.cc:159
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
deltaR.h
ShiftedPFCandidateProducerForPFNoPUMEt::jetCorrParameters_
JetCorrectorParameters * jetCorrParameters_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:56
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
ShiftedPFCandidateProducerForPFNoPUMEt::unclEnUncertainty_
double unclEnUncertainty_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:65
edm::EventSetup
Definition: EventSetup.h:58
ShiftedPFCandidateProducerForPFNoPUMEt::minJetPt_
double minJetPt_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:61
get
#define get
JetCorrectionUncertainty
Definition: JetCorrectionUncertainty.h:11
l1t::PFCandidateCollection
std::vector< l1t::PFCandidate > PFCandidateCollection
Definition: PFCandidate.h:57
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ShiftedPFCandidateProducerForPFNoPUMEt::moduleLabel_
std::string moduleLabel_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:48
InputTag.h
looper.cfg
cfg
Definition: looper.py:296
ShiftedPFCandidateProducerForPFNoPUMEt::~ShiftedPFCandidateProducerForPFNoPUMEt
~ShiftedPFCandidateProducerForPFNoPUMEt() override
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:101
ShiftedPFCandidateProducerForPFNoPUMEt::jetCorrUncertaintyTag_
std::string jetCorrUncertaintyTag_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:55
JetCorrectionUncertainty::getUncertainty
float getUncertainty(bool fDirection)
Definition: JetCorrectionUncertainty.cc:83
reco::LeafCandidate::setP4
void setP4(const LorentzVector &p4) final
set 4-momentum
Definition: LeafCandidate.h:158
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::FileInPath::Unknown
Definition: FileInPath.h:63
reco::PFJetCollection
std::vector< PFJet > PFJetCollection
collection of PFJet objects
Definition: PFJetCollection.h:14
edm::shift
static unsigned const int shift
Definition: LuminosityBlockID.cc:7
HLTMuonOfflineAnalyzer_cfi.deltaR2
deltaR2
Definition: HLTMuonOfflineAnalyzer_cfi.py:105
metsig::jet
Definition: SignAlgoResolutions.h:47
reco::PFJet
Jets made from PFObjects.
Definition: PFJet.h:20
JetCorrectorParameters
Definition: JetCorrectorParameters.h:25
EventSetup.h
edm::EDProducer
Definition: EDProducer.h:35
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
objectSelection_cff.selectedJets
selectedJets
Definition: objectSelection_cff.py:99
cms::Exception
Definition: Exception.h:70
Candidate.h
ParameterSet.h
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
edm::Event
Definition: Event.h:73
ShiftedPFCandidateProducerForPFNoPUMEt::jetCorrPayloadName_
std::string jetCorrPayloadName_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:54
ShiftedPFCandidateProducerForPFNoPUMEt::srcJetsToken_
edm::EDGetTokenT< reco::PFJetCollection > srcJetsToken_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:51
edm::FileInPath::fullPath
std::string fullPath() const
Definition: FileInPath.cc:161
PFCandidateFwd.h
ShiftedPFCandidateProducerForPFNoPUMEt::jecValidFileName_
bool jecValidFileName_
Definition: ShiftedPFCandidateProducerForPFNoPUMEt.cc:59