REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestRawBiPoToSignalProcess.cxx
1/*************************************************************************
2 * This file is part of the REST software framework. *
3 * *
4 * Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
5 * For more information see http://gifna.unizar.es/trex *
6 * *
7 * REST is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * REST is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have a copy of the GNU General Public License along with *
18 * REST in $REST_PATH/LICENSE. *
19 * If not, see http://www.gnu.org/licenses/. *
20 * For the list of contributors see $REST_PATH/CREDITS. *
21 *************************************************************************/
22
81#include "TRestRawBiPoToSignalProcess.h"
82
83using namespace std;
84
85#include "TTimeStamp.h"
86// #include "zlib.h"
87
89
94
99
105
106 SetLibraryVersion(LIBRARY_VERSION);
107}
108
115
116 fEventCounter = 0;
117
118 tStart = 0; // timeStamp of the run initially set to 0
119 RESTInfo << "TRestRawBiPoToSignalProcess::InitProcess" << RESTendl;
120
122 char buffer[CTAG_SZ];
123 if (fread(buffer, sizeof(char), CTAG_SZ, fInputBinFile) != CTAG_SZ) {
124 printf("Error: could not read first prefix.\n");
125 exit(1);
126 }
127 totalbytesRead += CTAG_SZ * sizeof(char);
128
129 if (strcmp(buffer, TAG_RUN_BIPO) != 0) {
130 RESTError << "The file " << fInputFileNames[0] << " is not BiPo format" << RESTendl;
131 exit(1);
132 }
133
135 ReadHeader();
137}
138
143 RESTDebug << "-------Start of TRestRawBiPoToSignalProcess::ProcessEvent------------" << RESTendl;
145 RESTDebug << "--- Starting to process event id: " << fEventCounter << RESTendl;
146
148 fSignalEvent->Initialize();
149 fSignalEvent->SetRunOrigin(fRunOrigin);
150 fSignalEvent->SetSubRunOrigin(fSubRunOrigin);
151 fSignalEvent->SetID(fEventCounter);
152
153 char buffer[CTAG_SZ];
154 if (fread(buffer, sizeof(char), CTAG_SZ, fInputBinFile) != CTAG_SZ) {
155 printf("Error: could not read first ACQ prefix.\n");
156 exit(1);
157 }
158 totalbytesRead += CTAG_SZ * sizeof(char);
159
160 if (strcmp(buffer, TAG_RUN_STOP) == 0) {
161 RESTDebug << "The run ends" << RESTendl;
162 ReadFooter();
163 // The processing thread finishes
164 return nullptr;
165 }
166
167 if (strcmp(buffer, TAG_ACQ) == 0 || strcmp(buffer, TAG_ACQ_2) == 0) {
168 RESTDebug << "A new event comes" << RESTendl;
169
170 std::vector<uint16_t> data;
171 Int_t boardAddress = ReadBiPoEventData(data);
172 Int_t bIndex = GetBoardIndex(boardAddress);
173
174 if (bIndex < 0) {
175 RESTError << "TRestRawBiPoToSignalProcess::ProcessEvent." << RESTendl;
176 RESTError << "Board index not found!" << RESTendl;
177 return nullptr;
178 }
179
180 RESTDebug << "Number of channels : " << fMatacqBoard[bIndex].nChannels << RESTendl;
181 for (int nch = 0; nch < fMatacqBoard[bIndex].nChannels; nch++) {
182 TRestRawSignal sgnl;
183 sgnl.Initialize();
184 sgnl.SetSignalID(100 * boardAddress + nch);
185
186 Int_t nBins = fBiPoSettings[bIndex].t1_window + fBiPoSettings[bIndex].t2_window;
187
188 for (int b = 0; b < nBins; b++) {
189 Short_t sdata = data[GetBin(bIndex, nch, b)];
190 Short_t v = MATACQ_ZERO - sdata; // Inversing polarity
191 if (sdata == MATACQ_OVERFLOW) {
192 v = 0;
193 }
194 if (sdata == MATACQ_UNDERFLOW) {
195 v = TMath::Power(2, 12);
196 }
197
198 if (sgnl.GetSignalID() >= 0) sgnl.AddPoint(v);
199 }
200
201 RESTDebug << "Adding signal with id : " << sgnl.GetID() << RESTendl;
202 RESTDebug << "Number of points: " << sgnl.GetNumberOfPoints() << RESTendl;
203 fSignalEvent->AddSignal(sgnl);
204 }
205
206 return fSignalEvent;
207 }
208
209 // The processing thread will be finished if return nullptr is reached
210 return nullptr;
211}
212
219 RESTDebug << "Entering TRestRawBiPoToSignalProcess::ReadFooter" << RESTendl;
220 int32_t tmp;
221
223 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
224 printf("Error: could not read timestamp.\n");
225 exit(1);
226 }
227 totalbytesRead += sizeof(int32_t);
228 Double_t runEndTime = (Double_t)tmp;
229
230 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
231 printf("Error: could not read timestamp (us).\n");
232 exit(1);
233 }
234 totalbytesRead += sizeof(int32_t);
235 runEndTime += 1.e-6 * (Double_t)tmp;
236
237 fRunInfo->SetEndTimeStamp(runEndTime);
238}
239
246 RESTDebug << "Entering TRestRawBiPoToSignalProcess::ReadHeader" << RESTendl;
247 int32_t tmp;
248
250 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
251 printf("Error: could not read timestamp.\n");
252 exit(1);
253 }
254 totalbytesRead += sizeof(int32_t);
255 Double_t runStartTime = (Double_t)tmp;
256
257 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
258 printf("Error: could not read timestamp (us).\n");
259 exit(1);
260 }
261 totalbytesRead += sizeof(int32_t);
262 runStartTime += 1.e-6 * (Double_t)tmp;
263
264 fRunInfo->SetStartTimeStamp(runStartTime);
265
266 uint32_t nBoards;
267 if (fread(&nBoards, sizeof(uint32_t), 1, fInputBinFile) != 1) {
268 printf("Error: could not read nBoards.\n");
269 exit(1);
270 }
271 totalbytesRead += sizeof(int32_t);
272
273 fNBoards = nBoards;
274 RESTDebug << "N boards: " << fNBoards << RESTendl;
275
276 for (int n = 0; n < fNBoards; n++) {
277 ReadBoard();
278
279 int32_t bipo;
280 if (fread(&bipo, sizeof(int32_t), 1, fInputBinFile) != 1) {
281 printf("Error: could not read BiPo flag.\n");
282 exit(1);
283 }
284 totalbytesRead += sizeof(int32_t);
285
286 if (bipo != 1) {
287 RESTError << "The file " << fInputFileNames[0] << " is not BiPo format" << RESTendl;
288 exit(1);
289 }
290
292 }
293}
294
299 MatacqBoard board;
300 int32_t tmp;
301 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
302 printf("Error: could not read base matacq address.\n");
303 exit(1);
304 }
305 totalbytesRead += sizeof(int32_t);
306 board.address = tmp;
307
308 if (fread(&board.en_ch[0], sizeof(int32_t), MATACQ_N_CH, fInputBinFile) != MATACQ_N_CH) {
309 printf("Error: could not read base matacq en_ch.\n");
310 exit(1);
311 }
312 totalbytesRead += MATACQ_N_CH * sizeof(int32_t);
313
314 int cnt = 0;
315 board.nChannels = 0;
316 for (int ich = (MATACQ_N_CH - 1); ich >= 0; ich--) {
317 if (board.en_ch[ich] == 1) {
318 board.nChannels = board.nChannels + 1;
319 board.ch_shifts[ich] = cnt;
320 cnt++;
321 } else {
322 board.ch_shifts[ich] = -1;
323 }
324 }
325
326 if (fread(&board.trg_ch[0], sizeof(int32_t), MATACQ_N_CH, fInputBinFile) != MATACQ_N_CH) {
327 printf("Error: could not read base matacq trg_ch.\n");
328 exit(1);
329 }
330 totalbytesRead += MATACQ_N_CH * sizeof(int32_t);
331
332 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
333 printf("Error: could not read Trig type.\n");
334 exit(1);
335 }
336 totalbytesRead += sizeof(int32_t);
337 board.Trig_Type = tmp;
338
339 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
340 printf("Error: could not read Threshold.\n");
341 exit(1);
342 }
343 totalbytesRead += sizeof(int32_t);
344 board.Threshold = tmp;
345
346 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
347 printf("Error: could not read Nb_Acq.\n");
348 exit(1);
349 }
350 totalbytesRead += sizeof(int32_t);
351 board.Nb_Acq = tmp;
352
353 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
354 printf("Error: could not read Posttrig.\n");
355 exit(1);
356 }
357 totalbytesRead += sizeof(int32_t);
358 board.Posttrig = tmp;
359
360 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
361 printf("Error: could not read Time_Tag_On.\n");
362 exit(1);
363 }
364 totalbytesRead += sizeof(int32_t);
365 board.Time_Tag_On = tmp;
366
367 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
368 printf("Error: could not read Sampling_GHz.\n");
369 exit(1);
370 }
371 totalbytesRead += sizeof(int32_t);
372 board.Sampling_GHz = tmp;
373
374 RESTDebug << "MATACQ Base memory address: " << board.address << RESTendl;
375 RESTDebug << "En[0]: " << board.en_ch[0] << " En[1]: " << board.en_ch[1] << " En[2]: " << board.en_ch[2]
376 << " En[3]: " << board.en_ch[3] << RESTendl;
377 RESTDebug << "Trg[0]: " << board.trg_ch[0] << " Trg[1]: " << board.trg_ch[1]
378 << " Trg[2]: " << board.trg_ch[2] << " Trg[3]: " << board.trg_ch[3] << RESTendl;
379 RESTDebug << " " << RESTendl;
380 RESTDebug << "Trigger type: " << board.Trig_Type << " Threshold: " << board.Threshold << RESTendl;
381 RESTDebug << "Nb_Acq: " << board.Nb_Acq << " Posttrig: " << board.Posttrig << RESTendl;
382 RESTDebug << "Time_Tag_On: " << board.Time_Tag_On << " Sampling_GHz: " << board.Sampling_GHz << RESTendl;
383 RESTDebug << " -- " << RESTendl;
384
385 fMatacqBoard.push_back(board);
386}
387
393 BiPoSettings bipo;
394
395 int32_t tmp;
396 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
397 printf("Error: could not read BiPo trigger address.\n");
398 exit(1);
399 }
400 totalbytesRead += sizeof(int32_t);
401 bipo.trigger_address = tmp;
402
403 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
404 printf("Error: could not read BiPo Win1 Posttrig.\n");
405 exit(1);
406 }
407 totalbytesRead += sizeof(int32_t);
408 bipo.Win1_Posttrig = tmp;
409
410 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
411 printf("Error: could not read BiPo timeout 200KHz.\n");
412 exit(1);
413 }
414 totalbytesRead += sizeof(int32_t);
415 bipo.Timeout_200KHz = tmp;
416
417 if (fread(&bipo.Trig_Chan[0], sizeof(int32_t), MATACQ_N_CH, fInputBinFile) != MATACQ_N_CH) {
418 printf("Error: could not read Trig_Chan.\n");
419 exit(1);
420 }
421 totalbytesRead += MATACQ_N_CH * sizeof(int32_t);
422
423 if (fread(&bipo.Level1_mV[0], sizeof(int32_t), MATACQ_N_CH, fInputBinFile) != MATACQ_N_CH) {
424 printf("Error: could not read Level1_mV.\n");
425 exit(1);
426 }
427 totalbytesRead += MATACQ_N_CH * sizeof(int32_t);
428
429 if (fread(&bipo.Level2_mV[0], sizeof(int32_t), MATACQ_N_CH, fInputBinFile) != MATACQ_N_CH) {
430 printf("Error: could not read Level2_mV.\n");
431 exit(1);
432 }
433 totalbytesRead += MATACQ_N_CH * sizeof(int32_t);
434
435 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
436 printf("Error: could not read BiPo Win1 Posttrig.\n");
437 exit(1);
438 }
439 totalbytesRead += sizeof(int32_t);
440 bipo.t1_window = tmp;
441
442 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
443 printf("Error: could not read BiPo Win1 Posttrig.\n");
444 exit(1);
445 }
446 totalbytesRead += sizeof(int32_t);
447 bipo.t2_window = tmp;
448
449 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
450 printf("Error: could not read BiPo Win1 Posttrig.\n");
451 exit(1);
452 }
453 totalbytesRead += sizeof(int32_t);
454 bipo.t1_t2_timeout = tmp;
455
456 RESTDebug << "BiPo trigger address: " << bipo.trigger_address << RESTendl;
457 RESTDebug << "Win1 Posttrig: " << bipo.Win1_Posttrig << RESTendl;
458 RESTDebug << "Timeout [200KHz]: " << bipo.Timeout_200KHz << RESTendl;
459 RESTDebug << " " << RESTendl;
460 RESTDebug << "Trig_Chan[0]: " << bipo.Trig_Chan[0] << " Trig_Chan[1]: " << bipo.Trig_Chan[1]
461 << " Trig_Chan[2]: " << bipo.Trig_Chan[2] << " Trig_Chan[3]: " << bipo.Trig_Chan[3] << RESTendl;
462 RESTDebug << "Level1_mV[0]: " << bipo.Level1_mV[0] << " Level1_mV[1]: " << bipo.Level1_mV[1]
463 << " Level1_mV[2]: " << bipo.Level1_mV[2] << " Level1_mV[3]: " << bipo.Level1_mV[3] << RESTendl;
464 RESTDebug << "Level2_mV[0]: " << bipo.Level2_mV[0] << " Level2_mV[1]: " << bipo.Level2_mV[1]
465 << " Level2_mV[2]: " << bipo.Level2_mV[2] << " Level2_mV[3]: " << bipo.Level2_mV[3] << RESTendl;
466 RESTDebug << " " << RESTendl;
467 RESTDebug << "T1 window: " << bipo.t1_window << RESTendl;
468 RESTDebug << "T2 window: " << bipo.t2_window << RESTendl;
469 RESTDebug << "T1-T2 timeout: " << bipo.t1_t2_timeout << RESTendl;
470 RESTDebug << " -- " << RESTendl;
471
472 fBiPoSettings.push_back(bipo);
473}
474
485Int_t TRestRawBiPoToSignalProcess::ReadBiPoEventData(std::vector<uint16_t>& mdata) {
486 int32_t tmp;
487 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
488 printf("Error: could not read tmp .\n");
489 exit(1);
490 }
491 totalbytesRead += sizeof(int32_t);
492 Int_t boardAddress = tmp;
493
494 RESTDebug << " Event address --> " << boardAddress << RESTendl;
495
496 // int32_t event_address = tmp; // It is this important?
497 // Probably board where it took place the event?
498
499 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
500 printf("Error: could not read tmp .\n");
501 exit(1);
502 }
503 totalbytesRead += sizeof(int32_t);
504
505 Double_t timeStamp = tmp;
506
507 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
508 printf("Error: could not read tmp .\n");
509 exit(1);
510 }
511 totalbytesRead += sizeof(int32_t);
512 timeStamp += 1.e-6 * (Double_t)tmp;
513
514 fSignalEvent->SetTime(timeStamp);
515
516 RESTDebug << "Event time stamp: " << timeStamp << RESTendl;
517
518 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
519 printf("Error: could not read tmp .\n");
520 exit(1);
521 }
522 totalbytesRead += sizeof(int32_t);
523 int32_t data_size = tmp;
524 RESTDebug << "Data size --> " << tmp << RESTendl;
525
526 if (fread(&tmp, sizeof(int32_t), 1, fInputBinFile) != 1) {
527 printf("Error: could not read BiPo trigger address.\n");
528 exit(1);
529 }
530 totalbytesRead += sizeof(int32_t);
531 RESTDebug << " T1-T2 distance --> " << tmp << RESTendl;
532 fSignalEvent->SetAuxiliar(tmp);
533
534 mdata.resize(data_size);
535 if (fread(&mdata[0], sizeof(uint16_t), data_size, fInputBinFile) != (size_t)data_size) {
536 printf("Error: could not read MATACQ data.\n");
537 exit(1);
538 }
539 totalbytesRead += data_size * sizeof(uint16_t);
540
541 return boardAddress;
542}
543
549 for (unsigned int n = 0; n < fMatacqBoard.size(); n++)
550 if (fMatacqBoard[n].address == address) return n;
551
552 return -1;
553}
554
559Int_t TRestRawBiPoToSignalProcess::GetBin(Int_t boardIndex, Int_t channel, Int_t bin) {
560 MatacqBoard board = fMatacqBoard[boardIndex];
561 return board.ch_shifts[channel] + board.nChannels * bin;
562}
563
569
570 RESTMetadata << "Number of Matacq boards : " << fNBoards << RESTendl;
571 RESTMetadata << " " << RESTendl;
572
573 for (int n = 0; n < fNBoards; n++) {
574 RESTMetadata << " " << RESTendl;
575 RESTMetadata << "Board address: " << fMatacqBoard[n].address << RESTendl;
576 RESTMetadata << "----" << RESTendl;
577 RESTMetadata << " - Enabled channels: " << fMatacqBoard[n].en_ch[0] << " - "
578 << fMatacqBoard[n].en_ch[1] << " - " << fMatacqBoard[n].en_ch[2] << " - "
579 << fMatacqBoard[n].en_ch[3] << RESTendl;
580 RESTMetadata << " - Trigger channels: " << fMatacqBoard[n].trg_ch[0] << " - "
581 << fMatacqBoard[n].trg_ch[1] << " - " << fMatacqBoard[n].trg_ch[2] << " - "
582 << fMatacqBoard[n].trg_ch[3] << RESTendl;
583 RESTMetadata << " - Trigger type: " << fMatacqBoard[n].Trig_Type << RESTendl;
584 RESTMetadata << " - Threshold: " << fMatacqBoard[n].Threshold << RESTendl;
585 RESTMetadata << " - Nb_Acq: " << fMatacqBoard[n].Nb_Acq << RESTendl;
586 RESTMetadata << " - Posttrig: " << fMatacqBoard[n].Posttrig << RESTendl;
587 RESTMetadata << " - Time_Tag_On: " << fMatacqBoard[n].Time_Tag_On << RESTendl;
588 RESTMetadata << " - Sampling_GHz: " << fMatacqBoard[n].Sampling_GHz << RESTendl;
589 RESTMetadata << " " << RESTendl;
590 RESTMetadata << "BiPo trigger settings. Address : " << fBiPoSettings[n].trigger_address << RESTendl;
591 RESTMetadata << "----" << RESTendl;
592 RESTMetadata << " - Win1 Posttrig: " << fBiPoSettings[n].Win1_Posttrig << RESTendl;
593 RESTMetadata << " - Timeout [200KHz]: " << fBiPoSettings[n].Timeout_200KHz << RESTendl;
594 RESTMetadata << " - Trigger channels: " << fBiPoSettings[n].Trig_Chan[0] << " - "
595 << fBiPoSettings[n].Trig_Chan[1] << " - " << fBiPoSettings[n].Trig_Chan[2] << " - "
596 << fBiPoSettings[n].Trig_Chan[3] << RESTendl;
597 RESTMetadata << " - Level 1 [mV]: " << fBiPoSettings[n].Level1_mV[0] << " - "
598 << fBiPoSettings[n].Level1_mV[1] << " - " << fBiPoSettings[n].Level1_mV[2] << " - "
599 << fBiPoSettings[n].Level1_mV[3] << RESTendl;
600 RESTMetadata << " - Level 2 [mV]: " << fBiPoSettings[n].Level2_mV[0] << " - "
601 << fBiPoSettings[n].Level2_mV[2] << " - " << fBiPoSettings[n].Level2_mV[2] << " - "
602 << fBiPoSettings[n].Level2_mV[3] << RESTendl;
603 RESTMetadata << " - T1 window: " << fBiPoSettings[n].t1_window << RESTendl;
604 RESTMetadata << " - T2 window: " << fBiPoSettings[n].t2_window << RESTendl;
605 RESTMetadata << " - T1-T2 timeout: " << fBiPoSettings[n].t1_t2_timeout << RESTendl;
606 }
607
608 RESTMetadata << "+++++++++++++++++++++++++++++++++++++++++++++++++" << RESTendl;
609}
TRestRun * fRunInfo
< Pointer to TRestRun object where to find metadata.
A base class for any REST event.
Definition: TRestEvent.h:38
void SetTime(Double_t time)
Definition: TRestEvent.cxx:85
virtual void PrintMetadata()
Implemented it in the derived metadata class to print out specific metadata information.
endl_t RESTendl
Termination flag object for TRestStringOutput.
void SetLibraryVersion(TString version)
Set the library version of this metadata class.
TRestStringOutput::REST_Verbose_Level GetVerboseLevel()
returns the verboselevel in type of REST_Verbose_Level enumerator
An process to read binary data from BiPo electronics.
TRestEvent * ProcessEvent(TRestEvent *inputEvent) override
The main processing event function.
Int_t GetBin(Int_t boardIndex, Int_t channel, Int_t bin)
It returns the ordered channel value from the Matacq memory buffer for a given board,...
std::vector< BiPoSettings > fBiPoSettings
A vector of BiPo settings.
Int_t ReadBiPoEventData(std::vector< uint16_t > &mdata)
This method reads the event data corresponding to one event. The sampled channel data that will be ma...
void ReadBoard()
This method reads the settings of one of the Matacq boards.
void ReadFooter()
This method reads the header data containing the run timestamp, the number of Matacq boards,...
TRestRawBiPoToSignalProcess()
Default constructor.
Int_t fNBoards
The number of Matacq boards present on the setup.
void ReadHeader()
This method reads the header data containing the run timestamp, the number of Matacq boards,...
UInt_t GetBoardIndex(Int_t address)
It returns the std::vector storage index using the hardware address of the Matacq board.
~TRestRawBiPoToSignalProcess()
Default destructor.
Int_t fEventCounter
A temporary counter used to define the event id.
std::vector< MatacqBoard > fMatacqBoard
A vector of Matacq boards that contain the information of each card.
void InitProcess() override
Process initialization. Data members that require initialization just before start processing should ...
void PrintMetadata() override
Prints out the Matacq boards configuration and BiPo setup.
void ReadBiPoSetup()
This method reads the header data corresponding to the BiPo settings of one card.
void Initialize() override
Function to initialize input/output event members and define the section name.
It defines a Short_t array with a physical parameter that evolves in time using a fixed time bin.
Int_t GetID() const
Returns the value of signal ID.
void Initialize()
Initialization of TRestRawSignal members.
void SetSignalID(Int_t sID)
It sets the id number of the signal.
void AddPoint(Short_t)
Adds a new point to the end of the signal data array.
Int_t GetSignalID() const
Returns the value of signal ID.
Int_t GetNumberOfPoints() const
Returns the actual number of points, or size of the signal.
virtual void InitProcess() override
To be executed at the beginning of the run (outside event loop)
void Initialize() override
Making default settings.
@ REST_Debug
+show the defined debug messages
Int_t GetChar(std::string hint="Press a KEY to continue ...")
Helps to pause the program, printing a message before pausing.
A structure to store the BiPo settings.
A structure to store the configuration settings of Matacq board.
int32_t address
The base memory address of the Matacq board.