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 noexcept final
 
bool wantsGlobalRuns () const noexcept final
 
bool wantsInputProcessBlocks () const noexcept final
 
bool wantsProcessBlocks () const noexcept final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const noexcept
 
bool wantsStreamRuns () const noexcept
 
 ~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_
 
int failScenario_
 
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_
 
StubKillerstubKiller_
 
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 225 of file L1FPGATrackProducer.cc.

References asciiEventOut_, asciiEventOutName_, channelAssignment_, trklet::Settings::debugTracklet(), trklet::Settings::doMultipleMatches(), eventnum, cppFunctionSkipper::exception, extended_, failScenario_, 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.

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

◆ ~L1FPGATrackProducer()

L1FPGATrackProducer::~L1FPGATrackProducer ( )
override

Definition at line 338 of file L1FPGATrackProducer.cc.

References asciiEventOut_.

338  {
339  if (asciiEventOut_.is_open()) {
340  asciiEventOut_.close();
341  }
342 }

Member Function Documentation

◆ beginRun()

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

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

Definition at line 350 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().

350  {
352  // GET MAGNETIC FIELD //
353  const MagneticField* theMagneticField = &iSetup.getData(esGetTokenBfield_);
354  double mMagneticFieldStrength = theMagneticField->inTesla(GlobalPoint(0, 0, 0)).z();
355  settings_.setBfield(mMagneticFieldStrength);
356 
357  setup_ = &iSetup.getData(esGetToken_);
358 
360 
361  setupHPH_ = &iSetup.getData(esGetTokenHPH_);
362  // Tracklet pattern reco output channel info.
364  // initialize the tracklet event processing (this sets all the processing & memory modules, wiring, etc)
366 }
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:278
void passSetup(const tt::Setup *setup)
Definition: Settings.h:71
const ESGetToken< ChannelAssignment, ChannelAssignmentRcd > esGetTokenChannelAssignment_

◆ endRun()

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

Definition at line 346 of file L1FPGATrackProducer.cc.

346 {}

◆ 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 370 of file L1FPGATrackProducer.cc.

References funct::abs(), asciiEventOut_, asciiEventOutName_, cms::cuda::assert(), Reference_intrackfit_cff::barrel, trklet::Settings::bfield(), ALPAKA_ACCELERATOR_NAMESPACE::pixelClustering::pixelStatus::bits, channelAssignment_, trklet::ChannelAssignment::channelId(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), trklet::StubStreamData::dataBits(), tt::Setup::dtcId(), esGetTokenTGeom_, esGetTokenTTopo_, makeMEIFBenchmarkPlots::ev, trklet::TrackletEventProcessor::event(), eventnum, eventProcessor, failScenario_, StubPtConsistency::getConsistency(), edm::EventSetup::getData(), getTokenBS_, getTokenDTC_, getTokenTrackingParticle_, getTokenTTClusterMCTruth_, Matriplex::hypot(), mps_fire::i, TTBV::ids(), TrackerGeometry::idToDetUnit(), iEvent, StubKiller::initialise(), createfilelist::int, trklet::StubStreamData::iSeed(), edm::Ref< C, T, F >::isNull(), ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, StubKiller::killStub(), tt::Setup::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(), trklet::ChannelAssignment::numSeedingLayers(), 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(), stubKiller_, tt::Setup::stubPos(), SimL1Emulator_cff::stubs, TTDTC::tfpChannels(), TTDTC::tfpRegions(), TrackerTopology::tidRing(), TrackerTopology::tobRod(), TrackerTopology::tobSide(), HLT_2024v14_cff::track, trackQuality_, trackQualityModel_, trklet::TrackletEventProcessor::tracks(), DiMuonV_cfg::tracks, trklet::L1TStub::uniqueIndex(), heppy_batch::val, trklet::StubStreamData::valid(), btvMC_cff::vx, btvMC_cff::vy, btvMC_cff::vz, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

370  {
371  typedef std::map<trklet::L1TStub,
374  stubMapType;
375  typedef std::map<unsigned int,
377  stubIndexMapType;
379  TTClusterRef;
380 
382  auto L1TkTracksForOutput = std::make_unique<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>();
383 
384  stubMapType stubMap;
385  stubIndexMapType stubIndexMap;
386 
388  // GET BS //
389  edm::Handle<reco::BeamSpot> beamSpotHandle;
390  iEvent.getByToken(getTokenBS_, beamSpotHandle);
391  math::XYZPoint bsPosition = beamSpotHandle->position();
392 
393  eventnum++;
395  ev.setEventNum(eventnum);
396  ev.setIP(bsPosition.x(), bsPosition.y());
397 
398  // tracking particles
399  edm::Handle<std::vector<TrackingParticle>> TrackingParticleHandle;
400  if (readMoreMcTruth_)
401  iEvent.getByToken(getTokenTrackingParticle_, TrackingParticleHandle);
402 
403  // tracker topology
404  const TrackerTopology* const tTopo = &iSetup.getData(esGetTokenTTopo_);
405  const TrackerGeometry* const theTrackerGeom = &iSetup.getData(esGetTokenTGeom_);
406 
407  // check killing stubs for detector degradation studies
408  // if failType = 0, StubKiller does not kill any modules
409  int failType = 0;
410  if (failScenario_ < 0 || failScenario_ > 9) {
411  edm::LogVerbatim("Tracklet") << "Invalid fail scenario! Ignoring input";
412  } else
413  failType = failScenario_;
414 
415  stubKiller_ = new StubKiller();
416  stubKiller_->initialise(failType, tTopo, theTrackerGeom);
417 
419  // GET THE PRIMITIVES //
420  edm::Handle<TTDTC> handleDTC;
421  iEvent.getByToken<TTDTC>(getTokenDTC_, handleDTC);
422 
423  // must be defined for code to compile, even if it's not used unless readMoreMcTruth_ is true
424  map<edm::Ptr<TrackingParticle>, int> translateTP;
425 
426  // MC truth association maps
428  if (readMoreMcTruth_) {
429  iEvent.getByToken(getTokenTTClusterMCTruth_, MCTruthTTClusterHandle);
430 
433 
434  int ntps = 1; //count from 1 ; 0 will mean invalid
435 
436  int this_tp = 0;
437  if (readMoreMcTruth_) {
438  for (const auto& iterTP : *TrackingParticleHandle) {
439  edm::Ptr<TrackingParticle> tp_ptr(TrackingParticleHandle, this_tp);
440  this_tp++;
441 
442  // only keep TPs producing a cluster
443  if (MCTruthTTClusterHandle->findTTClusterRefs(tp_ptr).empty())
444  continue;
445 
446  if (iterTP.g4Tracks().empty()) {
447  continue;
448  }
449 
450  int sim_eventid = iterTP.g4Tracks().at(0).eventId().event();
451  int sim_type = iterTP.pdgId();
452  float sim_pt = iterTP.pt();
453  float sim_eta = iterTP.eta();
454  float sim_phi = iterTP.phi();
455 
456  float vx = iterTP.vertex().x();
457  float vy = iterTP.vertex().y();
458  float vz = iterTP.vertex().z();
459 
460  if (sim_pt < 1.0 || std::abs(vz) > 100.0 || hypot(vx, vy) > 50.0)
461  continue;
462 
463  ev.addL1SimTrack(sim_eventid, ntps, sim_type, sim_pt, sim_eta, sim_phi, vx, vy, vz);
464 
465  translateTP[tp_ptr] = ntps;
466  ntps++;
467 
468  } //end loop over TPs
469  }
470 
471  } // end if (readMoreMcTruth_)
472 
476 
477  // Process stubs in each region and channel within that tracking region
478  unsigned int theStubIndex = 0;
479  for (const int& region : handleDTC->tfpRegions()) {
480  for (const int& channel : handleDTC->tfpChannels()) {
481  // Get the DTC name & ID from the channel
482  unsigned int atcaSlot = channel % 12;
483  string dtcname = settings_.slotToDTCname(atcaSlot);
484  if (channel % 24 >= 12)
485  dtcname = "neg" + dtcname;
486  dtcname += (channel < 24) ? "_A" : "_B"; // which detector region
487  int dtcId = setup_->dtcId(region, channel);
488 
489  // Get the stubs from the DTC
490  const tt::StreamStub& streamFromDTC{handleDTC->stream(region, channel)};
491 
492  // Prepare the DTC stubs for the IR
493  for (size_t stubIndex = 0; stubIndex < streamFromDTC.size(); ++stubIndex) {
494  const tt::FrameStub& stub{streamFromDTC[stubIndex]};
495  const TTStubRef& stubRef = stub.first;
496 
497  if (stubRef.isNull())
498  continue;
499 
500  const GlobalPoint& ttPos = setup_->stubPos(stubRef);
501 
502  //Get the 2 bits for the layercode
503  string layerword = stub.second.to_string().substr(61, 2);
504  unsigned int layercode = 2 * (layerword[0] - '0') + layerword[1] - '0';
505  assert(layercode < 4);
506 
507  //translation from the two bit layercode to the layer/disk number of each of the
508  //12 channels (dtcs)
509  // FIX: take this from DTC cabling map.
510  static const int layerdisktab[12][4] = {{0, 6, 8, 10},
511  {0, 7, 9, -1},
512  {1, 7, -1, -1},
513  {6, 8, 10, -1},
514  {2, 7, -1, -1},
515  {2, 9, -1, -1},
516  {3, 4, -1, -1},
517  {4, -1, -1, -1},
518  {5, -1, -1, -1},
519  {5, 8, -1, -1},
520  {6, 9, -1, -1},
521  {7, 10, -1, -1}};
522 
523  int layerdisk = layerdisktab[channel % 12][layercode];
524  assert(layerdisk != -1);
525 
526  //Get the 36 bit word - skip the lowest 3 buts (status and layer code)
527  constexpr int DTCLinkWordSize = 64;
528  constexpr int StubWordSize = 36;
529  constexpr int LayerandStatusCodeSize = 3;
530  string stubword =
531  stub.second.to_string().substr(DTCLinkWordSize - StubWordSize - LayerandStatusCodeSize, StubWordSize);
532  string stubwordhex = "";
533 
534  //Loop over the 9 words in the 36 bit stub word
535  for (unsigned int i = 0; i < 9; i++) {
536  bitset<4> bits(stubword.substr(i * 4, 4));
537  ulong val = bits.to_ulong();
538  stubwordhex += ((val < 10) ? ('0' + val) : ('A' + val - 10));
539  }
540 
543  innerCluster = stub.first->clusterRef(0);
545  outerCluster = stub.first->clusterRef(1);
546 
547  // -----------------------------------------------------
548  // check module orientation, if flipped, need to store that information for track fit
549  // -----------------------------------------------------
550 
551  const DetId innerDetId = innerCluster->getDetId();
552  const GeomDetUnit* det_inner = theTrackerGeom->idToDetUnit(innerDetId);
553  const auto* theGeomDet_inner = dynamic_cast<const PixelGeomDetUnit*>(det_inner);
554  const PixelTopology* topol_inner = dynamic_cast<const PixelTopology*>(&(theGeomDet_inner->specificTopology()));
555 
556  MeasurementPoint coords_inner = innerCluster->findAverageLocalCoordinatesCentered();
557  LocalPoint clustlp_inner = topol_inner->localPosition(coords_inner);
558  GlobalPoint posStub_inner = theGeomDet_inner->surface().toGlobal(clustlp_inner);
559 
560  const DetId outerDetId = outerCluster->getDetId();
561  const GeomDetUnit* det_outer = theTrackerGeom->idToDetUnit(outerDetId);
562  const auto* theGeomDet_outer = dynamic_cast<const PixelGeomDetUnit*>(det_outer);
563  const PixelTopology* topol_outer = dynamic_cast<const PixelTopology*>(&(theGeomDet_outer->specificTopology()));
564 
565  MeasurementPoint coords_outer = outerCluster->findAverageLocalCoordinatesCentered();
566  LocalPoint clustlp_outer = topol_outer->localPosition(coords_outer);
567  GlobalPoint posStub_outer = theGeomDet_outer->surface().toGlobal(clustlp_outer);
568 
569  bool isFlipped = (posStub_outer.mag() < posStub_inner.mag());
570 
571  vector<int> assocTPs;
572 
573  for (unsigned int iClus = 0; iClus <= 1; iClus++) { // Loop over both clusters that make up stub.
574 
575  const TTClusterRef& ttClusterRef = stubRef->clusterRef(iClus);
576 
577  // Now identify all TP's contributing to either cluster in stub.
578  if (readMoreMcTruth_) {
579  vector<edm::Ptr<TrackingParticle>> vecTpPtr =
580  MCTruthTTClusterHandle->findTrackingParticlePtrs(ttClusterRef);
581 
582  for (const edm::Ptr<TrackingParticle>& tpPtr : vecTpPtr) {
583  if (translateTP.find(tpPtr) != translateTP.end()) {
584  if (iClus == 0) {
585  assocTPs.push_back(translateTP.at(tpPtr));
586  } else {
587  assocTPs.push_back(-translateTP.at(tpPtr));
588  }
589  // N.B. Since not all tracking particles are stored in InputData::vTPs_, sometimes no match will be found.
590  } else {
591  assocTPs.push_back(0);
592  }
593  }
594  }
595  }
596 
597  double stubbend = stubRef->bendFE(); //stubRef->rawBend()
598  if (ttPos.z() < -120) {
599  stubbend = -stubbend;
600  }
601 
602  bool barrel = (layerdisk < N_LAYER);
603  // See https://github.com/cms-sw/cmssw/tree/master/Geometry/TrackerNumberingBuilder
604  enum TypeBarrel { nonBarrel = 0, tiltedMinus = 1, tiltedPlus = 2, flat = 3 };
605  const TypeBarrel type = static_cast<TypeBarrel>(tTopo->tobSide(innerDetId));
606  bool tiltedBarrel = barrel && (type == tiltedMinus || type == tiltedPlus);
607  unsigned int tiltedRingId = 0;
608  // Tilted module ring no. (Increasing 1 to 12 as |z| increases).
609  if (tiltedBarrel) {
610  tiltedRingId = tTopo->tobRod(innerDetId);
611  if (type == tiltedMinus) {
612  unsigned int layp1 = 1 + layerdisk; // Setup counts from 1
613  unsigned int nTilted = setup_->numTiltedLayerRing(layp1);
614  tiltedRingId = 1 + nTilted - tiltedRingId;
615  }
616  }
617  // Endcap module ring number (1-15) in endcap disks.
618  unsigned int endcapRingId = barrel ? 0 : tTopo->tidRing(innerDetId);
619 
620  const unsigned int intDetId = innerDetId.rawId();
621 
622  // check killing stubs for detector degredation studies
623  const TTStub<Ref_Phase2TrackerDigi_>* theStub = &(*stubRef);
624  bool killThisStub = stubKiller_->killStub(theStub);
625  if (!killThisStub) {
626  ev.addStub(dtcname,
627  region,
628  layerdisk,
629  stubwordhex,
630  setup_->psModule(dtcId),
631  isFlipped,
632  tiltedBarrel,
633  tiltedRingId,
634  endcapRingId,
635  intDetId,
636  ttPos.x(),
637  ttPos.y(),
638  ttPos.z(),
639  stubbend,
640  stubRef->innerClusterPosition(),
641  assocTPs,
642  theStubIndex);
643 
644  const trklet::L1TStub& lastStub = ev.lastStub();
645  stubMap[lastStub] = stubRef;
646  stubIndexMap[lastStub.uniqueIndex()] = stub.first;
647  theStubIndex++;
648  }
649  }
650  }
651  }
652 
654  // NOW RUN THE L1 tracking
655 
656  if (!asciiEventOutName_.empty()) {
657  ev.write(asciiEventOut_);
658  }
659 
660  const std::vector<trklet::Track>& tracks = eventProcessor.tracks();
661 
662  // max number of projection layers
663  const unsigned int maxNumProjectionLayers = channelAssignment_->maxNumProjectionLayers();
664  // number of track channels
665  const unsigned int numStreamsTrack = N_SECTOR * channelAssignment_->numChannelsTrack();
666  // number of stub channels
667  const unsigned int numStreamsStub = N_SECTOR * channelAssignment_->numChannelsStub();
668  // number of seeding layers
669  const unsigned int numSeedingLayers = channelAssignment_->numSeedingLayers();
670  // max number of stub channel per track
671  const unsigned int numStubChannel = maxNumProjectionLayers + numSeedingLayers;
672  // number of stub channels if all seed types streams padded to have same number of stub channels (for coding simplicity)
673  const unsigned int numStreamsStubRaw = numStreamsTrack * numStubChannel;
674 
675  // Streams formatted to allow this code to run outside CMSSW.
676  vector<vector<string>> streamsTrackRaw(numStreamsTrack);
677  vector<vector<StubStreamData>> streamsStubRaw(numStreamsStubRaw);
678 
679  // this performs the actual tracklet event processing
680  eventProcessor.event(ev, streamsTrackRaw, streamsStubRaw);
681 
682  for (const auto& track : tracks) {
683  if (track.duplicate())
684  continue;
685 
686  // this is where we create the TTTrack object
687  double tmp_rinv = track.rinv(settings_);
688  double tmp_phi = track.phi0(settings_);
689  double tmp_tanL = track.tanL(settings_);
690  double tmp_z0 = track.z0(settings_);
691  double tmp_d0 = track.d0(settings_);
692  double tmp_chi2rphi = track.chisqrphi();
693  double tmp_chi2rz = track.chisqrz();
694  unsigned int tmp_hit = track.hitpattern();
695 
696  TTTrack<Ref_Phase2TrackerDigi_> aTrack(tmp_rinv,
697  tmp_phi,
698  tmp_tanL,
699  tmp_z0,
700  tmp_d0,
701  tmp_chi2rphi,
702  tmp_chi2rz,
703  0,
704  0,
705  0,
706  tmp_hit,
708  settings_.bfield());
709 
710  unsigned int trksector = track.sector();
711  unsigned int trkseed = (unsigned int)abs(track.seed());
712 
713  aTrack.setPhiSector(trksector);
714  aTrack.setTrackSeedType(trkseed);
715 
716  const vector<trklet::L1TStub>& stubptrs = track.stubs();
717  vector<trklet::L1TStub> stubs;
718 
719  stubs.reserve(stubptrs.size());
720  for (const auto& stubptr : stubptrs) {
721  stubs.push_back(stubptr);
722  }
723 
724  int countStubs = 0;
725  stubMapType::const_iterator it;
726  stubIndexMapType::const_iterator itIndex;
727  for (const auto& itstubs : stubs) {
728  itIndex = stubIndexMap.find(itstubs.uniqueIndex());
729  if (itIndex != stubIndexMap.end()) {
730  aTrack.addStubRef(itIndex->second);
731  countStubs = countStubs + 1;
732  } else {
733  // could not find stub in stub map
734  }
735  }
736 
737  // pt consistency
738  aTrack.setStubPtConsistency(
739  StubPtConsistency::getConsistency(aTrack, theTrackerGeom, tTopo, settings_.bfield(), settings_.nHelixPar()));
740 
741  // set track word before TQ MVA calculated which uses track word variables
742  aTrack.setTrackWordBits();
743 
744  if (trackQuality_) {
745  trackQualityModel_->setL1TrackQuality(aTrack);
746  }
747 
748  // hph::HitPatternHelper hph(setupHPH_, tmp_hit, tmp_tanL, tmp_z0);
749  // if (trackQuality_) {
750  // trackQualityModel_->setBonusFeatures(hph.bonusFeatures());
751  // }
752 
753  // test track word
754  //aTrack.testTrackWordBits();
755 
756  // set track word again to set MVA variable from TTTrack into track word
757  aTrack.setTrackWordBits();
758  // test track word
759  //aTrack.testTrackWordBits();
760 
761  L1TkTracksForOutput->push_back(aTrack);
762  }
763 
764  iEvent.put(std::move(L1TkTracksForOutput), "Level1TTTracks");
765 
766  // produce clock and bit accurate stream output tracks and stubs.
767  // from end of tracklet pattern recognition.
768  // Convertion here is from stream format that allows this code to run
769  // outside CMSSW to the EDProduct one.
770  Streams streamsTrack(numStreamsTrack);
771  StreamsStub streamsStub(numStreamsStub);
772 
773  for (unsigned int chanTrk = 0; chanTrk < numStreamsTrack; chanTrk++) {
774  for (unsigned int itk = 0; itk < streamsTrackRaw[chanTrk].size(); itk++) {
775  std::string bitsTrk = streamsTrackRaw[chanTrk][itk];
776  int iSeed = chanTrk % channelAssignment_->numChannelsTrack(); // seed type
777  streamsTrack[chanTrk].emplace_back(bitsTrk);
778 
779  const unsigned int chanStubOffsetIn = chanTrk * numStubChannel;
780  const unsigned int chanStubOffsetOut = channelAssignment_->offsetStub(chanTrk);
781  const unsigned int numProjLayers = channelAssignment_->numProjectionLayers(iSeed);
782  TTBV hitMap(0, numProjLayers + numSeedingLayers);
783  // remove padding from stub stream
784  for (unsigned int iproj = 0; iproj < numStubChannel; iproj++) {
785  // FW current has one (perhaps invalid) stub per layer per track.
786  const StubStreamData& stubdata = streamsStubRaw[chanStubOffsetIn + iproj][itk];
787  const L1TStub& stub = stubdata.stub();
788  if (!stubdata.valid())
789  continue;
790  const TTStubRef& ttStubRef = stubMap[stub];
791  const int seedType = stubdata.iSeed();
792  const int layerId = setup_->layerId(ttStubRef);
793  const int channelId = channelAssignment_->channelId(seedType, layerId);
794  hitMap.set(channelId);
795  streamsStub[chanStubOffsetOut + channelId].emplace_back(ttStubRef, stubdata.dataBits());
796  }
797  for (int layerId : hitMap.ids(false)) { // invalid stubs
798  streamsStub[chanStubOffsetOut + layerId].emplace_back(tt::FrameStub());
799  }
800  }
801  }
802 
803  iEvent.emplace(putTokenTracks_, std::move(streamsTrack));
804  iEvent.emplace(putTokenStubs_, std::move(streamsStub));
805 
806 }
Log< level::Info, true > LogVerbatim
MPlex< T, D1, D2, N > hypot(const MPlex< T, D1, D2, N > &a, const MPlex< T, D1, D2, N > &b)
Definition: Matriplex.h:436
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
std::string slotToDTCname(unsigned int slot) const
Definition: Settings.h:462
const edm::EDGetTokenT< reco::BeamSpot > getTokenBS_
trklet::TrackletEventProcessor eventProcessor
int channelId(const TTTrackRef &ttTrackRef) const
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:824
TTClusterRefT< Ref_Phase2TrackerDigi_ > TTClusterRef
Definition: TTTypes.h:45
double bfield() const
Definition: Settings.h:277
int layerId(const TTStubRef &ttStubRef) const
Definition: Setup.cc:511
const std::string & dataBits() const
void initialise(unsigned int killScenario, const TrackerTopology *trackerTopology, const TrackerGeometry *trackerGeometry)
Definition: StubKiller.cc:20
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_
bool killStub(const TTStub< Ref_Phase2TrackerDigi_ > *stub, const std::vector< int > layersToKill, const double minPhiToKill, const double maxPhiToKill, const double minZToKill, const double maxZToKill, const double minRToKill, const double maxRToKill, const double fractionOfStubsToKillInLayers, const double fractionOfStubsToKillEverywhere)
Definition: StubKiller.cc:212
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:322
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:265
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:313
std::unique_ptr< L1TrackQuality > trackQualityModel_
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > getTokenTTClusterMCTruth_
unsigned int tidRing(const DetId &id) const
int dtcId(int tklId) const
Definition: Setup.cc:294
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 202 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 184 of file L1FPGATrackProducer.cc.

◆ esGetToken_

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

Definition at line 213 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenBfield_

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

Definition at line 210 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenChannelAssignment_

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

Definition at line 200 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenHPH_

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

Definition at line 214 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenTGeom_

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

Definition at line 211 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ esGetTokenTTopo_

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

Definition at line 212 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 178 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ failScenario_

int L1FPGATrackProducer::failScenario_
private

Definition at line 175 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ 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 190 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenDTC_

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

Definition at line 191 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenTrackingParticle_

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

Definition at line 193 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ getTokenTTClusterMCTruth_

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

Definition at line 192 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ MCTruthClusterInputTag

edm::InputTag L1FPGATrackProducer::MCTruthClusterInputTag
private

Definition at line 186 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ MCTruthStubInputTag

edm::InputTag L1FPGATrackProducer::MCTruthStubInputTag
private

Definition at line 187 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 177 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 198 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ putTokenTracks_

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

Definition at line 196 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 179 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 207 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ stubKiller_

StubKiller* L1FPGATrackProducer::stubKiller_
private

Definition at line 174 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ 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 188 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ trackQuality_

bool L1FPGATrackProducer::trackQuality_
private

Definition at line 181 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ trackQualityModel_

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

Definition at line 182 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().