ATLAS Offline Software
Loading...
Searching...
No Matches
Prompt::VarHolder Class Reference

#include <VarHolder.h>

Collaboration diagram for Prompt::VarHolder:

Public Member Functions

 VarHolder ()
virtual ~VarHolder ()
bool replaceVar (unsigned key, double value)
bool addVar (unsigned key, double value)
 Adds a variable to the VarHolder.
bool delVar (unsigned key)
double getVar (const unsigned key) const
bool getVar (const unsigned key, double &value) const
bool getVar (const unsigned key, float &value) const
bool hasKey (unsigned key) const
bool hasVar (unsigned key) const
int registerAllVars ()
bool registerVar (Prompt::Def::Var var, const std::string &name)
Prompt::Def::Var registerDynamicVar (const std::string &name)
std::string convert2Str (const Prompt::Def::Var var) const
Prompt::Def::Var convert2Var (const std::string &var)
Prompt::Def::Var convert2Var (const uint32_t key)
void getAllVarEnums ()
std::string asStr (const uint32_t key, const double val)
std::string asStr (const Prompt::Def::Var var)
std::vector< Prompt::Def::VarreadVars (const std::string &config)
std::vector< Prompt::Def::VarreadVectorVars (const std::vector< std::string > &keys)
virtual void clearVars ()

Static Public Member Functions

static std::string getObjectType ()

Private Attributes

VarMap m_gPromptVars
VarEntryVec m_fVars
std::vector< Prompt::Def::Varm_varEnums

Detailed Description

Definition at line 101 of file VarHolder.h.

Constructor & Destructor Documentation

◆ VarHolder()

Prompt::VarHolder::VarHolder ( )

Definition at line 16 of file VarHolder.cxx.

16 {
18}

◆ ~VarHolder()

virtual Prompt::VarHolder::~VarHolder ( )
inlinevirtual

Definition at line 105 of file VarHolder.h.

105{}

Member Function Documentation

◆ addVar()

bool Prompt::VarHolder::addVar ( unsigned key,
double value )
inline

Adds a variable to the VarHolder.

This function adds a variable to the VarHolder using the specified key and value.

Parameters
keyThe key of the variable.
valueThe value of the variable.
Returns
True if the variable was successfully added, false otherwise.

Definition at line 200 of file VarHolder.h.

201 {
202 using namespace asg::msgUserCode;
203
204 if(!hasKey(key)) {
205 m_fVars.push_back(VarEntry(key, value));
206 return true;
207 }
208
209 ANA_MSG_DEBUG(getObjectType() << "::addVar(" << key << ", " << value << ") - key already exists");
210 return false;
211 }
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
VarEntryVec m_fVars
Definition VarHolder.h:143
static std::string getObjectType()
Definition VarHolder.h:107
bool hasKey(unsigned key) const
Definition VarHolder.h:228

◆ asStr() [1/2]

std::string Prompt::VarHolder::asStr ( const Prompt::Def::Var var)

Definition at line 172 of file VarHolder.cxx.

173{
174 return convert2Str(var);
175}
std::string convert2Str(const Prompt::Def::Var var) const
Definition VarHolder.cxx:77

◆ asStr() [2/2]

std::string Prompt::VarHolder::asStr ( const uint32_t key,
const double val )

Definition at line 178 of file VarHolder.cxx.

179{
180 std::stringstream s;
181
182 const Prompt::Def::Var var = convert2Var(key);
183
184 if(var != Prompt::Def::NONE) {
185 s << asStr(var) << ": " << val;
186 }
187 else {
188 s << var << ": " << val;
189 }
190
191 return s.str();
192}
Prompt::Def::Var convert2Var(const std::string &var)
Definition VarHolder.cxx:90
std::string asStr(const uint32_t key, const double val)

◆ clearVars()

void Prompt::VarHolder::clearVars ( )
inlinevirtual

Definition at line 275 of file VarHolder.h.

276 {
277 m_fVars.clear();
278 }

◆ convert2Str()

std::string Prompt::VarHolder::convert2Str ( const Prompt::Def::Var var) const

Definition at line 77 of file VarHolder.cxx.

78{
79 const VarMap::const_iterator vit = m_gPromptVars.find(var);
80
81 if(vit == m_gPromptVars.end()) {
82 asg::msgUserCode::ANA_MSG_WARNING("Def::convert2Str - WARNING - unknown variable: " << var);
83 return "UNKNOWN";
84 }
85
86 return vit->second;
87}

◆ convert2Var() [1/2]

Prompt::Def::Var Prompt::VarHolder::convert2Var ( const std::string & var)

Definition at line 90 of file VarHolder.cxx.

91{
92 for (const VarMap::value_type &v: m_gPromptVars) {
93 if(var == v.second) {
94 return v.first;
95 }
96 }
97
98 asg::msgUserCode::ANA_MSG_WARNING("Def::convert2Var - WARNING - unknown variable: " << var);
99
100 return Prompt::Def::NONE;
101}

◆ convert2Var() [2/2]

Prompt::Def::Var Prompt::VarHolder::convert2Var ( const uint32_t key)

Definition at line 104 of file VarHolder.cxx.

105{
107
108 //
109 // Find matching enum by value
110 //
111 for(Prompt::Def::Var var: m_varEnums) {
112 if(static_cast<uint32_t>(var) == key) {
113 return var;
114 }
115 }
116
117 asg::msgUserCode::ANA_MSG_WARNING("Def::convert2Var - WARNING - unknown key: " << key);
118
119 return Prompt::Def::NONE;
120}
std::vector< Prompt::Def::Var > m_varEnums
Definition VarHolder.h:145
setEventNumber uint32_t

◆ delVar()

bool Prompt::VarHolder::delVar ( unsigned key)
inline

Definition at line 213 of file VarHolder.h.

214 {
215 VarEntryVec::iterator vit = m_fVars.begin();
216 while(vit != m_fVars.end()) {
217 if(vit->getKey() == key) {
218 vit = m_fVars.erase(vit);
219 }
220 else {
221 ++vit;
222 }
223 }
224
225 return false;
226 }

◆ getAllVarEnums()

void Prompt::VarHolder::getAllVarEnums ( )

Definition at line 67 of file VarHolder.cxx.

68{
69 if(m_varEnums.empty()) {
70 for(const Prompt::VarMap::value_type &v: m_gPromptVars) {
71 m_varEnums.push_back(v.first);
72 }
73 }
74}

◆ getObjectType()

std::string Prompt::VarHolder::getObjectType ( )
inlinestatic

Definition at line 107 of file VarHolder.h.

107{ return "VarHolder"; }

◆ getVar() [1/3]

double Prompt::VarHolder::getVar ( const unsigned key) const
inline

Definition at line 265 of file VarHolder.h.

266 {
267 //
268 // Find and return, if exists, value stored at key
269 //
270 double val = -1.0e9;
271 getVar(key, val);
272 return val;
273 }
double getVar(const unsigned key) const
Definition VarHolder.h:265

◆ getVar() [2/3]

bool Prompt::VarHolder::getVar ( const unsigned key,
double & value ) const
inline

Definition at line 251 of file VarHolder.h.

252 {
253 //
254 // Read variable
255 //
256 const VarEntryVec::const_iterator ivar = std::find(m_fVars.begin(), m_fVars.end(), key);
257 if(ivar != m_fVars.end()) {
258 value = ivar->getData();
259 return true;
260 }
261
262 return false;
263 }

◆ getVar() [3/3]

bool Prompt::VarHolder::getVar ( const unsigned key,
float & value ) const
inline

Definition at line 237 of file VarHolder.h.

238 {
239 //
240 // Read variable
241 //
242 const VarEntryVec::const_iterator ivar = std::find(m_fVars.begin(), m_fVars.end(), key);
243 if(ivar != m_fVars.end()) {
244 value = ivar->getData();
245 return true;
246 }
247
248 return false;
249 }

◆ hasKey()

bool Prompt::VarHolder::hasKey ( unsigned key) const
inline

Definition at line 228 of file VarHolder.h.

229 {
230 return std::find(m_fVars.begin(), m_fVars.end(), key) != m_fVars.end();
231 }

◆ hasVar()

bool Prompt::VarHolder::hasVar ( unsigned key) const
inline

Definition at line 232 of file VarHolder.h.

233 {
234 return std::find(m_fVars.begin(), m_fVars.end(), key) != m_fVars.end();
235 }

◆ readVars()

std::vector< Prompt::Def::Var > Prompt::VarHolder::readVars ( const std::string & config)

Definition at line 123 of file VarHolder.cxx.

126{
127 //
128 // Read vector of variable names and convert to Var enums
129 //
130 std::vector<std::string> keys;
131 Def::StringTok(keys, config, ", ");
132
133 std::vector<Prompt::Def::Var> vars;
134
135 for(const std::string &key: keys) {
136 const Prompt::Def::Var var = convert2Var(key);
137 if(var != Prompt::Def::NONE) {
138 vars.push_back(var);
139 }
140 else {
141 asg::msgUserCode::ANA_MSG_WARNING("Prompt::Def::readVars - unknown variable name: " << key);
142 }
143 }
144
145 return vars;
146}
void StringTok(std::vector< std::string > &ls, const std::string &str, const std::string &tok)

◆ readVectorVars()

std::vector< Prompt::Def::Var > Prompt::VarHolder::readVectorVars ( const std::vector< std::string > & keys)

Definition at line 149 of file VarHolder.cxx.

152{
153 //
154 // Read vector of variable names and convert to Var enums
155 //
156 std::vector<Prompt::Def::Var> vars;
157
158 for(const std::string &key: keys) {
159 const Prompt::Def::Var var = convert2Var(key);
160 if(var != Prompt::Def::NONE) {
161 vars.push_back(var);
162 }
163 else {
164 asg::msgUserCode::ANA_MSG_WARNING("Prompt::Def::readVars - unknown variable name: " << key);
165 }
166 }
167
168 return vars;
169}

◆ registerAllVars()

int Prompt::VarHolder::registerAllVars ( )

Definition at line 228 of file VarHolder.cxx.

229{
230 using namespace Prompt::Def;
231
232 int result = 0;
233
234 result += registerVar( NONE, "NONE");
235 result += registerVar( TrackJetNTrack, "TrackJetNTrack");
236 result += registerVar( DRlj, "DRlj");
237 result += registerVar( PtFrac, "PtFrac");
238 result += registerVar( PtRel, "PtRel");
239
240 // track VarHolder
241 result += registerVar( LepTrackDR, "LepTrackDR");
242 result += registerVar( Pt, "Pt");
243 result += registerVar( AbsEta, "AbsEta");
244 result += registerVar( NumberOfPIXHits, "NumberOfPIXHits");
245 result += registerVar( NumberOfSCTHits, "NumberOfSCTHits");
246 result += registerVar( NumberOfSiHits, "NumberOfSiHits");
247 result += registerVar( NumberOfSharedSiHits, "NumberOfSharedSiHits");
248 result += registerVar( NumberOfSiHoles, "NumberOfSiHoles");
249 result += registerVar( NumberOfPixelHoles, "NumberOfPixelHoles");
250 result += registerVar( TrackJetDR, "TrackJetDR");
251 result += registerVar( TrackPtOverTrackJetPt, "TrackPtOverTrackJetPt");
252 result += registerVar( Z0Sin, "Z0Sin");
253 result += registerVar( D0Sig, "D0Sig");
254
255 // PromptLeptonImproved
256 result += registerVar( MVAXBin, "MVAXBin");
257 result += registerVar( RawPt, "RawPt");
258 result += registerVar( PromptLeptonRNN_prompt, "PromptLeptonRNN_prompt");
259 result += registerVar( CaloClusterERel, "CaloClusterERel");
260 result += registerVar( Topoetcone30rel, "topoetcone30rel");
261 result += registerVar( Ptvarcone30rel, "ptvarcone30rel");
262 result += registerVar( Ptvarcone30_TightTTVA_pt500rel, "ptvarcone30_TightTTVA_pt500rel");
263 result += registerVar( CaloClusterSumEtRel, "CaloClusterSumEtRel");
264 result += registerVar( CandVertex_normDistToPriVtxLongitudinalBest, "CandVertex_normDistToPriVtxLongitudinalBest");
265 result += registerVar( CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx, "CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx");
266 result += registerVar( CandVertex_NPassVtx, "CandVertex_NPassVtx");
267
268 return result;
269}
bool registerVar(Prompt::Def::Var var, const std::string &name)
Definition VarHolder.cxx:21

◆ registerDynamicVar()

Prompt::Def::Var Prompt::VarHolder::registerDynamicVar ( const std::string & name)

Definition at line 41 of file VarHolder.cxx.

42{
43 unsigned last_key = Prompt::Def::NONE;
44
45 for(const Prompt::VarMap::value_type &v: m_gPromptVars) {
46 if(name == v.second) {
47 asg::msgUserCode::ANA_MSG_WARNING("Def::registerDynamicVar - variable with this name already exists: " << name);
48
49 return v.first;
50 }
51
52 last_key = std::max<unsigned>(last_key, v.first);
53 }
54
55 const Def::Var new_key = static_cast<Def::Var>(last_key+1);
56
57
58 if(!registerVar(new_key, name)) {
59 asg::msgUserCode::ANA_MSG_WARNING("Def::registerDynamicVar - WARNING - failed to register variable name=" << name);
60 return Prompt::Def::NONE;
61 }
62
63 return new_key;
64}

◆ registerVar()

bool Prompt::VarHolder::registerVar ( Prompt::Def::Var var,
const std::string & name )

Definition at line 21 of file VarHolder.cxx.

22{
23 for(const VarMap::value_type &v: m_gPromptVars) {
24 if(name == v.second) {
25 asg::msgUserCode::ANA_MSG_WARNING("Def::registerVar - WARNING - variable with this name already exists: var=" << var << ", name=" << name);
26 return false;
27 }
28 }
29
30 std::pair<VarMap::iterator, bool> vit = m_gPromptVars.insert(VarMap::value_type(var, name));
31
32 if(!vit.second) {
33 asg::msgUserCode::ANA_MSG_WARNING("Def::registerVar - WARNING - variable with this key already exists: var=" << var << ", name=" << name);
34 return false;
35 }
36
37 return true;
38}

◆ replaceVar()

bool Prompt::VarHolder::replaceVar ( unsigned key,
double value )
inline

Definition at line 178 of file VarHolder.h.

179 {
180 if(!hasKey(key)) {
181 m_fVars.push_back(VarEntry(key, value));
182 return true;
183 }
184 else{
185 delVar(key);
186 addVar(key, value);
187 }
188 return false;
189 }
bool delVar(unsigned key)
Definition VarHolder.h:213
bool addVar(unsigned key, double value)
Adds a variable to the VarHolder.
Definition VarHolder.h:200

Member Data Documentation

◆ m_fVars

VarEntryVec Prompt::VarHolder::m_fVars
private

Definition at line 143 of file VarHolder.h.

◆ m_gPromptVars

VarMap Prompt::VarHolder::m_gPromptVars
private

Definition at line 142 of file VarHolder.h.

◆ m_varEnums

std::vector<Prompt::Def::Var> Prompt::VarHolder::m_varEnums
private

Definition at line 145 of file VarHolder.h.


The documentation for this class was generated from the following files: