CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
L1TrackSelectionProducer Class Reference

#include <L1Trigger/L1TTrackMatch/plugins/L1TrackSelectionProducer.cc>

Inheritance diagram for L1TrackSelectionProducer:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  TTTrackAbsEtaMaxSelector
 
struct  TTTrackAbsZ0MaxSelector
 
struct  TTTrackBendChi2MaxSelector
 
struct  TTTrackChi2RPhiMaxSelector
 
struct  TTTrackChi2RZMaxSelector
 
struct  TTTrackNPSStubsMinSelector
 
struct  TTTrackNStubsMinSelector
 
struct  TTTrackPtMinSelector
 
struct  TTTrackWordAbsEtaMaxSelector
 
struct  TTTrackWordAbsZ0MaxSelector
 
struct  TTTrackWordBendChi2MaxSelector
 
struct  TTTrackWordChi2RPhiMaxSelector
 
struct  TTTrackWordChi2RZMaxSelector
 
struct  TTTrackWordNStubsMinSelector
 
struct  TTTrackWordPtMinSelector
 

Public Member Functions

 L1TrackSelectionProducer (const edm::ParameterSet &)
 
 ~L1TrackSelectionProducer () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Types

typedef TTTrack< Ref_Phase2TrackerDigi_L1Track
 
enum  TrackBitWidths { kPtSize = TTTrack_TrackWord::TrackBitWidths::kRinvSize - 1, kPtMagSize = 9, kEtaSize = TTTrack_TrackWord::TrackBitWidths::kTanlSize, kEtaMagSize = 3 }
 
typedef AndSelector< TTTrackBendChi2MaxSelector, TTTrackChi2RZMaxSelector, TTTrackChi2RPhiMaxSelectorTTTrackBendChi2Chi2RZChi2RPhiMaxSelector
 
typedef std::vector< L1TrackTTTrackCollection
 
typedef edm::Handle< TTTrackCollectionTTTrackCollectionHandle
 
typedef AndSelector< TTTrackPtMinSelector, TTTrackAbsEtaMaxSelector, TTTrackAbsZ0MaxSelector, TTTrackNStubsMinSelectorTTTrackPtMinEtaMaxZ0MaxNStubsMinSelector
 
typedef edm::Ref< TTTrackCollectionTTTrackRef
 
typedef edm::RefVector< TTTrackCollectionTTTrackRefCollection
 
typedef std::unique_ptr< TTTrackRefCollectionTTTrackRefCollectionUPtr
 
typedef AndSelector< TTTrackWordBendChi2MaxSelector, TTTrackWordChi2RZMaxSelector, TTTrackWordChi2RPhiMaxSelectorTTTrackWordBendChi2Chi2RZChi2RPhiMaxSelector
 
typedef AndSelector< TTTrackWordPtMinSelector, TTTrackWordAbsEtaMaxSelector, TTTrackWordAbsZ0MaxSelector, TTTrackWordNStubsMinSelectorTTTrackWordPtMinEtaMaxZ0MaxNStubsMinSelector
 

Private Member Functions

void printDebugInfo (const TTTrackCollectionHandle &l1TracksHandle, const TTTrackRefCollectionUPtr &vTTTrackOutput, const TTTrackRefCollectionUPtr &vTTTrackEmulationOutput) const
 
void printTrackInfo (edm::LogInfo &log, const L1Track &track, bool printEmulation=false) const
 
void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 

Private Attributes

const double absEtaMax_
 
const double absZ0Max_
 
const double bendChi2Max_
 
const edm::ParameterSet cutSet_
 
int debug_
 
const edm::EDGetTokenT< TTTrackCollectionl1TracksToken_
 
const int nPSStubsMin_
 
const int nStubsMin_
 
const std::string outputCollectionName_
 
bool processEmulatedTracks_
 
bool processSimulatedTracks_
 
const double ptMin_
 
const double reducedChi2RPhiMax_
 
const double reducedChi2RZMax_
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: Selects a set of L1Tracks based on a set of predefined criteria.

Implementation: Inputs: std::vector<TTTrack> - Each floating point TTTrack inside this collection inherits from a bit-accurate TTTrack_TrackWord, used for emulation purposes. Outputs: std::vector<TTTrack> - A collection of TTTracks selected from cuts on the TTTrack properties std::vector<TTTrack> - A collection of TTTracks selected from cuts on the TTTrack_TrackWord properties

Definition at line 65 of file L1TrackSelectionProducer.cc.

Member Typedef Documentation

◆ L1Track

Definition at line 82 of file L1TrackSelectionProducer.cc.

◆ TTTrackBendChi2Chi2RZChi2RPhiMaxSelector

Definition at line 267 of file L1TrackSelectionProducer.cc.

◆ TTTrackCollection

Definition at line 83 of file L1TrackSelectionProducer.cc.

◆ TTTrackCollectionHandle

Definition at line 84 of file L1TrackSelectionProducer.cc.

◆ TTTrackPtMinEtaMaxZ0MaxNStubsMinSelector

Definition at line 260 of file L1TrackSelectionProducer.cc.

◆ TTTrackRef

Definition at line 85 of file L1TrackSelectionProducer.cc.

◆ TTTrackRefCollection

Definition at line 86 of file L1TrackSelectionProducer.cc.

◆ TTTrackRefCollectionUPtr

Definition at line 87 of file L1TrackSelectionProducer.cc.

◆ TTTrackWordBendChi2Chi2RZChi2RPhiMaxSelector

Definition at line 269 of file L1TrackSelectionProducer.cc.

◆ TTTrackWordPtMinEtaMaxZ0MaxNStubsMinSelector

Definition at line 265 of file L1TrackSelectionProducer.cc.

Member Enumeration Documentation

◆ TrackBitWidths

Enumerator
kPtSize 
kPtMagSize 
kEtaSize 
kEtaMagSize 

Definition at line 75 of file L1TrackSelectionProducer.cc.

75  {
76  kPtSize = TTTrack_TrackWord::TrackBitWidths::kRinvSize - 1, // Width of pt
77  kPtMagSize = 9, // Width of pt magnitude (unsigned)
78  kEtaSize = TTTrack_TrackWord::TrackBitWidths::kTanlSize, // Width of eta
79  kEtaMagSize = 3, // Width of eta magnitude (signed)
80  };

Constructor & Destructor Documentation

◆ L1TrackSelectionProducer()

L1TrackSelectionProducer::L1TrackSelectionProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 285 of file L1TrackSelectionProducer.cc.

References Exception, outputCollectionName_, processEmulatedTracks_, and processSimulatedTracks_.

286  : l1TracksToken_(consumes<TTTrackCollection>(iConfig.getParameter<edm::InputTag>("l1TracksInputTag"))),
287  tTopoToken_(esConsumes<TrackerTopology, TrackerTopologyRcd>(edm::ESInputTag("", ""))),
288  outputCollectionName_(iConfig.getParameter<std::string>("outputCollectionName")),
289  cutSet_(iConfig.getParameter<edm::ParameterSet>("cutSet")),
290 
291  ptMin_(cutSet_.getParameter<double>("ptMin")),
292  absEtaMax_(cutSet_.getParameter<double>("absEtaMax")),
293  absZ0Max_(cutSet_.getParameter<double>("absZ0Max")),
294  bendChi2Max_(cutSet_.getParameter<double>("reducedBendChi2Max")),
295  reducedChi2RZMax_(cutSet_.getParameter<double>("reducedChi2RZMax")),
296  reducedChi2RPhiMax_(cutSet_.getParameter<double>("reducedChi2RPhiMax")),
297  nStubsMin_(cutSet_.getParameter<int>("nStubsMin")),
298  nPSStubsMin_(cutSet_.getParameter<int>("nPSStubsMin")),
299  processSimulatedTracks_(iConfig.getParameter<bool>("processSimulatedTracks")),
300  processEmulatedTracks_(iConfig.getParameter<bool>("processEmulatedTracks")),
301  debug_(iConfig.getParameter<int>("debug")) {
302  // Confirm the the configuration makes sense
304  throw cms::Exception("You must process at least one of the track collections (simulated or emulated).");
305  }
306 
308  produces<TTTrackRefCollection>(outputCollectionName_);
309  }
311  produces<TTTrackRefCollection>(outputCollectionName_ + "Emulation");
312  }
313 }
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ParameterSet cutSet_
const edm::EDGetTokenT< TTTrackCollection > l1TracksToken_

◆ ~L1TrackSelectionProducer()

L1TrackSelectionProducer::~L1TrackSelectionProducer ( )
override

Definition at line 315 of file L1TrackSelectionProducer.cc.

315 {}

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 449 of file L1TrackSelectionProducer.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, edm::ParameterDescriptionNode::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

449  {
450  //L1TrackSelectionProducer
452  desc.add<edm::InputTag>("l1TracksInputTag", edm::InputTag("TTTracksFromTrackletEmulation", "Level1TTTracks"));
453  desc.add<std::string>("outputCollectionName", "Level1TTTracksSelected");
454  {
455  edm::ParameterSetDescription descCutSet;
456  descCutSet.add<double>("ptMin", 2.0)->setComment("pt must be greater than this value, [GeV]");
457  descCutSet.add<double>("absEtaMax", 2.4)->setComment("absolute value of eta must be less than this value");
458  descCutSet.add<double>("absZ0Max", 15.0)->setComment("z0 must be less than this value, [cm]");
459  descCutSet.add<int>("nStubsMin", 4)->setComment("number of stubs must be greater than or equal to this value");
460  descCutSet.add<int>("nPSStubsMin", 0)
461  ->setComment("number of stubs in the PS Modules must be greater than or equal to this value");
462 
463  descCutSet.add<double>("reducedBendChi2Max", 2.25)->setComment("bend chi2 must be less than this value");
464  descCutSet.add<double>("reducedChi2RZMax", 5.0)->setComment("chi2rz/dof must be less than this value");
465  descCutSet.add<double>("reducedChi2RPhiMax", 20.0)->setComment("chi2rphi/dof must be less than this value");
466 
467  desc.add<edm::ParameterSetDescription>("cutSet", descCutSet);
468  }
469  desc.add<bool>("processSimulatedTracks", true)
470  ->setComment("return selected tracks after cutting on the floating point values");
471  desc.add<bool>("processEmulatedTracks", true)
472  ->setComment("return selected tracks after cutting on the bitwise emulated values");
473  desc.add<int>("debug", 0)->setComment("Verbosity levels: 0, 1, 2, 3");
474  descriptions.addWithDefaultLabel(desc);
475 }
void setComment(std::string const &value)
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * add(U const &iLabel, T const &value)

◆ printDebugInfo()

void L1TrackSelectionProducer::printDebugInfo ( const TTTrackCollectionHandle l1TracksHandle,
const TTTrackRefCollectionUPtr vTTTrackOutput,
const TTTrackRefCollectionUPtr vTTTrackEmulationOutput 
) const
private

Definition at line 321 of file L1TrackSelectionProducer.cc.

References debug_, dqm-mbProfile::log, printTrackInfo(), processEmulatedTracks_, processSimulatedTracks_, DBoxMetadataHelper::set_difference(), and HLT_2023v12_cff::track.

Referenced by produce().

323  {
324  edm::LogInfo log("L1TrackSelectionProducer");
325  log << "The original track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are ... \n";
326  for (const auto& track : *l1TracksHandle) {
327  printTrackInfo(log, track, debug_ >= 4);
328  }
329  log << "\t---\n\tNumber of tracks in this selection = " << l1TracksHandle->size() << "\n\n";
331  log << "The selected track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are ... \n";
332  for (const auto& track : *vTTTrackOutput) {
333  printTrackInfo(log, *track, debug_ >= 4);
334  }
335  log << "\t---\n\tNumber of tracks in this selection = " << vTTTrackOutput->size() << "\n\n";
336  }
338  log << "The emulation selected track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are "
339  "... \n";
340  for (const auto& track : *vTTTrackEmulationOutput) {
341  printTrackInfo(log, *track, debug_ >= 4);
342  }
343  log << "\t---\n\tNumber of tracks in this selection = " << vTTTrackEmulationOutput->size() << "\n\n";
344  }
346  TTTrackRefCollection inSimButNotEmu;
347  TTTrackRefCollection inEmuButNotSim;
348  std::set_difference(vTTTrackOutput->begin(),
349  vTTTrackOutput->end(),
350  vTTTrackEmulationOutput->begin(),
351  vTTTrackEmulationOutput->end(),
352  std::back_inserter(inSimButNotEmu));
353  std::set_difference(vTTTrackEmulationOutput->begin(),
354  vTTTrackEmulationOutput->end(),
355  vTTTrackOutput->begin(),
356  vTTTrackOutput->end(),
357  std::back_inserter(inEmuButNotSim));
358  log << "The set of tracks selected via cuts on the simulated values which are not in the set of tracks selected "
359  "by cutting on the emulated values ... \n";
360  for (const auto& track : inSimButNotEmu) {
361  printTrackInfo(log, *track, debug_ >= 3);
362  }
363  log << "\t---\n\tNumber of tracks in this selection = " << inSimButNotEmu.size() << "\n\n"
364  << "The set of tracks selected via cuts on the emulated values which are not in the set of tracks selected "
365  "by cutting on the simulated values ... \n";
366  for (const auto& track : inEmuButNotSim) {
367  printTrackInfo(log, *track, debug_ >= 3);
368  }
369  log << "\t---\n\tNumber of tracks in this selection = " << inEmuButNotSim.size() << "\n\n";
370  }
371 }
void printTrackInfo(edm::LogInfo &log, const L1Track &track, bool printEmulation=false) const
edm::RefVector< TTTrackCollection > TTTrackRefCollection
std::vector< std::string > set_difference(std::vector< std::string > const &v1, std::vector< std::string > const &v2)

◆ printTrackInfo()

void L1TrackSelectionProducer::printTrackInfo ( edm::LogInfo log,
const L1Track track,
bool  printEmulation = false 
) const
private

Definition at line 373 of file L1TrackSelectionProducer.cc.

References dqm-mbProfile::log, TTTrack_TrackWord::stepPhi0, TTTrack_TrackWord::stepZ0, and HLT_2023v12_cff::track.

Referenced by printDebugInfo().

373  {
374  log << "\t(" << track.momentum().perp() << ", " << track.momentum().eta() << ", " << track.momentum().phi() << ", "
375  << track.getStubRefs().size() << ", " << track.stubPtConsistency() << ", " << track.chi2ZRed() << ", "
376  << track.chi2XYRed() << ", " << track.z0() << ")\n";
377 
378  if (printEmulation) {
379  ap_uint<TrackBitWidths::kPtSize> ptEmulationBits = track.getTrackWord()(
380  TTTrack_TrackWord::TrackBitLocations::kRinvMSB - 1, TTTrack_TrackWord::TrackBitLocations::kRinvLSB);
381  ap_ufixed<TrackBitWidths::kPtSize, TrackBitWidths::kPtMagSize> ptEmulation;
382  ptEmulation.V = ptEmulationBits.range();
383  TTTrack_TrackWord::tanl_t etaEmulationBits = track.getTanlWord();
384  ap_fixed<TrackBitWidths::kEtaSize, TrackBitWidths::kEtaMagSize> etaEmulation;
385  etaEmulation.V = etaEmulationBits.range();
386  double floatTkZ0 = track.undigitizeSignedValue(
387  track.getZ0Bits(), TTTrack_TrackWord::TrackBitWidths::kZ0Size, TTTrack_TrackWord::stepZ0, 0.0);
388  double floatTkPhi = track.undigitizeSignedValue(
389  track.getPhiBits(), TTTrack_TrackWord::TrackBitWidths::kPhiSize, TTTrack_TrackWord::stepPhi0, 0.0);
390  log << "\t\t(" << ptEmulation.to_double() << ", " << etaEmulation.to_double() << ", " << floatTkPhi << ", "
391  << track.getNStubs() << ", " << track.getBendChi2() << ", " << track.getChi2RZ() << ", " << track.getChi2RPhi()
392  << ", " << floatTkZ0 << ")\n";
393  }
394 }
static constexpr double stepPhi0
ap_uint< TrackBitWidths::kTanlSize > tanl_t
static constexpr double stepZ0

◆ produce()

void L1TrackSelectionProducer::produce ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivatevirtual

Implements edm::global::EDProducerBase.

Definition at line 397 of file L1TrackSelectionProducer.cc.

References absEtaMax_, absZ0Max_, bendChi2Max_, debug_, edm::EventSetup::getData(), mps_fire::i, iEvent, l1TracksToken_, eostools::move(), nPSStubsMin_, nStubsMin_, outputCollectionName_, printDebugInfo(), processEmulatedTracks_, processSimulatedTracks_, ptMin_, reducedChi2RPhiMax_, reducedChi2RZMax_, HLT_2023v12_cff::track, and tTopoToken_.

397  {
398  auto vTTTrackOutput = std::make_unique<TTTrackRefCollection>();
399  auto vTTTrackEmulationOutput = std::make_unique<TTTrackRefCollection>();
400 
401  // Tracker Topology
402  const TrackerTopology& tTopo = iSetup.getData(tTopoToken_);
403 
404  TTTrackCollectionHandle l1TracksHandle;
405 
406  iEvent.getByToken(l1TracksToken_, l1TracksHandle);
407  size_t nOutputApproximate = l1TracksHandle->size();
409  vTTTrackOutput->reserve(nOutputApproximate);
410  }
412  vTTTrackEmulationOutput->reserve(nOutputApproximate);
413  }
414 
419  TTTrackNPSStubsMinSelector nPSStubsSel(nPSStubsMin_, tTopo);
420 
421  for (size_t i = 0; i < nOutputApproximate; i++) {
422  const auto& track = l1TracksHandle->at(i);
423 
424  // Select tracks based on the floating point TTTrack
425  if (processSimulatedTracks_ && kinSel(track) && nPSStubsSel(track) && chi2Sel(track)) {
426  vTTTrackOutput->push_back(TTTrackRef(l1TracksHandle, i));
427  }
428 
429  // Select tracks based on the bitwise accurate TTTrack_TrackWord
430  if (processEmulatedTracks_ && kinSelEmu(track) && chi2SelEmu(track)) {
431  vTTTrackEmulationOutput->push_back(TTTrackRef(l1TracksHandle, i));
432  }
433  }
434 
435  if (debug_ >= 2) {
436  printDebugInfo(l1TracksHandle, vTTTrackOutput, vTTTrackEmulationOutput);
437  }
438 
439  // Put the outputs into the event
441  iEvent.put(std::move(vTTTrackOutput), outputCollectionName_);
442  }
444  iEvent.put(std::move(vTTTrackEmulationOutput), outputCollectionName_ + "Emulation");
445  }
446 }
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
edm::Handle< TTTrackCollection > TTTrackCollectionHandle
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
AndSelector< TTTrackBendChi2MaxSelector, TTTrackChi2RZMaxSelector, TTTrackChi2RPhiMaxSelector > TTTrackBendChi2Chi2RZChi2RPhiMaxSelector
AndSelector< TTTrackWordBendChi2MaxSelector, TTTrackWordChi2RZMaxSelector, TTTrackWordChi2RPhiMaxSelector > TTTrackWordBendChi2Chi2RZChi2RPhiMaxSelector
AndSelector< TTTrackWordPtMinSelector, TTTrackWordAbsEtaMaxSelector, TTTrackWordAbsZ0MaxSelector, TTTrackWordNStubsMinSelector > TTTrackWordPtMinEtaMaxZ0MaxNStubsMinSelector
AndSelector< TTTrackPtMinSelector, TTTrackAbsEtaMaxSelector, TTTrackAbsZ0MaxSelector, TTTrackNStubsMinSelector > TTTrackPtMinEtaMaxZ0MaxNStubsMinSelector
int iEvent
Definition: GenABIO.cc:224
edm::Ref< TTTrackCollection > TTTrackRef
void printDebugInfo(const TTTrackCollectionHandle &l1TracksHandle, const TTTrackRefCollectionUPtr &vTTTrackOutput, const TTTrackRefCollectionUPtr &vTTTrackEmulationOutput) const
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< TTTrackCollection > l1TracksToken_

Member Data Documentation

◆ absEtaMax_

const double L1TrackSelectionProducer::absEtaMax_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ absZ0Max_

const double L1TrackSelectionProducer::absZ0Max_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ bendChi2Max_

const double L1TrackSelectionProducer::bendChi2Max_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ cutSet_

const edm::ParameterSet L1TrackSelectionProducer::cutSet_
private

Definition at line 275 of file L1TrackSelectionProducer.cc.

◆ debug_

int L1TrackSelectionProducer::debug_
private

Definition at line 279 of file L1TrackSelectionProducer.cc.

Referenced by printDebugInfo(), and produce().

◆ l1TracksToken_

const edm::EDGetTokenT<TTTrackCollection> L1TrackSelectionProducer::l1TracksToken_
private

Definition at line 272 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ nPSStubsMin_

const int L1TrackSelectionProducer::nPSStubsMin_
private

Definition at line 277 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ nStubsMin_

const int L1TrackSelectionProducer::nStubsMin_
private

Definition at line 277 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ outputCollectionName_

const std::string L1TrackSelectionProducer::outputCollectionName_
private

Definition at line 274 of file L1TrackSelectionProducer.cc.

Referenced by L1TrackSelectionProducer(), and produce().

◆ processEmulatedTracks_

bool L1TrackSelectionProducer::processEmulatedTracks_
private

Definition at line 278 of file L1TrackSelectionProducer.cc.

Referenced by L1TrackSelectionProducer(), printDebugInfo(), and produce().

◆ processSimulatedTracks_

bool L1TrackSelectionProducer::processSimulatedTracks_
private

Definition at line 278 of file L1TrackSelectionProducer.cc.

Referenced by L1TrackSelectionProducer(), printDebugInfo(), and produce().

◆ ptMin_

const double L1TrackSelectionProducer::ptMin_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RPhiMax_

const double L1TrackSelectionProducer::reducedChi2RPhiMax_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RZMax_

const double L1TrackSelectionProducer::reducedChi2RZMax_
private

Definition at line 276 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ tTopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> L1TrackSelectionProducer::tTopoToken_
private

Definition at line 273 of file L1TrackSelectionProducer.cc.

Referenced by produce().