CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
L1FPGATrackProducer Class Reference
Inheritance diagram for L1FPGATrackProducer:
edm::one::EDProducer< edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 L1FPGATrackProducer (const edm::ParameterSet &iConfig)
 Constructor/destructor. More...
 
 ~L1FPGATrackProducer () override
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::WatchRuns >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () 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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > 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
 
bool registeredToConsumeMany (TypeID const &, 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::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginRun (const edm::Run &run, const edm::EventSetup &iSetup) override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 

Private Attributes

std::ofstream asciiEventOut_
 
string asciiEventOutName_
 
const ChannelAssignmentchannelAssignment_
 
edm::ParameterSet config
 Containers of parameters passed by python configuration file. More...
 
std::map< string, vector< int > > dtclayerdisk
 
const edm::ESGetToken< tt::Setup, tt::SetupRcdesGetToken_
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordesGetTokenBfield_
 
const ESGetToken< ChannelAssignment, ChannelAssignmentRcdesGetTokenChannelAssignment_
 
const edm::ESGetToken< hph::Setup, hph::SetupRcdesGetTokenHPH_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordesGetTokenTGeom_
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdesGetTokenTTopo_
 
int eventnum
 
trklet::TrackletEventProcessor eventProcessor
 
bool extended_
 
edm::FileInPath fitPatternFile
 File path for configuration files. More...
 
const edm::EDGetTokenT< reco::BeamSpotgetTokenBS_
 
const edm::EDGetTokenT< TTDTCgetTokenDTC_
 
edm::EDGetTokenT< std::vector< TrackingParticle > > getTokenTrackingParticle_
 
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > getTokenTTClusterMCTruth_
 
edm::InputTag MCTruthClusterInputTag
 
edm::InputTag MCTruthStubInputTag
 
edm::FileInPath memoryModulesFile
 
unsigned int nHelixPar_
 
edm::FileInPath processingModulesFile
 
const edm::EDPutTokenT< StreamsStubputTokenStubs_
 
const edm::EDPutTokenT< StreamsputTokenTracks_
 
bool readMoreMcTruth_
 
bool reduced_
 
trklet::Settings settings_
 
const Setupsetup_
 
const hph::SetupsetupHPH_
 
edm::FileInPath tableTEDFile
 
edm::FileInPath tableTREFile
 
edm::InputTag TrackingParticleInputTag
 
bool trackQuality_
 
std::unique_ptr< L1TrackQualitytrackQualityModel_
 
edm::FileInPath wiresFile
 

Additional Inherited Members

- Public Types inherited from edm::one::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
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
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

Definition at line 141 of file L1FPGATrackProducer.cc.

Constructor & Destructor Documentation

◆ L1FPGATrackProducer()

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

Constructor/destructor.

Definition at line 221 of file L1FPGATrackProducer.cc.

References asciiEventOut_, asciiEventOutName_, channelAssignment_, trklet::Settings::debugTracklet(), trklet::Settings::doMultipleMatches(), eventnum, cppFunctionSkipper::exception, extended_, fitPatternFile, edm::FileInPath::fullPath(), edm::ParameterSet::getParameter(), getTokenTrackingParticle_, getTokenTTClusterMCTruth_, edm::ParameterSet::getUntrackedParameter(), MCTruthClusterInputTag, memoryModulesFile, nHelixPar_, processingModulesFile, readMoreMcTruth_, reduced_, trklet::Settings::removalType(), trklet::Settings::setDoMultipleMatches(), trklet::Settings::setExtended(), trklet::Settings::setFakefit(), trklet::Settings::setFitPatternFile(), trklet::Settings::setMemoryModulesFile(), trklet::Settings::setNbitstrackletindex(), trklet::Settings::setNHelixPar(), trklet::Settings::setProcessingModulesFile(), trklet::Settings::setReduced(), trklet::Settings::setRemovalType(), trklet::Settings::setStoreTrackBuilderOutput(), trklet::Settings::setTableTEDFile(), trklet::Settings::setTableTREFile(), settings_, setup_, trklet::Settings::setWiresFile(), trklet::Settings::storeTrackBuilderOutput(), tableTEDFile, tableTREFile, TrackingParticleInputTag, trackQuality_, trackQualityModel_, and wiresFile.

222  : config(iConfig),
223  readMoreMcTruth_(iConfig.getParameter<bool>("readMoreMcTruth")),
224  MCTruthClusterInputTag(readMoreMcTruth_ ? config.getParameter<edm::InputTag>("MCTruthClusterInputTag")
225  : edm::InputTag()),
226  MCTruthStubInputTag(readMoreMcTruth_ ? config.getParameter<edm::InputTag>("MCTruthStubInputTag")
227  : edm::InputTag()),
228  TrackingParticleInputTag(readMoreMcTruth_ ? iConfig.getParameter<edm::InputTag>("TrackingParticleInputTag")
229  : edm::InputTag()),
230  // book ED products
231  getTokenBS_(consumes<reco::BeamSpot>(config.getParameter<edm::InputTag>("BeamSpotSource"))),
232  getTokenDTC_(consumes<TTDTC>(edm::InputTag(iConfig.getParameter<edm::InputTag>("InputTagTTDTC")))),
233  // book ED output token for clock and bit accurate tracks
234  putTokenTracks_(produces<Streams>("Level1TTTracks")),
235  // book ED output token for clock and bit accurate stubs
236  putTokenStubs_(produces<StreamsStub>("Level1TTTracks")),
237  // book ES products
238  esGetTokenChannelAssignment_(esConsumes<ChannelAssignment, ChannelAssignmentRcd, Transition::BeginRun>()),
239  esGetTokenBfield_(esConsumes<edm::Transition::BeginRun>()),
242  esGetToken_(esConsumes<tt::Setup, tt::SetupRcd, edm::Transition::BeginRun>()),
243  esGetTokenHPH_(esConsumes<hph::Setup, hph::SetupRcd, edm::Transition::BeginRun>()) {
244  if (readMoreMcTruth_) {
245  getTokenTTClusterMCTruth_ = consumes<TTClusterAssociationMap<Ref_Phase2TrackerDigi_>>(MCTruthClusterInputTag);
246  getTokenTrackingParticle_ = consumes<std::vector<TrackingParticle>>(TrackingParticleInputTag);
247  }
248 
249  produces<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>("Level1TTTracks").setBranchAlias("Level1TTTracks");
250 
251  asciiEventOutName_ = iConfig.getUntrackedParameter<string>("asciiFileName", "");
252 
253  fitPatternFile = iConfig.getParameter<edm::FileInPath>("fitPatternFile");
254  processingModulesFile = iConfig.getParameter<edm::FileInPath>("processingModulesFile");
255  memoryModulesFile = iConfig.getParameter<edm::FileInPath>("memoryModulesFile");
256  wiresFile = iConfig.getParameter<edm::FileInPath>("wiresFile");
257 
258  extended_ = iConfig.getParameter<bool>("Extended");
259  reduced_ = iConfig.getParameter<bool>("Reduced");
260  nHelixPar_ = iConfig.getParameter<unsigned int>("Hnpar");
261 
262  if (extended_) {
263  tableTEDFile = iConfig.getParameter<edm::FileInPath>("tableTEDFile");
264  tableTREFile = iConfig.getParameter<edm::FileInPath>("tableTREFile");
265  }
266 
267  // initial ES products
268  channelAssignment_ = nullptr;
269  setup_ = nullptr;
270 
271  // --------------------------------------------------------------------------------
272  // set options in Settings based on inputs from configuration files
273  // --------------------------------------------------------------------------------
274 
278 
283 
284  settings_.setFakefit(iConfig.getParameter<bool>("Fakefit"));
285  settings_.setStoreTrackBuilderOutput(iConfig.getParameter<bool>("StoreTrackBuilderOutput"));
286  settings_.setRemovalType(iConfig.getParameter<string>("RemovalType"));
287  settings_.setDoMultipleMatches(iConfig.getParameter<bool>("DoMultipleMatches"));
288 
289  if (extended_) {
292 
293  //FIXME: The TED and TRE tables are currently disabled by default, so we
294  //need to allow for the additional tracklets that will eventually be
295  //removed by these tables, once they are finalized
297  }
298 
299  eventnum = 0;
300  if (not asciiEventOutName_.empty()) {
301  asciiEventOut_.open(asciiEventOutName_.c_str());
302  }
303 
304  if (settings_.debugTracklet()) {
305  edm::LogVerbatim("Tracklet") << "fit pattern : " << fitPatternFile.fullPath()
306  << "\n process modules : " << processingModulesFile.fullPath()
307  << "\n memory modules : " << memoryModulesFile.fullPath()
308  << "\n wires : " << wiresFile.fullPath();
309  if (extended_) {
310  edm::LogVerbatim("Tracklet") << "table_TED : " << tableTEDFile.fullPath()
311  << "\n table_TRE : " << tableTREFile.fullPath();
312  }
313  }
314 
315  trackQuality_ = iConfig.getParameter<bool>("TrackQuality");
316  if (trackQuality_) {
317  trackQualityModel_ = std::make_unique<L1TrackQuality>(iConfig.getParameter<edm::ParameterSet>("TrackQualityPSet"));
318  }
320  cms::Exception exception("ConfigurationNotSupported.");
321  exception.addContext("L1FPGATrackProducer::produce");
323  exception << "Storing of TrackBuilder output does not support doMultipleMatches.";
324  if (!settings_.removalType().empty())
325  exception << "Storing of TrackBuilder output does not support duplicate removal.";
326  throw exception;
327  }
328 }
Log< level::Info, true > LogVerbatim
void setMemoryModulesFile(std::string memoryModulesFileName)
Definition: Settings.h:77
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::InputTag MCTruthStubInputTag
void setStoreTrackBuilderOutput(bool storeTrackBuilderOutput)
Definition: Settings.h:246
edm::FileInPath tableTREFile
trklet::Settings settings_
std::string fullPath() const
Definition: FileInPath.cc:161
void setFitPatternFile(std::string fitPatternFileName)
Definition: Settings.h:73
const edm::EDGetTokenT< reco::BeamSpot > getTokenBS_
edm::InputTag MCTruthClusterInputTag
void setReduced(bool reduced)
Definition: Settings.h:261
Definition: config.py:1
T getUntrackedParameter(std::string const &, T const &) const
edm::FileInPath tableTEDFile
void setRemovalType(std::string removalType)
Definition: Settings.h:249
edm::EDGetTokenT< std::vector< TrackingParticle > > getTokenTrackingParticle_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > esGetTokenTTopo_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > esGetTokenTGeom_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > esGetTokenBfield_
const edm::ESGetToken< hph::Setup, hph::SetupRcd > esGetTokenHPH_
edm::FileInPath processingModulesFile
const ChannelAssignment * channelAssignment_
std::string removalType() const
Definition: Settings.h:239
const edm::ESGetToken< tt::Setup, tt::SetupRcd > esGetToken_
bool doMultipleMatches() const
Definition: Settings.h:242
const edm::EDPutTokenT< Streams > putTokenTracks_
void setFakefit(bool fakefit)
Definition: Settings.h:244
edm::InputTag TrackingParticleInputTag
bool debugTracklet() const
Definition: Settings.h:182
bool storeTrackBuilderOutput() const
Definition: Settings.h:245
void setProcessingModulesFile(std::string processingModulesFileName)
Definition: Settings.h:74
const edm::EDGetTokenT< TTDTC > getTokenDTC_
void setDoMultipleMatches(bool doMultipleMatches)
Definition: Settings.h:250
edm::FileInPath memoryModulesFile
const edm::EDPutTokenT< StreamsStub > putTokenStubs_
std::unique_ptr< L1TrackQuality > trackQualityModel_
edm::FileInPath fitPatternFile
File path for configuration files.
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > getTokenTTClusterMCTruth_
void setNbitstrackletindex(unsigned int nbitstrackletindex)
Definition: Settings.h:282
void setNHelixPar(unsigned int nHelixPar)
Definition: Settings.h:254
void setWiresFile(std::string wiresFileName)
Definition: Settings.h:78
void setTableTREFile(std::string tableTREFileName)
Definition: Settings.h:80
edm::ParameterSet config
Containers of parameters passed by python configuration file.
void setTableTEDFile(std::string tableTEDFileName)
Definition: Settings.h:79
void setExtended(bool extended)
Definition: Settings.h:257
const ESGetToken< ChannelAssignment, ChannelAssignmentRcd > esGetTokenChannelAssignment_

◆ ~L1FPGATrackProducer()

L1FPGATrackProducer::~L1FPGATrackProducer ( )
override

Definition at line 332 of file L1FPGATrackProducer.cc.

References asciiEventOut_.

332  {
333  if (asciiEventOut_.is_open()) {
334  asciiEventOut_.close();
335  }
336 }

Member Function Documentation

◆ beginRun()

void L1FPGATrackProducer::beginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprivate

///////////////// /// MANDATORY METHODS ///

Definition at line 344 of file L1FPGATrackProducer.cc.

References channelAssignment_, esGetToken_, esGetTokenBfield_, esGetTokenChannelAssignment_, esGetTokenHPH_, eventProcessor, edm::EventSetup::getData(), trklet::TrackletEventProcessor::init(), MagneticField::inTesla(), trklet::Settings::setBfield(), settings_, setup_, setupHPH_, trackQuality_, trackQualityModel_, and PV3DBase< T, PVType, FrameType >::z().

344  {
346  // GET MAGNETIC FIELD //
347  const MagneticField* theMagneticField = &iSetup.getData(esGetTokenBfield_);
348  double mMagneticFieldStrength = theMagneticField->inTesla(GlobalPoint(0, 0, 0)).z();
349  settings_.setBfield(mMagneticFieldStrength);
350 
351  setup_ = &iSetup.getData(esGetToken_);
352  setupHPH_ = &iSetup.getData(esGetTokenHPH_);
353  if (trackQuality_) {
354  trackQualityModel_->beginRun(setupHPH_);
355  }
356  // Tracklet pattern reco output channel info.
358  // initialize the tracklet event processing (this sets all the processing & memory modules, wiring, etc)
360 }
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
trklet::Settings settings_
void init(Settings const &theSettings, const tt::Setup *setup=nullptr)
T z() const
Definition: PV3DBase.h:61
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
trklet::TrackletEventProcessor eventProcessor
const hph::Setup * setupHPH_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > esGetTokenBfield_
const edm::ESGetToken< hph::Setup, hph::SetupRcd > esGetTokenHPH_
const ChannelAssignment * channelAssignment_
const edm::ESGetToken< tt::Setup, tt::SetupRcd > esGetToken_
std::unique_ptr< L1TrackQuality > trackQualityModel_
void setBfield(double bfield)
Definition: Settings.h:264
const ESGetToken< ChannelAssignment, ChannelAssignmentRcd > esGetTokenChannelAssignment_

◆ endRun()

void L1FPGATrackProducer::endRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 340 of file L1FPGATrackProducer.cc.

340 {}

◆ produce()

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

Prepare output

LOOP OVER TRACKING PARTICLES & GET SIMTRACKS

READ DTC STUB INFORMATION ///

Get the Inner and Outer TTCluster

Implements edm::one::EDProducerBase.

Definition at line 364 of file L1FPGATrackProducer.cc.

References funct::abs(), asciiEventOut_, asciiEventOutName_, cms::cuda::assert(), Reference_intrackfit_cff::barrel, trklet::Settings::bfield(), gpuClustering::pixelStatus::bits, channelAssignment_, trklet::StubStreamData::dataBits(), tt::Setup::dtcId(), esGetTokenTGeom_, esGetTokenTTopo_, makeMEIFBenchmarkPlots::ev, trklet::TrackletEventProcessor::event(), eventnum, eventProcessor, StubPtConsistency::getConsistency(), edm::EventSetup::getData(), getTokenBS_, getTokenDTC_, getTokenTrackingParticle_, getTokenTTClusterMCTruth_, mps_fire::i, TTBV::ids(), TrackerGeometry::idToDetUnit(), iEvent, createfilelist::int, trklet::StubStreamData::iSeed(), edm::Ref< C, T, F >::isNull(), trklet::ChannelAssignment::layerId(), Topology::localPosition(), PV3DBase< T, PVType, FrameType >::mag(), genParticles_cff::map, trklet::ChannelAssignment::maxNumProjectionLayers(), eostools::move(), trklet::N_LAYER, trklet::N_SECTOR, trklet::Settings::nHelixPar(), vertices_cff::ntracks, trklet::ChannelAssignment::numChannelsStub(), trklet::ChannelAssignment::numChannelsTrack(), trklet::ChannelAssignment::numProjectionLayers(), tt::Setup::numTiltedLayerRing(), trklet::ChannelAssignment::offsetStub(), reco::BeamSpot::position(), tt::Setup::psModule(), putTokenStubs_, putTokenTracks_, DetId::rawId(), readMoreMcTruth_, HLT_2023v12_cff::region, TTBV::set(), settings_, setup_, trklet::Settings::slotToDTCname(), TTDTC::stream(), AlCaHLTBitMon_QueryRunRegistry::string, trklet::StubStreamData::stub(), tt::Setup::stubPos(), TTDTC::tfpChannels(), TTDTC::tfpRegions(), TrackerTopology::tidRing(), TrackerTopology::tobRod(), TrackerTopology::tobSide(), HLT_2023v12_cff::track, trackQuality_, trackQualityModel_, pwdgSkimBPark_cfi::tracks, trklet::TrackletEventProcessor::tracks(), heppy_batch::val, trklet::StubStreamData::valid(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

364  {
365  typedef std::map<trklet::L1TStub,
368  stubMapType;
370  TTClusterRef;
371 
373  auto L1TkTracksForOutput = std::make_unique<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>();
374 
375  stubMapType stubMap;
376 
378  // GET BS //
379  edm::Handle<reco::BeamSpot> beamSpotHandle;
380  iEvent.getByToken(getTokenBS_, beamSpotHandle);
381  math::XYZPoint bsPosition = beamSpotHandle->position();
382 
383  eventnum++;
385  ev.setEventNum(eventnum);
386  ev.setIP(bsPosition.x(), bsPosition.y());
387 
388  // tracking particles
389  edm::Handle<std::vector<TrackingParticle>> TrackingParticleHandle;
390  if (readMoreMcTruth_)
391  iEvent.getByToken(getTokenTrackingParticle_, TrackingParticleHandle);
392 
393  // tracker topology
394  const TrackerTopology* const tTopo = &iSetup.getData(esGetTokenTTopo_);
395  const TrackerGeometry* const theTrackerGeom = &iSetup.getData(esGetTokenTGeom_);
396 
398  // GET THE PRIMITIVES //
399  edm::Handle<TTDTC> handleDTC;
400  iEvent.getByToken<TTDTC>(getTokenDTC_, handleDTC);
401 
402  // must be defined for code to compile, even if it's not used unless readMoreMcTruth_ is true
403  map<edm::Ptr<TrackingParticle>, int> translateTP;
404 
405  // MC truth association maps
407  if (readMoreMcTruth_) {
408  iEvent.getByToken(getTokenTTClusterMCTruth_, MCTruthTTClusterHandle);
409 
412 
413  int ntps = 1; //count from 1 ; 0 will mean invalid
414 
415  int this_tp = 0;
416  if (readMoreMcTruth_) {
417  for (const auto& iterTP : *TrackingParticleHandle) {
418  edm::Ptr<TrackingParticle> tp_ptr(TrackingParticleHandle, this_tp);
419  this_tp++;
420 
421  // only keep TPs producing a cluster
422  if (MCTruthTTClusterHandle->findTTClusterRefs(tp_ptr).empty())
423  continue;
424 
425  if (iterTP.g4Tracks().empty()) {
426  continue;
427  }
428 
429  int sim_eventid = iterTP.g4Tracks().at(0).eventId().event();
430  int sim_type = iterTP.pdgId();
431  float sim_pt = iterTP.pt();
432  float sim_eta = iterTP.eta();
433  float sim_phi = iterTP.phi();
434 
435  float vx = iterTP.vertex().x();
436  float vy = iterTP.vertex().y();
437  float vz = iterTP.vertex().z();
438 
439  if (sim_pt < 1.0 || std::abs(vz) > 100.0 || hypot(vx, vy) > 50.0)
440  continue;
441 
442  ev.addL1SimTrack(sim_eventid, ntps, sim_type, sim_pt, sim_eta, sim_phi, vx, vy, vz);
443 
444  translateTP[tp_ptr] = ntps;
445  ntps++;
446 
447  } //end loop over TPs
448  }
449 
450  } // end if (readMoreMcTruth_)
451 
455 
456  // Process stubs in each region and channel within that tracking region
457  for (const int& region : handleDTC->tfpRegions()) {
458  for (const int& channel : handleDTC->tfpChannels()) {
459  // Get the DTC name & ID from the channel
460  unsigned int atcaSlot = channel % 12;
461  string dtcname = settings_.slotToDTCname(atcaSlot);
462  if (channel % 24 >= 12)
463  dtcname = "neg" + dtcname;
464  dtcname += (channel < 24) ? "_A" : "_B"; // which detector region
465  int dtcId = setup_->dtcId(region, channel);
466 
467  // Get the stubs from the DTC
468  const tt::StreamStub& streamFromDTC{handleDTC->stream(region, channel)};
469 
470  // Prepare the DTC stubs for the IR
471  for (size_t stubIndex = 0; stubIndex < streamFromDTC.size(); ++stubIndex) {
472  const tt::FrameStub& stub{streamFromDTC[stubIndex]};
473  const TTStubRef& stubRef = stub.first;
474 
475  if (stubRef.isNull())
476  continue;
477 
478  const GlobalPoint& ttPos = setup_->stubPos(stubRef);
479 
480  //Get the 2 bits for the layercode
481  string layerword = stub.second.to_string().substr(61, 2);
482  unsigned int layercode = 2 * (layerword[0] - '0') + layerword[1] - '0';
483  assert(layercode < 4);
484 
485  //translation from the two bit layercode to the layer/disk number of each of the
486  //12 channels (dtcs)
487  // FIX: take this from DTC cabling map.
488  static const int layerdisktab[12][4] = {{0, 6, 8, 10},
489  {0, 7, 9, -1},
490  {1, 7, -1, -1},
491  {6, 8, 10, -1},
492  {2, 7, -1, -1},
493  {2, 9, -1, -1},
494  {3, 4, -1, -1},
495  {4, -1, -1, -1},
496  {5, -1, -1, -1},
497  {5, 8, -1, -1},
498  {6, 9, -1, -1},
499  {7, 10, -1, -1}};
500 
501  int layerdisk = layerdisktab[channel % 12][layercode];
502  assert(layerdisk != -1);
503 
504  //Get the 36 bit word - skip the lowest 3 buts (status and layer code)
505  constexpr int DTCLinkWordSize = 64;
506  constexpr int StubWordSize = 36;
507  constexpr int LayerandStatusCodeSize = 3;
508  string stubword =
509  stub.second.to_string().substr(DTCLinkWordSize - StubWordSize - LayerandStatusCodeSize, StubWordSize);
510  string stubwordhex = "";
511 
512  //Loop over the 9 words in the 36 bit stub word
513  for (unsigned int i = 0; i < 9; i++) {
514  bitset<4> bits(stubword.substr(i * 4, 4));
515  ulong val = bits.to_ulong();
516  stubwordhex += ((val < 10) ? ('0' + val) : ('A' + val - 10));
517  }
518 
521  innerCluster = stub.first->clusterRef(0);
523  outerCluster = stub.first->clusterRef(1);
524 
525  // -----------------------------------------------------
526  // check module orientation, if flipped, need to store that information for track fit
527  // -----------------------------------------------------
528 
529  const DetId innerDetId = innerCluster->getDetId();
530  const GeomDetUnit* det_inner = theTrackerGeom->idToDetUnit(innerDetId);
531  const auto* theGeomDet_inner = dynamic_cast<const PixelGeomDetUnit*>(det_inner);
532  const PixelTopology* topol_inner = dynamic_cast<const PixelTopology*>(&(theGeomDet_inner->specificTopology()));
533 
534  MeasurementPoint coords_inner = innerCluster->findAverageLocalCoordinatesCentered();
535  LocalPoint clustlp_inner = topol_inner->localPosition(coords_inner);
536  GlobalPoint posStub_inner = theGeomDet_inner->surface().toGlobal(clustlp_inner);
537 
538  const DetId outerDetId = outerCluster->getDetId();
539  const GeomDetUnit* det_outer = theTrackerGeom->idToDetUnit(outerDetId);
540  const auto* theGeomDet_outer = dynamic_cast<const PixelGeomDetUnit*>(det_outer);
541  const PixelTopology* topol_outer = dynamic_cast<const PixelTopology*>(&(theGeomDet_outer->specificTopology()));
542 
543  MeasurementPoint coords_outer = outerCluster->findAverageLocalCoordinatesCentered();
544  LocalPoint clustlp_outer = topol_outer->localPosition(coords_outer);
545  GlobalPoint posStub_outer = theGeomDet_outer->surface().toGlobal(clustlp_outer);
546 
547  bool isFlipped = (posStub_outer.mag() < posStub_inner.mag());
548 
549  vector<int> assocTPs;
550 
551  for (unsigned int iClus = 0; iClus <= 1; iClus++) { // Loop over both clusters that make up stub.
552 
553  const TTClusterRef& ttClusterRef = stubRef->clusterRef(iClus);
554 
555  // Now identify all TP's contributing to either cluster in stub.
556  if (readMoreMcTruth_) {
557  vector<edm::Ptr<TrackingParticle>> vecTpPtr =
558  MCTruthTTClusterHandle->findTrackingParticlePtrs(ttClusterRef);
559 
560  for (const edm::Ptr<TrackingParticle>& tpPtr : vecTpPtr) {
561  if (translateTP.find(tpPtr) != translateTP.end()) {
562  if (iClus == 0) {
563  assocTPs.push_back(translateTP.at(tpPtr));
564  } else {
565  assocTPs.push_back(-translateTP.at(tpPtr));
566  }
567  // N.B. Since not all tracking particles are stored in InputData::vTPs_, sometimes no match will be found.
568  } else {
569  assocTPs.push_back(0);
570  }
571  }
572  }
573  }
574 
575  double stubbend = stubRef->bendFE(); //stubRef->rawBend()
576  if (ttPos.z() < -120) {
577  stubbend = -stubbend;
578  }
579 
580  bool barrel = (layerdisk < N_LAYER);
581  // See https://github.com/cms-sw/cmssw/tree/master/Geometry/TrackerNumberingBuilder
582  enum TypeBarrel { nonBarrel = 0, tiltedMinus = 1, tiltedPlus = 2, flat = 3 };
583  const TypeBarrel type = static_cast<TypeBarrel>(tTopo->tobSide(innerDetId));
584  bool tiltedBarrel = barrel && (type == tiltedMinus || type == tiltedPlus);
585  unsigned int tiltedRingId = 0;
586  // Tilted module ring no. (Increasing 1 to 12 as |z| increases).
587  if (tiltedBarrel) {
588  tiltedRingId = tTopo->tobRod(innerDetId);
589  if (type == tiltedMinus) {
590  unsigned int layp1 = 1 + layerdisk; // Setup counts from 1
591  unsigned int nTilted = setup_->numTiltedLayerRing(layp1);
592  tiltedRingId = 1 + nTilted - tiltedRingId;
593  }
594  }
595  // Endcap module ring number (1-15) in endcap disks.
596  unsigned int endcapRingId = barrel ? 0 : tTopo->tidRing(innerDetId);
597 
598  const unsigned int intDetId = innerDetId.rawId();
599 
600  ev.addStub(dtcname,
601  region,
602  layerdisk,
603  stubwordhex,
604  setup_->psModule(dtcId),
605  isFlipped,
606  tiltedBarrel,
607  tiltedRingId,
608  endcapRingId,
609  intDetId,
610  ttPos.x(),
611  ttPos.y(),
612  ttPos.z(),
613  stubbend,
614  stubRef->innerClusterPosition(),
615  assocTPs);
616 
617  const trklet::L1TStub& lastStub = ev.lastStub();
618  stubMap[lastStub] = stubRef;
619  }
620  }
621  }
622 
624  // NOW RUN THE L1 tracking
625 
626  if (!asciiEventOutName_.empty()) {
627  ev.write(asciiEventOut_);
628  }
629 
630  const std::vector<trklet::Track>& tracks = eventProcessor.tracks();
631 
632  const unsigned int maxNumProjectionLayers = channelAssignment_->maxNumProjectionLayers();
633  // number of track channels
634  const unsigned int numStreamsTrack = N_SECTOR * channelAssignment_->numChannelsTrack();
635  // number of stub channels
636  const unsigned int numStreamsStub = N_SECTOR * channelAssignment_->numChannelsStub();
637  // number of stub channels if all seed types streams padded to have same number of stub channels (for coding simplicity)
638  const unsigned int numStreamsStubRaw = numStreamsTrack * maxNumProjectionLayers;
639 
640  // Streams formatted to allow this code to run outside CMSSW.
641  vector<vector<string>> streamsTrackRaw(numStreamsTrack);
642  vector<vector<StubStreamData>> streamsStubRaw(numStreamsStubRaw);
643 
644  // this performs the actual tracklet event processing
645  eventProcessor.event(ev, streamsTrackRaw, streamsStubRaw);
646 
647  int ntracks = 0;
648 
649  for (const auto& track : tracks) {
650  if (track.duplicate())
651  continue;
652 
653  ntracks++;
654 
655  // this is where we create the TTTrack object
656  double tmp_rinv = track.rinv(settings_);
657  double tmp_phi = track.phi0(settings_);
658  double tmp_tanL = track.tanL(settings_);
659  double tmp_z0 = track.z0(settings_);
660  double tmp_d0 = track.d0(settings_);
661  double tmp_chi2rphi = track.chisqrphi();
662  double tmp_chi2rz = track.chisqrz();
663  unsigned int tmp_hit = track.hitpattern();
664 
665  TTTrack<Ref_Phase2TrackerDigi_> aTrack(tmp_rinv,
666  tmp_phi,
667  tmp_tanL,
668  tmp_z0,
669  tmp_d0,
670  tmp_chi2rphi,
671  tmp_chi2rz,
672  0,
673  0,
674  0,
675  tmp_hit,
677  settings_.bfield());
678 
679  unsigned int trksector = track.sector();
680  unsigned int trkseed = (unsigned int)abs(track.seed());
681 
682  aTrack.setPhiSector(trksector);
683  aTrack.setTrackSeedType(trkseed);
684 
685  const vector<trklet::L1TStub>& stubptrs = track.stubs();
686  vector<trklet::L1TStub> stubs;
687 
688  stubs.reserve(stubptrs.size());
689  for (const auto& stubptr : stubptrs) {
690  stubs.push_back(stubptr);
691  }
692 
693  stubMapType::const_iterator it;
694  for (const auto& itstubs : stubs) {
695  it = stubMap.find(itstubs);
696  if (it != stubMap.end()) {
697  aTrack.addStubRef(it->second);
698  } else {
699  // could not find stub in stub map
700  }
701  }
702 
703  // pt consistency
704  aTrack.setStubPtConsistency(
705  StubPtConsistency::getConsistency(aTrack, theTrackerGeom, tTopo, settings_.bfield(), settings_.nHelixPar()));
706 
707  // set TTTrack word
708  aTrack.setTrackWordBits();
709 
710  if (trackQuality_) {
711  trackQualityModel_->setL1TrackQuality(aTrack);
712  }
713 
714  // test track word
715  //aTrack.testTrackWordBits();
716 
717  L1TkTracksForOutput->push_back(aTrack);
718  }
719 
720  iEvent.put(std::move(L1TkTracksForOutput), "Level1TTTracks");
721 
722  // produce clock and bit accurate stream output tracks and stubs.
723  // from end of tracklet pattern recognition.
724  // Convertion here is from stream format that allows this code to run
725  // outside CMSSW to the EDProduct one.
726  Streams streamsTrack(numStreamsTrack);
727  StreamsStub streamsStub(numStreamsStub);
728 
729  for (unsigned int chanTrk = 0; chanTrk < numStreamsTrack; chanTrk++) {
730  for (unsigned int itk = 0; itk < streamsTrackRaw[chanTrk].size(); itk++) {
731  std::string bitsTrk = streamsTrackRaw[chanTrk][itk];
732  int iSeed = chanTrk % channelAssignment_->numChannelsTrack(); // seed type
733  streamsTrack[chanTrk].emplace_back(bitsTrk);
734 
735  const unsigned int chanStubOffsetIn = chanTrk * maxNumProjectionLayers;
736  const unsigned int chanStubOffsetOut = channelAssignment_->offsetStub(chanTrk);
737  const unsigned int numProjLayers = channelAssignment_->numProjectionLayers(iSeed);
738  TTBV hitMap(0, numProjLayers);
739  // remove padding from stub stream
740  for (unsigned int iproj = 0; iproj < maxNumProjectionLayers; iproj++) {
741  // FW current has one (perhaps invalid) stub per layer per track.
742  const StubStreamData& stubdata = streamsStubRaw[chanStubOffsetIn + iproj][itk];
743  const L1TStub& stub = stubdata.stub();
744  if (stubdata.valid()) {
745  const TTStubRef ttStubRef = stubMap[stub];
746  int layerId(-1);
747  if (!channelAssignment_->layerId(stubdata.iSeed(), ttStubRef, layerId))
748  continue;
749  hitMap.set(layerId);
750  streamsStub[chanStubOffsetOut + layerId].emplace_back(ttStubRef, stubdata.dataBits());
751  }
752  }
753  for (int layerId : hitMap.ids(false)) { // invalid stubs
754  streamsStub[chanStubOffsetOut + layerId].emplace_back(tt::FrameStub());
755  }
756  }
757  }
758 
759  iEvent.emplace(putTokenTracks_, move(streamsTrack));
760  iEvent.emplace(putTokenStubs_, move(streamsStub));
761 
762 }
unsigned int tobSide(const DetId &id) const
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
trklet::Settings settings_
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
const Point & position() const
position
Definition: BeamSpot.h:59
Bit vector used by Track Trigger emulators. Mainly used to convert integers into arbitrary (within ma...
Definition: TTBV.h:20
std::pair< TTStubRef, Frame > FrameStub
Definition: TTTypes.h:60
T z() const
Definition: PV3DBase.h:61
std::vector< StreamStub > StreamsStub
Definition: TTTypes.h:66
std::vector< FrameStub > StreamStub
Definition: TTTypes.h:63
constexpr uint32_t bits
Definition: gpuClustering.h:25
std::string slotToDTCname(unsigned int slot) const
Definition: Settings.h:434
const edm::EDGetTokenT< reco::BeamSpot > getTokenBS_
trklet::TrackletEventProcessor eventProcessor
const std::vector< int > & tfpChannels() const
Definition: TTDTC.h:26
assert(be >=bs)
int offsetStub(int channelTrack) const
edm::EDGetTokenT< std::vector< TrackingParticle > > getTokenTrackingParticle_
T x() const
Definition: PV3DBase.h:59
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > esGetTokenTGeom_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > esGetTokenTTopo_
T y() const
Definition: PV3DBase.h:60
int iEvent
Definition: GenABIO.cc:224
GlobalPoint stubPos(const TTStubRef &ttStubRef) const
Definition: Setup.cc:820
TTClusterRefT< Ref_Phase2TrackerDigi_ > TTClusterRef
Definition: TTTypes.h:45
double bfield() const
Definition: Settings.h:263
const std::string & dataBits() const
T mag() const
Definition: PV3DBase.h:64
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const std::vector< int > & tfpRegions() const
Definition: TTDTC.h:24
const ChannelAssignment * channelAssignment_
const edm::EDPutTokenT< Streams > putTokenTracks_
Class to store the L1 Track Trigger stubs.
Definition: TTStub.h:22
bool isNull() const
Checks for null.
Definition: Ref.h:235
const std::vector< Track > & tracks() const
constexpr unsigned int N_SECTOR
Definition: Settings.h:19
int numProjectionLayers(int seedType) const
Definition: DetId.h:17
const L1TStub & stub() const
bool psModule(int dtcId) const
Definition: Setup.cc:318
NOTE: this is needed even if it seems not.
Definition: TTCluster.h:27
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
Class to store the L1 Track Trigger tracks.
Definition: TTTrack.h:29
unsigned int nHelixPar() const
Definition: Settings.h:253
const edm::EDGetTokenT< TTDTC > getTokenDTC_
Class to store hardware like structured TTStub Collection used by Track Trigger emulators.
Definition: TTDTC.h:17
std::vector< Stream > Streams
Definition: TTTypes.h:68
unsigned int tobRod(const DetId &id) const
const edm::EDPutTokenT< StreamsStub > putTokenStubs_
double numTiltedLayerRing(int layerId) const
Definition: Setup.h:309
std::unique_ptr< L1TrackQuality > trackQualityModel_
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > getTokenTTClusterMCTruth_
unsigned int tidRing(const DetId &id) const
bool layerId(int seedType, const TTStubRef &ttStubRef, int &layerId) const
int dtcId(int tklId) const
Definition: Setup.cc:290
void event(SLHCEvent &ev, std::vector< std::vector< std::string >> &streamsTrackRaw, std::vector< std::vector< StubStreamData >> &streamsStubRaw)
const tt::StreamStub & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:48
def move(src, dest)
Definition: eostools.py:511
float getConsistency(TTTrack< Ref_Phase2TrackerDigi_ > aTrack, const TrackerGeometry *theTrackerGeom, const TrackerTopology *tTopo, double mMagneticFieldStrength, int nPar)
constexpr int N_LAYER
Definition: Settings.h:21

Member Data Documentation

◆ asciiEventOut_

std::ofstream L1FPGATrackProducer::asciiEventOut_
private

Definition at line 165 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), produce(), and ~L1FPGATrackProducer().

◆ asciiEventOutName_

string L1FPGATrackProducer::asciiEventOutName_
private

Definition at line 164 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ channelAssignment_

const ChannelAssignment* L1FPGATrackProducer::channelAssignment_
private

Definition at line 198 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), L1FPGATrackProducer(), and produce().

◆ config

edm::ParameterSet L1FPGATrackProducer::config
private

Containers of parameters passed by python configuration file.

Definition at line 151 of file L1FPGATrackProducer.cc.

◆ dtclayerdisk

std::map<string, vector<int> > L1FPGATrackProducer::dtclayerdisk
private

Definition at line 180 of file L1FPGATrackProducer.cc.

◆ esGetToken_

const edm::ESGetToken<tt::Setup, tt::SetupRcd> L1FPGATrackProducer::esGetToken_
private

Definition at line 209 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenBfield_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> L1FPGATrackProducer::esGetTokenBfield_
private

Definition at line 206 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenChannelAssignment_

const ESGetToken<ChannelAssignment, ChannelAssignmentRcd> L1FPGATrackProducer::esGetTokenChannelAssignment_
private

Definition at line 196 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenHPH_

const edm::ESGetToken<hph::Setup, hph::SetupRcd> L1FPGATrackProducer::esGetTokenHPH_
private

Definition at line 210 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenTGeom_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> L1FPGATrackProducer::esGetTokenTGeom_
private

Definition at line 207 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ esGetTokenTTopo_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> L1FPGATrackProducer::esGetTokenTTopo_
private

Definition at line 208 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ eventnum

int L1FPGATrackProducer::eventnum
private

Definition at line 148 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ eventProcessor

trklet::TrackletEventProcessor L1FPGATrackProducer::eventProcessor
private

Definition at line 171 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), and produce().

◆ extended_

bool L1FPGATrackProducer::extended_
private

Definition at line 174 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ fitPatternFile

edm::FileInPath L1FPGATrackProducer::fitPatternFile
private

File path for configuration files.

Definition at line 156 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ getTokenBS_

const edm::EDGetTokenT<reco::BeamSpot> L1FPGATrackProducer::getTokenBS_
private

Definition at line 186 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenDTC_

const edm::EDGetTokenT<TTDTC> L1FPGATrackProducer::getTokenDTC_
private

Definition at line 187 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenTrackingParticle_

edm::EDGetTokenT<std::vector<TrackingParticle> > L1FPGATrackProducer::getTokenTrackingParticle_
private

Definition at line 189 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ getTokenTTClusterMCTruth_

edm::EDGetTokenT<TTClusterAssociationMap<Ref_Phase2TrackerDigi_> > L1FPGATrackProducer::getTokenTTClusterMCTruth_
private

Definition at line 188 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ MCTruthClusterInputTag

edm::InputTag L1FPGATrackProducer::MCTruthClusterInputTag
private

Definition at line 182 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ MCTruthStubInputTag

edm::InputTag L1FPGATrackProducer::MCTruthStubInputTag
private

Definition at line 183 of file L1FPGATrackProducer.cc.

◆ memoryModulesFile

edm::FileInPath L1FPGATrackProducer::memoryModulesFile
private

Definition at line 157 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ nHelixPar_

unsigned int L1FPGATrackProducer::nHelixPar_
private

Definition at line 173 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ processingModulesFile

edm::FileInPath L1FPGATrackProducer::processingModulesFile
private

Definition at line 158 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ putTokenStubs_

const edm::EDPutTokenT<StreamsStub> L1FPGATrackProducer::putTokenStubs_
private

Definition at line 194 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ putTokenTracks_

const edm::EDPutTokenT<Streams> L1FPGATrackProducer::putTokenTracks_
private

Definition at line 192 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ readMoreMcTruth_

bool L1FPGATrackProducer::readMoreMcTruth_
private

Definition at line 153 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ reduced_

bool L1FPGATrackProducer::reduced_
private

Definition at line 175 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ settings_

trklet::Settings L1FPGATrackProducer::settings_
private

Definition at line 168 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), L1FPGATrackProducer(), and produce().

◆ setup_

const Setup* L1FPGATrackProducer::setup_
private

◆ setupHPH_

const hph::Setup* L1FPGATrackProducer::setupHPH_
private

Definition at line 203 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ tableTEDFile

edm::FileInPath L1FPGATrackProducer::tableTEDFile
private

Definition at line 161 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ tableTREFile

edm::FileInPath L1FPGATrackProducer::tableTREFile
private

Definition at line 162 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ TrackingParticleInputTag

edm::InputTag L1FPGATrackProducer::TrackingParticleInputTag
private

Definition at line 184 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ trackQuality_

bool L1FPGATrackProducer::trackQuality_
private

Definition at line 177 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), L1FPGATrackProducer(), and produce().

◆ trackQualityModel_

std::unique_ptr<L1TrackQuality> L1FPGATrackProducer::trackQualityModel_
private

Definition at line 178 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), L1FPGATrackProducer(), and produce().

◆ wiresFile

edm::FileInPath L1FPGATrackProducer::wiresFile
private

Definition at line 159 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().