DTROS25Unpacker

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#ifndef DTROS25Unpacker_h
#define DTROS25Unpacker_h

/** \class DTROS25Unpacker
 *  The unpacker for DTs' ROS25: 
 *  final version of Read Out Sector board with 25 channels.
 *
 * \author M. Zanetti INFN Padova
 * FRC 060906
 */

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include <EventFilter/DTRawToDigi/plugins/DTUnpacker.h>

class DTROS25Data;

class DTROS25Unpacker : public DTUnpacker {
public:
  /// Constructor
  DTROS25Unpacker(const edm::ParameterSet& ps);

  /// Destructor
  ~DTROS25Unpacker() override;

  // Unpacking method
  void interpretRawData(const unsigned int* index,
                        int datasize,
                        int dduID,
                        edm::ESHandle<DTReadOutMapping>& mapping,
                        std::unique_ptr<DTDigiCollection>& product,
                        std::unique_ptr<DTLocalTriggerCollection>& product2,
                        uint16_t rosList = 0) override;

  inline const std::vector<DTROS25Data>& getROSsControlData() const { return controlDataFromAllROS; }

private:
  int swap(int x);

  /// if reading data locally, words, being assembled as 32-bits, do not need to be swapped
  bool localDAQ;

  /// if data are read from ROS directly, no information on the ROS Id is present
  bool readingDDU;

  /// since June 2007, local DAQ, provides FED number
  bool readDDUIDfromDDU;
  /// to analyze older data..
  int hardcodedDDUID;

  /// make the local SC spy data persistent
  bool writeSC;

  /// perform DQM on ROS data
  bool performDataIntegrityMonitor;

  bool debug;

  std::vector<DTROS25Data> controlDataFromAllROS;
};

#endif