CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
DTUnpackingModule Class Reference

#include <DTUnpackingModule.h>

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

Public Member Functions

 DTUnpackingModule (const edm::ParameterSet &pset)
 Constructor. More...
 
void produce (edm::Event &e, const edm::EventSetup &c)
 Call the Unpackers and create the digis. More...
 
virtual ~DTUnpackingModule ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

bool dqmOnly
 
edm::InputTag inputLabel
 if not you need the label More...
 
int maxFEDid_
 
int minFEDid_
 if not you need to set the range by hand More...
 
DTUnpackerunpacker
 
bool useStandardFEDid_
 do you want to use the standard DT FED ID's, i.e. [770-775]? (why the hell 6??) More...
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- 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

The unpacking module for DTs.

Author
N. Amapane - S. Argiro' - M. Zanetti

Definition at line 17 of file DTUnpackingModule.h.

Constructor & Destructor Documentation

DTUnpackingModule::DTUnpackingModule ( const edm::ParameterSet pset)

Constructor.

Definition at line 37 of file DTUnpackingModule.cc.

References dtTPAnalyzer_cfg::dataType, dqmOnly, edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), inputLabel, maxFEDid_, minFEDid_, unpacker, and useStandardFEDid_.

37  : unpacker(0) {
38 
39  const string & dataType = ps.getParameter<string>("dataType");
40 
41  ParameterSet unpackerParameters = ps.getParameter<ParameterSet>("readOutParameters");
42 
43 
44  if (dataType == "DDU") {
45  unpacker = new DTDDUUnpacker(unpackerParameters);
46  }
47  else if (dataType == "ROS25") {
48  unpacker = new DTROS25Unpacker(unpackerParameters.getParameter<ParameterSet>("rosParameters"));
49  }
50  else if (dataType == "ROS8") {
51  unpacker = new DTROS8Unpacker(unpackerParameters);
52  }
53  else {
54  throw cms::Exception("InvalidParameter") << "DTUnpackingModule: dataType "
55  << dataType << " is unknown";
56  }
57 
58  inputLabel = ps.getParameter<InputTag>("inputLabel"); // default was: source
59  useStandardFEDid_ = ps.getParameter<bool>("useStandardFEDid"); // default was: true
60  minFEDid_ = ps.getUntrackedParameter<int>("minFEDid",770); // default: 770
61  maxFEDid_ = ps.getUntrackedParameter<int>("maxFEDid",779); // default 779
62  dqmOnly = ps.getParameter<bool>("dqmOnly"); // default: false
63 
64  if(!dqmOnly) {
65  produces<DTDigiCollection>();
66  produces<DTLocalTriggerCollection>();
67  }
68 }
T getParameter(std::string const &) const
int minFEDid_
if not you need to set the range by hand
bool useStandardFEDid_
do you want to use the standard DT FED ID&#39;s, i.e. [770-775]? (why the hell 6??)
DTUnpacker * unpacker
edm::InputTag inputLabel
if not you need the label
DTUnpackingModule::~DTUnpackingModule ( )
virtual

Destructor.

Definition at line 70 of file DTUnpackingModule.cc.

References unpacker.

70  {
71  delete unpacker;
72 }
DTUnpacker * unpacker

Member Function Documentation

void DTUnpackingModule::produce ( edm::Event e,
const edm::EventSetup c 
)
virtual

Call the Unpackers and create the digis.

Implements edm::EDProducer.

Definition at line 75 of file DTUnpackingModule.cc.

References FEDRawData::data(), dqmOnly, edm::EventSetup::get(), edm::Event::getByLabel(), inputLabel, DTUnpacker::interpretRawData(), edm::HandleBase::isValid(), FEDNumbering::MAXDTFEDID, maxFEDid_, FEDNumbering::MINDTFEDID, minFEDid_, edm::Event::put(), lumiPlot::rawdata, FEDRawData::size(), unpacker, and useStandardFEDid_.

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

75  {
76 
78  e.getByLabel(inputLabel, rawdata);
79 
80  if(!rawdata.isValid()){
81  LogError("DTUnpackingModule::produce") << " unable to get raw data from the event" << endl;
82  return;
83  }
84 
85  // Get the mapping from the setup
87  context.get<DTReadOutMappingRcd>().get(mapping);
88 
89  // Create the result i.e. the collections of MB Digis and SC local triggers
90  auto_ptr<DTDigiCollection> detectorProduct(new DTDigiCollection);
91  auto_ptr<DTLocalTriggerCollection> triggerProduct(new DTLocalTriggerCollection);
92 
93 
94  // Loop over the DT FEDs
95  int FEDIDmin = 0, FEDIDMax = 0;
96  if (useStandardFEDid_){
97  FEDIDmin = FEDNumbering::MINDTFEDID;
98  FEDIDMax = FEDNumbering::MAXDTFEDID;
99  }
100  else {
101  FEDIDmin = minFEDid_;
102  FEDIDMax = maxFEDid_;
103  }
104 
105  for (int id=FEDIDmin; id<=FEDIDMax; ++id){
106 
107  const FEDRawData& feddata = rawdata->FEDData(id);
108 
109  if (feddata.size()){
110 
111  // Unpack the data
112  unpacker->interpretRawData(reinterpret_cast<const unsigned int*>(feddata.data()),
113  feddata.size(), id, mapping, detectorProduct, triggerProduct);
114  }
115  }
116 
117  // commit to the event
118  if(!dqmOnly) {
119  e.put(detectorProduct);
120  e.put(triggerProduct);
121  }
122 }
virtual void interpretRawData(const unsigned int *index, int datasize, int dduID, edm::ESHandle< DTReadOutMapping > &mapping, std::auto_ptr< DTDigiCollection > &product, std::auto_ptr< DTLocalTriggerCollection > &product2, uint16_t rosList=0)=0
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
int minFEDid_
if not you need to set the range by hand
bool useStandardFEDid_
do you want to use the standard DT FED ID&#39;s, i.e. [770-775]? (why the hell 6??)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
DTUnpacker * unpacker
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
edm::InputTag inputLabel
if not you need the label
dictionary rawdata
Definition: lumiPlot.py:393

Member Data Documentation

bool DTUnpackingModule::dqmOnly
private

Definition at line 40 of file DTUnpackingModule.h.

Referenced by DTUnpackingModule(), and produce().

edm::InputTag DTUnpackingModule::inputLabel
private

if not you need the label

Definition at line 34 of file DTUnpackingModule.h.

Referenced by DTUnpackingModule(), and produce().

int DTUnpackingModule::maxFEDid_
private

Definition at line 39 of file DTUnpackingModule.h.

Referenced by DTUnpackingModule(), and produce().

int DTUnpackingModule::minFEDid_
private

if not you need to set the range by hand

Definition at line 38 of file DTUnpackingModule.h.

Referenced by DTUnpackingModule(), and produce().

DTUnpacker* DTUnpackingModule::unpacker
private

Definition at line 31 of file DTUnpackingModule.h.

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

bool DTUnpackingModule::useStandardFEDid_
private

do you want to use the standard DT FED ID's, i.e. [770-775]? (why the hell 6??)

Definition at line 36 of file DTUnpackingModule.h.

Referenced by DTUnpackingModule(), and produce().