CMS 3D CMS Logo

PFJetsMatchedToFilteredCaloJetsProducer.cc
Go to the documentation of this file.
2 #include "Math/GenVector/VectorUtil.h"
5 
8 
9 //
10 // class decleration
11 //
12 using namespace reco;
13 using namespace std;
14 using namespace edm;
15 
17 {
18  PFJetSrc = iConfig.getParameter<InputTag>("PFJetSrc");
19  CaloJetFilter = iConfig.getParameter<InputTag>("CaloJetFilter");
20  DeltaR_ = iConfig.getParameter<double>("DeltaR");
21  TriggerType_ = iConfig.getParameter<int>("TriggerType");
22 
23  m_thePFJetToken = consumes<edm::View<reco::Candidate> >(PFJetSrc);
24  m_theTriggerJetToken = consumes<trigger::TriggerFilterObjectWithRefs>(CaloJetFilter);
25 
26  produces<PFJetCollection>();
27 }
28 
30 
33  desc.add<edm::InputTag>("PFJetSrc",edm::InputTag("hltPFJets"));
34  desc.add<edm::InputTag>("CaloJetFilter",edm::InputTag("hltSingleJet240Regional"));
35  desc.add<double>("DeltaR",0.5);
36  desc.add<int>("TriggerType",trigger::TriggerJet);
37  descriptions.add("hltPFJetsMatchedToFilteredCaloJetsProducer",desc);
38 }
39 
40 
42 {
43 
44  using namespace edm;
45  using namespace std;
46  using namespace reco;
47  using namespace trigger;
48 
49  unique_ptr<PFJetCollection> pfjets(new PFJetCollection);
50 
51  //Getting HLT jets to be matched
53  iEvent.getByToken(m_thePFJetToken, PFJets );
54 
55  //std::cout <<"Size of input PF jet collection "<<PFJets->size()<<std::endl;
56 
58  iEvent.getByToken(m_theTriggerJetToken,TriggeredCaloJets);
59 
60  jetRefVec.clear();
61 
62  TriggeredCaloJets->getObjects( TriggerType_,jetRefVec);
63  // std::cout <<"Size of input triggered jet collection "<<jetRefVec.size()<<std::endl;
64  math::XYZPoint a(0.,0.,0.);
66 
67  for(auto & iCalo : jetRefVec)
68  {
69  // std::cout << "\tiTriggerJet: " << iCalo << " pT= " << jetRefVec[iCalo]->pt() << std::endl;
70  for(unsigned int iPF=0;iPF<PFJets->size();iPF++)
71  {
72  const Candidate & myJet = (*PFJets)[iPF];
73  double deltaR = ROOT::Math::VectorUtil::DeltaR(myJet.p4().Vect(), (iCalo->p4()).Vect());
74  if(deltaR < DeltaR_ ) {
75  PFJet myPFJet(myJet.p4(),a,f);
76  pfjets->push_back(myPFJet);
77  break;
78  }
79  }
80  }
81 
82  // std::cout <<"Size of PF matched jets "<<pfjets->size()<<std::endl;
83  iEvent.put(std::move(pfjets));
84 }
T getParameter(std::string const &) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
Jets made from PFObjects.
Definition: PFJet.h:21
int iEvent
Definition: GenABIO.cc:224
void produce(edm::Event &, const edm::EventSetup &) override
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
double f[11][100]
ParameterDescriptionBase * add(U const &iLabel, T const &value)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:28
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
HLT enums.
double a
Definition: hdecay.h:121
def move(src, dest)
Definition: eostools.py:511