ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
FPTracker
src
readConfigData.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
FPTracker/readConfigData.h
"
6
#include "
FPTracker/ConfigData.h
"
7
#include "boost/lexical_cast.hpp"
8
#include "
CxxUtils/StringUtils.h
"
9
#include <fstream>
10
#include <string>
11
#include <sstream>
12
13
14
namespace
FPTracker
{
15
16
17
class
ValueSetter
{
18
public
:
19
ValueSetter
():
m_errors
(false){}
20
21
template
<
class
T>
22
bool
setValue
(T& val,
const
std::string& s)
23
{
24
bool
ok =
true
;
25
try
26
{
27
val = boost::lexical_cast<T>(s);
28
}
29
catch
(boost::bad_lexical_cast& )
30
{
31
m_errors
=
true
;
32
ok =
false
;
33
34
m_notConverted
.push_back(s);
35
}
36
37
return
ok;
38
}
39
40
bool
errors
()
const
{
return
m_errors
;}
41
42
std::vector<std::string>::const_iterator
begin
()
const
43
{
44
return
m_notConverted
.begin();
45
}
46
47
48
std::vector<std::string>::const_iterator
end
()
const
49
{
50
return
m_notConverted
.end();
51
}
52
53
private
:
54
bool
m_errors
;
55
std::vector< std::string >
m_notConverted
;
56
};
57
58
59
bool
readConfigData
(std::shared_ptr< std::ifstream> p_mydata,
ConfigData
& configData){
60
// ConfigData readConfigData(std::string& dir){
61
// Read data cards from Data.txt file
62
63
std::ifstream& in = *p_mydata;
64
std::string line;
65
ValueSetter
vs;
66
67
std::ostringstream ost;
68
while
( std::getline(in, line) )
69
{
70
std::vector< std::string > tokens =
CxxUtils::tokenize
(line,
" \f\t\v"
);
71
72
if
( tokens.size() > 1 )
73
{
74
ost<<tokens[0]<<
" "
<<tokens[1]<<
'\n'
;
75
std::string& dataname = tokens[0];
76
std::string& svalue = tokens[1];
77
if
(dataname ==
"IP"
) vs.
setValue
(configData.
IP
, svalue);
78
if
(dataname ==
"APER"
) vs.
setValue
(configData.
useaper
, svalue);
79
if
(dataname ==
"MBAP"
) vs.
setValue
(configData.
apermb
, svalue);
80
if
(dataname ==
"COL1"
) vs.
setValue
(configData.
xcol1
, svalue);
81
if
(dataname ==
"COL2"
) vs.
setValue
(configData.
xcol2
, svalue);
82
if
(dataname ==
"ZMAX"
) vs.
setValue
(configData.
absZMagMax
, svalue);
83
if
(dataname ==
"ENDM"
) vs.
setValue
(configData.
endMarker
, svalue);
84
85
if
(dataname ==
"PBEA"
) {
86
float
pbeam;
87
if
( vs.
setValue
(pbeam, svalue) ){configData.
setpbeam
(pbeam);}
88
}
89
90
}
91
92
}
93
94
return
!vs.
errors
();
95
}
96
}
StringUtils.h
ConfigData.h
FPTracker::ConfigData
Definition
FPTracker/FPTracker/ConfigData.h:9
FPTracker::ConfigData::endMarker
float endMarker
Definition
FPTracker/FPTracker/ConfigData.h:21
FPTracker::ConfigData::IP
int IP
Definition
FPTracker/FPTracker/ConfigData.h:12
FPTracker::ConfigData::xcol1
double xcol1
Definition
FPTracker/FPTracker/ConfigData.h:16
FPTracker::ConfigData::xcol2
double xcol2
Definition
FPTracker/FPTracker/ConfigData.h:17
FPTracker::ConfigData::setpbeam
void setpbeam(double)
Definition
FPTracker/src/ConfigData.cxx:37
FPTracker::ConfigData::apermb
double apermb
Definition
FPTracker/FPTracker/ConfigData.h:15
FPTracker::ConfigData::useaper
bool useaper
Definition
FPTracker/FPTracker/ConfigData.h:14
FPTracker::ConfigData::absZMagMax
float absZMagMax
Definition
FPTracker/FPTracker/ConfigData.h:23
FPTracker::ValueSetter
Definition
readConfigData.cxx:17
FPTracker::ValueSetter::end
std::vector< std::string >::const_iterator end() const
Definition
readConfigData.cxx:48
FPTracker::ValueSetter::errors
bool errors() const
Definition
readConfigData.cxx:40
FPTracker::ValueSetter::begin
std::vector< std::string >::const_iterator begin() const
Definition
readConfigData.cxx:42
FPTracker::ValueSetter::m_errors
bool m_errors
Definition
readConfigData.cxx:54
FPTracker::ValueSetter::m_notConverted
std::vector< std::string > m_notConverted
Definition
readConfigData.cxx:55
FPTracker::ValueSetter::ValueSetter
ValueSetter()
Definition
readConfigData.cxx:19
FPTracker::ValueSetter::setValue
bool setValue(T &val, const std::string &s)
Definition
readConfigData.cxx:22
CxxUtils::tokenize
std::vector< std::string > tokenize(std::string_view the_str, std::string_view delimiters)
Splits the string into smaller substrings.
Definition
Control/CxxUtils/Root/StringUtils.cxx:12
FPTracker
Definition
FPTracker/FPTracker/Beamline.h:12
FPTracker::readConfigData
bool readConfigData(std::shared_ptr< std::ifstream > confDir, ConfigData &)
Definition
readConfigData.cxx:59
readConfigData.h
Generated on
for ATLAS Offline Software by
1.17.0