auto output root name
This commit is contained in:
parent
ee2962d4f9
commit
c78a327e25
60
Bin2Root.cpp
60
Bin2Root.cpp
|
@ -18,8 +18,8 @@ inline unsigned int getTime_us(){
|
|||
|
||||
#define MAX_TRACE_LENGTH 2000
|
||||
#define MAX_MULTI 100
|
||||
#define NMINARG 5
|
||||
#define debug 0
|
||||
#define NMINARG 4
|
||||
#define debug 0 // for > 1 number of hit to debug
|
||||
|
||||
//^#############################################################
|
||||
//^#############################################################
|
||||
|
@ -33,7 +33,7 @@ int main(int argc, char **argv) {
|
|||
printf("%s [timeWindow] [withTrace] [outFile] [inFile1] [inFile2] .... \n", argv[0]);
|
||||
printf(" timeWindow : in ns, -1 = no event building \n");
|
||||
printf(" withTrace : 0 for no trace, 1 for trace \n");
|
||||
printf(" outFile : output file name\n");
|
||||
printf(" outFile : Automatics generated\n");
|
||||
printf("\n");
|
||||
printf(" Example: %s -1 0 '\\ls -1 *001*.bin' (no event build, no trace, no verbose)\n", argv[0]);
|
||||
printf(" %s 100 0 '\\ls -1 *001*.bin' (event build with 100 ns, no trace, no verbose)\n", argv[0]);
|
||||
|
@ -47,20 +47,30 @@ int main(int argc, char **argv) {
|
|||
///============= read input
|
||||
long timeWindow = atoi(argv[1]);
|
||||
bool traceOn = atoi(argv[2]);
|
||||
TString outFileName = argv[3];
|
||||
const int nFile = argc - NMINARG + 1;
|
||||
TString inFileName[nFile];
|
||||
for( int i = 0 ; i < nFile ; i++){ inFileName[i] = argv[i + NMINARG -1];}
|
||||
|
||||
/// Form outFileName;
|
||||
// TString outFileName = inFileName[0];
|
||||
// int pos = outFileName.Last('/');
|
||||
// pos = outFileName.Index("_", pos+1); // find next "_"
|
||||
// pos = outFileName.Index("_", pos+1); // find next "_"
|
||||
// if( nFile == 1 ) pos = outFileName.Index("_", pos+1); // find next "_", S/N
|
||||
// outFileName.Remove(pos); // remove the rest
|
||||
// outFileName += "_" + ( timeWindow >= 0 ? std::to_string(timeWindow) : "single");
|
||||
// outFileName += ".root";
|
||||
int pos = inFileName[0].Last('_');
|
||||
TString outFileName = "";
|
||||
if( pos == -1 ) {
|
||||
if( timeWindow < 0 ) {
|
||||
outFileName ="temp_single.root";
|
||||
}else{
|
||||
outFileName = "temp_" + std::to_string(timeWindow) + ".root";
|
||||
}
|
||||
}else{
|
||||
TString temp = inFileName[0];
|
||||
temp.Remove(0, pos+1);
|
||||
temp.Remove(3);
|
||||
outFileName = "run" + temp;
|
||||
if( timeWindow < 0 ) {
|
||||
outFileName +="_single.root";
|
||||
}else{
|
||||
outFileName += "_" + std::to_string(timeWindow) + ".root";
|
||||
}
|
||||
}
|
||||
|
||||
printf("-------> Out file name : %s \n", outFileName.Data());
|
||||
printf("=========================================\n");
|
||||
|
@ -91,6 +101,7 @@ int main(int argc, char **argv) {
|
|||
unsigned short e[MAX_MULTI] = {0};
|
||||
unsigned short e2[MAX_MULTI] = {0};
|
||||
unsigned long long e_t[MAX_MULTI] = {0};
|
||||
unsigned short e_f[MAX_MULTI] = {0};
|
||||
unsigned short traceLength[MAX_MULTI];
|
||||
short trace[MAX_MULTI][MAX_TRACE_LENGTH];
|
||||
|
||||
|
@ -103,6 +114,7 @@ int main(int argc, char **argv) {
|
|||
tree->Branch("e", e, "e[multi]/s");
|
||||
tree->Branch("e2", e2, "e2[multi]/s");
|
||||
tree->Branch("e_t", e_t, "e_t[multi]/l");
|
||||
tree->Branch("e_f", e_f, "e_f[multi]/s");
|
||||
tree->Branch("traceLength", traceLength, "traceLength[multi]/s");
|
||||
|
||||
if( traceOn ) {
|
||||
|
@ -142,7 +154,7 @@ int main(int argc, char **argv) {
|
|||
// //find earliest time group;
|
||||
t0 = -1;
|
||||
for( short i = 0; i < nFile; i++){
|
||||
if( debug ) printf("NNNN %d | ID: %lld, %lld, %lld \n", i, ID[i], reader[i].GetHitID(), reader[i].GetNumHit() );
|
||||
if( debug ) printf("NNNNNNNNNNNNNNN %d | ID: %lld, %lld, %lld \n", i, ID[i], reader[i].GetHitID(), reader[i].GetNumHit() );
|
||||
if( ID[i] + 1 >= reader[i].GetNumHit()) continue;
|
||||
// if( ID[i] >= reader[i].GetHitID() ) reader[i].ReadBlock();
|
||||
if( debug ) reader[i].data.Print();
|
||||
|
@ -156,23 +168,22 @@ int main(int argc, char **argv) {
|
|||
if( debug ) printf("First timestamp is %llu, file ID : %u\n", t0, g0);
|
||||
|
||||
for( short i = 0; i < nFile; i++){
|
||||
short ig = (i + g0 ) % nFile;
|
||||
|
||||
if( ID[i] + 1 >= reader[ig].GetNumHit() ) continue;
|
||||
if( ID[i] + 1 >= reader[i].GetNumHit() ) continue;
|
||||
|
||||
if( timeWindow >= 0 ){
|
||||
do{
|
||||
if( (long int)( reader[ig].data.TimeStamp - t0) <= timeWindow ){
|
||||
events.push_back(reader[ig].data);
|
||||
ID[ig] ++;
|
||||
if( (long int)( reader[i].data.TimeStamp - t0) <= timeWindow ){
|
||||
events.push_back(reader[i].data);
|
||||
ID[i] ++;
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
}while( reader[ig].ReadBlock() == 1 );
|
||||
}while( reader[i].ReadBlock() == 1 );
|
||||
}else{
|
||||
events.push_back(reader[ig].data);
|
||||
ID[ig] ++;
|
||||
reader[ig].ReadBlock();
|
||||
events.push_back(reader[i].data);
|
||||
ID[i] ++;
|
||||
reader[i].ReadBlock();
|
||||
}
|
||||
|
||||
if( timeWindow < 0) break;
|
||||
|
@ -203,7 +214,8 @@ int main(int argc, char **argv) {
|
|||
ch[p] = events[p].Channel;
|
||||
e[p] = events[p].Energy;
|
||||
e2[p] = events[p].Energy_short;
|
||||
e_t[p] = events[p].TimeStamp;
|
||||
e_t[p] = events[p].TimeStamp / 1000;
|
||||
e_f[p] = events[p].TimeStamp % 1000;
|
||||
|
||||
traceLength[p] = events[p].NSample;
|
||||
if( traceOn ){
|
||||
|
@ -235,6 +247,8 @@ int main(int argc, char **argv) {
|
|||
|
||||
if( events.size() == 0 ) break;
|
||||
|
||||
if( debug > 1 && hitProcessed > debug ) break;
|
||||
|
||||
}while( nFileFinished < nFile );
|
||||
|
||||
tree->Write();
|
||||
|
|
|
@ -45,9 +45,9 @@ struct Data{
|
|||
printf("header : 0x%X \n", Header);
|
||||
printf(" Board : %u , Channel : %u\n", BoardID, Channel);
|
||||
if( Header & 4 ) {
|
||||
printf("Energy : %u, Energy2 : %u, TimeStamp : %lu ps\n", Energy, Energy_short, TimeStamp);
|
||||
printf("Energy : %5u, Energy2 : %5u, TimeStamp : %16lu ps\n", Energy, Energy_short, TimeStamp);
|
||||
}else{
|
||||
printf("Energy : %u, TimeStamp : %lu ps\n", Energy, TimeStamp);
|
||||
printf("Energy : %5u, TimeStamp : %16lu ps\n", Energy, TimeStamp);
|
||||
}
|
||||
printf(" Flag : 0x%X\n", Flags);
|
||||
if( (Header & 0x8 ) >= 1 ){ /// is waevform exist
|
||||
|
|
Loading…
Reference in New Issue
Block a user