ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
GETLayerHeader.cxx
Go to the documentation of this file.
1 #include "GETLayerHeader.h"
2 
3 #include <Rtypes.h>
4 
5 #include <cstring>
6 #include <iostream>
7 
9 
11 {
12  Clear();
13 }
14 
15 UInt_t GETLayerHeader::GetHeaderSize(Bool_t inBytes)
16 {
17  return CorrectEndianness(fHeaderSize, 2) * (inBytes ? GetUnitBlock() : 1);
18 }
20 {
21  return CorrectEndianness(fItemSize, 2);
22 }
24 {
25  return CorrectEndianness(fNItems, 4);
26 }
28 {
29  return CorrectEndianness(fEventID, 4);
30 }
32 {
33  return CorrectEndianness(fEventTime, 6);
34 }
36 {
37  return CorrectEndianness(fDeltaT, 2);
38 }
40 {
41  return GetFrameSize() - GetHeaderSize();
42 }
43 
45 {
46  switch (GetFrameType()) {
48 
50  }
51 
52  return 0;
53 }
54 
55 void GETLayerHeader::Clear(Option_t *)
56 {
58 
59  memset(fHeaderSize, 0, sizeof(uint8_t) * 2);
60  memset(fItemSize, 0, sizeof(uint8_t) * 2);
61  memset(fNItems, 0, sizeof(uint8_t) * 4);
62  memset(fEventID, 0, sizeof(uint8_t) * 4);
63  memset(fEventTime, 0, sizeof(uint8_t) * 6);
64  memset(fDeltaT, 0, sizeof(uint8_t) * 2);
65 }
66 
67 void GETLayerHeader::Read(ifstream &stream)
68 {
69  Clear();
70 
71  GETHeaderBase::Read(stream);
72 
73  stream.read((Char_t *)fHeaderSize, 2);
74  stream.read((Char_t *)fItemSize, 2);
75  stream.read((Char_t *)fNItems, 4);
76  switch (GetFrameType()) {
77  case GETFRAMEMERGEDBYID: stream.read((Char_t *)fEventID, 4); break;
78 
80  stream.read((Char_t *)fEventTime, 6);
81  stream.read((Char_t *)fDeltaT, 2);
82  break;
83  }
84 
85  stream.ignore(GetHeaderSkip());
86 }
87 
89 {
90  cout << showbase << hex;
91  cout << " == GETLayerHeader ======================" << endl;
92  cout << " metaType: " << GetMetaType() << endl;
93  cout << " - Endianness: " << (IsLittleEndian() ? "Little" : "Big") << endl;
94  cout << " - Blobness: " << (IsBlob() ? "YES" : "NO") << endl;
95  cout << " - UnitBlock: " << dec << GetUnitBlock() << hex << endl;
96  cout << " frameSize: " << GetFrameSize(kFALSE) << " (" << dec << GetFrameSize(kFALSE)
97  << " Blocks = " << GetFrameSize() << hex << " Bytes)" << endl;
98  cout << " dataSource: " << GetDataSource() << endl;
99  cout << " frameType: " << GetFrameType() << endl;
100  cout << " revision: " << GetRevision() << endl;
101  cout << " headerSize: " << GetHeaderSize(kFALSE) << " (" << dec << GetHeaderSize(kFALSE)
102  << " Blocks = " << GetHeaderSize() << hex << " Bytes)" << endl;
103  cout << " itemSize: " << GetItemSize() << endl;
104  cout << " nItems: " << GetNItems() << dec << " (" << GetNItems() << ")" << hex << endl;
105  switch (GetFrameType()) {
106  case GETFRAMEMERGEDBYID: cout << " eventID: " << dec << GetEventID() << endl; break;
107 
109  cout << " eventTime: " << GetEventTime() << dec << " (" << GetEventTime() << ")" << hex << endl;
110  cout << " deltaT: " << GetDeltaT() << dec << " (" << GetDeltaT() << ")" << endl;
111  break;
112  }
113  cout << " ========================================" << endl;
114 }
GETHeaderBase::GetFrameSize
UInt_t GetFrameSize(Bool_t inBytes=kTRUE)
Definition: GETHeaderBase.cxx:21
GETHeaderBase::Clear
void Clear(Option_t *="")
Definition: GETHeaderBase.cxx:74
GETHeaderBase::GetRevision
UInt_t GetRevision()
Definition: GETHeaderBase.cxx:33
GETLayerHeader::GetNItems
UInt_t GetNItems()
Definition: GETLayerHeader.cxx:23
GETLayerHeader::Print
void Print()
Definition: GETLayerHeader.cxx:88
GETLayerHeader::GetHeaderSkip
UInt_t GetHeaderSkip()
Definition: GETLayerHeader.cxx:44
GETLayerHeader::GETLayerHeader
GETLayerHeader()
GETHeaderBase::GetMetaType
UInt_t GetMetaType()
Definition: GETHeaderBase.cxx:17
GETLayerHeader
Definition: GETLayerHeader.h:18
GETHeaderBase::IsLittleEndian
Bool_t IsLittleEndian()
Definition: GETHeaderBase.cxx:42
GETLayerHeader.h
GETLayerHeader::GetEventID
UInt_t GetEventID()
Definition: GETLayerHeader.cxx:27
GETLayerHeader::GetItemSize
UInt_t GetItemSize()
Definition: GETLayerHeader.cxx:19
GETFRAMEMERGEDBYID
#define GETFRAMEMERGEDBYID
Definition: GETHeaderBase.h:7
GETHeaderBase::GetFrameType
UInt_t GetFrameType()
Definition: GETHeaderBase.cxx:29
GETHeaderBase::IsBlob
Bool_t IsBlob()
Definition: GETHeaderBase.cxx:46
GETHeaderBase::GetUnitBlock
UInt_t GetUnitBlock()
Definition: GETHeaderBase.cxx:50
GETLayerHeader::GetDeltaT
UInt_t GetDeltaT()
Definition: GETLayerHeader.cxx:35
GETLayerHeader::GetFrameSkip
ULong64_t GetFrameSkip()
Definition: GETLayerHeader.cxx:39
GETLayerHeader::GetHeaderSize
UInt_t GetHeaderSize(Bool_t inBytes=kTRUE)
Definition: GETLayerHeader.cxx:15
GETLAYERHEADERBYIDSIZE
#define GETLAYERHEADERBYIDSIZE
Definition: GETLayerHeader.h:15
GETHeaderBase::Read
void Read(ifstream &file, Bool_t rewind=kFALSE)
Definition: GETHeaderBase.cxx:83
GETLayerHeader::GetEventTime
ULong64_t GetEventTime()
Definition: GETLayerHeader.cxx:31
GETHeaderBase::GetDataSource
UInt_t GetDataSource()
Definition: GETHeaderBase.cxx:25
GETLayerHeader::Clear
void Clear(Option_t *="")
Definition: GETLayerHeader.cxx:55
ClassImp
ClassImp(GETLayerHeader) GETLayerHeader
Definition: GETLayerHeader.cxx:8
GETFRAMEMERGEDBYTIME
#define GETFRAMEMERGEDBYTIME
Definition: GETHeaderBase.h:8
GETLAYERHEADERBYTIMESIZE
#define GETLAYERHEADERBYTIMESIZE
Definition: GETLayerHeader.h:16
GETHeaderBase::CorrectEndianness
ULong64_t CorrectEndianness(uint8_t *variable, Short_t length)
Definition: GETHeaderBase.cxx:55
GETLayerHeader::Read
void Read(ifstream &stream)
Definition: GETLayerHeader.cxx:67