You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/configurationParameters.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,6 +69,7 @@ The parameters related to 3rd-party libraries are described here for convenience
69
69
| consumer-fileRecorder-*| fileName | string || Path to the file where to record data. The following variables are replaced at runtime: ${XXX} -> get variable XXX from environment, %t -> unix timestamp (seconds since epoch), %T -> formatted date/time, %i -> equipment ID of each data chunk (used to write data from different equipments to different output files), %l -> link ID (used to write data from different links to different output files). |
70
70
| consumer-fileRecorder-*| filesMax | int | 1 | If 1 (default), file splitting is disabled: file is closed whenever a limit is reached on a given recording stream. Otherwise, file splitting is enabled: whenever the current file reaches a limit, it is closed an new one is created (with an incremental name). If <=0, an unlimited number of incremental chunks can be created. If non-zero, it defines the maximum number of chunks. The file name is suffixed with chunk number (by default, ".001, .002, ..." at the end of the file name. One may use "%f" in the file name to define where this incremental file counter is printed. |
71
71
| consumer-fileRecorder-*| pagesMax | int | 0 | Maximum number of data pages accepted by recorder. If zero (default), no maximum set.|
72
+
| consumer-fileRecorder-*| tfMax | int | 0 | Maximum number of timeframes accepted by recorder. If zero (default), no maximum set.|
72
73
| consumer-processor-*| ensurePageOrder | int | 0 | If set, ensures that data pages goes out of the processing pool in same order as input (which is not guaranteed with multithreading otherwise). This option adds latency. |
73
74
| consumer-processor-*| libraryPath | string || Path to the library file providing the processBlock() function to be used. |
74
75
| consumer-processor-*| numberOfThreads | int | 1 | Number of threads running the processBlock() function in parallel. |
@@ -91,6 +92,7 @@ The parameters related to 3rd-party libraries are described here for convenience
91
92
| consumer-zmq-*| zmqOptions | string || Additional ZMQ options, as a comma-separated list of key=value pairs. Possible keys: ZMQ_CONFLATE, ZMQ_IO_THREADS, ZMQ_LINGER, ZMQ_SNDBUF, ZMQ_SNDHWM, ZMQ_SNDTIMEO. |
92
93
| equipment-*| blockAlign | bytes | 2M | Alignment of the beginning of the big memory block from which the pool is created. Pool will start at a multiple of this value. Each page will then begin at a multiple of memoryPoolPageSize from the beginning of big block. |
93
94
| equipment-*| consoleStatsUpdateTime | double | 0 | If set, number of seconds between printing statistics on console. |
95
+
| equipment-*| ctpMode | int | 0 | If set, the detector field (CTP run mask) is checked. Incoming data is discarded until a new bit is set, and discarded again after this bit is unset. Automatically implies rdhCheckDetectorField=1 and rdhCheckDetectorField=1. |
94
96
| equipment-*| dataPagesLogPath | string || Path where to save a summary of each data pages generated by equipment. |
95
97
| equipment-*| debugFirstPages | int | 0 | If set, print debug information for first (given number of) data pages readout. |
96
98
| equipment-*| disableOutput | int | 0 | If non-zero, data generated by this equipment is discarded immediately and is not pushed to output fifo of readout thread. Used for testing. |
@@ -116,6 +118,7 @@ The parameters related to 3rd-party libraries are described here for convenience
116
118
| equipment-*| saveErrorPagesPath | string || Path where to save data pages with errors (when feature enabled). |
117
119
| equipment-*| stopOnError | int | 0 | If 1, readout will stop automatically on equipment error. |
118
120
| equipment-*| TFperiod | int | 128 | Duration of a timeframe, in number of LHC orbits. |
121
+
| equipment-*| verbose | int | 0 | If set, extra debug messages may be logged. |
119
122
| equipment-cruemulator-*| cruBlockSize | int | 8192 | Size of a RDH block. |
120
123
| equipment-cruemulator-*| cruId | int | 0 | CRU Id, used for CRU Id field in RDH. |
121
124
| equipment-cruemulator-*| dpwId | int | 0 | CRU end-point Id (data path wrapper id), used for DPW Id field in RDH. |
Copy file name to clipboardExpand all lines: doc/releaseNotes.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -460,3 +460,11 @@ This file describes the main feature changes for each readout.exe released versi
460
460
461
461
## v2.10.4 - 18/05/2022
462
462
- Changed level of "Bypassing RORC firmware compatibility check", retrograded from support warning to developper info.
463
+
464
+
## v2.11 - 15/06/2022
465
+
- Added orbit counter to stats.
466
+
- Updated configuration parameters:
467
+
- equipment-*.verbose: adds some extra verbosity.
468
+
- equipment-*.ctpMode: enables CTP mode, data is discarded until start of run detected in RDH detector field pattern, and after corresponding end of run is detected.
469
+
- consumer-fileRecorder-*.tfMax: when set, recording will stop after reaching given number of timeframes.
470
+
- o2-readout-rawreader: added option to dump stats on HBF size.
theLog->log(LogInfoDevel_(3007), "Maximum number of TF in file reached");
102
+
}
103
+
isFull = true;
104
+
close();
105
+
return Status::FileLimitsReached;
106
+
}
91
107
if (fp == NULL) {
92
108
return Status::Error;
93
109
}
@@ -113,6 +129,10 @@ class FileHandle
113
129
unsignedlonglong maxFileSize = 0; // max number of bytes to write to file (0=no limit)
114
130
int counterPages = 0; // number of pages received so far
115
131
int maxPages = 0; // max number of pages accepted by recorder (0=no limit)
132
+
uint64_t lastTFid = undefinedTimeframeId; // id of last TF written
133
+
int counterTF = 0; // number of TF received so far
134
+
int maxTF = 0; // max number of timeframes accepted by recorder (0=no limit)
135
+
116
136
FILE* fp = NULL; // handle to file for I/O
117
137
InfoLogger* theLog = nullptr; // handle to infoLogger for messages
118
138
bool isFull = false; // flag set when maximum file size reached
@@ -165,6 +185,14 @@ class ConsumerFileRecorder : public Consumer
165
185
}
166
186
}
167
187
188
+
// configuration parameter: | consumer-fileRecorder-* | tfMax | int | 0 | Maximum number of timeframes accepted by recorder. If zero (default), no maximum set.|
189
+
maxFileTF = 0;
190
+
if (cfg.getOptionalValue<int>(cfgEntryPoint + ".tfMax", maxFileTF) == 0) {
// configuration parameter: | consumer-fileRecorder-* | dataBlockHeaderEnabled | int | 0 | Enable (1) or disable (0) the writing to file of the internal readout header (Readout DataBlock.h) between the data pages, to easily navigate through the file without RDH decoding. If disabled, the raw data pages received from CRU are written without further formatting. |
0 commit comments