CMS 3D CMS Logo

L1THLTTauMatching.cc
Go to the documentation of this file.
2 #include "Math/GenVector/VectorUtil.h"
6 
7 //
8 // class decleration
9 //
10 using namespace reco;
11 using namespace std;
12 using namespace edm;
13 using namespace trigger;
14 
16  : jetSrc(consumes<PFTauCollection>(iConfig.getParameter<InputTag>("JetSrc"))),
17  tauTrigger(consumes<trigger::TriggerFilterObjectWithRefs>(iConfig.getParameter<InputTag>("L1TauTrigger"))),
18  mEt_Min(iConfig.getParameter<double>("EtMin")) {
19  produces<PFTauCollection>();
20 }
22 
24  unique_ptr<PFTauCollection> tauL2jets(new PFTauCollection);
25 
26  double deltaR = 1.0;
27  double matchingR = 0.5;
28 
29  // Getting HLT jets to be matched
31  iEvent.getByToken(jetSrc, tauJets);
32 
34  iEvent.getByToken(tauTrigger, l1TriggeredTaus);
35 
36  l1t::TauVectorRef tauCandRefVec;
37  l1TriggeredTaus->getObjects(trigger::TriggerL1Tau, tauCandRefVec);
38 
39  math::XYZPoint a(0., 0., 0.);
40 
41  for (unsigned int iL1Tau = 0; iL1Tau < tauCandRefVec.size(); iL1Tau++) {
42  for (unsigned int iJet = 0; iJet < tauJets->size(); iJet++) {
43  // Find the relative L2TauJets, to see if it has been reconstructed
44  const PFTau& myJet = (*tauJets)[iJet];
45  deltaR = ROOT::Math::VectorUtil::DeltaR(myJet.p4().Vect(), (tauCandRefVec[iL1Tau]->p4()).Vect());
46  if (deltaR < matchingR) {
47  if (myJet.leadChargedHadrCand().isNonnull()) {
48  a = myJet.leadChargedHadrCand()->vertex();
49  }
50  PFTau myPFTau(std::numeric_limits<int>::quiet_NaN(), myJet.p4(), a);
51  if (myJet.pt() > mEt_Min) {
52  tauL2jets->push_back(myPFTau);
53  }
54  break;
55  }
56  }
57  }
58 
59  iEvent.put(std::move(tauL2jets));
60 }
61 
64  desc.add<edm::InputTag>("L1TauTrigger", edm::InputTag("hltL1sDoubleIsoTau40er"))
65  ->setComment("Name of trigger filter");
66  desc.add<edm::InputTag>("JetSrc", edm::InputTag("hltSelectedPFTausTrackPt1MediumIsolationReg"))
67  ->setComment("Input collection of PFTaus");
68  desc.add<double>("EtMin", 0.0)->setComment("Minimal pT of PFTau to match");
69  descriptions.setComment(
70  "This module produces collection of PFTaus matched to L1 Taus / Jets passing a HLT filter (Only p4 and vertex of "
71  "returned PFTaus are set).");
72  descriptions.add("L1THLTTauMatching", desc);
73 }
const edm::EDGetTokenT< reco::PFTauCollection > jetSrc
~L1THLTTauMatching() override
L1THLTTauMatching(const edm::ParameterSet &)
void setComment(std::string const &value)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Definition: PFTauFwd.h:9
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
double pt() const final
transverse momentum
int iEvent
Definition: GenABIO.cc:224
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > tauTrigger
const CandidatePtr & leadChargedHadrCand() const
Definition: PFTau.cc:62
std::vector< TauRef > TauVectorRef
Definition: Tau.h:14
const LorentzVector & p4() const final
four-momentum Lorentz vector
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
const double mEt_Min
void setComment(std::string const &value)
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
HLT enums.
double a
Definition: hdecay.h:119
virtual const Point & vertex() const =0
vertex position
def move(src, dest)
Definition: eostools.py:511