diff --git a/armory/EventBuilder.cpp b/armory/EventBuilder.cpp index 6a4f6b2..63f6910 100644 --- a/armory/EventBuilder.cpp +++ b/armory/EventBuilder.cpp @@ -42,7 +42,7 @@ int main(int argn, char **argv){ if (argn < 6 ) { printf("Usage :\n"); - printf("%s [timeWindows] [mapping file] [Reject Flag] [SaveFileName] [*.evt File1] [*.evt File2] ...\n", argv[0]); + printf("%s [timeWindows] [mapping file] [Reject Flag] [QDC Flag] [SaveFileName] [*.evt File1] [*.evt File2] ...\n", argv[0]); printf(" timeWindows [int]: 1 unit = 10 ns \n"); printf(" mapping file path [str]: the path of mapping file. \n"); printf(" Reject Flag [int]: 0 = no rejection. see mapping.h\n"); @@ -51,6 +51,7 @@ int main(int argn, char **argv){ printf(" 4 = reject no GAGG\n"); printf(" 8 = reject zero energy data-point\n"); printf(" 3 = reject BGO + no gamma, 5 = reject BGO + no GAGG, etc.\n"); + printf(" QDC Flag [int]: 0 = no qdc, 1 = with qdc\n"); printf(" SaveFileName [str]: custom save file name \n"); return 1; } @@ -58,10 +59,11 @@ int main(int argn, char **argv){ int timeWindow = atoi(argv[1]); TString mappingFilePath = argv[2]; unsigned short rejectFlag = atoi(argv[3]); - TString outFileName = argv[4]; + unsigned short qdcFlag = atoi(argv[4]); + TString outFileName = argv[5]; std::vector inFileList; - for( int i = 5; i < argn; i++) inFileList.push_back(argv[i]); + for( int i = 6; i < argn; i++) inFileList.push_back(argv[i]); printf(" Mapping file Path : %s \n", mappingFilePath.Data()); printf(" Time window : %d ticks\n", timeWindow); @@ -142,12 +144,15 @@ int main(int argn, char **argv){ // Int_t multiCry = 0 ; /// thi is total multiplicity for all crystal // newtree->Branch("multiCry", &multiCry, "multiplicity_crystal/I"); - UInt_t id[MAXMULTI] = {0}; - Int_t e[MAXMULTI] = {-1}; + UInt_t id[MAXMULTI] = {0}; + Int_t e[MAXMULTI] = {-1}; ULong64_t e_t[MAXMULTI] = {0}; + UInt_t qdc[MAXMULTI][8] = {0}; newtree->Branch("id", id, "id[multi]/i" ); newtree->Branch("e", e, "e[multi]/I" ); newtree->Branch("e_t", e_t, "e_timestamp[multi]/l"); + if( qdcFlag ) newtree->Branch("qdc", qdc, "qdc[multi][8]/I"); + saveFile->cd(); @@ -179,7 +184,9 @@ int main(int argn, char **argv){ hitList = reader->ReadBatchPos(BUFFERSIZE, DEBUG); blockCount += hitList.size(); - printf("File-%ld %10lu block %10lu / %lu | %u \n", i, hitList.size(), blockCount, totalBlock, eventID); + // std::cout << "please wait....."; + printf("File-%ld %10lu block %10lu / %lu [%4.1f%%] | %u \r", i, hitList.size(), blockCount, totalBlock, blockCount*100./totalBlock, eventID); + fflush(stdout); if( hitList.size() == 0 ) break; for( size_t k = 0; k < hitList.size(); k++ ){ @@ -199,17 +206,22 @@ int main(int argn, char **argv){ e[0] = event[0].energy; e_t[0] = event[0].time; + if( qdcFlag ) for( int i = 0; i < 8; i++) qdc[0][i] = event[0].QDCsum[i]; + if( DEBUG ){ printf("====================== event %u, event size %u\n", eventID, multi); printf("%6d, %12llu \n", event[0].energy, event[0].time); } - if( (rejectFlag & 0x8 ) && e[0] != 0 ) { - saveFile->cd(); - newtree->Fill(); - eventID ++; + if( (rejectFlag & 0x8 ) && e[0] == 0 ) { + event.clear(); + continue; } + saveFile->cd(); + newtree->Fill(); + eventID ++; + event.clear(); } @@ -236,6 +248,7 @@ int main(int argn, char **argv){ e_t[count] = event[p].time; int index = event[p].crate*MAX_BOARDS_PER_CRATE*MAX_CHANNELS_PER_BOARD + (event[p].slot-BOARD_START)*MAX_CHANNELS_PER_BOARD + event[p].ch; id[count] = mapping[index]; + if( qdcFlag ) for( int i = 0; i < 8; i++) qdc[count][i] = event[p].QDCsum[i]; if( DEBUG ) printf("%u | %3d, %6d, %12llu \n", count, id[count], e[count], e_t[count]); if( 0 <= id[count] && id[count] < 100 ) nClover ++; @@ -297,6 +310,7 @@ int main(int argn, char **argv){ id[p] = mapping[index]; e[p] = event[p].energy; e_t[p] = event[p].time; + if( qdcFlag ) for( int i = 0; i < 8; i++) qdc[p][i] = event[p].QDCsum[i]; } saveFile->cd(); newtree->Fill(); diff --git a/armory/makefile b/armory/makefile index 0a5ff99..e4e196e 100644 --- a/armory/makefile +++ b/armory/makefile @@ -1,4 +1,5 @@ CC=g++ +CFLAG= -O2 -w #all: to2root evt2hist MergeEVT ev22txt EventBuilder pxi-time-order all: to2root evt2hist ev22txt EventBuilder pxi-fsu-time-order @@ -12,7 +13,7 @@ all: to2root evt2hist ev22txt EventBuilder pxi-fsu-time-order #this is for eventbuild to2root: ../armory/to2root.cpp ../armory/DataBlock.h ../armory/evtReader.h ../mapping.h - $(CC) ../armory/to2root.cpp -o to2root `root-config --cflags --glibs` + $(CC) $(CFLAG) ../armory/to2root.cpp -o to2root `root-config --cflags --glibs` #this is for online root # MergeEVT: ../armory/MergeEVT.cpp ../armory/DataBlock.h ../armory/evtReader.h ../mapping.h @@ -20,19 +21,19 @@ to2root: ../armory/to2root.cpp ../armory/DataBlock.h ../armory/evtReader.h ../ma #this is for online spectrums evt2hist: ../armory/evt2hist.cpp ../armory/DataBlock.h ../armory/evtReader.h ../mapping.h - $(CC) ../armory/evt2hist.cpp -o evt2hist `root-config --cflags --glibs` + $(CC) $(CFLAG) ../armory/evt2hist.cpp -o evt2hist `root-config --cflags --glibs` pxi-fsu-time-order: ../armory/pxi-fsu-time-order.cpp - $(CC) ../armory/pxi-fsu-time-order.cpp -o pxi-fsu-time-order + $(CC) $(CFLAG) ../armory/pxi-fsu-time-order.cpp -o pxi-fsu-time-order ev22txt: ../armory/ev22txt.cpp - $(CC) ../armory/ev22txt.cpp -o ev22txt + $(CC) $(CFLAG) ../armory/ev22txt.cpp -o ev22txt EventBuilder: ../armory/EventBuilder.cpp - $(CC) ../armory/EventBuilder.cpp -o EventBuilder `root-config --cflags --glibs` + $(CC) $(CFLAG) ../armory/EventBuilder.cpp -o EventBuilder `root-config --cflags --glibs` test: ../armory/test.cpp ../armory/DataBlock.h ../armory/evtReader.h ../mapping.h - $(CC) ../armory/test.cpp -o test `root-config --cflags --glibs` + $(CC) $(CFLAG) ../armory/test.cpp -o test `root-config --cflags --glibs` clean: -rm xia2root to2root MergeEVT evt2hist pxi-time-order ev22txt EventBuilder test