Performance boot of EventBuilderNoTrace.cpp
This commit is contained in:
parent
3f282f9e8e
commit
39cda3bc3c
|
@ -42,7 +42,6 @@ struct GroupInfo{
|
|||
|
||||
};
|
||||
|
||||
|
||||
//^#############################################################
|
||||
//^#############################################################
|
||||
int main(int argc, char **argv) {
|
||||
|
@ -59,6 +58,8 @@ int main(int argc, char **argv) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uInt runStartTime = get_time_us();
|
||||
|
||||
/// File format must be YYY...Y_runXXX_AAA_BBB_TT_CCC.fsu
|
||||
/// YYY...Y = prefix
|
||||
/// XXX = runID, 3 digits
|
||||
|
@ -170,7 +171,7 @@ int main(int argc, char **argv) {
|
|||
TFile * outRootFile = new TFile(outFileName, "recreate");
|
||||
TTree * tree = new TTree("tree", outFileName);
|
||||
|
||||
unsigned long long evID = -1;
|
||||
unsigned long long evID = 0;
|
||||
unsigned int multi = 0;
|
||||
unsigned short sn[MAX_MULTI] = {0}; /// board SN
|
||||
//unsigned short bd[MAX_MULTI] = {0}; /// boardID
|
||||
|
@ -205,7 +206,6 @@ int main(int argc, char **argv) {
|
|||
//*====================================== build events
|
||||
printf("================= Building events....\n");
|
||||
|
||||
evID = 0;
|
||||
std::vector<Hit> event;
|
||||
Hit temp;
|
||||
|
||||
|
@ -214,13 +214,15 @@ int main(int argc, char **argv) {
|
|||
|
||||
uInt hitProcessed = 0;
|
||||
|
||||
ullong tStart = 0;
|
||||
ullong tEnd = 0;
|
||||
|
||||
do{
|
||||
|
||||
event.clear();
|
||||
t0 = -1;
|
||||
|
||||
//// Find earliest time
|
||||
// ullong torg = getTime_ns();
|
||||
/// Find earliest time
|
||||
for( int gpID = 0; gpID < nGroup; gpID++){
|
||||
|
||||
if( group[gpID].finished ) continue;
|
||||
|
@ -229,7 +231,6 @@ int main(int argc, char **argv) {
|
|||
if( group[gpID].hitID >= group[gpID].hitCount) {
|
||||
|
||||
// printf(" group ID : %d, reader ID : %d is finished. \n", gpID, group[gpID].readerIDList[group[gpID].currentID]);
|
||||
|
||||
group[gpID].currentID ++;
|
||||
|
||||
if( group[gpID].currentID >= group[gpID].readerIDList.size() ) {
|
||||
|
@ -254,9 +255,6 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
if (debug ) printf("the eariliest time is %llu at Group : %u, hitID : %lu, %s\n", t0, group0, group[group0].hitID, fileInfo[group[group0].currentID].fileName.Data());
|
||||
|
||||
// ullong t1 = getTime_ns();
|
||||
// printf("Find earliest Time used : %llu ns \n", t1 - torg);
|
||||
|
||||
printf("hit Porcessed %u/%u....%.2f%%\n\033[A\r", hitProcessed, totHitCount, hitProcessed*100./totHitCount);
|
||||
|
||||
for(int i = 0; i < nGroup; i++){
|
||||
|
@ -277,16 +275,11 @@ int main(int argc, char **argv) {
|
|||
}else{
|
||||
break;
|
||||
}
|
||||
|
||||
if( timeWindow == 0 ) break;
|
||||
}
|
||||
|
||||
if( timeWindow == 0 ) break;
|
||||
}
|
||||
|
||||
// ullong t2 = getTime_ns();
|
||||
// printf(" getting an event used %llu ns\n", t2 - t1);
|
||||
|
||||
if( event.size() > 1) {
|
||||
std::sort(event.begin(), event.end(), [](const Hit& a, const Hit& b) {
|
||||
return a.timestamp < b.timestamp;
|
||||
|
@ -297,13 +290,12 @@ int main(int argc, char **argv) {
|
|||
|
||||
if (debug )printf("########### evID : %llu, multi : %u \n", evID, multi);
|
||||
|
||||
if( multi == 0 ) break;
|
||||
|
||||
// ullong t3 = getTime_ns();
|
||||
// printf(" sort event used %llu ns\n", t3 - t2);
|
||||
|
||||
if( evID == 0) tStart = event.front().timestamp;
|
||||
|
||||
if( multi > 0 ) {
|
||||
tEnd = event.back().timestamp;
|
||||
for( size_t j = 0; j < multi ; j++){
|
||||
|
||||
sn[j] = event[j].sn;
|
||||
ch[j] = event[j].ch;
|
||||
e[j] = event[j].energy;
|
||||
|
@ -316,24 +308,32 @@ int main(int argc, char **argv) {
|
|||
|
||||
outRootFile->cd();
|
||||
tree->Fill();
|
||||
|
||||
// ullong t4 = getTime_ns();
|
||||
// printf(" Fill tree used %llu ns\n", t4 - t3);
|
||||
evID ++;
|
||||
}
|
||||
|
||||
//check if all groups are finished
|
||||
int gpCount = 0;
|
||||
for( size_t i = 0; i < group.size(); i++){
|
||||
if( group[i].finished ) gpCount ++;
|
||||
}
|
||||
if( gpCount == (int) group.size() ) break;
|
||||
if( gpCount == (int) group.size() ) {
|
||||
break;
|
||||
}
|
||||
|
||||
evID ++;
|
||||
}while(true);
|
||||
|
||||
tree->Write();
|
||||
|
||||
uInt runEndTime = get_time_us();
|
||||
double runTime = (runEndTime - runStartTime) * 1e-6;
|
||||
|
||||
printf("========================= finished.\n");
|
||||
printf("total events built = %llu(%llu)\n", evID, tree->GetEntriesFast());
|
||||
printf(" event building time = %.2f sec = %.2f min\n", runTime, runTime/60.);
|
||||
printf(" total events built = %llu by event builder (%llu in tree)\n", evID, tree->GetEntriesFast());
|
||||
double tDuration_sec = (tEnd - tStart) * 1e-9;
|
||||
printf(" first timestamp = %20llu ns\n", tStart);
|
||||
printf(" last timestamp = %20llu ns\n", tEnd);
|
||||
printf(" total data duration = %.2f sec = %.2f min\n", tDuration_sec, tDuration_sec/60.);
|
||||
printf("=======> saved to %s \n", outFileName.Data());
|
||||
|
||||
outRootFile->Close();
|
||||
|
|
Loading…
Reference in New Issue
Block a user