![]() |
|
|||
File indexing completed on 2024-04-06 12:10:39
0001 #ifndef GctRawToDigi_h 0002 #define GctRawToDigi_h 0003 0004 // -*- C++ -*- 0005 // 0006 // Package: GctRawToDigi 0007 // Class: GctRawToDigi 0008 // 0009 /**\class GctRawToDigi GctRawToDigi.cc EventFilter/GctRawToDigi/src/GctRawToDigi.cc 0010 0011 Description: Produce GCT digis from raw data 0012 0013 Implementation: 0014 <Notes on implementation> 0015 */ 0016 // 0017 // Original Author: Jim Brooke 0018 // Created: Wed Nov 1 11:57:10 CET 2006 0019 // 0020 // 0021 0022 // system include files 0023 #include <memory> 0024 #include <ostream> 0025 #include <string> 0026 0027 // user include files 0028 #include "FWCore/Framework/interface/Frameworkfwd.h" 0029 #include "FWCore/Framework/interface/stream/EDProducer.h" 0030 #include "FWCore/Framework/interface/Event.h" 0031 #include "FWCore/ParameterSet/interface/ParameterSet.h" 0032 #include "FWCore/Utilities/interface/InputTag.h" 0033 0034 #include "DataFormats/FEDRawData/interface/FEDRawData.h" 0035 0036 #include "EventFilter/GctRawToDigi/src/GctUnpackCollections.h" 0037 #include "EventFilter/GctRawToDigi/src/GctFormatTranslateBase.h" 0038 0039 // ******************************************************************* 0040 // *** THE UNPACK PROCESS MUST NEVER THROW ANY KIND OF EXCEPTION! *** 0041 // ******************************************************************* 0042 0043 class GctRawToDigi : public edm::stream::EDProducer<> { 0044 public: 0045 explicit GctRawToDigi(const edm::ParameterSet&); 0046 ~GctRawToDigi() override; 0047 0048 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); 0049 0050 private: // methods 0051 void produce(edm::Event&, const edm::EventSetup&) override; 0052 0053 /// Unpacks the raw data 0054 /*! \param invalidDataFlag - if true, then won't attempt unpack but just output empty collecions. */ 0055 void unpack(const FEDRawData& d, edm::Event& e, GctUnpackCollections* const colls); 0056 0057 /// Looks at the firmware version header in the S-Link packet and instantiates relevant format translator. 0058 /*! Returns false if it fails to instantiate a Format Translator */ 0059 bool autoDetectRequiredFormatTranslator(const unsigned char* data); 0060 0061 /// check block headers for consistency 0062 void checkHeaders(); 0063 0064 /// Prints out a list of blocks and the various numbers of trigger objects that have been unpacked from them. 0065 void doVerboseOutput(const GctBlockHeaderCollection& bHdrs, const GctUnpackCollections* const colls) const; 0066 0067 // add an error to the error collection 0068 void addError(const unsigned code); 0069 0070 /// method called at job end - use to print summary report 0071 virtual void endJob(); 0072 0073 private: // members 0074 /// The maximum number of blocks we will try to unpack before thinking something is wrong 0075 static const unsigned MAX_BLOCKS = 256; 0076 0077 // unpacking options 0078 edm::InputTag inputLabel_; ///< FED collection label. 0079 int fedId_; ///< GCT FED ID. 0080 0081 const bool 0082 hltMode_; ///< If true, only outputs the GCT data sent to the GT (number of BXs defined by numberOfGctSamplesToUnpack_) 0083 const unsigned 0084 numberOfGctSamplesToUnpack_; ///< Number of BXs of GCT data to unpack (assuming they are in the raw data) 0085 const unsigned 0086 numberOfRctSamplesToUnpack_; ///< Number of BXs of RCT data to unpack (assuming they are in the raw data) 0087 const bool 0088 unpackSharedRegions_; ///< Commissioning option: if true, where applicable the shared RCT calo regions will also be unpacked. 0089 const unsigned formatVersion_; ///< Defines unpacker verison to be used (e.g.: "Auto-detect", "MCLegacy", "V35", etc). 0090 const bool checkHeaders_; ///< If true, check block headers for synchronisation 0091 const bool verbose_; ///< If true, then debug print out for each event. 0092 0093 // format translator 0094 GctFormatTranslateBase* formatTranslator_; ///< pointer to the block-to-digi converter 0095 0096 // vector of unpacked block headers, for verbostity and/or sync checks 0097 GctBlockHeaderCollection blockHeaders_; 0098 0099 // error handling 0100 static const unsigned MAX_ERR_CODE = 6; 0101 L1TriggerErrorCollection* errors_; ///< pointer to error collection 0102 std::vector<unsigned> errorCounters_; ///< Counts number of errors for each code (index) 0103 unsigned unpackFailures_; ///< To count the total number of GCT unpack failures. 0104 }; 0105 0106 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |