27 #define MaxNChannels 8
33 #include "Functions.h"
53 printf(
"ERROR: can't reset the digitizer.\n");
152 printf(
"Warning: errors found during the programming of the digitizer.\nSome settings may not be executed\n");
162 int main(
int argc,
char *argv[])
197 uint32_t AllocatedSize, BufferSize;
202 uint64_t CurrentTime, PrevRateTime, ElapsedTime;
215 for(b=0; b<
MAXNB; b++) {
217 EHisto[b][ch] = NULL;
252 DPPParams[b].
thr[ch] = 100;
258 DPPParams[b].
nsbl[ch] = 2;
259 DPPParams[b].
gate[ch] = 200;
260 DPPParams[b].
pgate[ch] = 25;
264 DPPParams[b].
selft[ch] = 1;
270 DPPParams[b].
tvaw[ch] = 50;
272 DPPParams[b].
blthr = 3;
273 DPPParams[b].
bltmo = 100;
274 DPPParams[b].
trgho = 0;
282 for(b=0; b<
MAXNB; b++) {
304 printf(
"Can't open digitizer\n");
311 printf(
"Can't read board info\n");
314 printf(
"\nConnected to CAEN Digitizer Model %s, recognized as board %d\n", BoardInfo.
ModelName, b);
320 if (MajorNumber != 130) {
321 printf(
"This digitizer has not a DPP-CI firmware\n");
329 for(b=0; b<
MAXNB; b++) {
332 printf(
"Failed to program the digitizer\n");
347 printf(
"Can't allocate memory buffers\n");
356 for(b=0; b<
MAXNB; b++) {
358 EHisto[b][ch] = (uint32_t *)malloc( (1<<MAXNBITS)*
sizeof(uint32_t) );
359 memset(EHisto[b][ch], 0, (1<<MAXNBITS)*
sizeof(uint32_t));
363 ExtendedTT[b][ch] = 0;
369 printf(
"Type a command: ");
376 if (c==
'q') Quit = 1;
378 for(b=0; b<
MAXNB; b++)
381 for(b=0; b<
MAXNB; b++)
383 if( ECnt[b][ch] != 0)
386 for(b=0; b<
MAXNB; b++)
388 DoSaveWave[b][ch] = 1;
390 for(b=0; b<
MAXNB; b++) {
398 for(b=0; b<
MAXNB; b++) {
403 printf(
"Acquisition Started for Board %d\n", b);
408 for(b=0; b<
MAXNB; b++) {
411 printf(
"Acquisition Stopped for Board %d\n", b);
423 ElapsedTime = CurrentTime - PrevRateTime;
424 if (ElapsedTime > 1000) {
427 printf(
"Readout Rate=%.2f MB\n", (
float)Nb/((
float)ElapsedTime*1048.576f));
428 for(b=0; b<
MAXNB; b++) {
429 printf(
"\nBoard %d:\n",b);
432 printf(
"\tCh %d:\tTrgRate=%.2f KHz\t\n", i, (
float)TrgCnt[b][i]/(
float)ElapsedTime);
434 printf(
"\tCh %d:\tNo Data\n", i);
439 PrevRateTime = CurrentTime;
444 for(b=0; b<
MAXNB; b++) {
448 printf(
"Readout Error\n");
458 printf(
"Data Error: %d\n", ret);
464 if (!(Params[b].ChannelMask & (1<<ch)))
468 for(ev=0; ev<NumEvents[ch]; ev++) {
471 if (Events[ch][ev].TimeTag < PrevTime[b][ch])
473 PrevTime[b][ch] = Events[ch][ev].
TimeTag;
475 if (Events[ch][ev].Charge > 0) {
477 EHisto[b][ch][(Events[ch][ev].
Charge) & BitMask]++;
485 uint8_t *DigitalWaveLine;
489 size = (int)(Waveform->Ns);
490 WaveLine = Waveform->Trace1;
493 WaveLine = Waveform->Trace2;
495 DoSaveWave[b][ch] = 0;
497 DigitalWaveLine = Waveform->DTrace1;
499 DoSaveWave[b][ch] = 0;
501 DigitalWaveLine = Waveform->DTrace2;
503 DoSaveWave[b][ch] = 0;
505 DigitalWaveLine = Waveform->DTrace3;
507 DoSaveWave[b][ch] = 0;
509 DigitalWaveLine = Waveform->DTrace4;
511 DoSaveWave[b][ch] = 0;
512 printf(
"Waveforms saved to 'Waveform_<board>_<channel>_<trace>.txt'\n");
522 for(b=0; b<
MAXNB; b++) {
526 if (EHisto[b][ch] != NULL)