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_
 
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 142 of file L1FPGATrackProducer.cc.

Constructor & Destructor Documentation

◆ L1FPGATrackProducer()

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

Constructor/destructor.

Definition at line 226 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.

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

References asciiEventOut_.

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

Member Function Documentation

◆ beginRun()

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

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

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

351  {
353  // GET MAGNETIC FIELD //
354  const MagneticField* theMagneticField = &iSetup.getData(esGetTokenBfield_);
355  double mMagneticFieldStrength = theMagneticField->inTesla(GlobalPoint(0, 0, 0)).z();
356  settings_.setBfield(mMagneticFieldStrength);
357 
358  setup_ = &iSetup.getData(esGetToken_);
359 
361 
362  setupHPH_ = &iSetup.getData(esGetTokenHPH_);
363  // Tracklet pattern reco output channel info.
365  // initialize the tracklet event processing (this sets all the processing & memory modules, wiring, etc)
367 }
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 347 of file L1FPGATrackProducer.cc.

347 {}

◆ 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 371 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(), TTDTC::tfpChannels(), TTDTC::tfpRegions(), TrackerTopology::tidRing(), TrackerTopology::tobRod(), TrackerTopology::tobSide(), HLT_2023v12_cff::track, trackQuality_, trackQualityModel_, trklet::TrackletEventProcessor::tracks(), DiMuonV_cfg::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().

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

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

◆ asciiEventOutName_

string L1FPGATrackProducer::asciiEventOutName_
private

Definition at line 165 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ channelAssignment_

const ChannelAssignment* L1FPGATrackProducer::channelAssignment_
private

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

◆ dtclayerdisk

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

Definition at line 185 of file L1FPGATrackProducer.cc.

◆ esGetToken_

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

Definition at line 214 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenBfield_

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

Definition at line 211 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenChannelAssignment_

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

Definition at line 201 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenHPH_

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

Definition at line 215 of file L1FPGATrackProducer.cc.

Referenced by beginRun().

◆ esGetTokenTGeom_

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

Definition at line 212 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ esGetTokenTTopo_

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

Definition at line 213 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ eventnum

int L1FPGATrackProducer::eventnum
private

Definition at line 149 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ eventProcessor

trklet::TrackletEventProcessor L1FPGATrackProducer::eventProcessor
private

Definition at line 172 of file L1FPGATrackProducer.cc.

Referenced by beginRun(), and produce().

◆ extended_

bool L1FPGATrackProducer::extended_
private

Definition at line 179 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ failScenario_

int L1FPGATrackProducer::failScenario_
private

Definition at line 176 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ fitPatternFile

edm::FileInPath L1FPGATrackProducer::fitPatternFile
private

File path for configuration files.

Definition at line 157 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ getTokenBS_

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

Definition at line 191 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenDTC_

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

Definition at line 192 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ getTokenTrackingParticle_

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

Definition at line 194 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ getTokenTTClusterMCTruth_

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

Definition at line 193 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ MCTruthClusterInputTag

edm::InputTag L1FPGATrackProducer::MCTruthClusterInputTag
private

Definition at line 187 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ MCTruthStubInputTag

edm::InputTag L1FPGATrackProducer::MCTruthStubInputTag
private

Definition at line 188 of file L1FPGATrackProducer.cc.

◆ memoryModulesFile

edm::FileInPath L1FPGATrackProducer::memoryModulesFile
private

Definition at line 158 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ nHelixPar_

unsigned int L1FPGATrackProducer::nHelixPar_
private

Definition at line 178 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ processingModulesFile

edm::FileInPath L1FPGATrackProducer::processingModulesFile
private

Definition at line 159 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ putTokenStubs_

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

Definition at line 199 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ putTokenTracks_

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

Definition at line 197 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ readMoreMcTruth_

bool L1FPGATrackProducer::readMoreMcTruth_
private

Definition at line 154 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ reduced_

bool L1FPGATrackProducer::reduced_
private

Definition at line 180 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ settings_

trklet::Settings L1FPGATrackProducer::settings_
private

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

Referenced by beginRun().

◆ stubKiller_

StubKiller* L1FPGATrackProducer::stubKiller_
private

Definition at line 175 of file L1FPGATrackProducer.cc.

Referenced by produce().

◆ tableTEDFile

edm::FileInPath L1FPGATrackProducer::tableTEDFile
private

Definition at line 162 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ tableTREFile

edm::FileInPath L1FPGATrackProducer::tableTREFile
private

Definition at line 163 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ TrackingParticleInputTag

edm::InputTag L1FPGATrackProducer::TrackingParticleInputTag
private

Definition at line 189 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().

◆ trackQuality_

bool L1FPGATrackProducer::trackQuality_
private

Definition at line 182 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ trackQualityModel_

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

Definition at line 183 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer(), and produce().

◆ wiresFile

edm::FileInPath L1FPGATrackProducer::wiresFile
private

Definition at line 160 of file L1FPGATrackProducer.cc.

Referenced by L1FPGATrackProducer().