added programSetting.h/cpp, added bufferSize calculation, not tested
This commit is contained in:
parent
029177cd9b
commit
d6a29e1b8f
25
ClassData.h
25
ClassData.h
|
@ -30,6 +30,7 @@ class Data{
|
|||
double TriggerRate[MaxNChannels]; /// Hz
|
||||
unsigned long TotNumEvents[MaxNChannels];
|
||||
unsigned long long Timestamp[MaxNChannels][MaxNData];
|
||||
unsigned short fineTime[MaxNChannels][MaxNData]; /// 10 bits, in unit of ch2ns / 1000 = ps
|
||||
unsigned short Energy[MaxNChannels][MaxNData];
|
||||
unsigned short Energy2[MaxNChannels][MaxNData]; /// in PSD, Energy = Qshort, Energy2 = Qlong
|
||||
|
||||
|
@ -46,6 +47,7 @@ class Data{
|
|||
~Data();
|
||||
|
||||
void AllocateMemory();
|
||||
void AllocateMemory(unsigned long size);
|
||||
|
||||
void SetSaveWaveToMemory(bool OnOff) { this->SaveWaveToMemory = OnOff; }
|
||||
|
||||
|
@ -98,15 +100,15 @@ inline Data::~Data(){
|
|||
delete buffer;
|
||||
}
|
||||
|
||||
inline void Data::AllocateMemory(){
|
||||
|
||||
inline void Data::AllocateMemory(unsigned long size){
|
||||
delete buffer;
|
||||
//TODO calculate Suitable buffer size
|
||||
BufferSize = 10* 1024* 1024; /// 10M byte
|
||||
BufferSize = size;
|
||||
buffer = (char *) malloc( BufferSize);
|
||||
printf("Allocated %d byte for buffer \n", BufferSize);
|
||||
///for( int i = 0 ; i < MaxNChannels ; i++ ) Events[i] = (CAEN_DGTZ_DPP_PHA_Event_t *) malloc( BufferSize);
|
||||
///printf("Allocated %d byte for Events for each channel \n", BufferSize);
|
||||
}
|
||||
|
||||
inline void Data::AllocateMemory(){
|
||||
AllocateMemory( 10 * 1024 * 1024 ); /// 10 M Byte
|
||||
}
|
||||
|
||||
inline void Data::ClearTriggerRate(){ for( int i = 0 ; i < MaxNChannels; i++) TriggerRate[i] = 0.0; }
|
||||
|
@ -121,6 +123,7 @@ inline void Data::ClearData(){
|
|||
///TriggerRate[i] = 0.0;
|
||||
for( int j = 0; j < MaxNData; j++){
|
||||
Timestamp[i][j] = 0;
|
||||
fineTime[i][j] = 0;
|
||||
Energy[i][j] = 0;
|
||||
Energy2[i][j] = 0;
|
||||
Waveform1[i][j].clear();
|
||||
|
@ -400,9 +403,9 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, bool fastDe
|
|||
nw = nw +1 ; word = ReadBuffer(nw, verbose);
|
||||
unsigned int extra2 = word;
|
||||
unsigned long long extTimeStamp = 0;
|
||||
if( extra2Option == 0 || extra2Option == 2 ) extTimeStamp = (extra2 >> 15);
|
||||
if( extra2Option == 0 || extra2Option == 2 ) extTimeStamp = (extra2 >> 16);
|
||||
|
||||
unsigned long long timeStamp = (extTimeStamp << 30) ;
|
||||
unsigned long long timeStamp = (extTimeStamp << 31) ;
|
||||
timeStamp = timeStamp + timeStamp0;
|
||||
|
||||
if( verbose >= 2) printf("TimeStamp : %llu\n", timeStamp);
|
||||
|
@ -432,7 +435,7 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, bool fastDe
|
|||
if( rollOver == 0 ) {
|
||||
Energy[channel][NumEvents[channel]] = energy;
|
||||
Timestamp[channel][NumEvents[channel]] = timeStamp;
|
||||
|
||||
if(extra2Option == 0 || extra2Option == 2 ) fineTime[channel][NumEvents[channel]] = (extra2 & 0x07FF );
|
||||
NumEvents[channel] ++;
|
||||
TotNumEvents[channel] ++;
|
||||
}
|
||||
|
@ -591,9 +594,9 @@ inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, bool fastDe
|
|||
nw = nw +1 ; word = ReadBuffer(nw, verbose);
|
||||
unsigned int extra = word;
|
||||
unsigned long long extTimeStamp = 0;
|
||||
if( extraOption == 0 || extraOption == 2 ) extTimeStamp = (extra >> 15);
|
||||
if( extraOption == 0 || extraOption == 2 ) extTimeStamp = (extra >> 16);
|
||||
|
||||
unsigned long long timeStamp = (extTimeStamp << 30) ;
|
||||
unsigned long long timeStamp = (extTimeStamp << 31) ;
|
||||
timeStamp = timeStamp + timeStamp0;
|
||||
|
||||
nw = nw +1 ; word = ReadBuffer(nw, verbose);
|
||||
|
|
|
@ -20,7 +20,7 @@ void Digitizer::Initalization(){
|
|||
portID = -1;
|
||||
boardID = -1;
|
||||
handle = -1;
|
||||
NChannel = 0;
|
||||
NChannel = 16;
|
||||
ADCbits = 1;
|
||||
DPPType = 0;
|
||||
DPPTypeStr = "";
|
||||
|
@ -58,7 +58,7 @@ void Digitizer::Reset(){
|
|||
|
||||
}
|
||||
|
||||
void Digitizer::PrintBoard(){
|
||||
void Digitizer::PrintBoard (){
|
||||
printf("Connected to Model %s with handle %d using %s\n", BoardInfo.ModelName, handle, LinkType == CAEN_DGTZ_USB ? "USB" : "Optical Link");
|
||||
printf("Sampling rate : %.0f MHz = %.1f ns \n", 1000/ch2ns, ch2ns);
|
||||
printf("Number of Channels : %d = 0x%X\n", NChannel, channelMask);
|
||||
|
@ -313,9 +313,9 @@ int Digitizer::ProgramPHABoard(){
|
|||
ret |= CAEN_DGTZ_WriteRegister(handle, (uint32_t)(Register::DPP::PreTrigger) + 0x7000 , 124 );
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (uint32_t)(Register::DPP::InputDynamicRange) + 0x7000 , 0x0 );
|
||||
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::NumberEventsPerAggregate_G) + 0x7000, 511);
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::NumberEventsPerAggregate_G) + 0x7000, 10);
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::AggregateOrganization), 0);
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::MaxAggregatePerBlockTransfer), 40);
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::MaxAggregatePerBlockTransfer), 200);
|
||||
ret |= CAEN_DGTZ_WriteRegister(handle, (int32_t)(Register::DPP::DPPAlgorithmControl) + 0x7000, 0xe30200f);
|
||||
|
||||
if( ret != 0 ) { printf("==== set channels error.\n"); return 0;}
|
||||
|
@ -350,16 +350,47 @@ void Digitizer::StopACQ(){
|
|||
}
|
||||
|
||||
unsigned int Digitizer::CalByteForBuffer(){
|
||||
unsigned int numAggBLT;
|
||||
unsigned int chMask ;
|
||||
unsigned int boardCfg ;
|
||||
unsigned int eventAgg[NChannel/2];
|
||||
unsigned int recordLength[NChannel/2];
|
||||
|
||||
//TODO
|
||||
unsigned int numAggBLT = ReadRegister(Register::DPP::MaxAggregatePerBlockTransfer);
|
||||
if( isConnected ){
|
||||
numAggBLT = ReadRegister(Register::DPP::MaxAggregatePerBlockTransfer, 0, false);
|
||||
chMask = ReadRegister(Register::DPP::ChannelEnableMask, 0, false);
|
||||
boardCfg = ReadRegister(Register::DPP::BoardConfiguration, 0, false);
|
||||
|
||||
for( int pCh = 0; pCh < NChannel/2; pCh++){
|
||||
eventAgg[pCh] = ReadRegister(Register::DPP::NumberEventsPerAggregate_G, pCh * 2 , false);
|
||||
recordLength[pCh] = ReadRegister(Register::DPP::RecordLength_G, pCh * 2 , false);
|
||||
}
|
||||
}else{
|
||||
numAggBLT = GetSettingFromMemory(Register::DPP::MaxAggregatePerBlockTransfer);
|
||||
chMask = GetSettingFromMemory(Register::DPP::ChannelEnableMask);
|
||||
boardCfg = GetSettingFromMemory(Register::DPP::BoardConfiguration);
|
||||
for( int pCh = 0; pCh < NChannel/2; pCh++){
|
||||
eventAgg[pCh] = GetSettingFromMemory(Register::DPP::NumberEventsPerAggregate_G, pCh * 2 );
|
||||
recordLength[pCh] = GetSettingFromMemory(Register::DPP::RecordLength_G, pCh * 2);
|
||||
}
|
||||
}
|
||||
|
||||
/// Channel Mask
|
||||
/// is takeing waveForm
|
||||
/// Record Length
|
||||
//printf(" Channel Mask : %04X \n", chMask);
|
||||
//printf("Max number of Agg per Readout : %u \n", numAggBLT);
|
||||
//printf(" is Extra2 enabed : %u \n", ((boardCfg >> 17) & 0x1) );
|
||||
//
|
||||
//for( int pCh = 0; pCh < NChannel/2; pCh++){
|
||||
// printf("Paied Ch : %d, RecordLength (bit value): %u, Event per Agg. : %u \n", pCh, recordLength[pCh], eventAgg[pCh]);
|
||||
//}
|
||||
|
||||
return 0;
|
||||
unsigned int bufferSize = 4; /// Board Agg. header
|
||||
/// Cal size for each dual channel aggregation
|
||||
for( int pCh = 0; pCh < NChannel/2 ; pCh++){
|
||||
if( (chMask & ( 3 << (2 * pCh) )) == 0 ) continue;
|
||||
bufferSize += ( 2 + ((boardCfg >> 17) & 0x1) + recordLength[pCh]*4 ) * eventAgg[pCh] ;
|
||||
}
|
||||
|
||||
return bufferSize * 4 * numAggBLT; /// 1 word = 4 byte;
|
||||
}
|
||||
|
||||
void Digitizer::ReadData(){
|
||||
|
@ -383,7 +414,7 @@ void Digitizer::ReadData(){
|
|||
//===========================================================
|
||||
//===========================================================
|
||||
//===========================================================
|
||||
void Digitizer::WriteRegister(Reg registerAddress, uint32_t value, int ch, bool isSave2MemAndFile){
|
||||
void Digitizer::WriteRegister (Reg registerAddress, uint32_t value, int ch, bool isSave2MemAndFile){
|
||||
if( !isConnected ) return;
|
||||
//printf("0x%X, ch:%02d, 0x%X=%u\n", registerAddress, ch, value, value);
|
||||
|
||||
|
@ -396,7 +427,7 @@ void Digitizer::WriteRegister(Reg registerAddress, uint32_t value, int ch, bool
|
|||
ErrorMsg("WriteRegister:" + std::to_string(registerAddress));
|
||||
}
|
||||
|
||||
uint32_t Digitizer::ReadRegister(Reg registerAddress, unsigned short ch, bool isSave2MemAndFile, string str ){
|
||||
uint32_t Digitizer::ReadRegister(Reg registerAddress, unsigned short ch, bool isSave2MemAndFile, std::string str ){
|
||||
if( !isConnected ) return 0;
|
||||
|
||||
uint32_t data[1];
|
||||
|
@ -410,7 +441,6 @@ uint32_t Digitizer::ReadRegister(Reg registerAddress, unsigned short ch, bool is
|
|||
if( str != "" ) printf("%s : 0x%04X(0x%04X) is 0x%08X \n", str.c_str(),
|
||||
registerAddress.ActualAddress(ch), registerAddress.GetAddress(), data[0]);
|
||||
return data[0];
|
||||
|
||||
}
|
||||
|
||||
void Digitizer::PrintACQStatue(){
|
||||
|
@ -420,7 +450,7 @@ void Digitizer::PrintACQStatue(){
|
|||
printf("=================== Print ACQ status \n");
|
||||
printf(" 32 28 24 20 16 12 8 4 0\n");
|
||||
printf(" | | | | | | | | |\n");
|
||||
cout <<" 0b" << bitset<32>(status) << endl;
|
||||
std::cout <<" 0b" << std::bitset<32>(status) << std::endl;
|
||||
printf(" Acq state (0x%1X): %s \n", (status >> 2) & 0x1, ((status >> 2) & 0x1) == 0? "stopped" : "running");
|
||||
printf(" Event Ready (0x%1X): %s \n", (status >> 3) & 0x1, ((status >> 3) & 0x1) == 0? "no event in buffer" : "event in buffer");
|
||||
printf(" Event Full (0x%1X): %s \n", (status >> 4) & 0x1, ((status >> 4) & 0x1) == 0? "not full" : "full");
|
||||
|
@ -429,11 +459,9 @@ void Digitizer::PrintACQStatue(){
|
|||
printf(" Ch shutDown (0x%1X): %s \n", (status >> 19) & 0x1, ((status >> 19) & 0x1) == 0? "Channels are on" : "channels are shutdown");
|
||||
printf(" TRG-IN 0x%1X \n", (status >> 16) & 0x1);
|
||||
printf(" Ch temp state 0x%04X \n", (status >> 20) & 0xF);
|
||||
|
||||
}
|
||||
|
||||
//========================================== setting file IO
|
||||
|
||||
Reg Digitizer::FindRegister(uint32_t address){
|
||||
|
||||
Reg tempReg;
|
||||
|
@ -513,13 +541,13 @@ void Digitizer::ProgramSettingsToBoard(){
|
|||
}
|
||||
}
|
||||
|
||||
void Digitizer::SetSettingToMemory(Reg registerAddress, unsigned int value, int ch ){
|
||||
void Digitizer::SetSettingToMemory(Reg registerAddress, unsigned int value, unsigned short ch ){
|
||||
unsigned short index = registerAddress.Index(ch);
|
||||
if( index > SETTINGSIZE ) return;
|
||||
setting[index] = value;
|
||||
}
|
||||
|
||||
unsigned int Digitizer::GetSettingFromMemory(Reg registerAddress, int ch ){
|
||||
unsigned int Digitizer::GetSettingFromMemory(Reg registerAddress, unsigned short ch ){
|
||||
unsigned short index = registerAddress.Index(ch);
|
||||
if( index > SETTINGSIZE ) return 0xFFFF;
|
||||
return setting[index] ;
|
||||
|
@ -529,7 +557,7 @@ void Digitizer::PrintSettingFromMemory(){
|
|||
for( int i = 0; i < SETTINGSIZE; i++) printf("%4d | 0x%04X |0x%08X = %u \n", i, i*4, setting[i], setting[i]);
|
||||
}
|
||||
|
||||
void Digitizer::OpenSettingBinary(string fileName){
|
||||
void Digitizer::OpenSettingBinary(std::string fileName){
|
||||
if( settingFile != NULL ) delete settingFile;
|
||||
|
||||
settingFile = fopen(fileName.c_str(), "r+");
|
||||
|
@ -555,7 +583,7 @@ void Digitizer::OpenSettingBinary(string fileName){
|
|||
}
|
||||
}
|
||||
|
||||
void Digitizer::LoadSettingBinary(string fileName){
|
||||
void Digitizer::LoadSettingBinary(std::string fileName){
|
||||
|
||||
settingFile = fopen(fileName.c_str(), "r+");
|
||||
|
||||
|
@ -572,11 +600,10 @@ void Digitizer::LoadSettingBinary(string fileName){
|
|||
size_t dummy = fread( setting, SETTINGSIZE * sizeof(unsigned int), 1, settingFile);
|
||||
|
||||
ProgramSettingsToBoard();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int Digitizer::ReadSettingFromFile(Reg registerAddress, int ch){
|
||||
unsigned int Digitizer::ReadSettingFromFile(Reg registerAddress, unsigned short ch){
|
||||
if ( !settingFileExist ) return -1;
|
||||
|
||||
unsigned short index = registerAddress.Index(ch);
|
||||
|
@ -593,10 +620,10 @@ unsigned int Digitizer::ReadSettingFromFile(Reg registerAddress, int ch){
|
|||
|
||||
}
|
||||
|
||||
void Digitizer::SaveSettingToFile(Reg registerAddress, unsigned int value, int ch){
|
||||
void Digitizer::SaveSettingToFile(Reg registerAddress, unsigned int value, unsigned short ch){
|
||||
if ( !settingFileExist ) return ;
|
||||
|
||||
unsigned short index = registerAddress,Index(ch);
|
||||
unsigned short index = registerAddress.Index(ch);
|
||||
setting[index] = value;
|
||||
|
||||
settingFile = fopen (settingFileName.c_str(),"r+");
|
||||
|
@ -608,7 +635,7 @@ void Digitizer::SaveSettingToFile(Reg registerAddress, unsigned int value, int c
|
|||
fclose (settingFile);
|
||||
}
|
||||
|
||||
void Digitizer::SaveSettingAsText(string fileName){
|
||||
void Digitizer::SaveSettingAsText(std::string fileName){
|
||||
|
||||
FILE * txtFile = fopen(fileName.c_str(), "w+");
|
||||
|
||||
|
@ -651,7 +678,7 @@ void Digitizer::SaveSettingAsText(string fileName){
|
|||
}
|
||||
}
|
||||
|
||||
void Digitizer::ErrorMsg(string header){
|
||||
void Digitizer::ErrorMsg(std::string header){
|
||||
switch (ret){
|
||||
///case CAEN_DGTZ_Success : /** 0 */ printf("%s | Operation completed successfully.\n", header.c_str()); break;
|
||||
case CAEN_DGTZ_CommError : /** -1 */ printf("%s | Communication Error.\n", header.c_str()); break;
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
#include "ClassData.h"
|
||||
#include "RegisterAddress.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
//################################################################
|
||||
class Digitizer{
|
||||
|
||||
|
@ -50,14 +48,14 @@ class Digitizer{
|
|||
bool AcqRun; /// true when digitizer is taking data
|
||||
|
||||
/// ------- setting
|
||||
string settingFileName; ///
|
||||
std::string settingFileName; ///
|
||||
FILE * settingFile; ///
|
||||
bool settingFileExist; ///
|
||||
bool isSettingFilledinMemeory; /// false for disabled ReadAllSettingFromBoard()
|
||||
unsigned int setting[SETTINGSIZE]; /// Setting, 4bytes x 2048 = 8192 bytes
|
||||
|
||||
///---------- protected functions
|
||||
void ErrorMsg(string header = "");
|
||||
void ErrorMsg(std::string header = "");
|
||||
|
||||
public:
|
||||
Digitizer(); /// no digitizer open
|
||||
|
@ -72,44 +70,44 @@ class Digitizer{
|
|||
void Initalization();
|
||||
void Reset();
|
||||
|
||||
void PrintBoard();
|
||||
virtual int ProgramBoard(); /// program a generic board, no program channel
|
||||
int ProgramPHABoard(); /// program a default PHA board
|
||||
void PrintBoard() ;
|
||||
virtual int ProgramBoard() ; /// program a generic board, no program channel
|
||||
int ProgramPHABoard() ; /// program a default PHA board
|
||||
|
||||
///================ ACQ control
|
||||
void StopACQ();
|
||||
void StartACQ();
|
||||
void ReadData();
|
||||
bool IsRunning() {return AcqRun;}
|
||||
Data * GetData(){ return data;}
|
||||
bool IsRunning() const {return AcqRun;}
|
||||
Data * GetData() const {return data;}
|
||||
void PrintACQStatue();
|
||||
|
||||
unsigned int CalByteForBuffer();
|
||||
|
||||
///=================Settings
|
||||
/// write value to digitizer, memory, and settingFile (if exist)
|
||||
void WriteRegister(Reg registerAddress, uint32_t value, int ch = -1, bool isSave2MemAndFile = true);
|
||||
void WriteRegister (Reg registerAddress, uint32_t value, int ch = -1, bool isSave2MemAndFile = true);
|
||||
/// read value from digitizer and memory, and save to memory, and settingFile(if exist),
|
||||
/// ch must be >= 0,
|
||||
/// for board setting, ignore ch
|
||||
uint32_t ReadRegister(Reg registerAddress, unsigned short ch = 0, bool isSave2MemAndFile = true, string str = "" );
|
||||
uint32_t ReadRegister (Reg registerAddress, unsigned short ch = 0, bool isSave2MemAndFile = true, std::string str = "" );
|
||||
uint32_t PrintRegister(uint32_t address, std::string msg);
|
||||
|
||||
///================ Get Settings
|
||||
std::string GetModelName() {return BoardInfo.ModelName;}
|
||||
int GetSerialNumber() {return BoardInfo.SerialNumber;}
|
||||
int GetChannelMask() {return channelMask;}
|
||||
bool GetChannelOnOff(unsigned ch) {return (channelMask & ( 1 << ch) );}
|
||||
float GetCh2ns() {return ch2ns;}
|
||||
int GetNChannel() {return NChannel;}
|
||||
int GetHandle() {return handle;}
|
||||
bool GetConnectionStatus() {return isConnected;}
|
||||
int GetDPPType() {return DPPType;}
|
||||
std::string GetDPPTypeString() {return DPPTypeStr;}
|
||||
int GetADCBits() {return BoardInfo.ADC_NBits;}
|
||||
std::string GetROCVersion() {return BoardInfo.ROC_FirmwareRel;}
|
||||
std::string GetAMCVersion() {return BoardInfo.AMC_FirmwareRel;}
|
||||
CAEN_DGTZ_ConnectionType GetLinkType() {return LinkType;}
|
||||
std::string GetModelName() const {return BoardInfo.ModelName;}
|
||||
int GetSerialNumber() const {return BoardInfo.SerialNumber;}
|
||||
int GetChannelMask() const {return channelMask;}
|
||||
bool GetChannelOnOff(unsigned ch) const {return (channelMask & ( 1 << ch) );}
|
||||
float GetCh2ns() const {return ch2ns;}
|
||||
int GetNChannel() const {return NChannel;}
|
||||
int GetHandle() const {return handle;}
|
||||
bool GetConnectionStatus() const {return isConnected;}
|
||||
int GetDPPType() const {return DPPType;}
|
||||
std::string GetDPPTypeString() const {return DPPTypeStr;}
|
||||
int GetADCBits() const {return BoardInfo.ADC_NBits;}
|
||||
std::string GetROCVersion() const {return BoardInfo.ROC_FirmwareRel;}
|
||||
std::string GetAMCVersion() const {return BoardInfo.AMC_FirmwareRel;}
|
||||
CAEN_DGTZ_ConnectionType GetLinkType() const {return LinkType;}
|
||||
|
||||
///================ Setting
|
||||
Reg FindRegister(uint32_t address);
|
||||
|
@ -118,18 +116,18 @@ class Digitizer{
|
|||
void ProgramSettingsToBoard ();
|
||||
|
||||
/// simply read settings from memory
|
||||
void SetSettingToMemory (Reg registerAddress, unsigned int value, int ch = -1);
|
||||
unsigned int GetSettingFromMemory (Reg registerAddress, int ch = -1);
|
||||
void SetSettingToMemory (Reg registerAddress, unsigned int value, unsigned short ch = -1);
|
||||
unsigned int GetSettingFromMemory (Reg registerAddress, unsigned short ch = -1);
|
||||
void PrintSettingFromMemory ();
|
||||
unsigned int * GetSetting() {return setting;};
|
||||
|
||||
/// memory <--> file
|
||||
void SaveSettingAsText (string fileName);
|
||||
string GetSettingFileName() {return settingFileName;}
|
||||
void OpenSettingBinary (string fileName); /// Open setting file, if file not exist, call create and save settings, if file exit set the settignFileName but not overwrite
|
||||
void LoadSettingBinary (string fileName); /// load settign file to memory, if digitizer connected, program digitizer
|
||||
void SaveSettingToFile (Reg registerAddress, unsigned int value, int ch = -1);
|
||||
unsigned int ReadSettingFromFile (Reg registerAddress, int ch = -1); /// read from setting binary
|
||||
void SaveSettingAsText (std::string fileName);
|
||||
std::string GetSettingFileName() {return settingFileName;}
|
||||
void OpenSettingBinary (std::string fileName); /// Open setting file, if file not exist, call create and save settings, if file exit set the settignFileName but not overwrite
|
||||
void LoadSettingBinary (std::string fileName); /// load settign file to memory, if digitizer connected, program digitizer
|
||||
void SaveSettingToFile (Reg registerAddress, unsigned int value, unsigned short ch = 0); /// also save to memory
|
||||
unsigned int ReadSettingFromFile (Reg registerAddress, unsigned short ch = 0); /// read from setting binary
|
||||
|
||||
///=================== Relic methods
|
||||
///void SetRecordLength (unsigned int ns, int ch = -1); /// when ch == -1, mean set all channels
|
||||
|
|
38
FSUDAQ.cpp
38
FSUDAQ.cpp
|
@ -26,15 +26,13 @@ enum MenuIdentifiers{
|
|||
M_FILE_OPEN,
|
||||
M_EXIT,
|
||||
M_LOAD_SETTINGS,
|
||||
M_VIEW_SETTINGS, // TODO
|
||||
M_TRIGGER_SUMMARY,
|
||||
M_CH_SETTING_PHA,
|
||||
M_CH_SETTING_PSD,
|
||||
M_REGISTER_SETTING,
|
||||
M_BOARD_SETTINGS,
|
||||
M_PROGRAM_SETTINGS,
|
||||
M_FINDPEAKS,
|
||||
M_SHOW_CHANNELS_RATE
|
||||
M_FINDPEAKS
|
||||
};
|
||||
|
||||
enum ModeIdentifiers{
|
||||
|
@ -103,16 +101,15 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
|||
fMenuDigitizers->AddEntry("&Channel Settings (PHA)", M_CH_SETTING_PHA);
|
||||
fMenuDigitizers->AddEntry("&Channel Settings (PSD)", M_CH_SETTING_PSD);
|
||||
fMenuDigitizers->AddEntry("&Register Setting", M_REGISTER_SETTING);
|
||||
//fMenuDigitizers->AddSeparator();
|
||||
//fMenuDigitizers->AddEntry("&Program Settings", M_PROGRAM_SETTINGS);
|
||||
fMenuDigitizers->AddSeparator();
|
||||
fMenuDigitizers->AddEntry("&Program Settings", M_PROGRAM_SETTINGS);
|
||||
fMenuDigitizers->Connect("Activated(Int_t)", "MainWindow", this, "HandleMenu(Int_t)");
|
||||
fMenuBar->AddPopup("&Digitizers", fMenuDigitizers, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
|
||||
|
||||
fMenuDigitizers->DisableEntry( M_REGISTER_SETTING);
|
||||
|
||||
fMenuUtility = new TGPopupMenu(gClient->GetRoot());
|
||||
fMenuUtility->AddEntry("Plot Channels Rate", M_SHOW_CHANNELS_RATE);
|
||||
fMenuDigitizers->AddSeparator();
|
||||
//fMenuDigitizers->AddSeparator();
|
||||
fMenuUtility->AddEntry("Find &Peaks", M_FINDPEAKS);
|
||||
fMenuUtility->Connect("Activated(Int_t)", "MainWindow", this, "HandleMenu(Int_t)");
|
||||
fMenuBar->AddPopup("&Utility", fMenuUtility, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
|
||||
|
@ -204,8 +201,8 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
|||
/// Map all subwindows of main frame
|
||||
fMain->MapSubwindows();
|
||||
/// Initialize the layout algorithm
|
||||
fMain->Resize(fMain->GetDefaultSize());
|
||||
fMain->SetWMPosition(200, 200); //does not work??
|
||||
fMain->Resize(fMain->GetDefaultSize());
|
||||
|
||||
/// Map main frame
|
||||
fMain->MapWindow();
|
||||
|
@ -216,8 +213,10 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
|||
|
||||
boardSetting = NULL;
|
||||
channelSettingPHA = NULL;
|
||||
channelSettingPSD = NULL;
|
||||
registerSetting = NULL;
|
||||
///scalarPanel = NULL;
|
||||
triggerSummary = NULL;
|
||||
programSetting = NULL;
|
||||
|
||||
LogMsg((char*)"Please \"Open Digitizers\" to start.");
|
||||
|
||||
|
@ -242,17 +241,20 @@ MainWindow::~MainWindow() {
|
|||
delete fMenuFile;
|
||||
delete fMenuDigitizers;
|
||||
delete fMenuUtility;
|
||||
delete fEcanvas;
|
||||
|
||||
delete boardIDEntry;
|
||||
delete chIDEntry;
|
||||
|
||||
delete teLog;
|
||||
//delete tePath;
|
||||
|
||||
delete bOpenDigitizers;
|
||||
delete bStartRun;
|
||||
delete bStopRun;
|
||||
delete cbMode;
|
||||
|
||||
delete dataPrefix;
|
||||
delete runIDEntry;
|
||||
|
||||
delete bPlotSingleTrace;
|
||||
delete bFitTrace;
|
||||
|
@ -262,9 +264,9 @@ MainWindow::~MainWindow() {
|
|||
delete boardSetting;
|
||||
delete channelSettingPHA;
|
||||
delete channelSettingPSD;
|
||||
|
||||
delete registerSetting;
|
||||
delete triggerSummary;
|
||||
delete programSetting;
|
||||
|
||||
delete fillHistThread;
|
||||
|
||||
|
@ -297,7 +299,7 @@ void MainWindow::HandleMenu(Int_t id){
|
|||
|
||||
///========================= File Open
|
||||
case M_FILE_OPEN:{
|
||||
|
||||
LogMsg((char *) "Not implemented.");
|
||||
|
||||
}break;
|
||||
|
||||
|
@ -342,11 +344,9 @@ void MainWindow::HandleMenu(Int_t id){
|
|||
|
||||
///========================= Program setting
|
||||
case M_PROGRAM_SETTINGS:{
|
||||
LogMsg((char*)"[Program settings] Not impelmented");
|
||||
}break;
|
||||
|
||||
///====================== Show channel rate;
|
||||
case M_SHOW_CHANNELS_RATE:{
|
||||
programSetting = new ProgramSetting(gClient->GetRoot());
|
||||
|
||||
LogMsg((char*) Form("database : %s, name : %s ", ProgramSetting::IP.c_str(), ProgramSetting::databaseName.c_str() ));
|
||||
|
||||
}break;
|
||||
|
||||
|
@ -367,7 +367,7 @@ void MainWindow::OpenDigitizers(){
|
|||
for( int i = 0 ; i < nDigi; i++ ) delete digi[i];
|
||||
|
||||
LogMsg((char*)"============= detect digitizers");
|
||||
vector<int> DPPType;
|
||||
std::vector<int> DPPType;
|
||||
DPPType.clear();
|
||||
portID.clear();
|
||||
boardID.clear();
|
||||
|
@ -407,7 +407,7 @@ void MainWindow::OpenDigitizers(){
|
|||
digi[i]->GetDPPTypeString().c_str(),
|
||||
digi[i]->GetModelName().c_str()));
|
||||
|
||||
digi[i]->OpenSettingBinary("./setting_" + to_string(digi[i]->GetSerialNumber()) + ".bin");
|
||||
digi[i]->OpenSettingBinary("./setting_" + std::to_string(digi[i]->GetSerialNumber()) + ".bin");
|
||||
}
|
||||
|
||||
fMenuDigitizers->DisableEntry( M_DIGITIZER_OPEN);
|
||||
|
|
8
FSUDAQ.h
8
FSUDAQ.h
|
@ -22,6 +22,7 @@
|
|||
#include "channelSettingPSD.h"
|
||||
#include "registerSetting.h"
|
||||
#include "triggerSummary.h"
|
||||
#include "programSetting.h"
|
||||
|
||||
class TGWindow;
|
||||
class TGMainFrame;
|
||||
|
@ -52,9 +53,9 @@ private:
|
|||
TGTextButton *bFitTrace;
|
||||
|
||||
unsigned short nDigi;
|
||||
vector<int> portID;
|
||||
vector<int> boardID;
|
||||
vector<int> serialNum;
|
||||
std::vector<int> portID;
|
||||
std::vector<int> boardID;
|
||||
std::vector<int> serialNum;
|
||||
static Digitizer ** digi;
|
||||
|
||||
static BoardSetting * boardSetting;
|
||||
|
@ -62,6 +63,7 @@ private:
|
|||
ChannelSettingPSD * channelSettingPSD;
|
||||
RegisterSetting * registerSetting;
|
||||
TriggerSummary * triggerSummary;
|
||||
ProgramSetting * programSetting;
|
||||
|
||||
TThread * fillHistThread;
|
||||
|
||||
|
|
13
Makefile
13
Makefile
|
@ -11,8 +11,7 @@ CAENLIBS = -lCAENDigitizer
|
|||
|
||||
ROOTLIBS = `root-config --cflags --glibs`
|
||||
|
||||
#OBJS = channelSettingPSD.o channelSettingPHA.o boardSetting.o ClassDigitizer.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o
|
||||
OBJS = triggerSummary.o registerSetting.o channelSettingPSD.o channelSettingPHA.o boardSetting.o ClassDigitizer.o FSUDAQ.o
|
||||
OBJS = programSetting.o triggerSummary.o registerSetting.o channelSettingPSD.o channelSettingPHA.o boardSetting.o ClassDigitizer.o FSUDAQ.o
|
||||
|
||||
#########################################################################
|
||||
|
||||
|
@ -24,12 +23,6 @@ clean :
|
|||
ClassDigitizer.o : ClassDigitizer.cpp ClassDigitizer.h RegisterAddress.h macro.h ClassData.h
|
||||
$(CC) $(COPTS) -c ClassDigitizer.cpp
|
||||
|
||||
#DigitizerPHA.o : DigitizerPHA.cpp DigitizerPHA.h ClassDigitizer.o
|
||||
# $(CC) $(COPTS) -c DigitizerPHA.cpp
|
||||
#
|
||||
#DigitizerPSD.o : DigitizerPSD.cpp DigitizerPSD.h ClassDigitizer.o
|
||||
# $(CC) $(COPTS) -c DigitizerPSD.cpp
|
||||
|
||||
test : test.cpp ClassDigitizer.o
|
||||
@echo "--------- making test"
|
||||
$(CC) $(COPTS) -o test test.cpp ClassDigitizer.o $(CAENLIBS) $(ROOTLIBS)
|
||||
|
@ -70,6 +63,10 @@ triggerSummary.o : triggerSummary.h triggerSummary.cpp
|
|||
@echo "----------- creating triggerSummary.o"
|
||||
$(CC) $(COPTS) -c triggerSummary.cpp $(ROOTLIBS)
|
||||
|
||||
programSetting.o : programSetting.h programSetting.cpp
|
||||
@echo "----------- creating programSetting.o"
|
||||
$(CC) $(COPTS) -c programSetting.cpp $(ROOTLIBS)
|
||||
|
||||
|
||||
#CutsCreator: $(OBJS3) src/CutsCreator.c
|
||||
# g++ -std=c++17 -pthread src/CutsCreator.c -o CutsCreator $(ROOTLIBS)
|
||||
|
|
|
@ -713,11 +713,6 @@ BoardSetting::~BoardSetting(){
|
|||
isOpened = false;
|
||||
|
||||
printf("close BoardSetting window\n");
|
||||
|
||||
//for( int i = 0; i < nDigi; i++) digi[i] = 0;
|
||||
//pha = 0;
|
||||
//psd = 0;
|
||||
//delete readStatusThread;
|
||||
|
||||
delete boardIDEntry;
|
||||
for(int i = 0; i < NUM_BOARD_INFO; i++) delete entry[i];
|
||||
|
|
|
@ -557,46 +557,14 @@ void ChannelSettingPHA::SetAllChannels(){
|
|||
short ch = chIDEntry->GetNumber();
|
||||
|
||||
///use memory from this channel and set to all other channal
|
||||
|
||||
//digi[boardID]
|
||||
|
||||
|
||||
|
||||
/*
|
||||
uint32_t bit = 0;
|
||||
bit += numTrapScale->GetNumber();
|
||||
bit += ((cbDecimation->GetSelected() & 0x3) << 8) ;
|
||||
bit += ((cbDecimationGain->GetSelected() & 0x3) << 10);
|
||||
bit += ((cbPeakMean->GetSelected() & 0x3) << 12);
|
||||
bit += ((cbPolarity->GetSelected() & 0x3) << 16);
|
||||
bit += ((cbTriggerMode->GetSelected() & 0x3) << 18);
|
||||
bit += ((cbBaseLineAvg->GetSelected() & 0x7) << 20);
|
||||
bit += ((cbDisableSelfTrigger->GetSelected() & 0x1) << 24);
|
||||
bit += ((cbRollOver->GetSelected() & 0x1) << 26);
|
||||
bit += ((cbPileUp->GetSelected() & 0x1) << 27);
|
||||
|
||||
printf(" DPP1 bit: 0x%x\n", bit);
|
||||
digi[boardID]->WriteRegister(Register::DPP::DPPAlgorithmControl, bit, -1);
|
||||
|
||||
bit = 0;
|
||||
if( cbLocalShapedTrigger->GetSelected() >= 0 ){
|
||||
bit += cbLocalShapedTrigger->GetSelected();
|
||||
bit += ( 1 << 2);
|
||||
for( int p = 0; (int) RegisterPHAList.size(); p++){
|
||||
unsigned short temp = digi[boardID]->GetSettingFromMemory(RegisterPHAList[p], ch);
|
||||
|
||||
for( int i = 0; i < digi[boardID]->GetNChannel() ; i++){
|
||||
if( i == ch ) continue;
|
||||
digi[boardID]->WriteRegister(RegisterPHAList[p], temp, i);
|
||||
}
|
||||
}
|
||||
if( cbLocalTriggerValid->GetSelected() >= 0 ){
|
||||
bit += ((cbLocalTriggerValid->GetSelected() << 4) & 0x3);
|
||||
bit += ( 1 << 6);
|
||||
}
|
||||
bit += ((cbExtra2WordOption->GetSelected() & 0x7) << 8 );
|
||||
bit += ((cbVetoSource->GetSelected() & 0x3) << 14 );
|
||||
bit += ((cbTriggerCounterRate->GetSelected() & 0x3) << 16 );
|
||||
bit += ((cbBaselineCal->GetSelected() & 0x1) << 18 );
|
||||
bit += ((cbTagCorrelatedEvent->GetSelected() & 0x1) << 19 );
|
||||
bit += ((cbBaselineOptimize->GetSelected() & 0x1) << 29 );
|
||||
|
||||
printf(" DPP2 bit: 0x%x\n", bit);
|
||||
digi[boardID]->WriteRegister(Register::DPP::PHA::DPPAlgorithmControl2_G, bit, -1);
|
||||
*/
|
||||
}
|
||||
|
||||
void ChannelSettingPHA::SetChannelMask(){
|
||||
|
|
67
programSetting.cpp
Normal file
67
programSetting.cpp
Normal file
|
@ -0,0 +1,67 @@
|
|||
#include <TApplication.h>
|
||||
#include <TGClient.h>
|
||||
#include <TCanvas.h>
|
||||
#include <TF1.h>
|
||||
#include <TRandom.h>
|
||||
#include <TRootEmbeddedCanvas.h>
|
||||
#include <TGTableContainer.h>
|
||||
#include <TGFileDialog.h>
|
||||
|
||||
#include "programSetting.h"
|
||||
|
||||
std::string ProgramSetting::IP = "http://fsunuc.physics.fsu.edu/influx/";
|
||||
std::string ProgramSetting::databaseName = "testing";
|
||||
|
||||
ProgramSetting::ProgramSetting(const TGWindow *p){
|
||||
fMain = new TGMainFrame(p, 600, 400);
|
||||
fMain->SetWindowName("Program Setting");
|
||||
fMain->Connect("CloseWindow()", "ProgramSetting", this, "CloseWindow()");
|
||||
|
||||
TGVerticalFrame * vframe = new TGVerticalFrame(fMain); fMain->AddFrame(vframe);
|
||||
|
||||
{///============== Database
|
||||
TGGroupFrame * gfDatabase = new TGGroupFrame(vframe, "Database Setting", kHorizontalFrame); vframe->AddFrame(gfDatabase, new TGLayoutHints(kLHintsExpandY, 5, 5, 5, 5));
|
||||
|
||||
TGVerticalFrame * vfDB = new TGVerticalFrame(gfDatabase); gfDatabase->AddFrame(vfDB);
|
||||
|
||||
TGHorizontalFrame * hfDB1 = new TGHorizontalFrame(vfDB); vfDB->AddFrame(hfDB1);
|
||||
TGLabel * lbIP = new TGLabel(hfDB1, "IP :"); hfDB1->AddFrame(lbIP, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||
txtIP = new TGTextEntry(hfDB1, IP.c_str()); hfDB1->AddFrame(txtIP, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||
txtIP->Resize(300, 20);
|
||||
txtIP->Connect("ReturnPressed()", "ProgramSetting", this, "SetDataBase()");
|
||||
|
||||
TGHorizontalFrame * hfDB2 = new TGHorizontalFrame(vfDB); vfDB->AddFrame(hfDB2);
|
||||
TGLabel * lbDBName = new TGLabel(hfDB2, "DB Name :"); hfDB2->AddFrame(lbDBName, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||
txtDBName = new TGTextEntry(hfDB2, databaseName.c_str()); hfDB2->AddFrame(txtDBName, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||
txtDBName->Connect("ReturnPressed()", "ProgramSetting", this, "SetDataBase()");
|
||||
|
||||
}
|
||||
|
||||
{///============== Read Time event building
|
||||
|
||||
|
||||
}
|
||||
|
||||
fMain->MapSubwindows();
|
||||
fMain->Resize(fMain->GetDefaultSize());
|
||||
fMain->MapWindow();
|
||||
}
|
||||
|
||||
ProgramSetting::~ProgramSetting(){
|
||||
|
||||
delete txtIP;
|
||||
delete txtDBName;
|
||||
|
||||
fMain->Cleanup();
|
||||
delete fMain;
|
||||
}
|
||||
|
||||
void ProgramSetting::SetDataBase(){
|
||||
|
||||
IP = txtIP->GetText();
|
||||
databaseName = txtDBName->GetText();
|
||||
|
||||
printf("IP: %s\n", IP.c_str());
|
||||
printf("Name: %s\n", databaseName.c_str());
|
||||
|
||||
}
|
38
programSetting.h
Normal file
38
programSetting.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
#ifndef PROGRAM_SETTING_H
|
||||
#define PROGRAM_SETTING_H
|
||||
|
||||
#include <TQObject.h>
|
||||
#include <RQ_OBJECT.h>
|
||||
#include <TGNumberEntry.h>
|
||||
#include <TGButton.h>
|
||||
#include <TGComboBox.h>
|
||||
#include <TThread.h>
|
||||
#include <TGLabel.h>
|
||||
#include <TGTextEdit.h>
|
||||
#include "ClassDigitizer.h"
|
||||
#include "macro.h"
|
||||
|
||||
class TGWindow;
|
||||
class TGMainFrame;
|
||||
|
||||
class ProgramSetting{
|
||||
RQ_OBJECT("ProgramSetting")
|
||||
private:
|
||||
TGMainFrame * fMain;
|
||||
|
||||
TGTextEntry * txtIP;
|
||||
TGTextEntry * txtDBName;
|
||||
|
||||
public:
|
||||
ProgramSetting(const TGWindow *p);
|
||||
virtual ~ProgramSetting();
|
||||
|
||||
void CloseWindow() { delete this;}
|
||||
|
||||
static std::string IP;
|
||||
static std::string databaseName;
|
||||
|
||||
void SetDataBase();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -134,14 +134,16 @@ RegisterSetting::~RegisterSetting(){
|
|||
|
||||
delete bSetALLChannel;
|
||||
delete lbValueUnit;
|
||||
delete txtInfo;
|
||||
//delete txtInfo;
|
||||
|
||||
for(int i = 0; i < MaxNChannels; i++) {
|
||||
delete txtValueHex[i];
|
||||
delete txtValueDec[i];
|
||||
delete txtValueUnit[i];
|
||||
}
|
||||
|
||||
|
||||
for( int i = 0; i < nDigi; i++ ) digi[i] = 0;
|
||||
|
||||
fMain->Cleanup();
|
||||
delete fMain;
|
||||
|
||||
|
|
|
@ -26,15 +26,13 @@ class RegisterSetting{
|
|||
TGComboBox * cbName;
|
||||
|
||||
TGCheckButton * bSetALLChannel;
|
||||
TGLabel * lbValueUnit;
|
||||
//TGLabel * txtInfo;
|
||||
|
||||
TGTextEntry * txtValueHex[MaxNChannels];
|
||||
TGTextEntry * txtValueDec[MaxNChannels];
|
||||
TGTextEntry * txtValueUnit[MaxNChannels];
|
||||
|
||||
TGLabel * lbValueUnit;
|
||||
|
||||
TGLabel * txtInfo;
|
||||
|
||||
unsigned int value[MaxNChannels];
|
||||
|
||||
int textID;
|
||||
|
|
29
test.cpp
29
test.cpp
|
@ -8,8 +8,8 @@
|
|||
#include "TGraph.h"
|
||||
#include "TH1.h"
|
||||
|
||||
#include <sys/time.h> /* struct timeval, select() */
|
||||
#include <termios.h> /* tcgetattr(), tcsetattr() */
|
||||
#include <sys/time.h> /** struct timeval, select() */
|
||||
#include <termios.h> /** tcgetattr(), tcsetattr() */
|
||||
|
||||
static struct termios g_old_kbd_mode;
|
||||
|
||||
|
@ -19,7 +19,7 @@ static void cooked(void){
|
|||
|
||||
static void uncooked(void){
|
||||
struct termios new_kbd_mode;
|
||||
/* put keyboard (stdin, actually) in raw, unbuffered mode */
|
||||
/** put keyboard (stdin, actually) in raw, unbuffered mode */
|
||||
tcgetattr(0, &g_old_kbd_mode);
|
||||
memcpy(&new_kbd_mode, &g_old_kbd_mode, sizeof(struct termios));
|
||||
new_kbd_mode.c_lflag &= ~(ICANON | ECHO);
|
||||
|
@ -32,9 +32,9 @@ static void raw(void){
|
|||
|
||||
static char init;
|
||||
if(init) return;
|
||||
/* put keyboard (stdin, actually) in raw, unbuffered mode */
|
||||
/** put keyboard (stdin, actually) in raw, unbuffered mode */
|
||||
uncooked();
|
||||
/* when we exit, go back to normal, "cooked" mode */
|
||||
/** when we exit, go back to normal, "cooked" mode */
|
||||
atexit(cooked);
|
||||
|
||||
init = 1;
|
||||
|
@ -47,7 +47,7 @@ int keyboardhit(){
|
|||
int status;
|
||||
|
||||
raw();
|
||||
/* check stdin (fd 0) for activity */
|
||||
/** check stdin (fd 0) for activity */
|
||||
FD_ZERO(&read_handles);
|
||||
FD_SET(0, &read_handles);
|
||||
timeout.tv_sec = timeout.tv_usec = 0;
|
||||
|
@ -61,11 +61,9 @@ int keyboardhit(){
|
|||
|
||||
int getch(void){
|
||||
unsigned char temp;
|
||||
|
||||
raw();
|
||||
/* stdin = fd 0 */
|
||||
/** stdin = fd 0 */
|
||||
if(read(0, &temp, 1) != 1) return 0;
|
||||
//printf("%s", &temp);
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
@ -91,9 +89,18 @@ int main(int argc, char* argv[]){
|
|||
//dig->OpenSettingBinary("setting_323.bin");
|
||||
dig->LoadSettingBinary("setting_323.bin");
|
||||
//dig->PrintSettingFromMemory();
|
||||
printf("##############################################################\n");
|
||||
dig->SaveSettingAsText("haha.txt");
|
||||
//printf("##############################################################\n");
|
||||
//dig->SaveSettingAsText("haha.txt");
|
||||
|
||||
//for( int i = 0; i < dig->GetNChannel(); i++){
|
||||
// dig->SaveSettingToFile(Register::DPP::NumberEventsPerAggregate_G, 10, i);
|
||||
//}
|
||||
|
||||
dig->SaveSettingToFile(Register::DPP::MaxAggregatePerBlockTransfer, 200, 0);
|
||||
|
||||
unsigned int bSize = dig->CalByteForBuffer();
|
||||
|
||||
printf("Buffer Size : %u byte = %.2f MB \n", bSize, bSize/1024./1024.);
|
||||
|
||||
/*
|
||||
const int nBoard = 2;
|
||||
|
|
Loading…
Reference in New Issue
Block a user