CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes | Static Private Attributes
sistrip::SpyUnpackerModule Class Reference
Inheritance diagram for sistrip::SpyUnpackerModule:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 Scope mode digis and event counter producer. Retrieves cabling map from EventSetup and FEDRawDataCollection from Event, creates a DetSetVector of SiStripRawDigis, uses the SiStripSpyUnpacker class to fill the DetSetVector, and attaches the container to the Event. More...
 
 SpyUnpackerModule (const edm::ParameterSet &)
 
 ~SpyUnpackerModule () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () 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 Attributes

const bool allowIncompleteEvents_
 Allow inconsistent (by event count, APV address) event storage. More...
 
std::vector< uint32_t > fed_ids_
 Vector of FED IDs to examine (FEDs). More...
 
const edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcdfedCablingToken_
 
const edm::InputTag productLabel_
 The product label of the FEDRawDataCollection input. More...
 
edm::EDGetTokenT< FEDRawDataCollectionproductToken_
 
const bool storeCounters_
 True = store L1ID and TotalEventCount by FED key. More...
 
const bool storeScopeRawDigis_
 True = store the scope mode raw digis. More...
 
const SpyUnpacker unpacker_
 

Static Private Attributes

static const char *const msgLb_ = "SiStripSpyUnpackerModule"
 

Additional Inherited Members

- Public Types inherited from edm::global::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::global::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 58 of file SiStripSpyUnpackerModule.cc.

Constructor & Destructor Documentation

◆ SpyUnpackerModule()

sistrip::SpyUnpackerModule::SpyUnpackerModule ( const edm::ParameterSet pset)

Definition at line 89 of file SiStripSpyUnpackerModule.cc.

References fed_ids_, edm::isDebugEnabled(), LogTrace, FEDNumbering::MAXSiStripFEDID, FEDNumbering::MINSiStripFEDID, msgLb_, productLabel_, productToken_, storeCounters_, and storeScopeRawDigis_.

90  : fed_ids_(pset.getParameter<std::vector<uint32_t> >("FEDIDs")),
91  productLabel_(pset.getParameter<edm::InputTag>("InputProductLabel")),
92  allowIncompleteEvents_(pset.getParameter<bool>("AllowIncompleteEvents")),
93  storeCounters_(pset.getParameter<bool>("StoreCounters")),
94  storeScopeRawDigis_(pset.getParameter<bool>("StoreScopeRawDigis")),
96  fedCablingToken_(esConsumes<>()) {
97  productToken_ = consumes<FEDRawDataCollection>(productLabel_);
98 
99  if ((fed_ids_.empty())) {
100  LogInfo(msgLb_) << "No FED IDs specified, so will try to unpack all FEDs with data" << std::endl;
102  for (uint32_t ifed = FEDNumbering::MINSiStripFEDID; ifed <= FEDNumbering::MAXSiStripFEDID; ifed++) {
103  fed_ids_.push_back(ifed);
104  }
105  } // end of FED ID specified check.
106 
107  if (edm::isDebugEnabled())
108  LogTrace(msgLb_) << "[" << __func__ << "]:"
109  << " Constructing object...";
110 
112  produces<edm::DetSetVector<SiStripRawDigi> >("ScopeRawDigis");
113 
114  if (storeCounters_) {
115  produces<std::vector<uint32_t> >("L1ACount");
116  produces<std::vector<uint32_t> >("TotalEventCount");
117  }
118 
119  produces<uint32_t>("GlobalRunNumber");
120 
121  } // end of SpyUnpackerModule constructor.
std::vector< uint32_t > fed_ids_
Vector of FED IDs to examine (FEDs).
bool isDebugEnabled()
edm::EDGetTokenT< FEDRawDataCollection > productToken_
const bool storeScopeRawDigis_
True = store the scope mode raw digis.
const edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_
const bool allowIncompleteEvents_
Allow inconsistent (by event count, APV address) event storage.
#define LogTrace(id)
const bool storeCounters_
True = store L1ID and TotalEventCount by FED key.
const edm::InputTag productLabel_
The product label of the FEDRawDataCollection input.
Log< level::Info, false > LogInfo
static const char *const msgLb_

◆ ~SpyUnpackerModule()

sistrip::SpyUnpackerModule::~SpyUnpackerModule ( )
override

Definition at line 123 of file SiStripSpyUnpackerModule.cc.

References edm::isDebugEnabled(), and LogTrace.

123  {
124  if (edm::isDebugEnabled()) {
125  LogTrace("SiStripSpyUnpacker") << "[sistrip::SpyUnpackerModule::" << __func__ << "]"
126  << " Destructing object...";
127  }
128  }
bool isDebugEnabled()
#define LogTrace(id)

Member Function Documentation

◆ produce()

void sistrip::SpyUnpackerModule::produce ( edm::StreamID  ,
edm::Event event,
const edm::EventSetup setup 
) const
overridevirtual

Scope mode digis and event counter producer. Retrieves cabling map from EventSetup and FEDRawDataCollection from Event, creates a DetSetVector of SiStripRawDigis, uses the SiStripSpyUnpacker class to fill the DetSetVector, and attaches the container to the Event.

Implements edm::global::EDProducerBase.

Definition at line 136 of file SiStripSpyUnpackerModule.cc.

References sistrip::SpyUnpacker::createDigis(), fed_ids_, fedCablingToken_, eostools::move(), productToken_, singleTopDQM_cfi::setup, storeCounters_, storeScopeRawDigis_, and unpacker_.

136  {
137  const SiStripFedCabling* fedCabling = &setup.getData(fedCablingToken_);
138  //retrieve FED raw data (by label, which is "source" by default)
140  event.getByToken(productToken_, buffers);
141 
142  //create container for digis
143  std::unique_ptr<edm::DetSetVector<SiStripRawDigi> > digis(new edm::DetSetVector<SiStripRawDigi>);
144 
145  //if necessary, create container for event counters
146  std::unique_ptr<std::vector<uint32_t> > pTotalCounts(new std::vector<uint32_t>);
147  std::unique_ptr<std::vector<uint32_t> > pL1ACounts(new std::vector<uint32_t>);
148  //and for run number
149  std::unique_ptr<uint32_t> pGlobalRun(new uint32_t);
150  //create digis
151  // Using FED IDs...
153  *fedCabling, *buffers, digis.get(), fed_ids_, pTotalCounts.get(), pL1ACounts.get(), pGlobalRun.get());
154 
155  // Add digis to event
157  event.put(std::move(digis), "ScopeRawDigis");
158 
159  //add counters to event
160  if (storeCounters_) {
161  event.put(std::move(pTotalCounts), "TotalEventCount");
162  event.put(std::move(pL1ACounts), "L1ACount");
163  }
164 
165  //add global run to the event
166  event.put(std::move(pGlobalRun), "GlobalRunNumber");
167 
168  } // end of SpyUnpackerModule::produce method.
std::vector< uint32_t > fed_ids_
Vector of FED IDs to examine (FEDs).
edm::EDGetTokenT< FEDRawDataCollection > productToken_
const bool storeScopeRawDigis_
True = store the scope mode raw digis.
const edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_
void createDigis(const SiStripFedCabling &, const FEDRawDataCollection &, RawDigis *pDigis, const std::vector< uint32_t > &ids, Counters *pTotalEventCounts, Counters *pL1ACounts, uint32_t *aRunRef) const
Creates the scope mode digis for the supplied FED IDs or detIds and stores event counters.
const bool storeCounters_
True = store L1ID and TotalEventCount by FED key.
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ allowIncompleteEvents_

const bool sistrip::SpyUnpackerModule::allowIncompleteEvents_
private

Allow inconsistent (by event count, APV address) event storage.

Definition at line 73 of file SiStripSpyUnpackerModule.cc.

◆ fed_ids_

std::vector<uint32_t> sistrip::SpyUnpackerModule::fed_ids_
private

Vector of FED IDs to examine (FEDs).

Definition at line 70 of file SiStripSpyUnpackerModule.cc.

Referenced by produce(), and SpyUnpackerModule().

◆ fedCablingToken_

const edm::ESGetToken<SiStripFedCabling, SiStripFedCablingRcd> sistrip::SpyUnpackerModule::fedCablingToken_
private

Definition at line 80 of file SiStripSpyUnpackerModule.cc.

Referenced by produce().

◆ msgLb_

const char *const sistrip::SpyUnpackerModule::msgLb_ = "SiStripSpyUnpackerModule"
staticprivate

Definition at line 65 of file SiStripSpyUnpackerModule.cc.

Referenced by SpyUnpackerModule().

◆ productLabel_

const edm::InputTag sistrip::SpyUnpackerModule::productLabel_
private

The product label of the FEDRawDataCollection input.

Definition at line 71 of file SiStripSpyUnpackerModule.cc.

Referenced by SpyUnpackerModule().

◆ productToken_

edm::EDGetTokenT<FEDRawDataCollection> sistrip::SpyUnpackerModule::productToken_
private

Definition at line 72 of file SiStripSpyUnpackerModule.cc.

Referenced by produce(), and SpyUnpackerModule().

◆ storeCounters_

const bool sistrip::SpyUnpackerModule::storeCounters_
private

True = store L1ID and TotalEventCount by FED key.

Definition at line 74 of file SiStripSpyUnpackerModule.cc.

Referenced by produce(), and SpyUnpackerModule().

◆ storeScopeRawDigis_

const bool sistrip::SpyUnpackerModule::storeScopeRawDigis_
private

True = store the scope mode raw digis.

Definition at line 75 of file SiStripSpyUnpackerModule.cc.

Referenced by produce(), and SpyUnpackerModule().

◆ unpacker_

const SpyUnpacker sistrip::SpyUnpackerModule::unpacker_
private

Definition at line 77 of file SiStripSpyUnpackerModule.cc.

Referenced by produce().