ATLAS Offline Software
Loading...
Searching...
No Matches
ParameterSpace.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4// ParameterSpace.cxx
5// TopoCore
6// Created by Joerg Stelzer on 11/18/12.
7
10#include <iostream>
11
12using namespace std;
13using namespace TCS;
14
15
17ParameterSpace::addParameter(std::string_view name, TCS::parType_t value) {
18 return addParameter( Parameter(name, value));
19}
20
21
23ParameterSpace::addParameter(std::string_view name, TCS::parType_t value, unsigned int selection) {
24 return addParameter( Parameter(name, value, selection));
25}
26
27
28// adds a new Parameter, throws TCS::Exception if parameter exists isDefault flag will be set to true
31 if( contains(p.name(), p.selection()) ) {
32 TCS_EXCEPTION("ParameterSpace: parameter '" << p.name() << "|" << p.selection() <<
33 "' exists already in parameter space of '" << algName() << "' and can't be added");
34 }
35 m_parameters.push_back(p);
36 m_parameters.back().setIsDefault(true);
37 return *this;
38}
39
40
42ParameterSpace::setParameter(std::string_view name, TCS::parType_t value, unsigned int selection) {
43 return setParameter(Parameter(name, value, selection));
44}
45
46
47// sets a parameter value, throws TCS::Exception if parameter doesn't exist
48// sets isDefault flag to false
51
52 bool foundParameter = false;
53
54 //cout << "Setting parameter " << p.name() << "[" << p.selection() << "] for algorithm " << algName() << endl;
55
56 for(TCS::Parameter& pa : m_parameters) {
57 foundParameter =
58 ( !pa.isExtended() && pa.name()==p.name() ) ||
59 ( pa.isExtended() && pa.name()==p.name() && pa.selection()==p.selection() );
60
61 if(! foundParameter) continue;
62
63 if( pa.isExtended() ) {
64 pa.setValue(p.value());
65 pa.setPosition(p.position());
66 pa.setSelection(p.selection());
67 pa.setIsExtended(true); // for parameters to print correctly
68 } else {
69 pa.setValue(p.value());
70 pa.setIsExtended(false);
71 }
72 pa.setIsDefault(false);
73 break;
74 }
75
76 if( ! foundParameter ) {
77 cout << "Parameter '" << p.name() << "' not found for algorithm " << algName()
78 << " and can't be set. Available parameters are" << endl;
79
80 for(TCS::Parameter& pa : m_parameters) {
81 cout << " " << pa.name() << " " << (pa.isExtended()?"array":"single") << endl;
82 }
83 TCS_EXCEPTION( "Parameter '" << p.name() << "' not found for algorithm " << algName() << " and can't be set." );
84 }
85 return *this;
86}
87
88
89
90
91
92bool
93ParameterSpace::contains(std::string_view parameterName, unsigned int selection) const {
94 for(const Parameter& pa: m_parameters)
95 if( (pa.name() == parameterName) && (pa.selection() == selection) ) return true;
96 return false;
97}
98
99
100
101const Parameter &
102ParameterSpace::parameter(std::string_view parameterName) const {
103 for(const Parameter & pa : m_parameters) {
104 if( pa.isExtended() ) continue;
105 if( pa.name() == parameterName )
106 return pa;
107 }
108 TCS_EXCEPTION("Single parameter " << parameterName << " not found for algorithm " << algName());
109}
110
111
112const Parameter &
113ParameterSpace::parameter(std::string_view parameterName, unsigned int selection) const {
114 for(const Parameter & pa : m_parameters) {
115 if( ! pa.isExtended() ) continue;
116 if( (pa.name() == parameterName) && (pa.selection() == selection) )
117 return pa;
118 }
119 TCS_EXCEPTION("Array parameter " << parameterName << "[" << selection << "] not found for algorithm " << algName());
120}
121
122
123namespace TCS {
124
125
126std::ostream &
127operator<<(std::ostream &o, const TCS::ParameterSpace & ps) {
128 if( ps.isInitialized()) {
129 o << " parameters: " << ps().size();
130 for(const TCS::Parameter& parameter : ps) {
131 o << endl << " " << parameter;
132 }
133 }
134 return o;
135}
136
137
138}
c *Fortran *integer maxpup parameter(maxpup=100) integer idbmup
const Parameter & parameter(std::string_view parameterName) const
bool contains(std::string_view parameterName, unsigned int selection) const
ParameterSpace & setParameter(const Parameter &p)
const std::string & algName() const
ParameterSpace & addParameter(const Parameter &p)
const std::string selection
std::ostream & operator<<(std::ostream &os, const TCS::Bin &bin)
uint32_t parType_t
Definition Parameter.h:23
STL namespace.