27 #define MaxNChannels 8
33 #include "Functions.h"
53 printf(
"ERROR: can't reset the digitizer.\n");
149 printf(
"Warning: errors found during the programming of the digitizer.\nSome settings may not be executed\n");
159 int main(
int argc,
char *argv[])
195 uint32_t AllocatedSize, BufferSize;
200 uint64_t CurrentTime, PrevRateTime, ElapsedTime;
213 for(b=0; b<
MAXNB; b++) {
215 EHisto[b][ch] = NULL;
250 DPPParams[b].
thr[ch] = 200;
251 DPPParams[b].
k[ch] = 1000;
252 DPPParams[b].
m[ch] = 500;
253 DPPParams[b].
M[ch] = 200;
254 DPPParams[b].
ftd[ch] = 30;
255 DPPParams[b].
a[ch] = 2;
256 DPPParams[b].
b[ch] = 100;
257 DPPParams[b].
trgho[ch] = 600;
258 DPPParams[b].
nsbl[ch] = 2;
259 DPPParams[b].
nspk[ch] = 2;
260 DPPParams[b].
pkho[ch] = 770;
261 DPPParams[b].
blho[ch] = 100;
262 DPPParams[b].
enf[ch] = 1.0;
274 for(b=0; b<
MAXNB; b++) {
296 printf(
"Can't open digitizer\n");
303 printf(
"Can't read board info\n");
306 printf(
"\nConnected to CAEN Digitizer Model %s, recognized as board %d\n", BoardInfo.
ModelName, b);
312 if (MajorNumber != 128) {
313 printf(
"This digitizer has not a DPP-PHA firmware\n");
321 for(b=0; b<
MAXNB; b++) {
324 printf(
"Failed to program the digitizer\n");
339 printf(
"Can't allocate memory buffers\n");
348 for(b=0; b<
MAXNB; b++) {
350 EHisto[b][ch] = (uint32_t *)malloc( (1<<MAXNBITS)*
sizeof(uint32_t) );
351 memset(EHisto[b][ch], 0, (1<<MAXNBITS)*
sizeof(uint32_t));
355 ExtendedTT[b][ch] = 0;
362 printf(
"Type a command: ");
369 if (c==
'q') Quit = 1;
371 for(b=0; b<
MAXNB; b++)
374 for(b=0; b<
MAXNB; b++)
376 if( ECnt[b][ch] != 0)
379 for(b=0; b<
MAXNB; b++)
381 DoSaveWave[b][ch] = 1;
383 for(b=0; b<
MAXNB; b++) {
391 for(b=0; b<
MAXNB; b++) {
396 printf(
"Acquisition Started for Board %d\n", b);
401 for(b=0; b<
MAXNB; b++) {
404 printf(
"Acquisition Stopped for Board %d\n", b);
416 ElapsedTime = CurrentTime - PrevRateTime;
417 if (ElapsedTime > 1000) {
420 printf(
"Readout Rate=%.2f MB\n", (
float)Nb/((
float)ElapsedTime*1048.576f));
421 for(b=0; b<
MAXNB; b++) {
422 printf(
"\nBoard %d:\n",b);
425 printf(
"\tCh %d:\tTrgRate=%.2f KHz\tPileUpRate=%.2f%%\n", i, (
float)TrgCnt[b][i]/(
float)ElapsedTime, (
float)PurCnt[b][i]*100/(
float)TrgCnt[b][i]);
427 printf(
"\tCh %d:\tNo Data\n", i);
433 PrevRateTime = CurrentTime;
438 for(b=0; b<
MAXNB; b++) {
442 printf(
"Readout Error\n");
452 printf(
"Data Error: %d\n", ret);
459 if (!(Params[b].ChannelMask & (1<<ch)))
463 for(ev=0; ev<NumEvents[ch]; ev++) {
466 if (Events[ch][ev].TimeTag < PrevTime[b][ch])
468 PrevTime[b][ch] = Events[ch][ev].
TimeTag;
470 if (Events[ch][ev].Energy > 0) {
472 EHisto[b][ch][(Events[ch][ev].
Energy)&BitMask]++;
481 uint8_t *DigitalWaveLine;
485 size = (int)(Waveform->
Ns);
486 WaveLine = Waveform->
Trace1;
489 WaveLine = Waveform->
Trace2;
492 DigitalWaveLine = Waveform->
DTrace1;
495 DigitalWaveLine = Waveform->
DTrace2;
497 DoSaveWave[b][ch] = 0;
498 printf(
"Waveforms saved to 'Waveform_<board>_<channel>_<trace>.txt'\n");
508 for(b=0; b<
MAXNB; b++) {
512 if (EHisto[b][ch] != NULL)