105 typedef JContainer< map<int, JMechanics> > container_type;
109 vector<JModifier> mod;
110 map<int, JMechanics> add;
117 JParser<> zap(
"Auxiliary program to add or modify mechanical model data of detector string.");
119 zap[
'f'] = make_field(inputFile,
"mechanics input file");
120 zap[
'o'] = make_field(outputFile,
"mechanics output file");
121 zap[
'M'] = make_field(mod,
"mechanics modifier") = JPARSER::initialised();
122 zap[
'A'] = make_field(add,
"add string mechanics") = JPARSER::initialised();
123 zap[
'r'] = make_field(rm,
"remove string[s]") = JPARSER::initialised();
124 zap[
'q'] = make_field(squash,
"squash meta data");
125 zap[
'd'] = make_field(debug,
"debug level") = 2;
129 catch(
const exception &error) {
130 FATAL(error.what() << endl);
136 data.load(inputFile.c_str());
138 catch(
const exception&) {}
141 data.comment.clear();
144 data.comment.add(JMeta(argc,argv));
146 for (map<int, JMechanics>::const_iterator i = add.begin(); i != add.end(); ++i) {
147 if (data.count(i->first) == 0u)
148 data[i->first] = i->second;
150 ERROR(
"String " << i->first <<
" already exists." << endl);
153 for (vector<JModifier>::const_iterator i = mod.begin(); i != mod.end(); ++i) {
155 DEBUG(
"Modifier" <<
' '
156 <<
"(" << FILL(2,
'0') << i->id << FILL() <<
")" <<
' '
157 <<
"action" <<
' ' << i->mechanics << endl);
161 container_type::iterator p = data.find(i->id);
163 if (p != data.end()) {
164 mechanics = p->second;
167 if (!i->apply(mechanics))
168 ERROR(
"No valid action: " << *i << endl);
170 data[i->id] = mechanics;
173 for (set<int>::const_iterator i = rm.begin(); i != rm.end(); ++i) {
175 container_type::iterator p = data.find(*i);
177 if (p != data.end()) {
182 data.store(outputFile.c_str());