REST-for-Physics
v2.3
Rare Event Searches ToolKit for Physics
|
String helper classes. Declared static to be able to have direct access to the methods. More...
Functions | |
Int_t | Count (std::string s, std::string sbstring) |
Counts the number of occurences of substring inside the input string in. | |
TF1 * | CreateTF1FromString (std::string func, double init, double end) |
Reads a function with parameter options from string and returns it as TF1*. More... | |
std::string | CropWithPrecision (std::string in, Int_t precision) |
It crops a floating number given inside the string in with the given precision. I.e. CropWithPrecision("3.48604", 2) will return "3.48". More... | |
std::string | DataMemberNameToParameterName (std::string name) |
Convert data member name to parameter name, following REST parameter naming convention. More... | |
Int_t | DiffString (const std::string &source, const std::string &target) |
Returns the number of different characters between two strings. More... | |
std::string | DoubleToString (Double_t d, std::string format="%8.6e") |
Gets a string from a double. | |
std::string | EscapeSpecialLetters (std::string in) |
std::string | EvaluateExpression (std::string exp) |
Evaluates a complex numerical expression and returns the resulting value using TFormula. | |
Int_t | FindNthStringPosition (const std::string &in, size_t pos, const std::string &strToFind, size_t nth) |
Returns the position of the nth occurence of the string strToFind inside the string in. | |
std::string | FirstToUpper (std::string s) |
Convert the first character of a string to upper case. | |
Int_t | GetChar (std::string hint="Press a KEY to continue ...") |
Helps to pause the program, printing a message before pausing. More... | |
std::vector< int > | IntegerToBinary (int number, size_t dimension=0) |
It returns an integer vector with the binary digits decomposed. More... | |
std::string | IntegerToString (Int_t n, std::string format="%d") |
Gets a string from an integer. | |
Int_t | isAExpression (const std::string &in) |
Returns 1 only if valid mathematical expression keywords (or numbers) are found in the string in. If not it returns 0. More... | |
Int_t | isANumber (std::string in) |
Returns 1 only if a valid number is found in the string in. If not it returns 0. | |
std::string | LeftTrim (std::string s, const char *t=" \t\n\r\f\v") |
Removes all white spaces found at the beginning of the string (https://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring) | |
Bool_t | MatchString (std::string str, std::string matcher) |
This method matches a string with certain matcher. Returns true if matched. Supports wildcard characters. More... | |
std::string | ParameterNameToDataMemberName (std::string name) |
Convert parameter name to datamember name, following REST parameter naming convention. More... | |
std::string | RemoveDelimiters (std::string in) |
Returns the input string removing any delimiters ({[]}) | |
std::string | RemoveWhiteSpaces (std::string in) |
Returns the input string removing all white spaces. | |
std::string | Replace (std::string in, std::string thisString, std::string byThisString, size_t fromPosition=0, Int_t N=0) |
Replace any occurences of thisSring by byThisString inside string in. | |
std::string | ReplaceMathematicalExpressions (std::string buffer, Int_t precision=0, std::string errorMessage="") |
Evaluates and replaces valid mathematical expressions found in the input string buffer. More... | |
std::string | RightTrim (std::string s, const char *t=" \t\n\r\f\v") |
Removes all white spaces found at the end of the string (https://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring) | |
std::vector< std::string > | Split (std::string in, std::string separator, bool allowBlankString=false, bool removeWhiteSpaces=false, int startPos=-1) |
Split the input string according to the given separator. Returning a vector of fragments. More... | |
TVector2 | StringTo2DVector (std::string in) |
Gets a 2D-vector from a string. | |
TVector3 | StringTo3DVector (std::string in) |
Gets a 3D-vector from a string. Format should be : (X,Y,Z). | |
Bool_t | StringToBool (std::string booleanString) |
Double_t | StringToDouble (std::string in) |
Gets a double from a string. | |
std::vector< double > | StringToElements (std::string in, std::string headChar, std::string separator, std::string tailChar) |
Convert the input string in into a vector of double elements. More... | |
std::vector< double > | StringToElements (std::string in, std::string separator) |
Convert the input string into a vector of double elements. More... | |
Float_t | StringToFloat (std::string in) |
Gets a float from a string. | |
Int_t | StringToInteger (std::string in) |
Gets an integer from a string. | |
Long64_t | StringToLong (std::string in) |
time_t | StringToTimeStamp (std::string time) |
A method to convert a date/time formatted string to a timestamp. More... | |
TRestStringOutput::REST_Verbose_Level | StringToVerboseLevel (std::string in) |
template<class T > | |
std::string | StringWithPrecision (T &value, int precision) |
std::string | ToDateTimeString (time_t time) |
Format time_t into string. More... | |
constexpr ULong64_t | ToHash (const char *str, ULong64_t last_value=0xCBF29CE484222325ull) |
ULong64_t | ToHash (std::string str) |
std::string | ToLower (std::string in) |
Convert string to its lower case. Alternative of TString::ToLower. | |
template<class T > | |
std::string | ToString (T source, int length=-1, char fill=' ') |
std::string | ToUpper (std::string in) |
Convert string to its upper case. Alternative of TString::ToUpper. | |
std::string | Trim (std::string s, const char *t=" \t\n\r\f\v") |
Removes all white spaces found at the beginning and the end of the string (https://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring) | |
std::string | TrimAndLower (std::string s) |
It trims and lowers the string. | |
std::string | TrimAndUpper (std::string s) |
It trims and uppers the string. | |
template<class T1 , class T2 > | |
std::vector< T2 > | Vector_cast (std::vector< T1 > vecstring) |
String helper classes. Declared static to be able to have direct access to the methods.
TF1 * REST_StringHelper::CreateTF1FromString | ( | std::string | func, |
double | init, | ||
double | end | ||
) |
Reads a function with parameter options from string and returns it as TF1*.
The function is defined as a string following ROOT::TFormula conventions for parameters.
Inside the square brackets we allow parameter initialization, constant parameter and ranges. This has been created for fitting functions, where each parameter has its own restrictions.
Examples: – Initial value: [0=3.5] – Fixed value: [0==3.5] – Range: [0=3.5(1,5)] The parameter 0 begin at 3.5 and it can move between 1 and 5.
All parameters should be initialized.
Input arguments:
Output: TF1* with the interpreted fuction. It contains all restrictions, ranges, etc.
Definition at line 882 of file TRestStringHelper.cxx.
string REST_StringHelper::CropWithPrecision | ( | std::string | in, |
Int_t | precision | ||
) |
It crops a floating number given inside the string in
with the given precision. I.e. CropWithPrecision("3.48604", 2) will return "3.48".
It will not round the number. Perhaps on the next update of this method.
Definition at line 78 of file TRestStringHelper.cxx.
string REST_StringHelper::DataMemberNameToParameterName | ( | std::string | name | ) |
Convert data member name to parameter name, following REST parameter naming convention.
The name of class data member, if starts from f and have the second character in
capital form, will be linked to a parameter. The linked parameter will strip the first f and have the first letter in lowercase. For example, data member fTargetName is linked to parameter targetName.
Definition at line 821 of file TRestStringHelper.cxx.
Int_t REST_StringHelper::DiffString | ( | const std::string & | source, |
const std::string & | target | ||
) |
Returns the number of different characters between two strings.
This algorithm is case insensitive. It matches the two strings in pieces after inserting proper blanks, then counts the unmatched part(just a guess). e.g. "woll " "world" 00101 --> 2
" torgae" "Storage" 1000110 --> 3
"fi le" "title" 10100 --> 2
Source code from https://blog.csdn.net/baidu_23086307/article/details/53020566
Definition at line 443 of file TRestStringHelper.cxx.
Int_t REST_StringHelper::GetChar | ( | std::string | hint = "Press a KEY to continue ..." | ) |
Helps to pause the program, printing a message before pausing.
ROOT GUI won't be jammed during this pause.
Definition at line 198 of file TRestStringHelper.cxx.
std::vector< int > REST_StringHelper::IntegerToBinary | ( | int | number, |
size_t | dimension = 0 |
||
) |
It returns an integer vector with the binary digits decomposed.
Example: IntegerToBinary(7) will return { 1, 1, 1 }.
Optionally we can fix the minimum number of digits to be returned, so that it will be filled with zeros to the left.
Example: IntegerToBinary(9,8) will return { 0, 0, 0, 0, 1, 0, 0, 1 }.
Definition at line 646 of file TRestStringHelper.cxx.
Int_t REST_StringHelper::isAExpression | ( | const std::string & | in | ) |
Returns 1 only if valid mathematical expression keywords (or numbers) are found in the string in. If not it returns 0.
By logic, mathematical expressions must have: +-*/e^% in the middle, or % in the end, or math functions in the beginning. despite those symbols, the string should be purely numeric. example: 1+1 --> expression sin(1.5) --> expression 123456789 --> not expression, It is a pure number that can be directly parsed. ./123 --> not expression, it is a path 333/555 --> is expression. But it may also be a path. We should avoid using paths like that
Definition at line 27 of file TRestStringHelper.cxx.
Bool_t REST_StringHelper::MatchString | ( | std::string | str, |
std::string | matcher | ||
) |
This method matches a string with certain matcher. Returns true if matched. Supports wildcard characters.
Wildcard character includes "*" and "?". "*" means to replace any number of any characters "?" means to replace a single arbitary character.
e.g. (string, matcher) "abcddd", "abc?d" --> not matched "abcddd", "abc??d" --> matched "abcddd", "abc*d" --> matched
Note that this method is in equal-match logic. It is not matching substrings. So: "abcddd", "abcddd" --> matched "abcddd", "a?c" --> not matched
Source code from https://blog.csdn.net/dalao_whs/article/details/110477705
Definition at line 381 of file TRestStringHelper.cxx.
string REST_StringHelper::ParameterNameToDataMemberName | ( | std::string | name | ) |
Convert parameter name to datamember name, following REST parameter naming convention.
The name of class data member, if starts from f and have the second character in
capital form, will be linked to a parameter. The linked parameter will strip the first f and have the first letter in lowercase. For example, data member fTargetName is linked to parameter targetName.
Definition at line 839 of file TRestStringHelper.cxx.
string REST_StringHelper::ReplaceMathematicalExpressions | ( | std::string | buffer, |
Int_t | precision = 0 , |
||
std::string | errorMessage = "" |
||
) |
Evaluates and replaces valid mathematical expressions found in the input string buffer.
The buffer string may define sub-expressions that will be evaluated by using single quotes.
I.e. The sentence "The following operation 3 x 4 is '3*4'" will be translated to "The following operatin 3 x 4 is 12".
Definition at line 102 of file TRestStringHelper.cxx.
vector< string > REST_StringHelper::Split | ( | std::string | in, |
std::string | separator, | ||
bool | allowBlankString = false , |
||
bool | removeWhiteSpaces = false , |
||
int | startPos = -1 |
||
) |
Split the input string according to the given separator. Returning a vector of fragments.
e.g. Input: "" and "", Output: {} Input: ":" and ":", Output: {} Input: "abc" and "", Output: { "a", "b", "c" } Input: "abc:def" and ":", Output: { "abc", "def" } Input: "abc:def" and ":def", Output: { "abc" }
Definition at line 236 of file TRestStringHelper.cxx.
vector< double > REST_StringHelper::StringToElements | ( | std::string | in, |
std::string | headChar, | ||
std::string | separator, | ||
std::string | tailChar | ||
) |
Convert the input string in
into a vector of double elements.
Called as StringToElements( in, "[", ",", "]" );
will get the elements from a string with the following format "[a,b,c]" where a,b,c are double numbers.
Definition at line 281 of file TRestStringHelper.cxx.
vector< double > REST_StringHelper::StringToElements | ( | std::string | in, |
std::string | separator | ||
) |
Convert the input string into a vector of double elements.
The method will remove any delimiters found in the string (), [] or {}.
e.g. Input: "1,2,3,4", Output: {1.,2.,3.,4.}
Definition at line 263 of file TRestStringHelper.cxx.
time_t REST_StringHelper::StringToTimeStamp | ( | std::string | time | ) |
A method to convert a date/time formatted string to a timestamp.
The input datatime format should match any of the following patterns: "YYYY-mm-DD HH:MM:SS", "YYYY/mm/DD HH:MM:SS", "YYYY-mm-DD", or "YYYY/mm/DD". If no time is given it will be assumed to be 00:00:00.
here the type "time_t" is actually the type "long long", which indicates the elapsed time in second from 1970-1-1 8:00:00
Definition at line 560 of file TRestStringHelper.cxx.
string REST_StringHelper::ToDateTimeString | ( | time_t | time | ) |
Format time_t into string.
The output datatime format is "Y-M-D H:M:S". e.g.
here the type "time_t" is actually the type "long long", which indicates the elapsed time in second from 1970-1-1 8:00:00
Definition at line 523 of file TRestStringHelper.cxx.