ATLAS Offline Software
PhysicsAnalysis
JetMissingEtID
JetSelectorTools
JetSelectorTools
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef JETSELECTORTOOLS_HELPERS_H
6
#define JETSELECTORTOOLS_HELPERS_H
7
8
#include <iostream>
9
#include <sstream>
10
#include <string>
11
#include <vector>
12
13
#include "TString.h"
14
#include "TObjString.h"
15
#include "TObjArray.h"
16
#include "TFile.h"
17
18
#include "
AsgMessaging/MsgStreamMacros.h
"
19
20
21
namespace
JCT
22
{
23
24
namespace
utils
25
{
26
// Check variable types from strings
27
template
<
typename
T>
28
bool
isTypeObjFromString
(
const
std::string&
str
);
29
template
<
typename
T>
30
bool
isTypeObjFromString
(
const
TString&
str
);
31
32
// Get variables from strings
33
template
<
typename
T>
34
bool
getTypeObjFromString
(
const
std::string&
str
, T&
obj
);
35
template
<
typename
T>
36
T
getTypeObjFromString
(
const
std::string&
str
);
37
template
<
typename
T>
38
bool
getTypeObjFromString
(
const
TString&
str
, T&
obj
);
39
template
<
typename
T>
40
T
getTypeObjFromString
(
const
TString&
str
);
41
42
// Specializations of getting variables from strings
43
template
<>
44
bool
getTypeObjFromString<std::string>(
const
std::string&
str
, std::string&
obj
);
45
template
<>
46
bool
getTypeObjFromString<TString>
(
const
std::string&
str
, TString&
obj
);
47
template
<>
48
bool
getTypeObjFromString<bool>
(
const
std::string&
str
,
bool
&
obj
);
49
template
<>
50
bool
getTypeObjFromString<std::string>(
const
TString&
str
, std::string&
obj
);
51
template
<>
52
bool
getTypeObjFromString<TString>
(
const
TString&
str
, TString&
obj
);
53
template
<>
54
bool
getTypeObjFromString<bool>
(
const
TString&
str
,
bool
&
obj
);
55
56
// Convert strings to vectors of objects
57
template
<
typename
T>
58
bool
vectorize
(
const
TString&
str
,
const
TString&
sep
, std::vector<T>&
result
);
59
template
<
typename
T>
60
std::vector<T>
vectorize
(
const
TString&
str
,
const
TString&
sep
);
61
62
// Check if a file exists
63
bool
fileExists
(
const
TString&
fileName
);
64
bool
fileExists
(
const
std::string&
fileName
);
65
}
66
67
template
<
typename
T>
68
bool
utils::isTypeObjFromString
(
const
std::string&
str
)
69
{
70
std::istringstream iss(
str
);
71
T
obj
;
72
return
!(iss >>
obj
).
fail
();
73
}
74
75
template
<
typename
T>
76
bool
utils::isTypeObjFromString
(
const
TString&
str
)
77
{
78
std::string stdstr =
str
.Data();
79
return
isTypeObjFromString<T>(stdstr);
80
}
81
82
template
<
typename
T>
83
bool
utils::getTypeObjFromString
(
const
std::string&
str
, T&
obj
)
84
{
85
std::istringstream iss(
str
);
86
return
!(iss >>
obj
).
fail
();
87
}
88
template
<
typename
T>
89
T
utils::getTypeObjFromString
(
const
std::string&
str
)
90
{
91
T toReturn;
92
if
(!
getTypeObjFromString
(
str
,toReturn))
93
printf(
"Failed to convert object: %s\n"
,
str
.c_str());
94
95
return
toReturn;
96
}
97
template
<
typename
T>
98
bool
utils::getTypeObjFromString
(
const
TString&
str
, T&
obj
)
99
{
100
std::string stdstr =
str
.Data();
101
return
getTypeObjFromString
(stdstr,
obj
);
102
}
103
template
<
typename
T>
104
T
utils::getTypeObjFromString
(
const
TString&
str
)
105
{
106
T toReturn;
107
if
(!
getTypeObjFromString
(
str
,toReturn))
108
printf(
"ERROR: Failed to convert object: %s\n"
,
str
.Data());
109
110
return
toReturn;
111
}
112
113
template
<
typename
T>
114
bool
utils::vectorize
(
const
TString&
str
,
const
TString&
sep
, std::vector<T>&
result
)
115
{
116
bool
success =
true
;
117
result
.clear();
118
119
TObjArray*
tokens
=
str
.Tokenize(
sep
);
120
TIter istr(
tokens
);
121
while
(TObjString*
os
=(TObjString*)istr())
122
{
123
T
obj
;
124
if
(!
getTypeObjFromString
(
os
->GetString(),
obj
))
125
{
126
success =
false
;
127
break
;
128
}
129
else
130
result
.push_back(
obj
);
131
}
132
delete
tokens
;
133
134
return
success;
135
}
136
137
template
<
typename
T>
138
std::vector<T>
utils::vectorize
(
const
TString&
str
,
const
TString&
sep
)
139
{
140
std::vector<T>
result
;
141
TObjArray*
tokens
=
str
.Tokenize(
sep
);
142
TIter istr(
tokens
);
143
144
while
(TObjString*
os
=(TObjString*)istr())
145
{
146
T
obj
;
147
if
(!
getTypeObjFromString
(
os
->GetString(),
obj
))
148
printf(
"ERROR: String \"%s\" is not the requested type\n"
,
os
->GetString().Data());
149
result
.push_back(
obj
);
150
}
151
delete
tokens
;
152
153
return
result
;
154
}
155
156
}
// end JCT namespace
157
158
#endif
159
160
JCT::utils::getTypeObjFromString< bool >
bool getTypeObjFromString< bool >(const std::string &str, bool &obj)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/Root/Helpers.cxx:30
get_generator_info.result
result
Definition:
get_generator_info.py:21
JCT::utils::getTypeObjFromString
T getTypeObjFromString(const TString &str)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h:104
JCT::utils::fileExists
bool fileExists(const TString &fileName)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/Root/Helpers.cxx:91
beamspotman.tokens
tokens
Definition:
beamspotman.py:1284
FortranAlgorithmOptions.fileName
fileName
Definition:
FortranAlgorithmOptions.py:13
JCT::utils::isTypeObjFromString
bool isTypeObjFromString(const std::string &str)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h:68
JCT
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h:22
JCT::utils::getTypeObjFromString
bool getTypeObjFromString(const std::string &str, T &obj)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h:83
ReadFromCoolCompare.os
os
Definition:
ReadFromCoolCompare.py:231
grepfile.sep
sep
Definition:
grepfile.py:38
JCT::utils::getTypeObjFromString< TString >
bool getTypeObjFromString< TString >(const std::string &str, TString &obj)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/Root/Helpers.cxx:23
MsgStreamMacros.h
utils
Definition:
Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/utils.py:1
str
Definition:
BTagTrackIpAccessor.cxx:11
python.PyAthena.obj
obj
Definition:
PyAthena.py:135
beamspotman.fail
def fail(message)
Definition:
beamspotman.py:201
JCT::utils::vectorize
bool vectorize(const TString &str, const TString &sep, std::vector< T > &result)
Definition:
PhysicsAnalysis/JetMissingEtID/JetSelectorTools/JetSelectorTools/Helpers.h:114
Generated on Tue Jul 2 2024 21:16:34 for ATLAS Offline Software by
1.8.18