CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
CastorDigiToRaw Class Reference

#include <CastorDigiToRaw.h>

Inheritance diagram for CastorDigiToRaw:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 CastorDigiToRaw (const edm::ParameterSet &ps)
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
 ~CastorDigiToRaw () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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
 
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)
 
 ~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
 
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::vector< ModuleDescription const * > &modules, 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
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

edm::InputTag castorTag_
 
CastorCtdcPacker ctdcpacker_
 
CastorPacker packer_
 
edm::EDGetTokenT< CastorDigiCollectiontok_input_
 
bool usingctdc_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
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::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
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)
 

Detailed Description

CastorDigiToRaw is the EDProducer subclass which runs the Castor Unpack algorithm.

Author
Alan Campbell
Version
1st Version April 18, 2008

Definition at line 26 of file CastorDigiToRaw.h.

Constructor & Destructor Documentation

CastorDigiToRaw::CastorDigiToRaw ( const edm::ParameterSet ps)
explicit

Definition at line 15 of file CastorDigiToRaw.cc.

References castorTag_, and tok_input_.

15  :
16  castorTag_(conf.getParameter<edm::InputTag>("CASTOR")),
17  usingctdc_(conf.getParameter<bool>("CastorCtdc"))
18 
19 {
20  tok_input_ = consumes<CastorDigiCollection>(castorTag_);
21  produces<FEDRawDataCollection>();
22 }
edm::InputTag castorTag_
edm::EDGetTokenT< CastorDigiCollection > tok_input_
CastorDigiToRaw::~CastorDigiToRaw ( )
override

Definition at line 25 of file CastorDigiToRaw.cc.

25 { }

Member Function Documentation

void CastorDigiToRaw::produce ( edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 28 of file CastorDigiToRaw.cc.

References castorDigitizer_cfi::castor, CastorCollections::castorCont, castorTag_, ctdcpacker_, edm::EventID::event(), edm::EventSetup::get(), edm::Event::getByToken(), CastorDbService::getCastorMapping(), edm::EventBase::id(), edm::InputTag::label(), FEDNumbering::MAXCASTORFEDID, FEDNumbering::MINCASTORFEDID, eostools::move(), CastorCtdcPacker::pack(), CastorPacker::pack(), packer_, edm::Handle< T >::product(), edm::Event::put(), tok_input_, usingctdc_, and cms::Exception::what().

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

29 {
30  CastorCollections colls;
31 
32  // Step A: Get Inputs
34  if (!castorTag_.label().empty()) {
35  e.getByToken(tok_input_,castor);
36  colls.castorCont=castor.product();
37  }
38  // get the mapping
40  es.get<CastorDbRecord>().get( pSetup );
41  const CastorElectronicsMap* readoutMap=pSetup->getCastorMapping();
42  // Step B: Create empty output
43  auto raw = std::make_unique<FEDRawDataCollection>();
44 
45  const int ifed_first=FEDNumbering::MINCASTORFEDID; //690
46  const int ifed_last=FEDNumbering::MAXCASTORFEDID; //693
47 
48  int orbitN=e.id().event();
49  int bcnN=2000;
50 
51  // Step C: pack all requested FEDs
52  for (int ifed=ifed_first; ifed<=ifed_last; ++ifed) {
53  FEDRawData& fed = raw->FEDData(ifed);
54  try {
55  if ( usingctdc_ ) {
56  ctdcpacker_.pack(ifed,ifed-ifed_first, e.id().event(),
57  orbitN, bcnN, colls, *readoutMap, fed);
58  } else {
59  packer_.pack(ifed,ifed-ifed_first, e.id().event(),
60  orbitN, bcnN, colls, *readoutMap, fed); }
61  } catch (cms::Exception& e) {
62  edm::LogWarning("Unpacking error") << e.what();
63  } catch (...) {
64  edm::LogWarning("Unpacking exception");
65  }
66  }
67 
68  e.put(std::move(raw));
69 }
EventNumber_t event() const
Definition: EventID.h:41
CastorCtdcPacker ctdcpacker_
edm::InputTag castorTag_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
char const * what() const override
Definition: Exception.cc:141
const CastorDigiCollection * castorCont
void pack(int fedid, int dccnumber, int nl1a, int orbitn, int bcn, const CastorCollections &inputs, const CastorElectronicsMap &emap, FEDRawData &output)
const CastorElectronicsMap * getCastorMapping() const
T const * product() const
Definition: Handle.h:81
void pack(int fedid, int dccnumber, int nl1a, int orbitn, int bcn, const CastorCollections &inputs, const CastorElectronicsMap &emap, FEDRawData &output)
Definition: CastorPacker.cc:36
edm::EDGetTokenT< CastorDigiCollection > tok_input_
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:60
CastorPacker packer_
def move(src, dest)
Definition: eostools.py:510

Member Data Documentation

edm::InputTag CastorDigiToRaw::castorTag_
private

Definition at line 36 of file CastorDigiToRaw.h.

Referenced by CastorDigiToRaw(), and produce().

CastorCtdcPacker CastorDigiToRaw::ctdcpacker_
private

Definition at line 35 of file CastorDigiToRaw.h.

Referenced by produce().

CastorPacker CastorDigiToRaw::packer_
private

Definition at line 34 of file CastorDigiToRaw.h.

Referenced by produce().

edm::EDGetTokenT<CastorDigiCollection> CastorDigiToRaw::tok_input_
private

Definition at line 38 of file CastorDigiToRaw.h.

Referenced by CastorDigiToRaw(), and produce().

bool CastorDigiToRaw::usingctdc_
private

Definition at line 37 of file CastorDigiToRaw.h.

Referenced by produce().