modified DataReaderScritp.cpp

This commit is contained in:
carina@hades 2023-08-28 15:19:50 -04:00
parent 1bbfeff571
commit bfb3228e97
4 changed files with 44 additions and 69 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@ EventKenshikushi
EventBuilder
DataGenerator
DataReaderScript
DataReader
pid.dat
DAQLock.dat

View File

@ -1,13 +1,16 @@
/*************
This can be loaded to root and run the DataReader()
***********/
#include "ClassData.h"
#include "MultiBuilder.h"
void DataReaderScript(){
void DataReader(std::string fileName, int DPPType){
Data * data = new Data();
data->DPPType = V1730_DPP_PSD_CODE;
std::string fileName = "data/temp_046_325_PHA_000.fsu";
data->DPPType = DPPType;
FILE * haha = fopen(fileName.c_str(), "r");
fseek(haha, 0L, SEEK_END);
@ -17,17 +20,22 @@ void DataReaderScript(){
fseek(haha, 0, SEEK_SET);
MultiBuilder * mb = new MultiBuilder(data, V1730_DPP_PSD_CODE);
MultiBuilder * mb = new MultiBuilder(data, DPPType);
char * buffer = nullptr;
int countBdAgg = 0;
do{
long fPos1 = ftell(haha);
//long fPos1 = ftell(haha);
unsigned int word[1]; /// 4 bytes
size_t dummy = fread(word, 4, 1, haha);
if( dummy != 1) {
printf("fread error, should read 4 bytes, but read %ld x 4 byte, file pos: %ld byte\n", dummy, ftell(haha));
break;
}
fseek(haha, -4, SEEK_CUR);
short header = ((word[0] >> 28 ) & 0xF);
if( header != 0xA ) break;
@ -35,13 +43,16 @@ void DataReaderScript(){
unsigned int aggSize = (word[0] & 0x0FFFFFFF) * 4; ///byte
buffer = new char[aggSize];
dummy = fread(buffer, aggSize, 1, haha);
if( dummy != 1) printf("fread error, should read 4 bytes, but read %ld x 4 byte\n", dummy);
if( dummy != 1) {
printf("fread error, should read %d bytes, but read %ld x %d byte, file pos: %ld byte \n", aggSize, dummy, aggSize, ftell(haha));
break;
}
long fPos2 = ftell(haha);
//long fPos2 = ftell(haha);
countBdAgg ++;
printf("Board Agg. has %d word = %d bytes | %ld - %ld\n", aggSize/4, aggSize, fPos1, fPos2);
printf("==================== %d Agg\n", countBdAgg);
// printf("Board Agg. has %d word = %d bytes | %ld - %ld\n", aggSize/4, aggSize, fPos1, fPos2);
// printf("==================== %d Agg\n", countBdAgg);
data->DecodeBuffer(buffer, aggSize, false, 0); // data own the buffer
data->ClearBuffer(); // this will clear the buffer.
@ -57,22 +68,35 @@ void DataReaderScript(){
}while(!feof(haha) && ftell(haha) < inFileSize);
data->PrintStat();
data->PrintAllData();
fclose(haha);
mb->PrintStat();
printf("============================ done | Total Agg. %d\n", countBdAgg);
data->PrintStat();
//data->PrintAllData();
//mb->PrintStat();
delete mb;
delete data;
}
int main(){
int main(int argc, char **argv){
DataReaderScript();
printf("=========================================\n");
printf("=== *.fsu data reader ===\n");
printf("=========================================\n");
if (argc <= 1) {
printf("Incorrect number of arguments:\n");
printf("%s [inFile] [DPPType] \n", argv[0]);
printf(" +-- PHA = %d\n", V1730_DPP_PHA_CODE);
printf(" +-- PSD = %d\n", V1730_DPP_PSD_CODE);
return 1;
}
DataReader(argv[1], atoi(argv[2]));
return 0;

View File

@ -238,7 +238,7 @@ int main(int argc, char **argv) {
}
aggCount++;
}while(aggCount < 10); // get 10 agg
}while(aggCount < 10); // get 10 agg should be enough for events building
mb->BuildEvents(0, 0, debug);

View File

@ -1,50 +0,0 @@
########################################################################
#
#
#########################################################################
CC = g++
#COPTS = -fPIC -DLINUX -O2 -std=c++17 -lpthread
COPTS = -fPIC -DLINUX -g -O2 -Wall -std=c++17 -lpthread
CAENLIBS = -lCAENDigitizer
ROOTLIBS = `root-config --cflags --glibs`
OBJS = ClassDigitizer.o MultiBuilder.o
ALL = test test_indep DataGenerator EventBuilder DataReaderScript
#########################################################################
all : $(ALL)
clean :
/bin/rm -f $(OBJS) $(ALL)
MultiBuilder.o : MultiBuilder.cpp MultiBuilder.h
$(CC) $(COPTS) -c MultiBuilder.cpp
ClassDigitizer.o : ClassDigitizer.cpp ClassDigitizer.h RegisterAddress.h macro.h ClassData.h
$(CC) $(COPTS) -c ClassDigitizer.cpp
test : test.cpp ClassDigitizer.o
@echo "--------- making test"
$(CC) $(COPTS) -o test test.cpp ClassDigitizer.o $(CAENLIBS) $(ROOTLIBS)
test_indep : test_indep.cpp RegisterAddress.h macro.h
@echo "--------- making test_indep"
$(CC) $(COPTS) -o test_indep test_indep.cpp $(CAENLIBS)
DataGenerator : DataGenerator.cpp ClassDigitizer.o
@echo "--------- making DataGenerator"
$(CC) $(COPTS) -o DataGenerator DataGenerator.cpp ClassDigitizer.o $(CAENLIBS)
DataReaderScript : DataReaderScript.cpp ClassData.h MultiBuilder.o
@echo "--------- making DataReaderScript"
$(CC) $(COPTS) -o DataReaderScript DataReaderScript.cpp ClassData.h MultiBuilder.o $(CAENLIBS)
EventBuilder : EventBuilder.cpp ClassData.h MultiBuilder.o
@echo "--------- making EventBuilder"
$(CC) $(COPTS) -o EventBuilder EventBuilder.cpp MultiBuilder.o $(CAENLIBS) $(ROOTLIBS)