GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TRlmdFile.h
Go to the documentation of this file.
1#ifndef TRLMDFILE_H
2#define TRLMDFILE_H
3
4/** \addtogroup Sorting
5 * @{
6 */
7
8/////////////////////////////////////////////////////////////////
9///
10/// \class TRlmdFile
11///
12/// This Class is used to read and write RLMD files in the
13/// root framework.
14///
15/////////////////////////////////////////////////////////////////
16
17#include <string>
18
19#ifdef __APPLE__
20#include <_types/_uint32_t.h>
21#else
22#include <cstdint>
23#endif
24
25#include "TRawFile.h"
26
27#include "TRlmdEvent.h"
28
29/// Reader for HIL .rrlmd files
30
31#define COMMENT_LEN 362-12
32#define FNAME_LEN 12
33#define TEMPLEN 1480
34
35typedef struct
36{
37 // apart from date, time, and templateName nothing seems to change from the default?
38 uint16_t dataLength; // 1000 16bit-words of data in this header
39 uint16_t totalLength; // 1024 16bit-words total in this header
40 uint16_t type; // 1
41 uint16_t subType; // 1
42 uint16_t usedLength; // 1000 16bit-words of data used
43 uint8_t fragment; // 0
44 uint8_t lastFragment; // 0
45 uint32_t bufferNumTS; // 0
46 uint32_t fragments; // 0
47 uint32_t free[7];
48 uint32_t file_number; // 1
49 char label[8]; // F0000XX0 (?)
50 char date[12]; // "dd-mmm-yyyy"
51 char time[8]; // "hh:mm:ss"
52 uint16_t runIdLength; // 0
53 char runId[66];
54 uint16_t expNameLength; // 0
55 char expName[34];
56 uint16_t commentLength; // 0
57 char comment[COMMENT_LEN];
58 char fileName[FNAME_LEN]; // empty
59 uint16_t eventFileFormat; // always 0 ?
60 uint16_t bhFlag; // 0
63 uint16_t templateNameLength; // 0x5c6 = 1478 (compared to TEMPLEN 1480)
64 uint16_t numberOfEvents; // not used ?
65 uint16_t eAbLength; // no idea what eAb stands for, but this seems to always be 0x414 = 1044
66 uint16_t eAbNf; // 0
67 char templateName[TEMPLEN];
69
70typedef struct {
71 uint16_t dataLength; // always 0x3e8?
72 uint16_t totalLength; // always 0x400?
73 uint16_t type; // always 3
74 uint16_t subType; // always 0?
75 uint16_t usedLength; // always 0?
76 char date[12]; // "dd-mmm-yyyy"
77 char time[8]; // "hh:mm:ss"
78 uint32_t expTime; // different values, e.g. 0, 2, or 3
80
81typedef struct {
82 uint16_t dataLength;
83 uint16_t totalLength;
84 uint16_t type;
85 uint16_t subType;
86 uint16_t usedLength;
87 uint8_t fragment;
88 uint8_t lastFragment;
89 uint32_t bufferNumTS;
91 uint32_t free[7];
93
94class TRlmdFile : public TRawFile {
95public:
96 TRlmdFile(); ///< default constructor
97 TRlmdFile(const char* filename, TRawFile::EOpenType open_type = TRawFile::EOpenType::kRead);
98 ~TRlmdFile() override; ///< destructor
99
100 bool Open(const char* filename) override; ///< Open input file
101
102 void Close() override; ///< Close input file
103
104 using TObject::Read;
105 using TObject::Write;
106#ifndef __CINT__
107 int Read(std::shared_ptr<TRawEvent> rlmdEvent) override; ///< Read one event from the file
108#endif
109 void Skip(size_t nofEvents) override; ///< Skip nofEvents from the file
110 std::string Status(bool long_file_description = true) override;
111
112 int GetRunNumber() override;
113 int GetSubRunNumber() override;
114
115#ifndef __CINT__
116 std::shared_ptr<TRawEvent> NewEvent() override { return std::make_shared<TRlmdEvent>(); }
117#endif
118private:
119 time_t ConvertToEpoch(const std::string& date, const std::string& time);
120 std::string fStartDate;
121 std::string fStartTime;
122 std::string fStopDate;
123 std::string fStopTime;
124 std::string fTemplate;
125 std::ifstream fInputStream;
126
128 size_t fBuffersRead{0};
129
130protected:
131 /// \cond CLASSIMP
132 ClassDefOverride(TRlmdFile, 0) // Used to open and write RLMD Files
133 /// \endcond
134};
135/*! @} */
136#endif // TRlmdFile.h
Reader for raw files.
Definition TRawFile.h:31
RlmdBufferHeader fBufferHeader
Definition TRlmdFile.h:127
std::ifstream fInputStream
Definition TRlmdFile.h:125
int GetSubRunNumber() override
void Close() override
Close input file.
int Read(std::shared_ptr< TRawEvent > rlmdEvent) override
Read one event from the file.
TRlmdFile()
default constructor
Definition TRlmdFile.cxx:33
std::string fTemplate
Definition TRlmdFile.h:124
~TRlmdFile() override
destructor
Definition TRlmdFile.cxx:48
std::string fStopDate
Definition TRlmdFile.h:122
std::string Status(bool long_file_description=true) override
Definition TRlmdFile.cxx:54
std::string fStartDate
Definition TRlmdFile.h:120
std::string fStartTime
Definition TRlmdFile.h:121
time_t ConvertToEpoch(const std::string &date, const std::string &time)
std::string fStopTime
Definition TRlmdFile.h:123
std::shared_ptr< TRawEvent > NewEvent() override
Definition TRlmdFile.h:116
int GetRunNumber() override
size_t fBuffersRead
Definition TRlmdFile.h:128
void Skip(size_t nofEvents) override
Skip nofEvents from the file.
bool Open(const char *filename) override
Open input file.
Definition TRlmdFile.cxx:81
#define FNAME_LEN
Definition TRlmdFile.h:32
#define TEMPLEN
Definition TRlmdFile.h:33
#define COMMENT_LEN
Reader for HIL .rrlmd files.
Definition TRlmdFile.h:31
uint16_t totalLength
Definition TRlmdFile.h:83
uint16_t dataLength
Definition TRlmdFile.h:82
uint32_t numberOfFragments
Definition TRlmdFile.h:90
uint16_t subType
Definition TRlmdFile.h:85
uint16_t type
Definition TRlmdFile.h:84
uint32_t bufferNumTS
Definition TRlmdFile.h:89
uint8_t fragment
Definition TRlmdFile.h:87
uint8_t lastFragment
Definition TRlmdFile.h:88
uint16_t usedLength
Definition TRlmdFile.h:86
uint32_t numberOfShortParameters
Definition TRlmdFile.h:61
uint16_t subType
Definition TRlmdFile.h:41
uint32_t numberOfLongParameters
Definition TRlmdFile.h:62
uint16_t eventFileFormat
Definition TRlmdFile.h:59
uint32_t fragments
Definition TRlmdFile.h:46
uint16_t dataLength
Definition TRlmdFile.h:38
uint16_t usedLength
Definition TRlmdFile.h:42
uint8_t lastFragment
Definition TRlmdFile.h:44
uint16_t eAbNf
Definition TRlmdFile.h:66
uint16_t numberOfEvents
Definition TRlmdFile.h:64
uint32_t bufferNumTS
Definition TRlmdFile.h:45
uint32_t file_number
Definition TRlmdFile.h:48
uint16_t type
Definition TRlmdFile.h:40
uint16_t expNameLength
Definition TRlmdFile.h:54
uint16_t commentLength
Definition TRlmdFile.h:56
uint16_t bhFlag
Definition TRlmdFile.h:60
uint16_t runIdLength
Definition TRlmdFile.h:52
uint16_t eAbLength
Definition TRlmdFile.h:65
uint8_t fragment
Definition TRlmdFile.h:43
uint16_t templateNameLength
Definition TRlmdFile.h:63
uint16_t totalLength
Definition TRlmdFile.h:39