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  TTTrackBendChi2MaxNstubSelector
 
struct  TTTrackBendChi2MaxSelector
 
struct  TTTrackChi2RPhiMaxNstubSelector
 
struct  TTTrackChi2RPhiMaxSelector
 
struct  TTTrackChi2RZMaxNstubSelector
 
struct  TTTrackChi2RZMaxSelector
 
struct  TTTrackNPSStubsMinSelector
 
struct  TTTrackNStubsMinSelector
 
struct  TTTrackPromptMVAMinSelector
 
struct  TTTrackPtMinSelector
 
struct  TTTrackWordAbsEtaMaxSelector
 
struct  TTTrackWordAbsZ0MaxSelector
 
struct  TTTrackWordBendChi2MaxNstubSelector
 
struct  TTTrackWordBendChi2MaxSelector
 
struct  TTTrackWordChi2RPhiMaxNstubSelector
 
struct  TTTrackWordChi2RPhiMaxSelector
 
struct  TTTrackWordChi2RZMaxNstubSelector
 
struct  TTTrackWordChi2RZMaxSelector
 
struct  TTTrackWordNStubsMinSelector
 
struct  TTTrackWordPromptMVAMinSelector
 
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 AndSelector< TTTrackChi2RZMaxNstubSelector, TTTrackChi2RPhiMaxNstubSelector, TTTrackBendChi2MaxNstubSelectorTTTrackChi2MaxNstubSelector
 
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< TTTrackWordChi2RZMaxNstubSelector, TTTrackWordChi2RPhiMaxNstubSelector, TTTrackWordBendChi2MaxNstubSelectorTTTrackWordChi2MaxNstubSelector
 
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 promptMVAMin_
 
const double ptMin_
 
const double reducedBendChi2MaxNstub4_
 
const double reducedBendChi2MaxNstub5_
 
const double reducedChi2RPhiMax_
 
const double reducedChi2RPhiMaxNstub4_
 
const double reducedChi2RPhiMaxNstub5_
 
const double reducedChi2RZMax_
 
const double reducedChi2RZMaxNstub4_
 
const double reducedChi2RZMaxNstub5_
 
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 66 of file L1TrackSelectionProducer.cc.

Member Typedef Documentation

◆ L1Track

Definition at line 83 of file L1TrackSelectionProducer.cc.

◆ TTTrackBendChi2Chi2RZChi2RPhiMaxSelector

Definition at line 378 of file L1TrackSelectionProducer.cc.

◆ TTTrackChi2MaxNstubSelector

Definition at line 382 of file L1TrackSelectionProducer.cc.

◆ TTTrackCollection

Definition at line 84 of file L1TrackSelectionProducer.cc.

◆ TTTrackCollectionHandle

Definition at line 85 of file L1TrackSelectionProducer.cc.

◆ TTTrackPtMinEtaMaxZ0MaxNStubsMinSelector

Definition at line 371 of file L1TrackSelectionProducer.cc.

◆ TTTrackRef

Definition at line 86 of file L1TrackSelectionProducer.cc.

◆ TTTrackRefCollection

Definition at line 87 of file L1TrackSelectionProducer.cc.

◆ TTTrackRefCollectionUPtr

Definition at line 88 of file L1TrackSelectionProducer.cc.

◆ TTTrackWordBendChi2Chi2RZChi2RPhiMaxSelector

Definition at line 380 of file L1TrackSelectionProducer.cc.

◆ TTTrackWordChi2MaxNstubSelector

Definition at line 386 of file L1TrackSelectionProducer.cc.

◆ TTTrackWordPtMinEtaMaxZ0MaxNStubsMinSelector

Definition at line 376 of file L1TrackSelectionProducer.cc.

Member Enumeration Documentation

◆ TrackBitWidths

Enumerator
kPtSize 
kPtMagSize 
kEtaSize 
kEtaMagSize 

Definition at line 76 of file L1TrackSelectionProducer.cc.

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

Constructor & Destructor Documentation

◆ L1TrackSelectionProducer()

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

Definition at line 404 of file L1TrackSelectionProducer.cc.

References Exception, outputCollectionName_, processEmulatedTracks_, and processSimulatedTracks_.

405  : l1TracksToken_(consumes<TTTrackCollection>(iConfig.getParameter<edm::InputTag>("l1TracksInputTag"))),
406  tTopoToken_(esConsumes<TrackerTopology, TrackerTopologyRcd>(edm::ESInputTag("", ""))),
407  outputCollectionName_(iConfig.getParameter<std::string>("outputCollectionName")),
408  cutSet_(iConfig.getParameter<edm::ParameterSet>("cutSet")),
409 
410  ptMin_(cutSet_.getParameter<double>("ptMin")),
411  absEtaMax_(cutSet_.getParameter<double>("absEtaMax")),
412  absZ0Max_(cutSet_.getParameter<double>("absZ0Max")),
413  promptMVAMin_(cutSet_.getParameter<double>("promptMVAMin")),
414  bendChi2Max_(cutSet_.getParameter<double>("reducedBendChi2Max")),
415  reducedChi2RZMax_(cutSet_.getParameter<double>("reducedChi2RZMax")),
416  reducedChi2RPhiMax_(cutSet_.getParameter<double>("reducedChi2RPhiMax")),
417  reducedChi2RZMaxNstub4_(cutSet_.getParameter<double>("reducedChi2RZMaxNstub4")),
418  reducedChi2RZMaxNstub5_(cutSet_.getParameter<double>("reducedChi2RZMaxNstub5")),
419  reducedChi2RPhiMaxNstub4_(cutSet_.getParameter<double>("reducedChi2RPhiMaxNstub4")),
420  reducedChi2RPhiMaxNstub5_(cutSet_.getParameter<double>("reducedChi2RPhiMaxNstub5")),
421  reducedBendChi2MaxNstub4_(cutSet_.getParameter<double>("reducedBendChi2MaxNstub4")),
422  reducedBendChi2MaxNstub5_(cutSet_.getParameter<double>("reducedBendChi2MaxNstub5")),
423  nStubsMin_(cutSet_.getParameter<int>("nStubsMin")),
424  nPSStubsMin_(cutSet_.getParameter<int>("nPSStubsMin")),
425  processSimulatedTracks_(iConfig.getParameter<bool>("processSimulatedTracks")),
426  processEmulatedTracks_(iConfig.getParameter<bool>("processEmulatedTracks")),
427  debug_(iConfig.getParameter<int>("debug")) {
428  // Confirm the the configuration makes sense
430  throw cms::Exception("You must process at least one of the track collections (simulated or emulated).");
431  }
432 
434  produces<TTTrackRefCollection>(outputCollectionName_);
435  }
437  produces<TTTrackRefCollection>(outputCollectionName_ + "Emulation");
438  }
439 }
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const edm::ParameterSet cutSet_
const edm::EDGetTokenT< TTTrackCollection > l1TracksToken_

◆ ~L1TrackSelectionProducer()

L1TrackSelectionProducer::~L1TrackSelectionProducer ( )
override

Definition at line 441 of file L1TrackSelectionProducer.cc.

441 {}

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 584 of file L1TrackSelectionProducer.cc.

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

584  {
585  //L1TrackSelectionProducer
587  desc.add<edm::InputTag>("l1TracksInputTag", edm::InputTag("TTTracksFromTrackletEmulation", "Level1TTTracks"));
588  desc.add<std::string>("outputCollectionName", "Level1TTTracksSelected");
589  {
590  edm::ParameterSetDescription descCutSet;
591  descCutSet.add<double>("ptMin", 2.0)->setComment("pt must be greater than this value, [GeV]");
592  descCutSet.add<double>("absEtaMax", 2.4)->setComment("absolute value of eta must be less than this value");
593  descCutSet.add<double>("absZ0Max", 15.0)->setComment("z0 must be less than this value, [cm]");
594  descCutSet.add<int>("nStubsMin", 4)->setComment("number of stubs must be greater than or equal to this value");
595  descCutSet.add<int>("nPSStubsMin", 0)
596  ->setComment("number of stubs in the PS Modules must be greater than or equal to this value");
597 
598  descCutSet.add<double>("promptMVAMin", -1.0)->setComment("MVA must be greater than this value");
599  descCutSet.add<double>("reducedBendChi2Max", 2.25)->setComment("bend chi2 must be less than this value");
600  descCutSet.add<double>("reducedChi2RZMax", 5.0)->setComment("chi2rz/dof must be less than this value");
601  descCutSet.add<double>("reducedChi2RPhiMax", 20.0)->setComment("chi2rphi/dof must be less than this value");
602  descCutSet.add<double>("reducedChi2RZMaxNstub4", 999.9)
603  ->setComment("chi2rz/dof must be less than this value in nstub==4");
604  descCutSet.add<double>("reducedChi2RZMaxNstub5", 999.9)
605  ->setComment("chi2rz/dof must be less than this value in nstub>4");
606  descCutSet.add<double>("reducedChi2RPhiMaxNstub4", 999.9)
607  ->setComment("chi2rphi/dof must be less than this value in nstub==4");
608  descCutSet.add<double>("reducedChi2RPhiMaxNstub5", 999.9)
609  ->setComment("chi2rphi/dof must be less than this value in nstub>4");
610  descCutSet.add<double>("reducedBendChi2MaxNstub4", 999.9)
611  ->setComment("bend chi2 must be less than this value in nstub==4");
612  descCutSet.add<double>("reducedBendChi2MaxNstub5", 999.9)
613  ->setComment("bend chi2 must be less than this value in nstub>4");
614 
615  desc.add<edm::ParameterSetDescription>("cutSet", descCutSet);
616  }
617  desc.add<bool>("processSimulatedTracks", true)
618  ->setComment("return selected tracks after cutting on the floating point values");
619  desc.add<bool>("processEmulatedTracks", true)
620  ->setComment("return selected tracks after cutting on the bitwise emulated values");
621  desc.add<int>("debug", 0)->setComment("Verbosity levels: 0, 1, 2, 3");
622  descriptions.addWithDefaultLabel(desc);
623 }
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 447 of file L1TrackSelectionProducer.cc.

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

Referenced by produce().

449  {
450  edm::LogInfo log("L1TrackSelectionProducer");
451  log << "The original track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are ... \n";
452  for (const auto& track : *l1TracksHandle) {
453  printTrackInfo(log, track, debug_ >= 4);
454  }
455  log << "\t---\n\tNumber of tracks in this selection = " << l1TracksHandle->size() << "\n\n";
457  log << "The selected track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are ... \n";
458  for (const auto& track : *vTTTrackOutput) {
459  printTrackInfo(log, *track, debug_ >= 4);
460  }
461  log << "\t---\n\tNumber of tracks in this selection = " << vTTTrackOutput->size() << "\n\n";
462  }
464  log << "The emulation selected track collection (pt, eta, phi, nstub, bendchi2, chi2rz, chi2rphi, z0) values are "
465  "... \n";
466  for (const auto& track : *vTTTrackEmulationOutput) {
467  printTrackInfo(log, *track, debug_ >= 4);
468  }
469  log << "\t---\n\tNumber of tracks in this selection = " << vTTTrackEmulationOutput->size() << "\n\n";
470  }
472  TTTrackRefCollection inSimButNotEmu;
473  TTTrackRefCollection inEmuButNotSim;
474  std::set_difference(vTTTrackOutput->begin(),
475  vTTTrackOutput->end(),
476  vTTTrackEmulationOutput->begin(),
477  vTTTrackEmulationOutput->end(),
478  std::back_inserter(inSimButNotEmu));
479  std::set_difference(vTTTrackEmulationOutput->begin(),
480  vTTTrackEmulationOutput->end(),
481  vTTTrackOutput->begin(),
482  vTTTrackOutput->end(),
483  std::back_inserter(inEmuButNotSim));
484  log << "The set of tracks selected via cuts on the simulated values which are not in the set of tracks selected "
485  "by cutting on the emulated values ... \n";
486  for (const auto& track : inSimButNotEmu) {
487  printTrackInfo(log, *track, debug_ >= 3);
488  }
489  log << "\t---\n\tNumber of tracks in this selection = " << inSimButNotEmu.size() << "\n\n"
490  << "The set of tracks selected via cuts on the emulated values which are not in the set of tracks selected "
491  "by cutting on the simulated values ... \n";
492  for (const auto& track : inEmuButNotSim) {
493  printTrackInfo(log, *track, debug_ >= 3);
494  }
495  log << "\t---\n\tNumber of tracks in this selection = " << inEmuButNotSim.size() << "\n\n";
496  }
497 }
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 499 of file L1TrackSelectionProducer.cc.

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

Referenced by printDebugInfo().

499  {
500  log << "\t(" << track.momentum().perp() << ", " << track.momentum().eta() << ", " << track.momentum().phi() << ", "
501  << track.getStubRefs().size() << ", " << track.stubPtConsistency() << ", " << track.chi2ZRed() << ", "
502  << track.chi2XYRed() << ", " << track.z0() << ")\n";
503 
504  if (printEmulation) {
505  ap_uint<TrackBitWidths::kPtSize> ptEmulationBits = track.getTrackWord()(
506  TTTrack_TrackWord::TrackBitLocations::kRinvMSB - 1, TTTrack_TrackWord::TrackBitLocations::kRinvLSB);
507  ap_ufixed<TrackBitWidths::kPtSize, TrackBitWidths::kPtMagSize> ptEmulation;
508  ptEmulation.V = ptEmulationBits.range();
509  TTTrack_TrackWord::tanl_t etaEmulationBits = track.getTanlWord();
510  ap_fixed<TrackBitWidths::kEtaSize, TrackBitWidths::kEtaMagSize> etaEmulation;
511  etaEmulation.V = etaEmulationBits.range();
512  double floatTkZ0 = track.undigitizeSignedValue(
513  track.getZ0Bits(), TTTrack_TrackWord::TrackBitWidths::kZ0Size, TTTrack_TrackWord::stepZ0, 0.0);
514  double floatTkPhi = track.undigitizeSignedValue(
515  track.getPhiBits(), TTTrack_TrackWord::TrackBitWidths::kPhiSize, TTTrack_TrackWord::stepPhi0, 0.0);
516  log << "\t\t(" << ptEmulation.to_double() << ", " << etaEmulation.to_double() << ", " << floatTkPhi << ", "
517  << track.getNStubs() << ", " << track.getBendChi2() << ", " << track.getChi2RZ() << ", " << track.getChi2RPhi()
518  << ", " << floatTkZ0 << ")\n";
519  }
520 }
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 523 of file L1TrackSelectionProducer.cc.

References absEtaMax_, absZ0Max_, bendChi2Max_, debug_, edm::EventSetup::getData(), mps_fire::i, iEvent, l1TracksToken_, eostools::move(), TrackingSourceConfig_Tier0_cff::mvaSel, nPSStubsMin_, nStubsMin_, outputCollectionName_, printDebugInfo(), processEmulatedTracks_, processSimulatedTracks_, promptMVAMin_, ptMin_, reducedBendChi2MaxNstub4_, reducedBendChi2MaxNstub5_, reducedChi2RPhiMax_, reducedChi2RPhiMaxNstub4_, reducedChi2RPhiMaxNstub5_, reducedChi2RZMax_, reducedChi2RZMaxNstub4_, reducedChi2RZMaxNstub5_, HLT_2024v12_cff::track, and tTopoToken_.

523  {
524  auto vTTTrackOutput = std::make_unique<TTTrackRefCollection>();
525  auto vTTTrackEmulationOutput = std::make_unique<TTTrackRefCollection>();
526 
527  // Tracker Topology
528  const TrackerTopology& tTopo = iSetup.getData(tTopoToken_);
529 
530  TTTrackCollectionHandle l1TracksHandle;
531 
532  iEvent.getByToken(l1TracksToken_, l1TracksHandle);
533  size_t nOutputApproximate = l1TracksHandle->size();
535  vTTTrackOutput->reserve(nOutputApproximate);
536  }
538  vTTTrackEmulationOutput->reserve(nOutputApproximate);
539  }
540 
545  TTTrackNPSStubsMinSelector nPSStubsSel(nPSStubsMin_, tTopo);
546  TTTrackPromptMVAMinSelector mvaSel(promptMVAMin_);
547  TTTrackWordPromptMVAMinSelector mvaSelEmu(promptMVAMin_);
554 
555  for (size_t i = 0; i < nOutputApproximate; i++) {
556  const auto& track = l1TracksHandle->at(i);
557 
558  // Select tracks based on the floating point TTTrack
559  if (processSimulatedTracks_ && kinSel(track) && nPSStubsSel(track) && chi2Sel(track) && mvaSel(track) &&
560  chi2NstubSel(track)) {
561  vTTTrackOutput->push_back(TTTrackRef(l1TracksHandle, i));
562  }
563 
564  // Select tracks based on the bitwise accurate TTTrack_TrackWord
565  if (processEmulatedTracks_ && kinSelEmu(track) && chi2SelEmu(track) && mvaSelEmu(track) && chi2NstubSelEmu(track)) {
566  vTTTrackEmulationOutput->push_back(TTTrackRef(l1TracksHandle, i));
567  }
568  }
569 
570  if (debug_ >= 2) {
571  printDebugInfo(l1TracksHandle, vTTTrackOutput, vTTTrackEmulationOutput);
572  }
573 
574  // Put the outputs into the event
576  iEvent.put(std::move(vTTTrackOutput), outputCollectionName_);
577  }
579  iEvent.put(std::move(vTTTrackEmulationOutput), outputCollectionName_ + "Emulation");
580  }
581 }
AndSelector< TTTrackChi2RZMaxNstubSelector, TTTrackChi2RPhiMaxNstubSelector, TTTrackBendChi2MaxNstubSelector > TTTrackChi2MaxNstubSelector
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
AndSelector< TTTrackWordChi2RZMaxNstubSelector, TTTrackWordChi2RPhiMaxNstubSelector, TTTrackWordBendChi2MaxNstubSelector > TTTrackWordChi2MaxNstubSelector
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 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ absZ0Max_

const double L1TrackSelectionProducer::absZ0Max_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ bendChi2Max_

const double L1TrackSelectionProducer::bendChi2Max_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ cutSet_

const edm::ParameterSet L1TrackSelectionProducer::cutSet_
private

Definition at line 392 of file L1TrackSelectionProducer.cc.

◆ debug_

int L1TrackSelectionProducer::debug_
private

Definition at line 398 of file L1TrackSelectionProducer.cc.

Referenced by printDebugInfo(), and produce().

◆ l1TracksToken_

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

Definition at line 389 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ nPSStubsMin_

const int L1TrackSelectionProducer::nPSStubsMin_
private

Definition at line 396 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ nStubsMin_

const int L1TrackSelectionProducer::nStubsMin_
private

Definition at line 396 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ outputCollectionName_

const std::string L1TrackSelectionProducer::outputCollectionName_
private

Definition at line 391 of file L1TrackSelectionProducer.cc.

Referenced by L1TrackSelectionProducer(), and produce().

◆ processEmulatedTracks_

bool L1TrackSelectionProducer::processEmulatedTracks_
private

Definition at line 397 of file L1TrackSelectionProducer.cc.

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

◆ processSimulatedTracks_

bool L1TrackSelectionProducer::processSimulatedTracks_
private

Definition at line 397 of file L1TrackSelectionProducer.cc.

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

◆ promptMVAMin_

const double L1TrackSelectionProducer::promptMVAMin_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ ptMin_

const double L1TrackSelectionProducer::ptMin_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedBendChi2MaxNstub4_

const double L1TrackSelectionProducer::reducedBendChi2MaxNstub4_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedBendChi2MaxNstub5_

const double L1TrackSelectionProducer::reducedBendChi2MaxNstub5_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RPhiMax_

const double L1TrackSelectionProducer::reducedChi2RPhiMax_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RPhiMaxNstub4_

const double L1TrackSelectionProducer::reducedChi2RPhiMaxNstub4_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RPhiMaxNstub5_

const double L1TrackSelectionProducer::reducedChi2RPhiMaxNstub5_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RZMax_

const double L1TrackSelectionProducer::reducedChi2RZMax_
private

Definition at line 393 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RZMaxNstub4_

const double L1TrackSelectionProducer::reducedChi2RZMaxNstub4_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ reducedChi2RZMaxNstub5_

const double L1TrackSelectionProducer::reducedChi2RZMaxNstub5_
private

Definition at line 394 of file L1TrackSelectionProducer.cc.

Referenced by produce().

◆ tTopoToken_

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

Definition at line 390 of file L1TrackSelectionProducer.cc.

Referenced by produce().