CAEN MCA  0.99.10
SDK for Hexagon
examples_lists.c

Lists

#include "examples.h"
int32_t CAEN_MCA_EXAMPLES_EnableLists(CAEN_MCA_HANDLE channel, bool enabled) {
int32_t ret = CAEN_MCA_SetData(channel, CAEN_MCA_DATA_LIST_MODE, DATAMASK_LIST_ENABLE, (uint32_t)enabled);
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_Lists_SetSaveMode(CAEN_MCA_HANDLE channel, CAEN_MCA_ListSaveMode_t mode) {
CAEN_MCA_ListSaveMode_t savemode = mode;
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_Lists_SetMaxNumberOfEvents(CAEN_MCA_HANDLE channel, uint32_t maxnevts) {
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_Lists_SetFilename(CAEN_MCA_HANDLE channel, const char *filename) {
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_Lists_SetData(CAEN_MCA_HANDLE channel, bool timetag, bool energy, bool extras) {
uint32_t mask = 0;
if (timetag) mask |= LIST_FILE_DATAMASK_TIMETAG;
if (energy) mask |= LIST_FILE_DATAMASK_ENERGY;
if (extras) mask |= LIST_FILE_DATAMASK_FLAGS;
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_GetLists(CAEN_MCA_HANDLE channel) {
uint32_t maxnevts;
uint32_t nevts;
uint32_t getfake, getsat, getskim;
uint32_t enabled;
uint32_t datamask;
char *filename = malloc(LISTS_FULLPATH_MAXLEN * sizeof(*filename));
uint64_t *datatimetag = malloc(LISTS_DATA_MAXLEN * sizeof(*datatimetag));
uint16_t *dataenergy = malloc(LISTS_DATA_MAXLEN * sizeof(*dataenergy));
uint32_t *dataflags = malloc(LISTS_DATA_MAXLEN * sizeof(*dataflags));
int32_t ret = CAEN_MCA_GetData(
channel,
&enabled,
&savemode,
filename,
&datamask,
&getfake,
&maxnevts,
&nevts,
datatimetag,
dataenergy,
dataflags,
&getsat,
&getskim
);
// Error
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
else {
fprintf(stdout, "Enabled: %"PRIu32"\n", enabled);
fprintf(stdout, "Save mode: ");
switch (savemode) {
case CAEN_MCA_SAVEMODE_FILE_ASCII: fprintf(stdout, "File (ASCII)\n"); break;
case CAEN_MCA_SAVEMODE_FILE_BINARY: fprintf(stdout, "File (binary)\n"); break;
case CAEN_MCA_SAVEMODE_MEMORY: fprintf(stdout, "Memory\n"); break;
}
fprintf(stdout, "Get fake events: %s\n", getfake ? "true" : "false");
bool timetag = datamask & LIST_FILE_DATAMASK_TIMETAG;
bool energy = datamask & LIST_FILE_DATAMASK_ENERGY;
bool extras = datamask & LIST_FILE_DATAMASK_FLAGS;
fprintf(stdout, "Data mask (for file modes): ");
fprintf(stdout, "Timetag (%s)\t", timetag ? "true" : "false");
fprintf(stdout, "Energy (%s)\t", energy ? "true" : "false");
fprintf(stdout, "Extras (%s)\t", extras ? "true" : "false");
fprintf(stdout, "\n");
fprintf(stdout, "Filename: %s\n", filename);
fprintf(stdout, "Events: %"PRIu32" (max: %"PRIu32")\n", nevts, maxnevts);
fprintf(stdout, "First 10 events received:\n");
for (uint32_t i = 0; i < nevts && i < 10; i++) {
fprintf(stdout, "\t#%"PRIu32":", i);
fprintf(stdout, "\tTimetag: %"PRIu64"", datatimetag[i]);
fprintf(stdout, "\tEnergy: %"PRIu32"", dataenergy[i]);
fprintf(stdout, "\tFlags: 0x%08"PRIx16"", dataflags[i]);
fprintf(stdout, "\n");
}
}
free(datatimetag);
free(dataenergy);
free(dataflags);
free(filename);
return ret;
}