Public Types | |
typedef std::map< GEMDetId, GEMPadDigiClusters > | GEMPadDigiClusterContainer |
typedef std::vector< GEMPadDigiCluster > | GEMPadDigiClusters |
typedef std::map< GEMDetId, std::vector< std::vector< std::pair< GEMDetId, GEMPadDigiClusters > > > > | GEMPadDigiClusterSortedContainer |
Public Types inherited from edm::stream::EDProducer<> | |
typedef CacheContexts< T... > | CacheTypes |
typedef CacheTypes::GlobalCache | GlobalCache |
typedef AbilityChecker< T... > | HasAbility |
typedef CacheTypes::LuminosityBlockCache | LuminosityBlockCache |
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache > | LuminosityBlockContext |
typedef CacheTypes::LuminosityBlockSummaryCache | LuminosityBlockSummaryCache |
typedef CacheTypes::RunCache | RunCache |
typedef RunContextT< RunCache, GlobalCache > | RunContext |
typedef CacheTypes::RunSummaryCache | RunSummaryCache |
Public Member Functions | |
void | beginRun (const edm::Run &, const edm::EventSetup &) override |
GEMPadDigiClusterProducer (const edm::ParameterSet &ps) | |
void | produce (edm::Event &, const edm::EventSetup &) override |
~GEMPadDigiClusterProducer () override | |
Public Member Functions inherited from edm::stream::EDProducer<> | |
EDProducer ()=default | |
bool | hasAbilityToProduceInBeginLumis () const final |
bool | hasAbilityToProduceInBeginProcessBlocks () const final |
bool | hasAbilityToProduceInBeginRuns () const final |
bool | hasAbilityToProduceInEndLumis () const final |
bool | hasAbilityToProduceInEndProcessBlocks () const final |
bool | hasAbilityToProduceInEndRuns () const final |
Static Public Member Functions | |
static void | fillDescriptions (edm::ConfigurationDescriptions &descriptions) |
Private Member Functions | |
void | buildClusters (const GEMPadDigiCollection &pads, GEMPadDigiClusterContainer &out_clusters) const |
template<class T > | |
void | checkValid (const T &cluster, const GEMDetId &id) const |
void | selectClusters (const GEMPadDigiClusterSortedContainer &in, GEMPadDigiClusterCollection &out) const |
void | sortClusters (const GEMPadDigiClusterContainer &in_clusters, GEMPadDigiClusterSortedContainer &out_clusters) const |
Private Attributes | |
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > | geom_token_ |
const GEMGeometry * | geometry_ |
unsigned int | maxClusterSize_ |
unsigned int | maxClustersOHGE11_ |
unsigned int | maxClustersOHGE21_ |
unsigned int | nOHGE11_ |
unsigned int | nOHGE21_ |
edm::EDGetTokenT< GEMPadDigiCollection > | pad_token_ |
Name of input digi Collection. More... | |
edm::InputTag | pads_ |
bool | sendOverflowClusters_ |
Produces GEM pad clusters from at most 8 adjacent GEM pads. Clusters are used downstream in the CSC local trigger to build GEM-CSC triggers and in the muon trigger to build EMTF tracks
Based on documentation provided by the GEM firmware architects
Definition at line 39 of file GEMPadDigiClusterProducer.cc.
typedef std::map<GEMDetId, GEMPadDigiClusters> GEMPadDigiClusterProducer::GEMPadDigiClusterContainer |
Definition at line 43 of file GEMPadDigiClusterProducer.cc.
typedef std::vector<GEMPadDigiCluster> GEMPadDigiClusterProducer::GEMPadDigiClusters |
Definition at line 42 of file GEMPadDigiClusterProducer.cc.
typedef std::map<GEMDetId, std::vector<std::vector<std::pair<GEMDetId, GEMPadDigiClusters> > > > GEMPadDigiClusterProducer::GEMPadDigiClusterSortedContainer |
Definition at line 47 of file GEMPadDigiClusterProducer.cc.
|
explicit |
Definition at line 120 of file GEMPadDigiClusterProducer.cc.
References geom_token_, edm::ParameterSet::getParameter(), maxClusterSize_, maxClustersOHGE11_, maxClustersOHGE21_, nOHGE11_, nOHGE21_, pad_token_, pads_, and sendOverflowClusters_.
|
override |
Definition at line 141 of file GEMPadDigiClusterProducer.cc.
|
override |
Definition at line 156 of file GEMPadDigiClusterProducer.cc.
References geom_token_, geometry_, and edm::EventSetup::getHandle().
|
private |
Light Cluster Packing Algorithm **
Based on: https://github.com/cms-gem-daq-project/OptoHybridv3/raw/master/doc/OH_modules.docx (Andrew Peck, Thomas Lenzi, Evaldas Juska)
In the current version of the algorithm, cluster finding is segmented into two separate halves of the GE1/1 chambers. Thus, each one of the trigger fibers can transmit clusters only from the half of the chamber that it corresponds to. For GE2/1, there are four separate quarts of the GE2/1 chamber.
This has the downside of being unable to transmit more than 4 clusters when they occur within that side of the chamber, so there will be a slightly higher rate of cluster overflow. For GE2/1 each OH can transmit up to 5 clusters.
The benefit, however, is in terms of (1) latency and (2) resource usage.
The burden of finding clusters on of the chamber is significantly less, and allows the cluster packer to operate in a simple, pipelined architecture which returns up to 4 (or 5) clusters per half-chamber per bunch crossing.
This faster architecture allows the mechanism to operate with only a single copy of the cluster finding priority encoder and cluster truncator (instead of two multiplexed copies), so the total resource usage of these stages is approximately half.
Further, a second step of cluster merging that is required in the full algorithm is avoided, which reduces latency by an additional bunch crossing and significantly reduces resource usage as well.
The sorting of the clusters favors lower eta partitions and lower pad numbers
Definition at line 183 of file GEMPadDigiClusterProducer.cc.
References checkValid(), GetRecoTauVFromDQM_MC_cff::cl, ztail::d, GEMGeometry::etaPartitions(), geometry_, maxClusterSize_, and nPart().
Referenced by produce().
|
private |
Definition at line 315 of file GEMPadDigiClusterProducer.cc.
References triggerObjects_cff::id, and cmsswSequenceInfo::tp.
Referenced by buildClusters(), and selectClusters().
|
static |
Definition at line 143 of file GEMPadDigiClusterProducer.cc.
References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.
|
override |
Definition at line 161 of file GEMPadDigiClusterProducer.cc.
References buildClusters(), MillePedeFileConverter_cfg::e, eostools::move(), pad_token_, edm::Handle< T >::product(), selectClusters(), and sortClusters().
|
private |
Definition at line 283 of file GEMPadDigiClusterProducer.cc.
References GEMGeometry::chambers(), checkValid(), bsc_activity_cfg::clusters, geometry_, maxClustersOHGE11_, maxClustersOHGE21_, and heavyionUCCDQM_cfi::nClusters.
Referenced by produce().
|
private |
Definition at line 249 of file GEMPadDigiClusterProducer.cc.
References GEMGeometry::chambers(), geometry_, nOHGE11_, and nOHGE21_.
Referenced by produce().
|
private |
Definition at line 107 of file GEMPadDigiClusterProducer.cc.
Referenced by beginRun(), and GEMPadDigiClusterProducer().
|
private |
Definition at line 117 of file GEMPadDigiClusterProducer.cc.
Referenced by beginRun(), buildClusters(), selectClusters(), and sortClusters().
|
private |
Definition at line 114 of file GEMPadDigiClusterProducer.cc.
Referenced by buildClusters(), and GEMPadDigiClusterProducer().
|
private |
Definition at line 110 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and selectClusters().
|
private |
Definition at line 111 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and selectClusters().
|
private |
Definition at line 112 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and sortClusters().
|
private |
Definition at line 113 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and sortClusters().
|
private |
Name of input digi Collection.
Definition at line 106 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and produce().
|
private |
Definition at line 108 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer().
|
private |
Definition at line 115 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer().