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 | hasAbilityToProduceInBeginRuns () const final |
bool | hasAbilityToProduceInEndLumis () 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 |
void | selectClusters (const GEMPadDigiClusterSortedContainer &in, GEMPadDigiClusterCollection &out) const |
void | sortClusters (const GEMPadDigiClusterContainer &in_clusters, GEMPadDigiClusterSortedContainer &out_clusters) const |
Private Attributes | |
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_ |
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 38 of file GEMPadDigiClusterProducer.cc.
typedef std::map<GEMDetId, GEMPadDigiClusters> GEMPadDigiClusterProducer::GEMPadDigiClusterContainer |
Definition at line 42 of file GEMPadDigiClusterProducer.cc.
typedef std::vector<GEMPadDigiCluster> GEMPadDigiClusterProducer::GEMPadDigiClusters |
Definition at line 41 of file GEMPadDigiClusterProducer.cc.
typedef std::map<GEMDetId, std::vector<std::vector<std::pair<GEMDetId, GEMPadDigiClusters> > > > GEMPadDigiClusterProducer::GEMPadDigiClusterSortedContainer |
Definition at line 46 of file GEMPadDigiClusterProducer.cc.
|
explicit |
Definition at line 115 of file GEMPadDigiClusterProducer.cc.
References edm::ParameterSet::getParameter(), maxClusterSize_, maxClustersOHGE11_, maxClustersOHGE21_, nOHGE11_, nOHGE21_, pad_token_, and pads_.
|
override |
Definition at line 129 of file GEMPadDigiClusterProducer.cc.
|
override |
Definition at line 143 of file GEMPadDigiClusterProducer.cc.
References geometry_, edm::EventSetup::get(), and get.
|
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 171 of file GEMPadDigiClusterProducer.cc.
References GetRecoTauVFromDQM_MC_cff::cl, ztail::d, GEMGeometry::etaPartitions(), geometry_, and maxClusterSize_.
Referenced by produce().
|
static |
Definition at line 131 of file GEMPadDigiClusterProducer.cc.
References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and HLT_2018_cff::InputTag.
|
override |
Definition at line 149 of file GEMPadDigiClusterProducer.cc.
References buildClusters(), MillePedeFileConverter_cfg::e, eostools::move(), pad_token_, edm::Handle< T >::product(), selectClusters(), and sortClusters().
|
private |
Definition at line 257 of file GEMPadDigiClusterProducer.cc.
References GEMGeometry::chambers(), bsc_activity_cfg::clusters, geometry_, maxClustersOHGE11_, maxClustersOHGE21_, heavyionUCCDQM_cfi::nClusters, and relativeConstraints::station.
Referenced by produce().
|
private |
Definition at line 221 of file GEMPadDigiClusterProducer.cc.
References GEMGeometry::chambers(), geometry_, nOHGE11_, nOHGE21_, and relativeConstraints::station.
Referenced by produce().
|
private |
Definition at line 112 of file GEMPadDigiClusterProducer.cc.
Referenced by beginRun(), buildClusters(), selectClusters(), and sortClusters().
|
private |
Definition at line 110 of file GEMPadDigiClusterProducer.cc.
Referenced by buildClusters(), and GEMPadDigiClusterProducer().
|
private |
Definition at line 106 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and selectClusters().
|
private |
Definition at line 107 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and selectClusters().
|
private |
Definition at line 108 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and sortClusters().
|
private |
Definition at line 109 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and sortClusters().
|
private |
Name of input digi Collection.
Definition at line 103 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer(), and produce().
|
private |
Definition at line 104 of file GEMPadDigiClusterProducer.cc.
Referenced by GEMPadDigiClusterProducer().