CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
DPFIsolation Class Reference
Inheritance diagram for DPFIsolation:
deep_tau::DeepTauBase edm::stream::EDProducer< edm::GlobalCache< DeepTauCache > >

Public Member Functions

 DPFIsolation (const edm::ParameterSet &cfg, const deep_tau::DeepTauCache *cache)
 
- Public Member Functions inherited from deep_tau::DeepTauBase
 DeepTauBase (const edm::ParameterSet &cfg, const OutputCollection &outputs, const DeepTauCache *cache)
 
void produce (edm::Event &event, const edm::EventSetup &es) override
 
 ~DeepTauBase () override
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DeepTauCache > >
 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 unsigned GetNumberOfFeatures (unsigned graphVersion)
 
static unsigned getNumberOfParticles (unsigned graphVersion)
 
static const OutputCollectionGetOutputs ()
 
- Static Public Member Functions inherited from deep_tau::DeepTauBase
static void globalEndJob (const DeepTauCache *cache)
 
static std::unique_ptr< DeepTauCacheinitializeGlobalCache (const edm::ParameterSet &cfg)
 

Private Member Functions

tensorflow::Tensor getPredictions (edm::Event &event, const edm::EventSetup &es, edm::Handle< TauCollection > taus) override
 

Private Attributes

unsigned graphVersion
 

Additional Inherited Members

- Public Types inherited from deep_tau::DeepTauBase
using Cutter = TauWPThreshold
 
using CutterPtr = std::unique_ptr< Cutter >
 
using ElectronCollection = pat::ElectronCollection
 
using LorentzVectorXYZ = ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > >
 
using MuonCollection = pat::MuonCollection
 
using OutputCollection = std::map< std::string, Output >
 
using TauCollection = std::vector< TauType >
 
using TauDiscriminator = reco::TauDiscriminatorContainer
 
using TauRef = edm::Ref< TauCollection >
 
using TauRefProd = edm::RefProd< TauCollection >
 
using TauType = pat::Tau
 
using WPList = std::vector< CutterPtr >
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DeepTauCache > >
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
 
- Protected Attributes inherited from deep_tau::DeepTauBase
const DeepTauCachecache_
 
OutputCollection outputs_
 
edm::EDGetTokenT< pat::PackedCandidateCollectionpfcandToken_
 
edm::EDGetTokenT< TauCollectiontausToken_
 
edm::EDGetTokenT< reco::VertexCollectionvtxToken_
 
std::map< std::string, WPListworkingPoints_
 

Detailed Description

Definition at line 22 of file DPFIsolation.cc.

Constructor & Destructor Documentation

◆ DPFIsolation()

DPFIsolation::DPFIsolation ( const edm::ParameterSet cfg,
const deep_tau::DeepTauCache cache 
)
inlineexplicit

Definition at line 63 of file DPFIsolation.cc.

64  : DeepTauBase(cfg, GetOutputs(), cache), graphVersion(cfg.getParameter<unsigned>("version")) {
65  const auto& shape = cache_->getGraph().node(0).attr().at("shape").shape();
66 
67  if (!(graphVersion == 1 || graphVersion == 0))
68  throw cms::Exception("DPFIsolation") << "unknown version of the graph file.";
69 
70  if (!(shape.dim(1).size() == getNumberOfParticles(graphVersion) &&
71  shape.dim(2).size() == GetNumberOfFeatures(graphVersion)))
72  throw cms::Exception("DPFIsolation")
73  << "number of inputs does not match the expected inputs for the given version";
74  }

References deep_tau::DeepTauBase::cache_, Exception, deep_tau::DeepTauCache::getGraph(), GetNumberOfFeatures(), getNumberOfParticles(), and graphVersion.

Member Function Documentation

◆ fillDescriptions()

static void DPFIsolation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
inlinestatic

Definition at line 40 of file DPFIsolation.cc.

40  {
42  desc.add<edm::InputTag>("pfcands", edm::InputTag("packedPFCandidates"));
43  desc.add<edm::InputTag>("taus", edm::InputTag("slimmedTaus"));
44  desc.add<edm::InputTag>("vertices", edm::InputTag("offlineSlimmedPrimaryVertices"));
45  desc.add<std::string>("graph_file", "RecoTauTag/TrainingFiles/data/DPFTauId/DPFIsolation_2017v0_quantized.pb");
46  desc.add<unsigned>("version", 0);
47  desc.add<bool>("mem_mapped", false);
48 
50  descWP.add<std::string>("VVVLoose", "0");
51  descWP.add<std::string>("VVLoose", "0");
52  descWP.add<std::string>("VLoose", "0");
53  descWP.add<std::string>("Loose", "0");
54  descWP.add<std::string>("Medium", "0");
55  descWP.add<std::string>("Tight", "0");
56  descWP.add<std::string>("VTight", "0");
57  descWP.add<std::string>("VVTight", "0");
58  descWP.add<std::string>("VVVTight", "0");
59  desc.add<edm::ParameterSetDescription>("VSallWP", descWP);
60  descriptions.add("DPFTau2016v0", desc);
61  }

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

◆ GetNumberOfFeatures()

static unsigned DPFIsolation::GetNumberOfFeatures ( unsigned  graphVersion)
inlinestatic

Definition at line 35 of file DPFIsolation.cc.

35  {
36  static const std::map<unsigned, unsigned> nfeatures{{0, 47}, {1, 51}};
37  return nfeatures.at(graphVersion);
38  }

References graphVersion.

Referenced by DPFIsolation(), and getPredictions().

◆ getNumberOfParticles()

static unsigned DPFIsolation::getNumberOfParticles ( unsigned  graphVersion)
inlinestatic

Definition at line 30 of file DPFIsolation.cc.

30  {
31  static const std::map<unsigned, unsigned> nparticles{{0, 60}, {1, 36}};
32  return nparticles.at(graphVersion);
33  }

References graphVersion.

Referenced by DPFIsolation(), and getPredictions().

◆ GetOutputs()

static const OutputCollection& DPFIsolation::GetOutputs ( )
inlinestatic

Definition at line 24 of file DPFIsolation.cc.

24  {
25  const size_t tau_index = 0;
26  static const OutputCollection outputs_ = {{"VSall", Output({tau_index}, {})}};
27  return outputs_;
28  };

References Output, and deep_tau::DeepTauBase::outputs_.

◆ getPredictions()

tensorflow::Tensor DPFIsolation::getPredictions ( edm::Event event,
const edm::EventSetup es,
edm::Handle< TauCollection taus 
)
inlineoverrideprivatevirtual

Implements deep_tau::DeepTauBase.

Definition at line 77 of file DPFIsolation.cc.

79  {
81  event.getByToken(pfcandToken_, pfcands);
82 
84  event.getByToken(vtxToken_, vertices);
85 
86  tensorflow::Tensor tensor(
87  tensorflow::DT_FLOAT,
88  {1, static_cast<int>(getNumberOfParticles(graphVersion)), static_cast<int>(GetNumberOfFeatures(graphVersion))});
89 
90  tensorflow::Tensor predictions(tensorflow::DT_FLOAT, {static_cast<int>(taus->size()), 1});
91 
92  std::vector<tensorflow::Tensor> outputs_;
93 
94  float pfCandPt, pfCandPz, pfCandPtRel, pfCandPzRel, pfCandDr, pfCandDEta, pfCandDPhi, pfCandEta, pfCandDz,
95  pfCandDzErr, pfCandD0, pfCandD0D0, pfCandD0Dz, pfCandD0Dphi, pfCandPuppiWeight, pfCandPixHits, pfCandHits,
96  pfCandLostInnerHits, pfCandPdgID, pfCandCharge, pfCandFromPV, pfCandVtxQuality, pfCandHighPurityTrk,
97  pfCandTauIndMatch, pfCandDzSig, pfCandD0Sig, pfCandD0Err, pfCandPtRelPtRel, pfCandDzDz, pfCandDVx_1,
98  pfCandDVy_1, pfCandDVz_1, pfCandD_1;
99  float pvx = !vertices->empty() ? (*vertices)[0].x() : -1;
100  float pvy = !vertices->empty() ? (*vertices)[0].y() : -1;
101  float pvz = !vertices->empty() ? (*vertices)[0].z() : -1;
102 
103  bool pfCandIsBarrel;
104 
105  // These variables define ranges further used for standardization
106  static constexpr float pfCandPt_max = 500.f;
107  static constexpr float pfCandPz_max = 1000.f;
108  static constexpr float pfCandPtRel_max = 1.f;
109  static constexpr float pfCandPzRel_max = 100.f;
110  static constexpr float pfCandPtRelPtRel_max = 1.f;
111  static constexpr float pfCandD0_max = 5.f;
112  static constexpr float pfCandDz_max = 5.f;
113  static constexpr float pfCandDVx_y_z_1_max = 0.05f;
114  static constexpr float pfCandD_1_max = 0.1f;
115  static constexpr float pfCandD0_z_Err_max = 1.f;
116  static constexpr float pfCandDzSig_max = 3.f;
117  static constexpr float pfCandD0Sig_max = 1.f;
118  static constexpr float pfCandDr_max = 0.5f;
119  static constexpr float pfCandEta_max = 2.75f;
120  static constexpr float pfCandDEta_max = 0.5f;
121  static constexpr float pfCandDPhi_max = 0.5f;
122  static constexpr float pfCandPixHits_max = 7.f;
123  static constexpr float pfCandHits_max = 30.f;
124 
125  for (size_t tau_index = 0; tau_index < taus->size(); tau_index++) {
126  pat::Tau tau = taus->at(tau_index);
127  bool isGoodTau = false;
128  const float lepRecoPt = tau.pt();
129  const float lepRecoPz = std::abs(tau.pz());
130  const float lepRecoEta = tau.eta();
131  const float lepRecoPhi = tau.phi();
132 
133  if (lepRecoPt >= 30 && std::abs(lepRecoEta) < 2.3 && tau.isTauIDAvailable("againstMuonLoose3") &&
134  tau.isTauIDAvailable("againstElectronVLooseMVA6")) {
135  isGoodTau = (tau.tauID("againstElectronVLooseMVA6") && tau.tauID("againstMuonLoose3"));
136  }
137 
138  if (!isGoodTau) {
139  predictions.matrix<float>()(tau_index, 0) = -1;
140  continue;
141  }
142 
143  std::vector<unsigned int> signalCandidateInds;
144 
145  for (const auto c : tau.signalCands())
146  signalCandidateInds.push_back(getPFCandidateIndex(pfcands, c));
147 
148  // Use of setZero results in warnings in eigen library during compilation.
149  //tensor.flat<float>().setZero();
151  for (unsigned input_idx = 0; input_idx < n_inputs; ++input_idx)
152  tensor.flat<float>()(input_idx) = 0;
153 
154  unsigned int iPF = 0;
155  const unsigned max_iPF = getNumberOfParticles(graphVersion);
156 
157  std::vector<unsigned int> sorted_inds(pfcands->size());
158  std::size_t n = 0;
159  std::generate(std::begin(sorted_inds), std::end(sorted_inds), [&] { return n++; });
160 
161  std::sort(std::begin(sorted_inds), std::end(sorted_inds), [&](int i1, int i2) {
162  return pfcands->at(i1).pt() > pfcands->at(i2).pt();
163  });
164 
165  for (size_t pf_index = 0; pf_index < pfcands->size() && iPF < max_iPF; pf_index++) {
166  pat::PackedCandidate p = pfcands->at(sorted_inds.at(pf_index));
167  float deltaR_tau_p = deltaR(p.p4(), tau.p4());
168 
169  if (p.pt() < 0.5)
170  continue;
171  if (deltaR_tau_p > 0.5)
172  continue;
173  if (p.fromPV() < 1 && p.charge() != 0)
174  continue;
175  pfCandPt = p.pt();
176  pfCandPtRel = p.pt() / lepRecoPt;
177 
178  pfCandDr = deltaR_tau_p;
179  pfCandDEta = std::abs(lepRecoEta - p.eta());
180  pfCandDPhi = std::abs(deltaPhi(lepRecoPhi, p.phi()));
181  pfCandEta = p.eta();
182  pfCandIsBarrel = (std::abs(pfCandEta) < 1.4);
183  pfCandPz = std::abs(std::sinh(pfCandEta) * pfCandPt);
184  pfCandPzRel = pfCandPz / lepRecoPz;
185  pfCandPdgID = std::abs(p.pdgId());
186  pfCandCharge = p.charge();
187  pfCandDVx_1 = p.vx() - pvx;
188  pfCandDVy_1 = p.vy() - pvy;
189  pfCandDVz_1 = p.vz() - pvz;
190 
191  pfCandD_1 = std::sqrt(pfCandDVx_1 * pfCandDVx_1 + pfCandDVy_1 * pfCandDVy_1 + pfCandDVz_1 * pfCandDVz_1);
192 
193  if (pfCandCharge != 0 and p.hasTrackDetails()) {
194  pfCandDz = p.dz();
195  pfCandDzErr = p.dzError();
196  pfCandDzSig = (std::abs(p.dz()) + 0.000001) / (p.dzError() + 0.00001);
197  pfCandD0 = p.dxy();
198  pfCandD0Err = p.dxyError();
199  pfCandD0Sig = (std::abs(p.dxy()) + 0.000001) / (p.dxyError() + 0.00001);
200  pfCandPixHits = p.numberOfPixelHits();
201  pfCandHits = p.numberOfHits();
202  pfCandLostInnerHits = p.lostInnerHits();
203  } else {
204  float disp = 1;
205  int psudorand = p.pt() * 1000000;
206  if (psudorand % 2 == 0)
207  disp = -1;
208  pfCandDz = 5 * disp;
209  pfCandDzErr = 0;
210  pfCandDzSig = 0;
211  pfCandD0 = 5 * disp;
212  pfCandD0Err = 0;
213  pfCandD0Sig = 0;
214  pfCandPixHits = 0;
215  pfCandHits = 0;
216  pfCandLostInnerHits = 2.;
217  pfCandDVx_1 = 1;
218  pfCandDVy_1 = 1;
219  pfCandDVz_1 = 1;
220  pfCandD_1 = 1;
221  }
222 
223  pfCandPuppiWeight = p.puppiWeight();
224  pfCandFromPV = p.fromPV();
225  pfCandVtxQuality = p.pvAssociationQuality();
226  pfCandHighPurityTrk = p.trackHighPurity();
227  float pfCandTauIndMatch_temp = 0;
228 
229  for (auto i : signalCandidateInds) {
230  if (i == sorted_inds.at(pf_index))
231  pfCandTauIndMatch_temp = 1;
232  }
233 
234  pfCandTauIndMatch = pfCandTauIndMatch_temp;
235  pfCandPtRelPtRel = pfCandPtRel * pfCandPtRel;
236  pfCandPt = std::min(pfCandPt, pfCandPt_max);
237  pfCandPt = pfCandPt / pfCandPt_max;
238 
239  pfCandPz = std::min(pfCandPz, pfCandPz_max);
240  pfCandPz = pfCandPz / pfCandPz_max;
241 
242  pfCandPtRel = std::min(pfCandPtRel, pfCandPtRel_max);
243  pfCandPzRel = std::min(pfCandPzRel, pfCandPzRel_max);
244  pfCandPzRel = pfCandPzRel / pfCandPzRel_max;
245  pfCandDr = pfCandDr / pfCandDr_max;
246  pfCandEta = pfCandEta / pfCandEta_max;
247  pfCandDEta = pfCandDEta / pfCandDEta_max;
248  pfCandDPhi = pfCandDPhi / pfCandDPhi_max;
249  pfCandPixHits = pfCandPixHits / pfCandPixHits_max;
250  pfCandHits = pfCandHits / pfCandHits_max;
251 
252  pfCandPtRelPtRel = std::min(pfCandPtRelPtRel, pfCandPtRelPtRel_max);
253 
254  pfCandD0 = std::clamp(pfCandD0, -pfCandD0_max, pfCandD0_max);
255  pfCandD0 = pfCandD0 / pfCandD0_max;
256 
257  pfCandDz = std::clamp(pfCandDz, -pfCandDz_max, pfCandDz_max);
258  pfCandDz = pfCandDz / pfCandDz_max;
259 
260  pfCandD0Err = std::min(pfCandD0Err, pfCandD0_z_Err_max);
261  pfCandDzErr = std::min(pfCandDzErr, pfCandD0_z_Err_max);
262  pfCandDzSig = std::min(pfCandDzSig, pfCandDzSig_max);
263  pfCandDzSig = pfCandDzSig / pfCandDzSig_max;
264 
265  pfCandD0Sig = std::min(pfCandD0Sig, pfCandD0Sig_max);
266  pfCandD0D0 = pfCandD0 * pfCandD0;
267  pfCandDzDz = pfCandDz * pfCandDz;
268  pfCandD0Dz = pfCandD0 * pfCandDz;
269  pfCandD0Dphi = pfCandD0 * pfCandDPhi;
270 
271  pfCandDVx_1 = std::clamp(pfCandDVx_1, -pfCandDVx_y_z_1_max, pfCandDVx_y_z_1_max);
272  pfCandDVx_1 = pfCandDVx_1 / pfCandDVx_y_z_1_max;
273 
274  pfCandDVy_1 = std::clamp(pfCandDVy_1, -pfCandDVx_y_z_1_max, pfCandDVx_y_z_1_max);
275  pfCandDVy_1 = pfCandDVy_1 / pfCandDVx_y_z_1_max;
276 
277  pfCandDVz_1 = std::clamp(pfCandDVz_1, -pfCandDVx_y_z_1_max, pfCandDVx_y_z_1_max);
278  pfCandDVz_1 = pfCandDVz_1 / pfCandDVx_y_z_1_max;
279 
280  pfCandD_1 = std::clamp(pfCandD_1, -pfCandD_1_max, pfCandD_1_max);
281  pfCandD_1 = pfCandD_1 / pfCandD_1_max;
282 
283  if (graphVersion == 0) {
284  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 0) = pfCandPt;
285  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 1) = pfCandPz;
286  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 2) = pfCandPtRel;
287  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 3) = pfCandPzRel;
288  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 4) = pfCandDr;
289  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 5) = pfCandDEta;
290  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 6) = pfCandDPhi;
291  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 7) = pfCandEta;
292  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 8) = pfCandDz;
293  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 9) = pfCandDzSig;
294  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 10) = pfCandD0;
295  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 11) = pfCandD0Sig;
296  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 12) = pfCandDzErr;
297  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 13) = pfCandD0Err;
298  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 14) = pfCandD0D0;
299  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 15) = pfCandCharge == 0;
300  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 16) = pfCandCharge == 1;
301  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 17) = pfCandCharge == -1;
302  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 18) = pfCandPdgID > 22;
303  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 19) = pfCandPdgID == 22;
304  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 20) = pfCandDzDz;
305  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 21) = pfCandD0Dz;
306  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 22) = pfCandD0Dphi;
307  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 23) = pfCandPtRelPtRel;
308  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 24) = pfCandPixHits;
309  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 25) = pfCandHits;
310  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 26) = pfCandLostInnerHits == -1;
311  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 27) = pfCandLostInnerHits == 0;
312  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 28) = pfCandLostInnerHits == 1;
313  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 29) = pfCandLostInnerHits == 2;
314  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 30) = pfCandPuppiWeight;
315  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 31) = (pfCandVtxQuality == 1);
316  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 32) = (pfCandVtxQuality == 5);
317  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 33) = (pfCandVtxQuality == 6);
318  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 34) = (pfCandVtxQuality == 7);
319  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 35) = (pfCandFromPV == 1);
320  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 36) = (pfCandFromPV == 2);
321  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 37) = (pfCandFromPV == 3);
322  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 38) = pfCandIsBarrel;
323  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 39) = pfCandHighPurityTrk;
324  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 40) = pfCandPdgID == 1;
325  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 41) = pfCandPdgID == 2;
326  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 42) = pfCandPdgID == 11;
327  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 43) = pfCandPdgID == 13;
328  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 44) = pfCandPdgID == 130;
329  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 45) = pfCandPdgID == 211;
330  tensor.tensor<float, 3>()(0, 60 - 1 - iPF, 46) = pfCandTauIndMatch;
331  }
332 
333  if (graphVersion == 1) {
334  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 0) = pfCandPt;
335  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 1) = pfCandPz;
336  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 2) = pfCandPtRel;
337  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 3) = pfCandPzRel;
338  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 4) = pfCandDr;
339  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 5) = pfCandDEta;
340  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 6) = pfCandDPhi;
341  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 7) = pfCandEta;
342  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 8) = pfCandDz;
343  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 9) = pfCandDzSig;
344  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 10) = pfCandD0;
345  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 11) = pfCandD0Sig;
346  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 12) = pfCandDzErr;
347  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 13) = pfCandD0Err;
348  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 14) = pfCandD0D0;
349  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 15) = pfCandCharge == 0;
350  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 16) = pfCandCharge == 1;
351  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 17) = pfCandCharge == -1;
352  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 18) = pfCandPdgID > 22;
353  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 19) = pfCandPdgID == 22;
354  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 20) = pfCandDVx_1;
355  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 21) = pfCandDVy_1;
356  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 22) = pfCandDVz_1;
357  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 23) = pfCandD_1;
358  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 24) = pfCandDzDz;
359  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 25) = pfCandD0Dz;
360  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 26) = pfCandD0Dphi;
361  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 27) = pfCandPtRelPtRel;
362  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 28) = pfCandPixHits;
363  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 29) = pfCandHits;
364  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 30) = pfCandLostInnerHits == -1;
365  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 31) = pfCandLostInnerHits == 0;
366  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 32) = pfCandLostInnerHits == 1;
367  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 33) = pfCandLostInnerHits == 2;
368  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 34) = pfCandPuppiWeight;
369  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 35) = (pfCandVtxQuality == 1);
370  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 36) = (pfCandVtxQuality == 5);
371  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 37) = (pfCandVtxQuality == 6);
372  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 38) = (pfCandVtxQuality == 7);
373  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 39) = (pfCandFromPV == 1);
374  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 40) = (pfCandFromPV == 2);
375  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 41) = (pfCandFromPV == 3);
376  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 42) = pfCandIsBarrel;
377  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 43) = pfCandHighPurityTrk;
378  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 44) = pfCandPdgID == 1;
379  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 45) = pfCandPdgID == 2;
380  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 46) = pfCandPdgID == 11;
381  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 47) = pfCandPdgID == 13;
382  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 48) = pfCandPdgID == 130;
383  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 49) = pfCandPdgID == 211;
384  tensor.tensor<float, 3>()(0, 36 - 1 - iPF, 50) = pfCandTauIndMatch;
385  }
386  iPF++;
387  }
388  tensorflow::run(&(cache_->getSession()), {{"input_1", tensor}}, {"output_node0"}, &outputs_);
389  predictions.matrix<float>()(tau_index, 0) = outputs_[0].flat<float>()(0);
390  }
391  return predictions;
392  }

References funct::abs(), begin, HltBtagPostValidation_cff::c, deep_tau::DeepTauBase::cache_, SiPixelRawToDigiRegional_cfi::deltaPhi, PbPb_ZMuSkimMuonDPG_cff::deltaR, end, dqmMemoryStats::float, models::generate(), GetNumberOfFeatures(), getNumberOfParticles(), deep_tau::DeepTauCache::getSession(), graphVersion, mps_fire::i, testProducerWithPsetDescEmpty_cfi::i1, testProducerWithPsetDescEmpty_cfi::i2, min(), dqmiodumpmetadata::n, deep_tau::DeepTauBase::outputs_, AlCaHLTBitMon_ParallelJobs::p, deep_tau::DeepTauBase::pfcandToken_, tensorflow::run(), mathSSE::sqrt(), metsig::tau, Tau3MuMonitor_cff::taus, pwdgSkimBPark_cfi::vertices, and deep_tau::DeepTauBase::vtxToken_.

Member Data Documentation

◆ graphVersion

unsigned DPFIsolation::graphVersion
private
deep_tau::DeepTauBase::cache_
const DeepTauCache * cache_
Definition: DeepTauBase.h:104
testProducerWithPsetDescEmpty_cfi.i2
i2
Definition: testProducerWithPsetDescEmpty_cfi.py:46
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
deep_tau::DeepTauCache::getSession
tensorflow::Session & getSession(const std::string &name="") const
Definition: DeepTauBase.h:49
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
metsig::tau
Definition: SignAlgoResolutions.h:49
min
T min(T a, T b)
Definition: MathUtil.h:58
Tau3MuMonitor_cff.taus
taus
Definition: Tau3MuMonitor_cff.py:7
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
deep_tau::DeepTauBase::pfcandToken_
edm::EDGetTokenT< pat::PackedCandidateCollection > pfcandToken_
Definition: DeepTauBase.h:100
pat::Tau
Analysis-level tau class.
Definition: Tau.h:53
deep_tau::DeepTauBase::OutputCollection
std::map< std::string, Output > OutputCollection
Definition: DeepTauBase.h:82
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
deep_tau::DeepTauBase::vtxToken_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: DeepTauBase.h:101
models.generate
def generate(map_blobs=False, class_name=None)
Definition: models.py:189
edm::Handle< pat::PackedCandidateCollection >
end
#define end
Definition: vmac.h:39
DPFIsolation::GetOutputs
static const OutputCollection & GetOutputs()
Definition: DPFIsolation.cc:24
deep_tau::DeepTauBase::DeepTauBase
DeepTauBase(const edm::ParameterSet &cfg, const OutputCollection &outputs, const DeepTauCache *cache)
Definition: DeepTauBase.cc:76
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
utilities.cache
def cache(function)
Definition: utilities.py:3
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
deep_tau::DeepTauBase::outputs_
OutputCollection outputs_
Definition: DeepTauBase.h:103
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
pat::PackedCandidate
Definition: PackedCandidate.h:22
DPFIsolation::getNumberOfParticles
static unsigned getNumberOfParticles(unsigned graphVersion)
Definition: DPFIsolation.cc:30
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
looper.cfg
cfg
Definition: looper.py:297
Exception
Definition: hltDiff.cc:246
tensorflow::run
void run(Session *session, const NamedTensorList &inputs, const std::vector< std::string > &outputNames, std::vector< Tensor > *outputs, const thread::ThreadPoolOptions &threadPoolOptions)
Definition: TensorFlow.cc:211
DPFIsolation::GetNumberOfFeatures
static unsigned GetNumberOfFeatures(unsigned graphVersion)
Definition: DPFIsolation.cc:35
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::InputTag
Definition: InputTag.h:15
begin
#define begin
Definition: vmac.h:32
deep_tau::DeepTauCache::getGraph
const tensorflow::GraphDef & getGraph(const std::string &name="") const
Definition: DeepTauBase.h:50
Output
#define Output(cl)
Definition: vmac.h:194
DPFIsolation::graphVersion
unsigned graphVersion
Definition: DPFIsolation.cc:395
pwdgSkimBPark_cfi.vertices
vertices
Definition: pwdgSkimBPark_cfi.py:7