CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
L1NNTauProducer Class Reference
Inheritance diagram for L1NNTauProducer:
edm::stream::EDProducer< edm::GlobalCache< TauNNTFCache > >

Public Member Functions

 L1NNTauProducer (const edm::ParameterSet &, const TauNNTFCache *)
 
 ~L1NNTauProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< TauNNTFCache > >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
static void globalEndJob (const TauNNTFCache *)
 
static std::unique_ptr< TauNNTFCacheinitializeGlobalCache (const edm::ParameterSet &)
 

Private Member Functions

void addTau (const l1t::PFCandidate &iCand, const l1t::PFCandidateCollection &iParts, std::unique_ptr< PFTauCollection > &outputTaus)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 

Private Attributes

double fConeSize_
 
edm::EDGetTokenT< vector< l1t::PFCandidate > > fL1PFToken_
 
int fMaxTaus_
 
int fNParticles_
 
double fSeedPt_
 
std::unique_ptr< TauNNIdfTauNNId_
 
double fTauSize_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< TauNNTFCache > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 17 of file L1NNTauProducer.cc.

Constructor & Destructor Documentation

◆ L1NNTauProducer()

L1NNTauProducer::L1NNTauProducer ( const edm::ParameterSet cfg,
const TauNNTFCache cache 
)
explicit

Definition at line 43 of file L1NNTauProducer.cc.

44  : fSeedPt_(cfg.getParameter<double>("seedpt")),
45  fConeSize_(cfg.getParameter<double>("conesize")),
46  fTauSize_(cfg.getParameter<double>("tausize")),
47  fMaxTaus_(cfg.getParameter<int>("maxtaus")),
48  fNParticles_(cfg.getParameter<int>("nparticles")),
49  fL1PFToken_(consumes<vector<l1t::PFCandidate>>(cfg.getParameter<edm::InputTag>("L1PFObjects"))) {
50  std::string lNNFile = cfg.getParameter<std::string>("NNFileName"); //,"L1Trigger/Phase2L1Taus/data/tau_3layer.pb");
51  fTauNNId_ = std::make_unique<TauNNId>(
52  lNNFile.find("v0") == std::string::npos ? "input_1:0" : "dense_1_input:0", cache, lNNFile, fNParticles_);
53  produces<l1t::PFTauCollection>("L1PFTausNN");
54 }

References utilities::cache(), looper::cfg, fNParticles_, fTauNNId_, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ ~L1NNTauProducer()

L1NNTauProducer::~L1NNTauProducer ( )
override

Definition at line 159 of file L1NNTauProducer.cc.

159 {}

Member Function Documentation

◆ addTau()

void L1NNTauProducer::addTau ( const l1t::PFCandidate iCand,
const l1t::PFCandidateCollection iParts,
std::unique_ptr< PFTauCollection > &  outputTaus 
)
private

Definition at line 118 of file L1NNTauProducer.cc.

120  {
121  l1t::PFCandidateCollection pfTauCands;
122  math::PtEtaPhiMLorentzVector lTot(0, 0, 0, 0);
123  math::PtEtaPhiMLorentzVector lCand(0, 0, 0, 0);
124  int lId = 0;
125  for (const auto& l1PFCand : iParts) {
126  if (reco::deltaR2(iCand, l1PFCand) > fConeSize_ * fConeSize_)
127  continue;
128  math::PtEtaPhiMLorentzVector pVec(l1PFCand.pt(), l1PFCand.eta(), l1PFCand.phi(), 0);
129  lTot += pVec;
130  if (reco::deltaR2(iCand, l1PFCand) < fTauSize_ * fTauSize_ &&
131  (l1PFCand.id() == l1t::PFCandidate::Electron || l1PFCand.id() == l1t::PFCandidate::ChargedHadron ||
132  l1PFCand.id() == l1t::PFCandidate::Photon)) {
133  lId++;
134  lCand += pVec;
135  }
136  pfTauCands.push_back(l1PFCand);
137  }
138  if (lTot.Pt() < fSeedPt_)
139  return;
140  std::sort(
141  pfTauCands.begin(), pfTauCands.end(), [](l1t::PFCandidate i, l1t::PFCandidate j) { return (i.pt() > j.pt()); });
142  float NN = fTauNNId_->compute(iCand, pfTauCands);
143  math::PtEtaPhiMLorentzVector tempP4(lCand.Pt(), lCand.Eta(), lCand.Phi(), lCand.M());
144  l1t::PFTau l1PFTau(tempP4, NN, 0, lId);
145  outputTaus->push_back(l1PFTau);
146 }

References l1t::PFCandidate::ChargedHadron, reco::deltaR2(), l1t::PFCandidate::Electron, fConeSize_, fSeedPt_, fTauNNId_, fTauSize_, mps_fire::i, dqmiolumiharvest::j, and l1t::PFCandidate::Photon.

Referenced by produce().

◆ fillDescriptions()

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

Definition at line 147 of file L1NNTauProducer.cc.

147  {
148  // L1NNTauProducer
150  desc.add<std::string>("NNFileName", "L1Trigger/Phase2L1ParticleFlow/data/tau_3layer.pb");
151  desc.add<double>("tausize", 0.1);
152  desc.add<int>("maxtaus", 5);
153  desc.add<int>("nparticles", 10);
154  desc.add<double>("conesize", 0.4);
155  desc.add<double>("seedpt", 20);
156  desc.add<edm::InputTag>("L1PFObjects", edm::InputTag("L1PFProducer", "l1pfCandidates"));
157  descriptions.add("L1NNTauProducer", desc);
158 }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HLT_2018_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ globalEndJob()

void L1NNTauProducer::globalEndJob ( const TauNNTFCache cache)
static

Definition at line 63 of file L1NNTauProducer.cc.

63  {
64  if (cache->graphDef != nullptr) {
65  delete cache->graphDef;
66  }
67 }

References utilities::cache().

◆ initializeGlobalCache()

std::unique_ptr< TauNNTFCache > L1NNTauProducer::initializeGlobalCache ( const edm::ParameterSet cfg)
static

Definition at line 55 of file L1NNTauProducer.cc.

55  {
57  std::string lNNFile = cfg.getParameter<std::string>("NNFileName");
58  edm::FileInPath fp(lNNFile);
60  cache->graphDef = tensorflow::loadGraphDef(fp.fullPath());
61  return std::unique_ptr<TauNNTFCache>(cache);
62 }

References utilities::cache(), looper::cfg, personalPlayback::fp, tensorflow::loadGraphDef(), tensorflow::setLogging(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ produce()

void L1NNTauProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 68 of file L1NNTauProducer.cc.

68  {
70  iEvent.getByToken(fL1PFToken_, l1PFCandidates);
71 
72  std::vector<unique_ptr<l1t::PFCandidate>> pfChargedHadrons_sort_v;
73  std::vector<unique_ptr<l1t::PFCandidate>> pfChargedHadrons_seeds_v;
74  for (const auto& l1PFCand : *l1PFCandidates)
75  if ((l1PFCand.id() == l1t::PFCandidate::ChargedHadron || l1PFCand.id() == l1t::PFCandidate::Electron) &&
76  std::abs(l1PFCand.eta()) < track_trigger_eta_max)
77  pfChargedHadrons_sort_v.push_back(std::make_unique<l1t::PFCandidate>(l1PFCand));
78 
79  std::sort(
80  pfChargedHadrons_sort_v.begin(),
81  pfChargedHadrons_sort_v.end(),
82  [](std::unique_ptr<l1t::PFCandidate>& i, std::unique_ptr<l1t::PFCandidate>& j) { return (i->pt() > j->pt()); });
83 
84  auto lTaus = std::make_unique<l1t::PFTauCollection>();
85  if (pfChargedHadrons_sort_v.empty()) {
86  if (lTaus->empty()) {
87  PFTau dummy;
88  lTaus->push_back(dummy);
89  }
90  iEvent.put(std::move(lTaus), "L1PFTausNN");
91  return;
92  }
93  pfChargedHadrons_seeds_v.push_back(std::move(pfChargedHadrons_sort_v[0]));
94  for (unsigned int i0 = 1; i0 < pfChargedHadrons_sort_v.size(); i0++) {
95  bool pMatch = false;
96  for (unsigned int i1 = 0; i1 < pfChargedHadrons_seeds_v.size(); i1++) {
97  if (reco::deltaR2(*(pfChargedHadrons_seeds_v[i1]), *(pfChargedHadrons_sort_v[i0])) < fConeSize_ * fConeSize_)
98  pMatch = true;
99  }
100  if (pMatch)
101  continue;
102  pfChargedHadrons_seeds_v.push_back(std::move(pfChargedHadrons_sort_v[i0]));
103  if (int(pfChargedHadrons_seeds_v.size()) > fMaxTaus_ - 1)
104  break;
105  }
106  for (unsigned int i0 = 0; i0 < pfChargedHadrons_seeds_v.size(); i0++) {
107  addTau(*(pfChargedHadrons_seeds_v[i0]), (*l1PFCandidates), lTaus);
108  }
109  if (lTaus->empty()) {
110  PFTau dummy;
111  lTaus->push_back(dummy);
112  }
113  std::sort(lTaus->begin(), lTaus->end(), [](l1t::PFTau i, l1t::PFTau j) { return (i.pt() > j.pt()); });
114  iEvent.put(std::move(lTaus), "L1PFTausNN");
115 }

References funct::abs(), addTau(), l1t::PFCandidate::ChargedHadron, reco::deltaR2(), l1t::PFCandidate::Electron, fConeSize_, fL1PFToken_, fMaxTaus_, mps_fire::i, testProducerWithPsetDescEmpty_cfi::i1, iEvent, dqmiolumiharvest::j, eostools::move(), and track_trigger_eta_max.

Member Data Documentation

◆ fConeSize_

double L1NNTauProducer::fConeSize_
private

Definition at line 34 of file L1NNTauProducer.cc.

Referenced by addTau(), and produce().

◆ fL1PFToken_

edm::EDGetTokenT<vector<l1t::PFCandidate> > L1NNTauProducer::fL1PFToken_
private

Definition at line 38 of file L1NNTauProducer.cc.

Referenced by produce().

◆ fMaxTaus_

int L1NNTauProducer::fMaxTaus_
private

Definition at line 36 of file L1NNTauProducer.cc.

Referenced by produce().

◆ fNParticles_

int L1NNTauProducer::fNParticles_
private

Definition at line 37 of file L1NNTauProducer.cc.

Referenced by L1NNTauProducer().

◆ fSeedPt_

double L1NNTauProducer::fSeedPt_
private

Definition at line 33 of file L1NNTauProducer.cc.

Referenced by addTau().

◆ fTauNNId_

std::unique_ptr<TauNNId> L1NNTauProducer::fTauNNId_
private

Definition at line 27 of file L1NNTauProducer.cc.

Referenced by addTau(), and L1NNTauProducer().

◆ fTauSize_

double L1NNTauProducer::fTauSize_
private

Definition at line 35 of file L1NNTauProducer.cc.

Referenced by addTau().

l1t::PFCandidate::Photon
Definition: PFCandidate.h:15
L1NNTauProducer::fL1PFToken_
edm::EDGetTokenT< vector< l1t::PFCandidate > > fL1PFToken_
Definition: L1NNTauProducer.cc:38
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
l1t::PFTau
Definition: PFTau.h:22
L1NNTauProducer::fMaxTaus_
int fMaxTaus_
Definition: L1NNTauProducer.cc:36
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
track_trigger_eta_max
static constexpr float track_trigger_eta_max
Definition: L1NNTauProducer.cc:41
personalPlayback.fp
fp
Definition: personalPlayback.py:523
L1NNTauProducer::addTau
void addTau(const l1t::PFCandidate &iCand, const l1t::PFCandidateCollection &iParts, std::unique_ptr< PFTauCollection > &outputTaus)
Definition: L1NNTauProducer.cc:118
edm::Handle
Definition: AssociativeIterator.h:50
l1t::PFCandidate::Electron
Definition: PFCandidate.h:15
TauNNTFCache
Definition: TauNNId.h:8
L1NNTauProducer::fSeedPt_
double fSeedPt_
Definition: L1NNTauProducer.cc:33
edm::FileInPath
Definition: FileInPath.h:64
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
L1NNTauProducer::fTauNNId_
std::unique_ptr< TauNNId > fTauNNId_
Definition: L1NNTauProducer.cc:27
utilities.cache
def cache(function)
Definition: utilities.py:3
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
L1NNTauProducer::fConeSize_
double fConeSize_
Definition: L1NNTauProducer.cc:34
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
reco::deltaR2
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
l1t::PFCandidate::ChargedHadron
Definition: PFCandidate.h:15
iEvent
int iEvent
Definition: GenABIO.cc:224
tensorflow::setLogging
void setLogging(const std::string &level="3")
Definition: TensorFlow.cc:15
l1t::PFCandidateCollection
std::vector< l1t::PFCandidate > PFCandidateCollection
Definition: PFCandidate.h:57
looper.cfg
cfg
Definition: looper.py:297
tensorflow::loadGraphDef
GraphDef * loadGraphDef(const std::string &pbFile)
Definition: TensorFlow.cc:68
eostools.move
def move(src, dest)
Definition: eostools.py:511
math::PtEtaPhiMLorentzVector
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
l1t::PFCandidate
Definition: PFCandidate.h:12
L1NNTauProducer::fNParticles_
int fNParticles_
Definition: L1NNTauProducer.cc:37
dummy
Definition: DummySelector.h:38
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
L1NNTauProducer::fTauSize_
double fTauSize_
Definition: L1NNTauProducer.cc:35
edm::InputTag
Definition: InputTag.h:15