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
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,8 @@ The parameters related to 3rd-party libraries are described here for convenience
69
69
| consumer-FairMQChannel-*| unmanagedMemorySize | bytes || Size of the memory region to be created. c.f. FairMQ::FairMQUnmanagedRegion.h. If not set, no special FMQ memory region is created. |
70
70
| consumer-fileRecorder-*| bytesMax | bytes | 0 | Maximum number of bytes to write to each file. Data pages are never truncated, so if writing the full page would exceed this limit, no data from that page is written at all and file is closed. If zero (default), no maximum size set.|
71
71
| 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. |
72
-
| consumer-fileRecorder-*| dropEmptyHBFrames | int | 0 | If 1, memory pages are scanned and empty HBframes are discarded, i.e. couples of packets which contain only RDH, the first one with pagesCounter=0 and the second with stop bit set. This setting does not change the content of in-memory data pages, other consumers would still get full data pages with empty packets. This setting is meant to reduce the amount of data recorded for continuous detectors in triggered mode.|
72
+
| consumer-fileRecorder-*| dropEmptyHBFrames | int | 0 | If 1, memory pages are scanned and empty HBframes are discarded, i.e. couples of packets which contain only RDH, the first one with pagesCounter=0 and the second with stop bit set. This setting does not change the content of in-memory data pages, other consumers would still get full data pages with empty packets. This setting is meant to reduce the amount of data recorded for continuous detectors in triggered mode. Use with dropEmptyHBFramesTriggerMask, if some empty frames with specific trigger types need to be kept (eg TF or SOC). |
73
+
| consumer-fileRecorder-*| dropEmptyHBFramesTriggerMask | int | 0 | (when using dropEmptyHBFrames = 1) empty HB frames are kept if any bit in RDH TriggerType field matches this pattern (RDHTriggerType & TriggerMask != 0). To be provided as a decimal value: eg 2048 (TF triggers, bit 11), 3584 (TF + SOC + EOC bits 9,10,11). |
73
74
| 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). |
74
75
| 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. |
75
76
| consumer-fileRecorder-*| pagesMax | int | 0 | Maximum number of data pages accepted by recorder. If zero (default), no maximum set.|
Copy file name to clipboardExpand all lines: doc/releaseNotes.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -504,3 +504,10 @@ This file describes the main feature changes for each readout.exe released versi
504
504
505
505
## v2.15.2 - 08/12/2022
506
506
- Added ROC link Id for some log messages, as provided from new superpage metadata link field from ROC library.
507
+
508
+
## next version
509
+
- Superpage internal metadata not stored at beginning of page but separately in heap, by default. Behavior can be adjusted with MemoryPool::headerReservedSpace.
510
+
- equipment-CruEmulator: set TF trigger type (bit 11) on new TF. Used for dropEmptyHBFramesTriggerMask tests.
511
+
- Updated configuration parameters:
512
+
- added consumer-fileRecorder-*.dropEmptyHBFramesTriggerMask: when using dropEmptyHBFrames = 1, keep some empty HB frames with trigger type matching given (decimal) mask.
513
+
- Added support for RDHv7. Readout already accepts data from equipments with v7, but still generates data (internal sw generator) with v6, for compatibility with current software downstream.
@@ -849,6 +887,10 @@ int ConsumerFMQchannel::DDformatMessage(DataSetReference &bc, DDMessage &ddm) {
849
887
pf.HBid = id;
850
888
// create a copy of the reference, in a newly allocated object, so that reference is kept alive until this new object is destroyed in the cleanupCallback
851
889
pf.blockRef = newDataBlockContainerReference(br);
890
+
if (pf.blockRef == nullptr) {
891
+
throw __LINE__;
892
+
}
893
+
(*pf.blockRef)->memoryPagesPoolPtr = br->memoryPagesPoolPtr; // keep ref to memoryPagesPool for state updates
852
894
pendingFrames.push_back(pf);
853
895
};
854
896
@@ -874,7 +916,7 @@ int ConsumerFMQchannel::DDformatMessage(DataSetReference &bc, DDMessage &ddm) {
Copy file name to clipboardExpand all lines: src/ConsumerFileRecorder.cxx
+11-3Lines changed: 11 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -211,7 +211,7 @@ class ConsumerFileRecorder : public Consumer
211
211
}
212
212
}
213
213
214
-
// configuration parameter: | consumer-fileRecorder-* | dropEmptyHBFrames | int | 0 | If 1, memory pages are scanned and empty HBframes are discarded, i.e. couples of packets which contain only RDH, the first one with pagesCounter=0 and the second with stop bit set. This setting does not change the content of in-memory data pages, other consumers would still get full data pages with empty packets. This setting is meant to reduce the amount of data recorded for continuous detectors in triggered mode.|
214
+
// configuration parameter: | consumer-fileRecorder-* | dropEmptyHBFrames | int | 0 | If 1, memory pages are scanned and empty HBframes are discarded, i.e. couples of packets which contain only RDH, the first one with pagesCounter=0 and the second with stop bit set. This setting does not change the content of in-memory data pages, other consumers would still get full data pages with empty packets. This setting is meant to reduce the amount of data recorded for continuous detectors in triggered mode. Use with dropEmptyHBFramesTriggerMask, if some empty frames with specific trigger types need to be kept (eg TF or SOC). |
@@ -220,6 +220,13 @@ class ConsumerFileRecorder : public Consumer
220
220
}
221
221
theLog.log(LogInfoSupport_(3002), "Some packets with RDH-only payload will not be recorded to file, option dropEmptyHBFrames is enabled");
222
222
}
223
+
224
+
// configuration parameter: | consumer-fileRecorder-* | dropEmptyHBFramesTriggerMask | int | 0 | (when using dropEmptyHBFrames = 1) empty HB frames are kept if any bit in RDH TriggerType field matches this pattern (RDHTriggerType & TriggerMask != 0). To be provided as a decimal value: eg 2048 (TF triggers, bit 11), 3584 (TF + SOC + EOC bits 9,10,11). |
if ((dropEmptyHBFrames)&&(dropEmptyHBFramesTriggerMask)) {
227
+
theLog.log(LogInfoSupport_(3002), "Some packets with RDH-only payload will be recorded when their trigger type matches mask 0x%X", dropEmptyHBFramesTriggerMask);
228
+
}
229
+
223
230
}
224
231
225
232
~ConsumerFileRecorder() {}
@@ -504,14 +511,14 @@ class ConsumerFileRecorder : public Consumer
504
511
};
505
512
506
513
auto isEmptyHBstop = [&](RdhHandle& h) {
507
-
if ((h.getStopBit()) && (h.getHeaderSize() == h.getMemorySize())) {
@@ -642,6 +649,7 @@ class ConsumerFileRecorder : public Consumer
642
649
int maxFileTF = 0; // maximum number of TF to write (in each file)
643
650
int filesMax = 0; // maximum number of files to write (for each stream)
644
651
int dropEmptyHBFrames = 0; // if set, some empty packets are discarded (see logic in code)
652
+
int dropEmptyHBFramesTriggerMask = 0; // (when using dropEmptyHBFrames = 1) empty HB frames are kept if any bit in RDH TriggerType field matches this pattern. (TriggerType & TriggerMask != 0)
0 commit comments