Skip to content
Snippets Groups Projects
Commit 20c446c7 authored by Rosen Matev's avatar Rosen Matev :sunny:
Browse files

Merge branch 'sponce_condParameterExtraction' into 'master'

Demonstrate extraction of condition parameters with YAML

See merge request !3392
parents 7fb4414b f96e9bab
No related branches found
No related tags found
2 merge requests!3702merge counter decoder into Louis' original branch,!3392Demonstrate extraction of condition parameters with YAML
Pipeline #3543140 passed
Showing
with 45 additions and 103 deletions
......@@ -38,7 +38,9 @@ namespace LHCb::DetCond::Examples::Functional {
: Consumer{name, loc, {KeyValue{"CondPath", ConditionPath}}} {}
void operator()( const ParamValidDataObject& cond ) const override {
info() << "condition value: " << cond << endmsg;
auto const& [p1, p2] = cond.params<double, double>( "par1", "par2" );
auto const pv = cond.paramAsDoubleVect( "parv" );
info() << "parameter value extracted: " << p1 << " " << p2 << " " << pv[0] << " " << pv[1] << endmsg;
}
};
......@@ -50,9 +52,12 @@ namespace LHCb::DetCond::Examples::Functional {
: Consumer{name, loc, {KeyValue{"CondPath", ConditionPath}}} {}
void operator()( const YAML::Node& cond ) const override {
YAML::Emitter out;
out << cond;
info() << "condition value:\n~~~\n" << cond << '\n' << endmsg;
// tutorial on how to use yaml-cpp can be found at
// https://github.com/jbeder/yaml-cpp/wiki/Tutorial
auto const p1 = cond["par1"].as<double>();
auto const p2 = cond["par2"].as<double>();
auto const pv = cond["parv"].as<std::vector<double>>();
info() << "parameter value extracted: " << p1 << " " << p2 << " " << pv[0] << " " << pv[1] << endmsg;
}
};
......
......@@ -11,6 +11,8 @@
TestCondition: !testcond
par1: 1.3
par2: 2.1
parv: [4.5, 5.6]
TestConditionYML:
par1: 1.3
par2: 2.1
parv: [4.5, 5.6]
......@@ -11,6 +11,9 @@
TestCondition: !testcond
par1: 0.6
par2: 1.7
parv: [7.8, 8.9]
TestConditionYML:
par1: 0.6
par2: 1.7
parv: [7.8, 8.9]
......@@ -14,5 +14,6 @@
<condition name="TestCondition">
<param name="par1" type="double">1.3</param>
<param name="par2" type="double">2.1</param>
<paramVector name="parv" type="double">4.5 5.6</paramVector>
</condition>
</DDDB>
......@@ -14,5 +14,6 @@
<condition name="TestCondition">
<param name="par1" type="double">0.6</param>
<param name="par2" type="double">1.7</param>
<paramVector name="parv" type="double">7.8 8.9</paramVector>
</condition>
</DDDB>
......@@ -10,10 +10,7 @@ EventLoopMgr WARNING Unable to locate service "EventSelector"
EventLoopMgr WARNING No events will be processed from external input.
ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
CondAlg INFO condition value:
Validity: 0.0 -> 1451602800.0
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
CondAlgDerived INFO condition value for level1 : {
p1: 1.3
p2: 2.1
......@@ -24,10 +21,7 @@ condition value for level2 : {
p2: 4.2
v: 19.9204
}
CondAlg INFO condition value:
Validity: 1451602800.0 -> 1470002400.0
(double) par1 = 0.6
(double) par2 = 1.7
CondAlg INFO parameter value extracted: 0.6 1.7 7.8 8.9
CondAlgDerived INFO condition value for level1 : {
p1: 0.6
p2: 1.7
......@@ -38,10 +32,7 @@ condition value for level2 : {
p2: 3.4
v: 13.1092
}
CondAlg INFO condition value:
Validity: 1470002400.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
CondAlgDerived INFO condition value for level1 : {
p1: 1.3
p2: 2.1
......
......@@ -10,20 +10,11 @@ ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
ReserveIOVDD4hep INFO Loading conditions for Run 42
DD4hep WARNING ++ STD conditions NOT defined by client. NTP defaults taken.
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ReserveIOVDD4hep INFO Loading conditions for Run 62
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 100.6
(double) par2 = 101.7
CondAlg INFO parameter value extracted: 100.6 101.7 4.5 5.6
ReserveIOVDD4hep INFO Loading conditions for Run 82
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
ToolSvc INFO Removing all tools created by ToolSvc
......
......@@ -10,20 +10,11 @@ ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
ReserveIOVDD4hep INFO Loading conditions for Run 42
DD4hep WARNING ++ STD conditions NOT defined by client. NTP defaults taken.
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ReserveIOVDD4hep INFO Loading conditions for Run 62
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 100.6
(double) par2 = 101.7
CondAlg INFO parameter value extracted: 100.6 101.7 4.5 5.6
ReserveIOVDD4hep INFO Loading conditions for Run 82
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
ToolSvc INFO Removing all tools created by ToolSvc
......
......@@ -8,20 +8,11 @@ ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
ReserveIOVDD4hep INFO Loading conditions for Run 42
DD4hep WARNING ++ STD conditions NOT defined by client. NTP defaults taken.
CondAlg INFO condition value:
~~~
par1: 1.3
par2: 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ReserveIOVDD4hep INFO Loading conditions for Run 62
CondAlg INFO condition value:
~~~
par1: 0.6
par2: 1.7
CondAlg INFO parameter value extracted: 0.6 1.7 7.8 8.9
ReserveIOVDD4hep INFO Loading conditions for Run 82
CondAlg INFO condition value:
~~~
par1: 1.3
par2: 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
ApplicationMgr INFO Application Manager Finalized successfully
......
......@@ -8,10 +8,7 @@ EventLoopMgr WARNING No events will be processed from external input.
ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
ReserveIOVDD4hep INFO Loading conditions for Run 42
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
CondAlgDerived INFO condition value for level1 : {
p1: 1.3
p2: 2.1
......@@ -23,10 +20,7 @@ condition value for level2 : {
v: 19.9204
}
ReserveIOVDD4hep INFO Loading conditions for Run 62
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 0.6
(double) par2 = 1.7
CondAlg INFO parameter value extracted: 0.6 1.7 7.8 8.9
CondAlgDerived INFO condition value for level1 : {
p1: 0.6
p2: 1.7
......@@ -38,10 +32,7 @@ condition value for level2 : {
v: 13.1092
}
ReserveIOVDD4hep INFO Loading conditions for Run 82
CondAlg INFO condition value:
Validity: 0.0 -> 9223372036.854775807
(double) par1 = 1.3
(double) par2 = 2.1
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
CondAlgDerived INFO condition value for level1 : {
p1: 1.3
p2: 2.1
......
......@@ -10,18 +10,9 @@ EventLoopMgr WARNING Unable to locate service "EventSelector"
EventLoopMgr WARNING No events will be processed from external input.
ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
CondAlg INFO condition value:
~~~
par1: 1.3
par2: 2.1000000000000001
CondAlg INFO condition value:
~~~
par1: 0.59999999999999998
par2: 1.7
CondAlg INFO condition value:
~~~
par1: 1.3
par2: 2.1000000000000001
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
CondAlg INFO parameter value extracted: 0.6 1.7 7.8 8.9
CondAlg INFO parameter value extracted: 1.3 2.1 4.5 5.6
ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
ToolSvc INFO Removing all tools created by ToolSvc
......
......@@ -89,10 +89,12 @@ with open(join(cond_path, "v1.yml"), "w") as f:
TestCondition: !testcond
par1: 100.6
par2: 101.7
parv: [4.5, 5.6]
TestConditionYML:
par1: 100.6
par2: 101.7
""")
parv: [4.5, 5.6]
""")
check_call(['git', 'add', '--all', 'Conditions/test/conditions.yml'], cwd=path)
check_call(['git', 'commit', '-am', 'v1 data'], cwd=path)
......
......@@ -22,6 +22,7 @@
#include "XML/XML.h"
#include <memory>
#include <vector>
/// very simple plugin registering an hardcoded condition directly to /world element
static long create_conditions_recipes( dd4hep::Detector& description, xml_h /*e*/ ) {
......@@ -33,8 +34,13 @@ static long create_conditions_recipes( dd4hep::Detector& description, xml_h /*e*
auto* value = &c.bind<ParamValidDataObject>();
for ( const auto& param : cond_data ) {
const auto param_name = param.first.as<std::string>();
const auto val = param.second.as<double>();
value->addParam<double>( param_name, val );
if ( param_name != "parv" ) {
const auto val = param.second.as<double>();
value->addParam<double>( param_name, val );
} else {
const auto val = param.second.as<std::vector<double>>();
value->addParam<std::vector<double>>( param_name, val );
}
}
return c;
} );
......@@ -49,27 +55,3 @@ static long create_conditions_recipes( dd4hep::Detector& description, xml_h /*e*
return 1;
}
DECLARE_XML_DOC_READER( Fake_cond, create_conditions_recipes )
/// Specialized conversion of Param entities
template <>
void dd4hep::Converter<ParamValidDataObject>::operator()( xml_h element ) const {
double value;
const BasicGrammar& g = BasicGrammar::instance<double>();
if ( !g.fromString( &value, element.text() ) ) g.invalidConversion( element.text(), g.type() );
_option<ParamValidDataObject>()->addParam<double>( element.attr<std::string>( _U( name ) ), value );
}
struct FakeConditionConverter : LHCb::Detector::ConditionConverter {
virtual dd4hep::Condition operator()( dd4hep::Detector& description, LHCb::Detector::ConditionIdentifier*,
xml_h element ) const override {
dd4hep::Condition cond( element.attr<std::string>( _U( name ) ), "param" );
auto* value = &cond.bind<ParamValidDataObject>();
dd4hep::Converter<ParamValidDataObject> conv( description, 0, value );
xml_coll_t( element, "param" ).for_each( conv );
return cond;
}
};
static void* create_conditions_converter_fake( dd4hep::Detector&, int, char** ) { return new FakeConditionConverter(); }
DECLARE_DD4HEP_CONSTRUCTOR( LHCb_ConditionsConverter_666, create_conditions_converter_fake )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment