CMS 3D CMS Logo

L1TPFProducer.cc
Go to the documentation of this file.
1 // system include files
2 #include <memory>
3 #include <algorithm>
4 #include <fstream>
5 #include <cstdio>
6 
7 // user include files
14 
18 
20 
30 
33 
34 //--------------------------------------------------------------------------------------------------
36 public:
37  explicit L1TPFProducer(const edm::ParameterSet&);
38  ~L1TPFProducer() override;
39 
40 private:
42  int debug_;
43 
46 
47  bool hasTracks_;
50  unsigned trkMinStubs_;
53 
56 
57  std::vector<edm::EDGetTokenT<l1t::PFClusterCollection>> emCands_;
58  std::vector<edm::EDGetTokenT<l1t::PFClusterCollection>> hadCands_;
59 
61 
63  std::unique_ptr<l1tpf_impl::PFAlgoBase> l1pfalgo_;
64  std::unique_ptr<l1tpf_impl::PUAlgoBase> l1pualgo_;
65 
67 
68  // Region dump/coe
70  FILE* fRegionDump_;
71  std::unique_ptr<l1tpf_impl::COEFile> fRegionCOE_;
73 
74  // region of interest debugging
76 
77  void beginStream(edm::StreamID) override;
78  void produce(edm::Event&, const edm::EventSetup&) override;
79  void addUInt(unsigned int value, std::string iLabel, edm::Event& iEvent);
80 };
81 
82 //
83 // constructors and destructor
84 //
86  : config_(iConfig),
87  debug_(iConfig.getUntrackedParameter<int>("debug", 0)),
88  useStandaloneMuons_(iConfig.getParameter<bool>("useStandaloneMuons")),
89  useTrackerMuons_(iConfig.getParameter<bool>("useTrackerMuons")),
90  hasTracks_(!iConfig.getParameter<edm::InputTag>("tracks").label().empty()),
91  tkCands_(hasTracks_ ? consumes<l1t::PFTrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"))
92  : edm::EDGetTokenT<l1t::PFTrackCollection>()),
93  trkPt_(iConfig.getParameter<double>("trkPtCut")),
94  trkMaxChi2_(iConfig.getParameter<double>("trkMaxChi2")),
95  trkMinStubs_(iConfig.getParameter<unsigned>("trkMinStubs")),
96  muCands_(consumes<l1t::MuonBxCollection>(iConfig.getParameter<edm::InputTag>("muons"))),
97  tkMuCands_(consumes<l1t::TkMuonCollection>(iConfig.getParameter<edm::InputTag>("tkMuons"))),
98  emPtCut_(iConfig.getParameter<double>("emPtCut")),
99  hadPtCut_(iConfig.getParameter<double>("hadPtCut")),
100  l1regions_(iConfig),
101  l1pfalgo_(nullptr),
102  l1pualgo_(nullptr),
103  regionDumpName_(iConfig.getUntrackedParameter<std::string>("dumpFileName", "")),
104  regionCOEName_(iConfig.getUntrackedParameter<std::string>("coeFileName", "")),
105  fRegionDump_(nullptr),
106  fRegionCOE_(nullptr),
107  neventscoemax_(iConfig.getUntrackedParameter<unsigned int>("neventscoemax_", 0)),
108  neventsproduced_(0),
109  debugEta_(iConfig.getUntrackedParameter<double>("debugEta", 0)),
110  debugPhi_(iConfig.getUntrackedParameter<double>("debugPhi", 0)),
111  debugR_(iConfig.getUntrackedParameter<double>("debugR", -1)) {
112  produces<l1t::PFCandidateCollection>("PF");
113  produces<l1t::PFCandidateCollection>("Puppi");
114 
115  produces<l1t::PFCandidateCollection>("EmCalo");
116  produces<l1t::PFCandidateCollection>("Calo");
117  produces<l1t::PFCandidateCollection>("TK");
118  produces<l1t::PFCandidateCollection>("TKVtx");
119 
120  produces<float>("z0");
121 
122  for (const auto& tag : iConfig.getParameter<std::vector<edm::InputTag>>("emClusters")) {
123  emCands_.push_back(consumes<l1t::PFClusterCollection>(tag));
124  }
125  for (const auto& tag : iConfig.getParameter<std::vector<edm::InputTag>>("hadClusters")) {
126  hadCands_.push_back(consumes<l1t::PFClusterCollection>(tag));
127  }
128 
129  const std::string& algo = iConfig.getParameter<std::string>("pfAlgo");
130  if (algo == "PFAlgo3") {
131  l1pfalgo_ = std::make_unique<l1tpf_impl::PFAlgo3>(iConfig);
132  } else if (algo == "PFAlgo2HGC") {
133  l1pfalgo_ = std::make_unique<l1tpf_impl::PFAlgo2HGC>(iConfig);
134  } else if (algo == "BitwisePFAlgo") {
135  l1pfalgo_ = std::make_unique<l1tpf_impl::BitwisePFAlgo>(iConfig);
136  } else
137  throw cms::Exception("Configuration", "Unsupported PFAlgo");
138 
139  const std::string& pualgo = iConfig.getParameter<std::string>("puAlgo");
140  if (pualgo == "Puppi") {
141  l1pualgo_ = std::make_unique<l1tpf_impl::PuppiAlgo>(iConfig);
142  } else if (pualgo == "LinearizedPuppi") {
143  l1pualgo_ = std::make_unique<l1tpf_impl::LinearizedPuppiAlgo>(iConfig);
144  } else
145  throw cms::Exception("Configuration", "Unsupported PUAlgo");
146 
147  std::string vtxAlgo = iConfig.getParameter<std::string>("vtxAlgo");
148  if (vtxAlgo == "TP")
150  else if (vtxAlgo == "old")
152  else if (vtxAlgo == "external") {
154  const std::string& vtxFormat = iConfig.getParameter<std::string>("vtxFormat");
155  if (vtxFormat == "TkPrimaryVertex") {
156  extTkVtx_ = consumes<std::vector<l1t::TkPrimaryVertex>>(iConfig.getParameter<edm::InputTag>("vtxCollection"));
157  } else
158  throw cms::Exception("Configuration") << "Unsupported vtxFormat " << vtxFormat << "\n";
159  } else
160  throw cms::Exception("Configuration") << "Unsupported vtxAlgo " << vtxAlgo << "\n";
161 
162  for (const std::string& label : l1pualgo_->puGlobalNames()) {
163  produces<float>(label);
164  }
165 
166  if (!regionDumpName_.empty()) {
167  TokGenOrigin_ = consumes<math::XYZPointF>(iConfig.getParameter<edm::InputTag>("genOrigin"));
168  }
169  for (int tot = 0; tot <= 1; ++tot) {
170  for (int i = 0; i < l1tpf_impl::Region::n_input_types; ++i) {
171  produces<unsigned int>(std::string(tot ? "totNL1" : "maxNL1") + l1tpf_impl::Region::inputTypeName(i));
172  }
173  for (int i = 0; i < l1tpf_impl::Region::n_output_types; ++i) {
174  produces<unsigned int>(std::string(tot ? "totNL1PF" : "maxNL1PF") + l1tpf_impl::Region::outputTypeName(i));
175  produces<unsigned int>(std::string(tot ? "totNL1Puppi" : "maxNL1Puppi") + l1tpf_impl::Region::outputTypeName(i));
176  }
177  }
178  for (int i = 0; i < l1tpf_impl::Region::n_input_types; ++i) {
179  produces<std::vector<unsigned>>(std::string("vecNL1") + l1tpf_impl::Region::inputTypeName(i));
180  }
181  for (int i = 0; i < l1tpf_impl::Region::n_output_types; ++i) {
182  produces<std::vector<unsigned>>(std::string("vecNL1PF") + l1tpf_impl::Region::outputTypeName(i));
183  produces<std::vector<unsigned>>(std::string("vecNL1Puppi") + l1tpf_impl::Region::outputTypeName(i));
184  }
185 }
186 
188  // do anything here that needs to be done at desctruction time
189  // (e.g. close files, deallocate resources etc.)
190  if (fRegionDump_)
191  fclose(fRegionDump_);
192  if (fRegionCOE_)
193  fRegionCOE_->close();
194 }
195 
197  if (!regionDumpName_.empty()) {
198  if (id == 0) {
199  fRegionDump_ = fopen(regionDumpName_.c_str(), "wb");
200  } else {
201  edm::LogWarning("L1TPFProducer")
202  << "Job running with multiple streams, but dump file will have only events on stream zero.";
203  }
204  }
205  if (!regionCOEName_.empty()) {
206  if (id == 0) {
207  fRegionCOE_ = std::make_unique<l1tpf_impl::COEFile>(config_);
208  } else {
209  edm::LogWarning("L1TPFProducer")
210  << "Job running with multiple streams, but COE file will dump only events on stream zero.";
211  }
212  }
213 }
214 
215 // ------------ method called to produce the data ------------
217  // clear the regions also at the beginning, in case one event didn't complete but the job continues on
218  l1regions_.clear();
219 
221  if (hasTracks_) {
223  iEvent.getByToken(tkCands_, htracks);
224  const auto& tracks = *htracks;
225  for (unsigned int itk = 0, ntk = tracks.size(); itk < ntk; ++itk) {
226  const auto& tk = tracks[itk];
227  // adding objects to PF
228  if (debugR_ > 0 && deltaR(tk.eta(), tk.phi(), debugEta_, debugPhi_) > debugR_)
229  continue;
230  if (tk.pt() > trkPt_ && tk.nStubs() >= trkMinStubs_ && tk.normalizedChi2() < trkMaxChi2_) {
231  l1regions_.addTrack(tk, l1t::PFTrackRef(htracks, itk));
232  }
233  }
234  }
235 
239  throw cms::Exception(
240  "Configuration",
241  "setting useStandaloneMuons=True && useTrackerMuons=True is not to be done, as it would duplicate all muons\n");
242  }
243 
244  if (useStandaloneMuons_) {
246  iEvent.getByToken(muCands_, muons);
247  for (auto it = muons->begin(0), ed = muons->end(0); it != ed; ++it) {
248  const l1t::Muon& mu = *it;
249  if (debugR_ > 0 && deltaR(mu.eta(), mu.phi(), debugEta_, debugPhi_) > debugR_)
250  continue;
252  }
253  }
254 
255  if (useTrackerMuons_) {
257  iEvent.getByToken(tkMuCands_, muons);
258  for (auto it = muons->begin(), ed = muons->end(); it != ed; ++it) {
259  const l1t::TkMuon& mu = *it;
260  if (debugR_ > 0 && deltaR(mu.eta(), mu.phi(), debugEta_, debugPhi_) > debugR_)
261  continue;
262  l1regions_.addMuon(mu); // FIXME add a l1t::PFCandidate::MuonRef
263  }
264  }
265 
266  // ------ READ CALOS -----
268  for (const auto& tag : emCands_) {
269  iEvent.getByToken(tag, caloHandle);
270  const auto& calos = *caloHandle;
271  for (unsigned int ic = 0, nc = calos.size(); ic < nc; ++ic) {
272  const auto& calo = calos[ic];
273  if (debugR_ > 0 && deltaR(calo.eta(), calo.phi(), debugEta_, debugPhi_) > debugR_)
274  continue;
275  if (calo.pt() > emPtCut_)
276  l1regions_.addEmCalo(calo, l1t::PFClusterRef(caloHandle, ic));
277  }
278  }
279  for (const auto& tag : hadCands_) {
280  iEvent.getByToken(tag, caloHandle);
281  const auto& calos = *caloHandle;
282  for (unsigned int ic = 0, nc = calos.size(); ic < nc; ++ic) {
283  const auto& calo = calos[ic];
284  if (debugR_ > 0 && deltaR(calo.eta(), calo.phi(), debugEta_, debugPhi_) > debugR_)
285  continue;
286  if (calo.pt() > hadPtCut_)
287  l1regions_.addCalo(calo, l1t::PFClusterRef(caloHandle, ic));
288  }
289  }
290 
291  // First, get a copy of the discretized and corrected inputs, and write them out
292  iEvent.put(l1regions_.fetchCalo(/*ptmin=*/0.1, /*em=*/true), "EmCalo");
293  iEvent.put(l1regions_.fetchCalo(/*ptmin=*/0.1, /*em=*/false), "Calo");
294  iEvent.put(l1regions_.fetchTracks(/*ptmin=*/0.0, /*fromPV=*/false), "TK");
295  if (fRegionDump_) {
296  uint32_t run = iEvent.id().run(), lumi = iEvent.id().luminosityBlock();
297  uint64_t event = iEvent.id().event();
298  fwrite(&run, sizeof(uint32_t), 1, fRegionDump_);
299  fwrite(&lumi, sizeof(uint32_t), 1, fRegionDump_);
300  fwrite(&event, sizeof(uint64_t), 1, fRegionDump_);
302  }
303 
304  // Then save the regions to the COE file
305  // Do it here because there is some sorting going on in a later function
306  if (fRegionCOE_ && fRegionCOE_->is_open() && neventsproduced_ < neventscoemax_) {
307  std::vector<l1tpf_impl::Region> regions = l1regions_.regions();
308  fRegionCOE_->writeTracksToFile(regions, neventsproduced_ == 0);
309  }
311 
312  // Then do the vertexing, and save it out
313  float z0;
315  z0 = 0;
316  double ptsum = 0;
317  if (!extTkVtx_.isUninitialized()) {
319  iEvent.getByToken(extTkVtx_, vtxHandle);
320  for (const l1t::TkPrimaryVertex& vtx : *vtxHandle) {
321  if (ptsum == 0 || vtx.sum() > ptsum) {
322  z0 = vtx.zvertex();
323  ptsum = vtx.sum();
324  }
325  }
326  } else
327  throw cms::Exception("LogicError", "Inconsistent vertex configuration");
328  }
329  l1pualgo_->doVertexing(l1regions_.regions(), vtxAlgo_, z0);
330  iEvent.put(std::make_unique<float>(z0), "z0");
331  if (fRegionDump_) {
332  fwrite(&z0, sizeof(float), 1, fRegionDump_);
333  edm::Handle<math::XYZPointF> hGenOrigin;
334  iEvent.getByToken(TokGenOrigin_, hGenOrigin);
335  const math::XYZPointF& genOrigin = *hGenOrigin;
336  float genZ = genOrigin.Z();
337  fwrite(&genZ, sizeof(float), 1, fRegionDump_);
338  }
339 
340  // Then also save the tracks with a vertex cut
341  iEvent.put(l1regions_.fetchTracks(/*ptmin=*/0.0, /*fromPV=*/true), "TKVtx");
342 
343  // Then run PF in each region
344  for (auto& l1region : l1regions_.regions()) {
345  l1pfalgo_->runPF(l1region);
346  l1pualgo_->runChargedPV(l1region, z0);
347  }
348  // save PF into the event
349  iEvent.put(l1regions_.fetch(false), "PF");
350 
351  // Then get our alphas (globally)
352  std::vector<float> puGlobals;
353  l1pualgo_->doPUGlobals(l1regions_.regions(), -1., puGlobals); // FIXME we don't have yet an external PU estimate
354  const std::vector<std::string>& puGlobalNames = l1pualgo_->puGlobalNames();
355  if (puGlobals.size() != puGlobalNames.size())
356  throw cms::Exception("LogicError", "Mismatch in the number of global pileup inputs");
357  for (unsigned int i = 0, n = puGlobalNames.size(); i < n; ++i) {
358  iEvent.put(std::make_unique<float>(puGlobals[i]), puGlobalNames[i]);
359  }
360  if (fRegionDump_) {
362  }
363 
364  // Then run puppi (regionally)
365  for (auto& l1region : l1regions_.regions()) {
366  l1pualgo_->runNeutralsPU(l1region, -1., puGlobals);
367  }
368  // and save puppi
369  iEvent.put(l1regions_.fetch(true), "Puppi");
370 
371  // Then go do the multiplicities
372 
373  for (int i = 0; i < l1tpf_impl::Region::n_input_types; ++i) {
374  auto totAndMax = l1regions_.totAndMaxInput(i);
375  addUInt(totAndMax.first, std::string("totNL1") + l1tpf_impl::Region::inputTypeName(i), iEvent);
376  addUInt(totAndMax.second, std::string("maxNL1") + l1tpf_impl::Region::inputTypeName(i), iEvent);
378  }
379  for (int i = 0; i < l1tpf_impl::Region::n_output_types; ++i) {
380  auto totAndMaxPF = l1regions_.totAndMaxOutput(i, false);
381  auto totAndMaxPuppi = l1regions_.totAndMaxOutput(i, true);
382  addUInt(totAndMaxPF.first, std::string("totNL1PF") + l1tpf_impl::Region::outputTypeName(i), iEvent);
383  addUInt(totAndMaxPF.second, std::string("maxNL1PF") + l1tpf_impl::Region::outputTypeName(i), iEvent);
384  addUInt(totAndMaxPuppi.first, std::string("totNL1Puppi") + l1tpf_impl::Region::outputTypeName(i), iEvent);
385  addUInt(totAndMaxPuppi.second, std::string("maxNL1Puppi") + l1tpf_impl::Region::outputTypeName(i), iEvent);
388  }
389 
390  // finally clear the regions
391  l1regions_.clear();
392 }
393 
395  iEvent.put(std::make_unique<unsigned>(value), iLabel);
396 }
397 
398 //define this as a plug-in
l1tpf_impl::PUAlgoBase::VertexAlgo::TP
edm::StreamID
Definition: StreamID.h:30
PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
PFCandidate.h
L1TPFProducer::regionCOEName_
const std::string regionCOEName_
Definition: L1TPFProducer.cc:69
L1TPFProducer::debugPhi_
float debugPhi_
Definition: L1TPFProducer.cc:75
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
electrons_cff.bool
bool
Definition: electrons_cff.py:393
mps_fire.i
i
Definition: mps_fire.py:428
l1tpf_impl::PUAlgoBase::VertexAlgo::Old
TkPrimaryVertex.h
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
L1TPFProducer
Definition: L1TPFProducer.cc:35
L1TPFProducer::tkCands_
edm::EDGetTokenT< l1t::PFTrackCollection > tkCands_
Definition: L1TPFProducer.cc:48
l1ParticleFlow_cff.vtxAlgo
vtxAlgo
Definition: l1ParticleFlow_cff.py:99
ESHandle.h
L1TPFProducer::fRegionCOE_
std::unique_ptr< l1tpf_impl::COEFile > fRegionCOE_
Definition: L1TPFProducer.cc:71
L1TPFProducer::config_
edm::ParameterSet config_
Definition: L1TPFProducer.cc:41
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
l1ParticleFlow_cff.vtxFormat
vtxFormat
Definition: l1ParticleFlow_cff.py:100
edm::EDGetTokenT< l1t::PFTrackCollection >
edm
HLT enums.
Definition: AlignableModifier.h:19
L1TPFProducer::emPtCut_
float emPtCut_
Definition: L1TPFProducer.cc:60
l1t::MuonBxCollection
BXVector< Muon > MuonBxCollection
Definition: Muon.h:11
L1TPFProducer::emCands_
std::vector< edm::EDGetTokenT< l1t::PFClusterCollection > > emCands_
Definition: L1TPFProducer.cc:57
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
COEFile.h
DiscretePFInputsIO.h
edm::EDGetTokenT::isUninitialized
constexpr bool isUninitialized() const noexcept
Definition: EDGetToken.h:99
EDProducer.h
l1tpf_impl::RegionMapper::fetch
std::unique_ptr< l1t::PFCandidateCollection > fetch(bool puppi=true, float ptMin=0.01) const
Definition: RegionMapper.cc:185
l1tpf_impl::RegionMapper::regions
std::vector< Region > & regions()
Definition: RegionMapper.h:34
l1tpf_impl::Region::n_output_types
Definition: Region.h:57
edm::Handle
Definition: AssociativeIterator.h:50
l1tpf_impl::PUAlgoBase::VertexAlgo
VertexAlgo
global operations
Definition: PUAlgoBase.h:15
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
PFAlgoBase.h
edm::Ref< l1t::PFTrackCollection >
FileInPath.h
TkMuon.h
L1TPFProducer::hadPtCut_
float hadPtCut_
Definition: L1TPFProducer.cc:60
L1TPFProducer::l1regions_
l1tpf_impl::RegionMapper l1regions_
Definition: L1TPFProducer.cc:62
L1TPFProducer::debugEta_
float debugEta_
Definition: L1TPFProducer.cc:75
L1TPFProducer::L1TPFProducer
L1TPFProducer(const edm::ParameterSet &)
Definition: L1TPFProducer.cc:85
L1TPFProducer::trkPt_
float trkPt_
Definition: L1TPFProducer.cc:49
cmsdt::algo
algo
Definition: constants.h:164
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
L1TPFProducer::neventsproduced_
unsigned int neventsproduced_
Definition: L1TPFProducer.cc:72
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
l1tpf_impl::RegionMapper::addMuon
void addMuon(const l1t::Muon &t)
Definition: RegionMapper.cc:124
L1TPFProducer::hadCands_
std::vector< edm::EDGetTokenT< l1t::PFClusterCollection > > hadCands_
Definition: L1TPFProducer.cc:58
l1tpf_impl::Region::n_input_types
Definition: Region.h:45
L1TPFProducer::extTkVtx_
edm::EDGetTokenT< std::vector< l1t::TkPrimaryVertex > > extTkVtx_
Definition: L1TPFProducer.cc:52
BitwisePFAlgo.h
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
l1tpf_impl::RegionMapper::addEmCalo
void addEmCalo(const l1t::PFCluster &t)
Definition: RegionMapper.cc:169
l1tpf_impl::RegionMapper::fetchTracks
std::unique_ptr< l1t::PFCandidateCollection > fetchTracks(float ptMin=0.01, bool fromPV=false) const
Definition: RegionMapper.cc:264
l1t::PFTrackCollection
std::vector< l1t::PFTrack > PFTrackCollection
Definition: PFTrack.h:84
l1tpf_impl::RegionMapper::fetchCalo
std::unique_ptr< l1t::PFCandidateCollection > fetchCalo(float ptMin=0.01, bool emcalo=false) const
Definition: RegionMapper.cc:239
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PFAlgo3.h
L1TPFProducer::hasTracks_
bool hasTracks_
Definition: L1TPFProducer.cc:47
L1TPFProducer::regionDumpName_
const std::string regionDumpName_
Definition: L1TPFProducer.cc:69
L1TPFProducer::trkMaxChi2_
float trkMaxChi2_
Definition: L1TPFProducer.cc:49
L1TPFProducer::fRegionDump_
FILE * fRegionDump_
Definition: L1TPFProducer.cc:70
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
deltaR.h
L1TPFProducer::muCands_
edm::EDGetTokenT< l1t::MuonBxCollection > muCands_
Definition: L1TPFProducer.cc:54
l1t
delete x;
Definition: CaloConfig.h:22
l1tpf_impl::PUAlgoBase::VertexAlgo::External
l1tpf_impl::writeManyToFile
void writeManyToFile(const std::vector< T > &objs, FILE *file)
Definition: DiscretePFInputsIO.h:97
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
L1TPFProducer::neventscoemax_
unsigned int neventscoemax_
Definition: L1TPFProducer.cc:72
L1TPFProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: L1TPFProducer.cc:216
L1TPFProducer::l1pfalgo_
std::unique_ptr< l1tpf_impl::PFAlgoBase > l1pfalgo_
Definition: L1TPFProducer.cc:63
l1tpf_impl::RegionMapper::addTrack
void addTrack(const l1t::PFTrack &t)
Definition: RegionMapper.cc:86
value
Definition: value.py:1
edm::stream::EDProducer
Definition: EDProducer.h:38
edm::EventSetup
Definition: EventSetup.h:57
PFAlgo2HGC.h
l1t::TkPrimaryVertex
Definition: TkPrimaryVertex.h:12
l1t::TkMuon
Definition: TkMuon.h:12
l1tpf_impl::RegionMapper::totAndMaxInput
std::pair< unsigned, unsigned > totAndMaxInput(int type) const
Definition: RegionMapper.cc:304
l1tpf_impl::RegionMapper::vecOutput
std::unique_ptr< std::vector< unsigned > > vecOutput(int type, bool puppi) const
Definition: RegionMapper.cc:333
PuppiAlgo.h
edm::Ptr< l1t::Muon >
l1tpf_impl::Region::inputTypeName
static const char * inputTypeName(int inputType)
Definition: Region.cc:6
L1TPFProducer::useStandaloneMuons_
bool useStandaloneMuons_
Definition: L1TPFProducer.cc:44
L1TPFProducer::l1pualgo_
std::unique_ptr< l1tpf_impl::PUAlgoBase > l1pualgo_
Definition: L1TPFProducer.cc:64
L1TPFProducer::~L1TPFProducer
~L1TPFProducer() override
Definition: L1TPFProducer.cc:187
L1TPFProducer::TokGenOrigin_
edm::EDGetTokenT< math::XYZPointF > TokGenOrigin_
Definition: L1TPFProducer.cc:66
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
LinearizedPuppiAlgo.h
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
L1TPFProducer::useTrackerMuons_
bool useTrackerMuons_
Definition: L1TPFProducer.cc:45
l1tpf_impl::RegionMapper
Definition: RegionMapper.h:15
Frameworkfwd.h
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
Exception
Definition: hltDiff.cc:246
L1TPFProducer::trkMinStubs_
unsigned trkMinStubs_
Definition: L1TPFProducer.cc:50
RegionMapper.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
L1TPFProducer::vtxAlgo_
l1tpf_impl::PUAlgoBase::VertexAlgo vtxAlgo_
Definition: L1TPFProducer.cc:51
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
l1t::TkMuonCollection
std::vector< TkMuon > TkMuonCollection
Definition: TkMuonFwd.h:16
AlignmentPI::regions
regions
Definition: AlignmentPayloadInspectorHelper.h:76
cms::Exception
Definition: Exception.h:70
View.h
L1TPFProducer::tkMuCands_
edm::EDGetTokenT< l1t::TkMuonCollection > tkMuCands_
Definition: L1TPFProducer.cc:55
ParameterSet.h
calo
Definition: Common.h:9
event
Definition: event.py:1
l1t::Muon
Definition: Muon.h:21
math::XYZPointF
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
edm::Event
Definition: Event.h:73
l1tpf_impl::RegionMapper::vecInput
std::unique_ptr< std::vector< unsigned > > vecInput(int type) const
Definition: RegionMapper.cc:314
l1tpf_impl::RegionMapper::totAndMaxOutput
std::pair< unsigned, unsigned > totAndMaxOutput(int type, bool puppi) const
Definition: RegionMapper.cc:323
L1TPFProducer::addUInt
void addUInt(unsigned int value, std::string iLabel, edm::Event &iEvent)
Definition: L1TPFProducer.cc:394
lumi
Definition: LumiSectionData.h:20
TkMuonFwd.h
l1tpf_impl::Region::outputTypeName
static const char * outputTypeName(int outputType)
Definition: Region.cc:22
edm::InputTag
Definition: InputTag.h:15
label
const char * label
Definition: PFTauDecayModeTools.cc:11
L1TPFProducer::beginStream
void beginStream(edm::StreamID) override
Definition: L1TPFProducer.cc:196
l1tpf_impl::RegionMapper::clear
void clear()
Definition: RegionMapper.cc:78
l1tpf_impl::RegionMapper::addCalo
void addCalo(const l1t::PFCluster &t)
Definition: RegionMapper.cc:153
L1TPFProducer::debugR_
float debugR_
Definition: L1TPFProducer.cc:75
L1TPFProducer::debug_
int debug_
Definition: L1TPFProducer.cc:42