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
 
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)
 

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 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:84
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::InputTag MCTruthStubInputTag
void setStoreTrackBuilderOutput(bool storeTrackBuilderOutput)
Definition: Settings.h:256
edm::FileInPath tableTREFile
trklet::Settings settings_
std::string fullPath() const
Definition: FileInPath.cc:161
void setFitPatternFile(std::string fitPatternFileName)
Definition: Settings.h:80
const edm::EDGetTokenT< reco::BeamSpot > getTokenBS_
edm::InputTag MCTruthClusterInputTag
void setReduced(bool reduced)
Definition: Settings.h:271
Definition: config.py:1
T getUntrackedParameter(std::string const &, T const &) const
edm::FileInPath tableTEDFile
void setRemovalType(std::string removalType)
Definition: Settings.h:259
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:249
const edm::ESGetToken< tt::Setup, tt::SetupRcd > esGetToken_
bool doMultipleMatches() const
Definition: Settings.h:252
const edm::EDPutTokenT< Streams > putTokenTracks_
void setFakefit(bool fakefit)
Definition: Settings.h:254
edm::InputTag TrackingParticleInputTag
bool debugTracklet() const
Definition: Settings.h:192
bool storeTrackBuilderOutput() const
Definition: Settings.h:255
void setProcessingModulesFile(std::string processingModulesFileName)
Definition: Settings.h:81
const edm::EDGetTokenT< TTDTC > getTokenDTC_
void setDoMultipleMatches(bool doMultipleMatches)
Definition: Settings.h:260
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:304
void setNHelixPar(unsigned int nHelixPar)
Definition: Settings.h:264
void setWiresFile(std::string wiresFileName)
Definition: Settings.h:85
void setTableTREFile(std::string tableTREFileName)
Definition: Settings.h:87
edm::ParameterSet config
Containers of parameters passed by python configuration file.
void setTableTEDFile(std::string tableTEDFileName)
Definition: Settings.h:86
void setExtended(bool extended)
Definition: Settings.h:267
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::passSetup(), trklet::Settings::setBfield(), settings_, setup_, setupHPH_, 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 
354 
355  setupHPH_ = &iSetup.getData(esGetTokenHPH_);
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_
void setBfield(double bfield)
Definition: Settings.h:276
void passSetup(const tt::Setup *setup)
Definition: Settings.h:69
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_, Matriplex::hypot(), 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(), 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_, nano_mu_digi_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(), trklet::L1TStub::uniqueIndex(), heppy_batch::val, trklet::StubStreamData::valid(), run3scouting_cff::vx, run3scouting_cff::vy, run3scouting_cff::vz, 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;
369  typedef std::map<unsigned int,
371  stubIndexMapType;
373  TTClusterRef;
374 
376  auto L1TkTracksForOutput = std::make_unique<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>();
377 
378  stubMapType stubMap;
379  stubIndexMapType stubIndexMap;
380 
382  // GET BS //
383  edm::Handle<reco::BeamSpot> beamSpotHandle;
384  iEvent.getByToken(getTokenBS_, beamSpotHandle);
385  math::XYZPoint bsPosition = beamSpotHandle->position();
386 
387  eventnum++;
389  ev.setEventNum(eventnum);
390  ev.setIP(bsPosition.x(), bsPosition.y());
391 
392  // tracking particles
393  edm::Handle<std::vector<TrackingParticle>> TrackingParticleHandle;
394  if (readMoreMcTruth_)
395  iEvent.getByToken(getTokenTrackingParticle_, TrackingParticleHandle);
396 
397  // tracker topology
398  const TrackerTopology* const tTopo = &iSetup.getData(esGetTokenTTopo_);
399  const TrackerGeometry* const theTrackerGeom = &iSetup.getData(esGetTokenTGeom_);
400 
402  // GET THE PRIMITIVES //
403  edm::Handle<TTDTC> handleDTC;
404  iEvent.getByToken<TTDTC>(getTokenDTC_, handleDTC);
405 
406  // must be defined for code to compile, even if it's not used unless readMoreMcTruth_ is true
407  map<edm::Ptr<TrackingParticle>, int> translateTP;
408 
409  // MC truth association maps
411  if (readMoreMcTruth_) {
412  iEvent.getByToken(getTokenTTClusterMCTruth_, MCTruthTTClusterHandle);
413 
416 
417  int ntps = 1; //count from 1 ; 0 will mean invalid
418 
419  int this_tp = 0;
420  if (readMoreMcTruth_) {
421  for (const auto& iterTP : *TrackingParticleHandle) {
422  edm::Ptr<TrackingParticle> tp_ptr(TrackingParticleHandle, this_tp);
423  this_tp++;
424 
425  // only keep TPs producing a cluster
426  if (MCTruthTTClusterHandle->findTTClusterRefs(tp_ptr).empty())
427  continue;
428 
429  if (iterTP.g4Tracks().empty()) {
430  continue;
431  }
432 
433  int sim_eventid = iterTP.g4Tracks().at(0).eventId().event();
434  int sim_type = iterTP.pdgId();
435  float sim_pt = iterTP.pt();
436  float sim_eta = iterTP.eta();
437  float sim_phi = iterTP.phi();
438 
439  float vx = iterTP.vertex().x();
440  float vy = iterTP.vertex().y();
441  float vz = iterTP.vertex().z();
442 
443  if (sim_pt < 1.0 || std::abs(vz) > 100.0 || hypot(vx, vy) > 50.0)
444  continue;
445 
446  ev.addL1SimTrack(sim_eventid, ntps, sim_type, sim_pt, sim_eta, sim_phi, vx, vy, vz);
447 
448  translateTP[tp_ptr] = ntps;
449  ntps++;
450 
451  } //end loop over TPs
452  }
453 
454  } // end if (readMoreMcTruth_)
455 
459 
460  // Process stubs in each region and channel within that tracking region
461  unsigned int theStubIndex = 0;
462  for (const int& region : handleDTC->tfpRegions()) {
463  for (const int& channel : handleDTC->tfpChannels()) {
464  // Get the DTC name & ID from the channel
465  unsigned int atcaSlot = channel % 12;
466  string dtcname = settings_.slotToDTCname(atcaSlot);
467  if (channel % 24 >= 12)
468  dtcname = "neg" + dtcname;
469  dtcname += (channel < 24) ? "_A" : "_B"; // which detector region
470  int dtcId = setup_->dtcId(region, channel);
471 
472  // Get the stubs from the DTC
473  const tt::StreamStub& streamFromDTC{handleDTC->stream(region, channel)};
474 
475  // Prepare the DTC stubs for the IR
476  for (size_t stubIndex = 0; stubIndex < streamFromDTC.size(); ++stubIndex) {
477  const tt::FrameStub& stub{streamFromDTC[stubIndex]};
478  const TTStubRef& stubRef = stub.first;
479 
480  if (stubRef.isNull())
481  continue;
482 
483  const GlobalPoint& ttPos = setup_->stubPos(stubRef);
484 
485  //Get the 2 bits for the layercode
486  string layerword = stub.second.to_string().substr(61, 2);
487  unsigned int layercode = 2 * (layerword[0] - '0') + layerword[1] - '0';
488  assert(layercode < 4);
489 
490  //translation from the two bit layercode to the layer/disk number of each of the
491  //12 channels (dtcs)
492  // FIX: take this from DTC cabling map.
493  static const int layerdisktab[12][4] = {{0, 6, 8, 10},
494  {0, 7, 9, -1},
495  {1, 7, -1, -1},
496  {6, 8, 10, -1},
497  {2, 7, -1, -1},
498  {2, 9, -1, -1},
499  {3, 4, -1, -1},
500  {4, -1, -1, -1},
501  {5, -1, -1, -1},
502  {5, 8, -1, -1},
503  {6, 9, -1, -1},
504  {7, 10, -1, -1}};
505 
506  int layerdisk = layerdisktab[channel % 12][layercode];
507  assert(layerdisk != -1);
508 
509  //Get the 36 bit word - skip the lowest 3 buts (status and layer code)
510  constexpr int DTCLinkWordSize = 64;
511  constexpr int StubWordSize = 36;
512  constexpr int LayerandStatusCodeSize = 3;
513  string stubword =
514  stub.second.to_string().substr(DTCLinkWordSize - StubWordSize - LayerandStatusCodeSize, StubWordSize);
515  string stubwordhex = "";
516 
517  //Loop over the 9 words in the 36 bit stub word
518  for (unsigned int i = 0; i < 9; i++) {
519  bitset<4> bits(stubword.substr(i * 4, 4));
520  ulong val = bits.to_ulong();
521  stubwordhex += ((val < 10) ? ('0' + val) : ('A' + val - 10));
522  }
523 
526  innerCluster = stub.first->clusterRef(0);
528  outerCluster = stub.first->clusterRef(1);
529 
530  // -----------------------------------------------------
531  // check module orientation, if flipped, need to store that information for track fit
532  // -----------------------------------------------------
533 
534  const DetId innerDetId = innerCluster->getDetId();
535  const GeomDetUnit* det_inner = theTrackerGeom->idToDetUnit(innerDetId);
536  const auto* theGeomDet_inner = dynamic_cast<const PixelGeomDetUnit*>(det_inner);
537  const PixelTopology* topol_inner = dynamic_cast<const PixelTopology*>(&(theGeomDet_inner->specificTopology()));
538 
539  MeasurementPoint coords_inner = innerCluster->findAverageLocalCoordinatesCentered();
540  LocalPoint clustlp_inner = topol_inner->localPosition(coords_inner);
541  GlobalPoint posStub_inner = theGeomDet_inner->surface().toGlobal(clustlp_inner);
542 
543  const DetId outerDetId = outerCluster->getDetId();
544  const GeomDetUnit* det_outer = theTrackerGeom->idToDetUnit(outerDetId);
545  const auto* theGeomDet_outer = dynamic_cast<const PixelGeomDetUnit*>(det_outer);
546  const PixelTopology* topol_outer = dynamic_cast<const PixelTopology*>(&(theGeomDet_outer->specificTopology()));
547 
548  MeasurementPoint coords_outer = outerCluster->findAverageLocalCoordinatesCentered();
549  LocalPoint clustlp_outer = topol_outer->localPosition(coords_outer);
550  GlobalPoint posStub_outer = theGeomDet_outer->surface().toGlobal(clustlp_outer);
551 
552  bool isFlipped = (posStub_outer.mag() < posStub_inner.mag());
553 
554  vector<int> assocTPs;
555 
556  for (unsigned int iClus = 0; iClus <= 1; iClus++) { // Loop over both clusters that make up stub.
557 
558  const TTClusterRef& ttClusterRef = stubRef->clusterRef(iClus);
559 
560  // Now identify all TP's contributing to either cluster in stub.
561  if (readMoreMcTruth_) {
562  vector<edm::Ptr<TrackingParticle>> vecTpPtr =
563  MCTruthTTClusterHandle->findTrackingParticlePtrs(ttClusterRef);
564 
565  for (const edm::Ptr<TrackingParticle>& tpPtr : vecTpPtr) {
566  if (translateTP.find(tpPtr) != translateTP.end()) {
567  if (iClus == 0) {
568  assocTPs.push_back(translateTP.at(tpPtr));
569  } else {
570  assocTPs.push_back(-translateTP.at(tpPtr));
571  }
572  // N.B. Since not all tracking particles are stored in InputData::vTPs_, sometimes no match will be found.
573  } else {
574  assocTPs.push_back(0);
575  }
576  }
577  }
578  }
579 
580  double stubbend = stubRef->bendFE(); //stubRef->rawBend()
581  if (ttPos.z() < -120) {
582  stubbend = -stubbend;
583  }
584 
585  bool barrel = (layerdisk < N_LAYER);
586  // See https://github.com/cms-sw/cmssw/tree/master/Geometry/TrackerNumberingBuilder
587  enum TypeBarrel { nonBarrel = 0, tiltedMinus = 1, tiltedPlus = 2, flat = 3 };
588  const TypeBarrel type = static_cast<TypeBarrel>(tTopo->tobSide(innerDetId));
589  bool tiltedBarrel = barrel && (type == tiltedMinus || type == tiltedPlus);
590  unsigned int tiltedRingId = 0;
591  // Tilted module ring no. (Increasing 1 to 12 as |z| increases).
592  if (tiltedBarrel) {
593  tiltedRingId = tTopo->tobRod(innerDetId);
594  if (type == tiltedMinus) {
595  unsigned int layp1 = 1 + layerdisk; // Setup counts from 1
596  unsigned int nTilted = setup_->numTiltedLayerRing(layp1);
597  tiltedRingId = 1 + nTilted - tiltedRingId;
598  }
599  }
600  // Endcap module ring number (1-15) in endcap disks.
601  unsigned int endcapRingId = barrel ? 0 : tTopo->tidRing(innerDetId);
602 
603  const unsigned int intDetId = innerDetId.rawId();
604 
605  ev.addStub(dtcname,
606  region,
607  layerdisk,
608  stubwordhex,
609  setup_->psModule(dtcId),
610  isFlipped,
611  tiltedBarrel,
612  tiltedRingId,
613  endcapRingId,
614  intDetId,
615  ttPos.x(),
616  ttPos.y(),
617  ttPos.z(),
618  stubbend,
619  stubRef->innerClusterPosition(),
620  assocTPs,
621  theStubIndex);
622 
623  const trklet::L1TStub& lastStub = ev.lastStub();
624  stubMap[lastStub] = stubRef;
625  stubIndexMap[lastStub.uniqueIndex()] = stub.first;
626  theStubIndex++;
627  }
628  }
629  }
630 
632  // NOW RUN THE L1 tracking
633 
634  if (!asciiEventOutName_.empty()) {
635  ev.write(asciiEventOut_);
636  }
637 
638  const std::vector<trklet::Track>& tracks = eventProcessor.tracks();
639 
640  const unsigned int maxNumProjectionLayers = channelAssignment_->maxNumProjectionLayers();
641  // number of track channels
642  const unsigned int numStreamsTrack = N_SECTOR * channelAssignment_->numChannelsTrack();
643  // number of stub channels
644  const unsigned int numStreamsStub = N_SECTOR * channelAssignment_->numChannelsStub();
645  // number of stub channels if all seed types streams padded to have same number of stub channels (for coding simplicity)
646  const unsigned int numStreamsStubRaw = numStreamsTrack * maxNumProjectionLayers;
647 
648  // Streams formatted to allow this code to run outside CMSSW.
649  vector<vector<string>> streamsTrackRaw(numStreamsTrack);
650  vector<vector<StubStreamData>> streamsStubRaw(numStreamsStubRaw);
651 
652  // this performs the actual tracklet event processing
653  eventProcessor.event(ev, streamsTrackRaw, streamsStubRaw);
654 
655  for (const auto& track : tracks) {
656  if (track.duplicate())
657  continue;
658 
659  // this is where we create the TTTrack object
660  double tmp_rinv = track.rinv(settings_);
661  double tmp_phi = track.phi0(settings_);
662  double tmp_tanL = track.tanL(settings_);
663  double tmp_z0 = track.z0(settings_);
664  double tmp_d0 = track.d0(settings_);
665  double tmp_chi2rphi = track.chisqrphi();
666  double tmp_chi2rz = track.chisqrz();
667  unsigned int tmp_hit = track.hitpattern();
668 
669  TTTrack<Ref_Phase2TrackerDigi_> aTrack(tmp_rinv,
670  tmp_phi,
671  tmp_tanL,
672  tmp_z0,
673  tmp_d0,
674  tmp_chi2rphi,
675  tmp_chi2rz,
676  0,
677  0,
678  0,
679  tmp_hit,
681  settings_.bfield());
682 
683  unsigned int trksector = track.sector();
684  unsigned int trkseed = (unsigned int)abs(track.seed());
685 
686  aTrack.setPhiSector(trksector);
687  aTrack.setTrackSeedType(trkseed);
688 
689  const vector<trklet::L1TStub>& stubptrs = track.stubs();
690  vector<trklet::L1TStub> stubs;
691 
692  stubs.reserve(stubptrs.size());
693  for (const auto& stubptr : stubptrs) {
694  stubs.push_back(stubptr);
695  }
696 
697  int countStubs = 0;
698  stubMapType::const_iterator it;
699  stubIndexMapType::const_iterator itIndex;
700  for (const auto& itstubs : stubs) {
701  itIndex = stubIndexMap.find(itstubs.uniqueIndex());
702  if (itIndex != stubIndexMap.end()) {
703  aTrack.addStubRef(itIndex->second);
704  countStubs = countStubs + 1;
705  } else {
706  // could not find stub in stub map
707  }
708  }
709 
710  // pt consistency
711  aTrack.setStubPtConsistency(
712  StubPtConsistency::getConsistency(aTrack, theTrackerGeom, tTopo, settings_.bfield(), settings_.nHelixPar()));
713 
714  // set TTTrack word
715  aTrack.setTrackWordBits();
716 
717  if (trackQuality_) {
718  trackQualityModel_->setL1TrackQuality(aTrack);
719  }
720 
721  // hph::HitPatternHelper hph(setupHPH_, tmp_hit, tmp_tanL, tmp_z0);
722  // if (trackQuality_) {
723  // trackQualityModel_->setBonusFeatures(hph.bonusFeatures());
724  // }
725 
726  // test track word
727  //aTrack.testTrackWordBits();
728 
729  L1TkTracksForOutput->push_back(aTrack);
730  }
731 
732  iEvent.put(std::move(L1TkTracksForOutput), "Level1TTTracks");
733 
734  // produce clock and bit accurate stream output tracks and stubs.
735  // from end of tracklet pattern recognition.
736  // Convertion here is from stream format that allows this code to run
737  // outside CMSSW to the EDProduct one.
738  Streams streamsTrack(numStreamsTrack);
739  StreamsStub streamsStub(numStreamsStub);
740 
741  for (unsigned int chanTrk = 0; chanTrk < numStreamsTrack; chanTrk++) {
742  for (unsigned int itk = 0; itk < streamsTrackRaw[chanTrk].size(); itk++) {
743  std::string bitsTrk = streamsTrackRaw[chanTrk][itk];
744  int iSeed = chanTrk % channelAssignment_->numChannelsTrack(); // seed type
745  streamsTrack[chanTrk].emplace_back(bitsTrk);
746 
747  const unsigned int chanStubOffsetIn = chanTrk * maxNumProjectionLayers;
748  const unsigned int chanStubOffsetOut = channelAssignment_->offsetStub(chanTrk);
749  const unsigned int numProjLayers = channelAssignment_->numProjectionLayers(iSeed);
750  TTBV hitMap(0, numProjLayers);
751  // remove padding from stub stream
752  for (unsigned int iproj = 0; iproj < maxNumProjectionLayers; iproj++) {
753  // FW current has one (perhaps invalid) stub per layer per track.
754  const StubStreamData& stubdata = streamsStubRaw[chanStubOffsetIn + iproj][itk];
755  const L1TStub& stub = stubdata.stub();
756  if (stubdata.valid()) {
757  const TTStubRef ttStubRef = stubMap[stub];
758  int layerId(-1);
759  if (!channelAssignment_->layerId(stubdata.iSeed(), ttStubRef, layerId))
760  continue;
761  hitMap.set(layerId);
762  streamsStub[chanStubOffsetOut + layerId].emplace_back(ttStubRef, stubdata.dataBits());
763  }
764  }
765  for (int layerId : hitMap.ids(false)) { // invalid stubs
766  streamsStub[chanStubOffsetOut + layerId].emplace_back(tt::FrameStub());
767  }
768  }
769  }
770 
771  iEvent.emplace(putTokenTracks_, std::move(streamsTrack));
772  iEvent.emplace(putTokenStubs_, std::move(streamsStub));
773 
774 }
MPlex< T, D1, D2, N > hypot(const MPlex< T, D1, D2, N > &a, const MPlex< T, D1, D2, N > &b)
Definition: Matriplex.h:417
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:456
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:275
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:23
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:263
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
unsigned int uniqueIndex() const
Definition: L1TStub.h:92
float getConsistency(TTTrack< Ref_Phase2TrackerDigi_ > aTrack, const TrackerGeometry *theTrackerGeom, const TrackerTopology *tTopo, double mMagneticFieldStrength, int nPar)
constexpr int N_LAYER
Definition: Settings.h:25

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 L1FPGATrackProducer(), and produce().

◆ trackQualityModel_

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

Definition at line 178 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ wiresFile

edm::FileInPath L1FPGATrackProducer::wiresFile
private

Definition at line 159 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().