#include #include #include #include #include // time in nano-sec #include "ClassDigitizer2Gen.h" int main(int argc, char* argv[]){ printf("##########################################\n"); printf("\t CAEN firmware DPP-PHA testing \n"); printf("##########################################\n"); remove("haha_000.sol"); const char * url = "dig2://192.168.0.100/"; Digitizer2Gen * digi = new Digitizer2Gen(); digi->OpenDigitizer(url); digi->ProgramPHA(false); //printf("%s \n", digi->ReadValue("/ch/0/par/ChRealtimeMonitor").c_str()); //printf("%s \n", digi->ReadValue("/ch/0/par/Energy_Nbit").c_str()); //printf("%s \n", digi->ReadValue("/par/MaxRawDataSize").c_str()); /*///======================= Play with handle uint64_t parHandle; parHandle = digi->GetHandle("/ch/0/par/ChRealtimeMonitor"); printf("%lu|%lX\n", parHandle, parHandle); parHandle = digi->GetHandle("/ch/1/par/ChRealtimeMonitor"); printf("%lu|%lX\n", parHandle, parHandle); printf("%s\n", digi->GetPath(parHandle).c_str()); parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle); printf("%s\n", digi->GetPath(parHandle).c_str()); parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle); printf("%s\n", digi->GetPath(parHandle).c_str()); parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle); printf("%s\n", digi->GetPath(parHandle).c_str()); parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle); printf("%s\n", digi->GetPath(parHandle).c_str()); */ //digi->ReadDigitizerSettings(); digi->SetPHADataFormat(0); //printf("0x%X \n", atoi(digi->ReadValue("/par/AcquisitionStatus").c_str()) & 0x3F ); digi->OpenOutFile("haha"); digi->StartACQ(); timespec t0, t1; clock_gettime(CLOCK_REALTIME, &t0); for( int i = 0; i < 20; i++){ usleep(100000); int ret = digi->ReadData(); //if( i% 2 == 0 ) printf("0x%X \n", atoi(digi->ReadValue("/par/AcquisitionStatus").c_str()) & 0x3F ); if( ret == CAEN_FELib_Success){ //digi->evt.PrintAll(); //digi->evt.PrintTrace(); //printf("0x%016lX \n", *(digi->evt.GetWord1())); //printf("0x%016lX \n", *(digi->evt.GetWord2())); //printf("0x%016lX \n", *(digi->evt.GetWord3())); //printf("0x%016lX \n", *(digi->evt.GetWord4())); digi->SaveDataToFile(); if( digi->evt->channel == 63 ) { //if( i % 10 == 0 ) { clock_gettime(CLOCK_REALTIME, &t1); printf("%5d | t1-t0 : %10ld\n", i, t1.tv_nsec-t0.tv_nsec); t0 = t1; //digi->ReadStat(); //digi->PrintStat(); } }else{ printf("something wrong when ReadData() | ret = %d \n", ret); digi->ErrorMsg("ReadData()"); } } digi->StopACQ(); //digi->ReadStat(); digi->PrintStat(); digi->CloseOutFile(); digi->CloseDigitizer(); delete digi; }