add timeOffset example file
This commit is contained in:
parent
0f487c354b
commit
84851051f7
64
Bin2Root.cpp
64
Bin2Root.cpp
|
@ -52,30 +52,40 @@ std::vector<std::pair<int, int64_t>> readFileAndExtractData(const std::string& f
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int extractDigiSN(const std::string& str) {
|
// Function to extract the number between the n-th and (n+1)-th underscore
|
||||||
std::size_t firstUnderscore = str.find('_');
|
int extractDigiSN(const std::string& str, int n = 1) {
|
||||||
if (firstUnderscore == std::string::npos) {
|
std::size_t pos = 0;
|
||||||
return -1; // No first underscore found, return an error value
|
|
||||||
}
|
|
||||||
|
|
||||||
std::size_t secondUnderscore = str.find('_', firstUnderscore + 1);
|
// Find the position of the n-th underscore
|
||||||
if (secondUnderscore == std::string::npos) {
|
for (int i = 0; i < n; ++i) {
|
||||||
return -1; // No second underscore found, return an error value
|
pos = str.find('_', pos);
|
||||||
|
if (pos == std::string::npos) {
|
||||||
|
std::cerr << "Less than " << n << " underscores in the string." << std::endl;
|
||||||
|
return -1; // Return error if there are fewer underscores than expected
|
||||||
}
|
}
|
||||||
|
++pos; // Move to the next character after the underscore
|
||||||
|
}
|
||||||
|
|
||||||
// Extract the substring between the first and second underscores
|
// Find the position of the (n+1)-th underscore
|
||||||
std::string extracted = str.substr(firstUnderscore + 1, secondUnderscore - firstUnderscore - 1);
|
std::size_t nextUnderscore = str.find('_', pos);
|
||||||
|
if (nextUnderscore == std::string::npos) {
|
||||||
// Convert the extracted string to an integer using std::stoi
|
std::cerr << "No (n+1)-th underscore found." << std::endl;
|
||||||
try {
|
return -1; // Return error if there's no (n+1)-th underscore
|
||||||
return std::stoi(extracted);
|
}
|
||||||
} catch (const std::invalid_argument& e) {
|
|
||||||
std::cerr << "Invalid number format: " << extracted << std::endl;
|
// Extract the substring between the n-th and (n+1)-th underscores
|
||||||
return -1; // Return an error value on conversion failure
|
std::string extracted = str.substr(pos, nextUnderscore - pos);
|
||||||
} catch (const std::out_of_range& e) {
|
|
||||||
std::cerr << "Number out of range: " << extracted << std::endl;
|
// Convert the extracted substring to an integer using std::stoi
|
||||||
return -1; // Return an error value if the number is too large
|
try {
|
||||||
}
|
return std::stoi(extracted);
|
||||||
|
} catch (const std::invalid_argument& e) {
|
||||||
|
std::cerr << "Invalid number format: " << extracted << std::endl;
|
||||||
|
return -1; // Return an error value on conversion failure
|
||||||
|
} catch (const std::out_of_range& e) {
|
||||||
|
std::cerr << "Number out of range: " << extracted << std::endl;
|
||||||
|
return -1; // Return an error value if the number is too large
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//^#############################################################
|
//^#############################################################
|
||||||
|
@ -96,7 +106,8 @@ int main(int argc, char **argv) {
|
||||||
printf(" %s 100 0 '\\ls -1 *001*.bin' (event build with 100 ns, 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]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf(" Time offset file format :\n");
|
printf(" Time offset file format :\n");
|
||||||
printf("[digi ID] [time offset(int64_t)]\n");
|
printf("[n, sn appears between the n-th - (n+1)-th underscore of the fileName] 0\n");
|
||||||
|
printf("[digi sn] [time offset(int64_t)]\n");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf(" file name should be this format CH0@V1725_324_Data_run_196.bin\n");
|
printf(" file name should be this format CH0@V1725_324_Data_run_196.bin\n");
|
||||||
printf(" so that the serial number is between the 1st and 2nd underscore\n");
|
printf(" so that the serial number is between the 1st and 2nd underscore\n");
|
||||||
|
@ -138,6 +149,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::pair<int, int64_t>> timeOffsetList ;
|
std::vector<std::pair<int, int64_t>> timeOffsetList ;
|
||||||
|
timeOffsetList.clear();
|
||||||
|
|
||||||
printf("-------> Out file name : %s \n", outFileName.Data());
|
printf("-------> Out file name : %s \n", outFileName.Data());
|
||||||
printf("=========================================\n");
|
printf("=========================================\n");
|
||||||
|
@ -160,9 +172,11 @@ int main(int argc, char **argv) {
|
||||||
for(int i = 0; i < nFile; i++ ){
|
for(int i = 0; i < nFile; i++ ){
|
||||||
printf(">>>>>>>> %2d | %s \n", i, inFileName[i].Data());
|
printf(">>>>>>>> %2d | %s \n", i, inFileName[i].Data());
|
||||||
reader[i].OpenFile(inFileName[i]);
|
reader[i].OpenFile(inFileName[i]);
|
||||||
for (size_t i = 0 ; timeOffsetList.size(); i++) {
|
if( timeOffsetList.size() > 1 ){
|
||||||
int sn = extractDigiSN(inFileName[i].Data());
|
for (size_t i = 1 ; timeOffsetList.size(); i++) {
|
||||||
if( sn == timeOffsetList[i].first ) reader[i].SetTimeOffset(timeOffsetList[i].second);
|
int sn = extractDigiSN(inFileName[i].Data(), timeOffsetList[0].first);
|
||||||
|
if( sn == timeOffsetList[i].first ) reader[i].SetTimeOffset(timeOffsetList[i].second);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
reader[i].ScanNumHit();
|
reader[i].ScanNumHit();
|
||||||
totalHitCount += reader[i].GetNumHit();
|
totalHitCount += reader[i].GetNumHit();
|
||||||
|
|
4
timeOffset.txt
Normal file
4
timeOffset.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
1 0
|
||||||
|
123 456
|
||||||
|
86 49
|
||||||
|
19267 0
|
Loading…
Reference in New Issue
Block a user