CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
MP7PacketReader Class Reference

#include <MP7PacketReader.h>

Public Types

typedef std::vector< PacketData >::const_iterator const_iterator
 

Public Member Functions

const_iterator begin () const
 
const_iterator end () const
 
const PacketDataget (size_t i)
 
 MP7PacketReader (const std::string &path, uint32_t striphdr=0, uint32_t stripftr=0, uint32_t ikey=0)
 
size_t size () const
 
bool valid () const
 
virtual ~MP7PacketReader ()
 

Private Member Functions

void load ()
 

Static Private Member Functions

static std::vector< PacketRangefindPackets (std::vector< uint64_t > data)
 

Private Attributes

std::vector< PacketDatabuffers_
 
uint32_t footer_
 
uint32_t header_
 
uint32_t ikey_
 
MP7FileReader reader_
 

Detailed Description

Definition at line 46 of file MP7PacketReader.h.

Member Typedef Documentation

Definition at line 48 of file MP7PacketReader.h.

Constructor & Destructor Documentation

MP7PacketReader::MP7PacketReader ( const std::string &  path,
uint32_t  striphdr = 0,
uint32_t  stripftr = 0,
uint32_t  ikey = 0 
)

Definition at line 8 of file MP7PacketReader.cc.

References load(), reader_, and MP7FileReader::valid().

8  : reader_( path ), header_(striphdr), footer_(stripftr), ikey_(ikey) {
9  if ( !reader_.valid() ) return;
10  load();
11 }
MP7FileReader reader_
bool valid() const
reader status. valid() == 1 indicates that data was successfully read from file
Definition: MP7FileReader.h:56
MP7PacketReader::~MP7PacketReader ( )
virtual

Definition at line 24 of file MP7PacketReader.cc.

24  {
25 }

Member Function Documentation

const_iterator MP7PacketReader::begin ( void  ) const
inline

Definition at line 60 of file MP7PacketReader.h.

Referenced by findPackets().

60 { return buffers_.begin(); }
std::vector< PacketData > buffers_
const_iterator MP7PacketReader::end ( void  ) const
inline

Definition at line 62 of file MP7PacketReader.h.

Referenced by Types.LuminosityBlockRange::cppID(), Types.EventRange::cppID(), and findPackets().

62 { return buffers_.end(); }
std::vector< PacketData > buffers_
std::vector< PacketRange > MP7PacketReader::findPackets ( std::vector< uint64_t >  data)
staticprivate

Definition at line 86 of file MP7PacketReader.cc.

References begin(), end(), mps_fire::i, diffTwoXMLs::ranges, findQualityFiles::v, and x.

Referenced by load().

86  {
87  std::vector<PacketRange> ranges;
88  bool v = false;
89  int32_t begin(-1), end(-1);
90  for ( size_t i(0); i < data.size(); ++i) {
91  uint64_t x = data[i];
92  if (not v) {
93  if ((x >> 32) & 1) {
94  v = true;
95  begin = i;
96  }
97  continue;
98  } else {
99  if ( not ((x >> 32 ) & 1 ) ) {
100  v = false;
101  end = i-1;
102  ranges.push_back(std::make_pair(begin,end) );
103  }
104  continue;
105  }
106  }
107 
108  if ( v && (begin != -1 ) ) {
109  end = data.size()-1;
110  ranges.push_back(std::make_pair(begin,end) );
111  }
112 
113  return ranges;
114 
115 }
const_iterator end() const
string ranges
Definition: diffTwoXMLs.py:79
unsigned long long uint64_t
Definition: Time.h:15
const_iterator begin() const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const PacketData& MP7PacketReader::get ( size_t  i)
inline
void MP7PacketReader::load ( )
private

Definition at line 28 of file MP7PacketReader.cc.

References FileData::begin(), MP7FileReader::begin(), buffers_, data, FileData::end(), MP7FileReader::end(), findPackets(), Packet::first_, footer_, header_, ikey_, gen::k, Packet::last_, FileData::link(), Packet::links_, FileData::name(), PacketData::name_, AlCaHLTBitMon_ParallelJobs::p, PacketData::packets_, diffTwoXMLs::ranges, reader_, FileData::size(), and MP7FileReader::size().

Referenced by MP7PacketReader().

28  {
29 
30  buffers_.reserve(reader_.size());
32  for( ; it != reader_.end(); ++it ) {
33  const FileData& raw = *it;
34 
35  // Check channel alignment
36  std::set< std::vector<PacketRange > > rangeSet;
37 
38  for( size_t k(0); k<raw.size(); ++k) {
39  std::vector<PacketRange > ranges = findPackets(raw.link(ikey_));
40  rangeSet.insert(ranges);
41  }
42  //cout << "Number of different patterns: " << rangeSet.size() << endl;
43  if ( rangeSet.size() != 1 )
44  throw std::runtime_error("Links are not aligned!");
45 
46  std::vector<PacketRange > pr = *(rangeSet.begin());
47 
48  // Create the container
50  data.name_ = raw.name();
51 
52  data.packets_.reserve(pr.size());
53 
54  // loop over the ranges to build packets
55  for(auto const& p : pr) {
56 
57  // Check if the header/footer zeroed the packet
58  if ( p.second-p.first-header_-footer_<= 0 ) {
59  // Turn this into an error message
60  //cout << "Error: packet length is zero (or less) after header/footer stripping. Skipping." << endl;
61  continue;
62  }
63 
64  Packet pkt;
65  FileData::const_iterator lIt = raw.begin();
66  for( ; lIt != raw.end(); ++lIt ) {
67  // Here the 64 bit uint is converted into a 32 bit uint, the data valid bit is stripped in the 64->32 bit conversion.
68  pkt.links_[lIt->first] = std::vector<uint32_t>(
69  lIt->second.begin() + p.first + header_,
70  lIt->second.begin() + p.second - footer_ + 1
71  );
72  }
73  pkt.first_ = p.first + header_;
74  pkt.last_ = p.second - footer_;
75 
76  data.packets_.push_back(pkt);
77  }
78 
79  buffers_.push_back(data);
80 
81 
82  }
83 }
LinkMap links_
const_iterator end()
vector&#39;s end iterator
Definition: MP7FileReader.h:71
std::string name_
LinkMap::const_iterator begin() const
Definition: MP7FileReader.h:34
size_t size() const
number of rawdata objects stored
Definition: MP7FileReader.h:74
size_t size() const
Definition: MP7FileReader.h:32
uint32_t last_
MP7FileReader reader_
std::vector< Packet > packets_
std::vector< PacketData > buffers_
LinkMap::const_iterator const_iterator
Definition: MP7FileReader.h:26
int k[5][pyjets_maxn]
string ranges
Definition: diffTwoXMLs.py:79
uint32_t first_
const std::string & name() const
Definition: MP7FileReader.h:28
LinkMap::const_iterator end() const
Definition: MP7FileReader.h:35
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
std::vector< FileData >::const_iterator const_iterator
expose vector&#39;s const iterator
Definition: MP7FileReader.h:49
const std::vector< uint64_t > & link(uint32_t i) const
static std::vector< PacketRange > findPackets(std::vector< uint64_t > data)
const_iterator begin()
vector&#39;s begin iterator
Definition: MP7FileReader.h:68
size_t MP7PacketReader::size ( void  ) const
inline

Definition at line 64 of file MP7PacketReader.h.

References data, and svgfig::load().

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

64 { return buffers_.size(); }
std::vector< PacketData > buffers_
bool MP7PacketReader::valid ( ) const
inline

Definition at line 56 of file MP7PacketReader.h.

56 { return reader_.valid(); }
MP7FileReader reader_
bool valid() const
reader status. valid() == 1 indicates that data was successfully read from file
Definition: MP7FileReader.h:56

Member Data Documentation

std::vector< PacketData > MP7PacketReader::buffers_
private

Definition at line 71 of file MP7PacketReader.h.

Referenced by load().

uint32_t MP7PacketReader::footer_
private

Definition at line 74 of file MP7PacketReader.h.

Referenced by load().

uint32_t MP7PacketReader::header_
private

Definition at line 73 of file MP7PacketReader.h.

Referenced by load().

uint32_t MP7PacketReader::ikey_
private

Definition at line 75 of file MP7PacketReader.h.

Referenced by load().

MP7FileReader MP7PacketReader::reader_
private

Definition at line 72 of file MP7PacketReader.h.

Referenced by load(), and MP7PacketReader().