Skip to content

Commit

Permalink
refs #6667 Hopefully working solution with Parameter-based file
Browse files Browse the repository at this point in the history
where all default keys are obtained from Par.xml.
+ int parameter is added to xml parcer.

Need tests and routines, accepting parameters from the arguments.
  • Loading branch information
abuts committed Jun 6, 2013
1 parent ea809f1 commit fd10459
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 87 deletions.
9 changes: 8 additions & 1 deletion Code/Mantid/Framework/API/src/ExperimentInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,10 @@ namespace API
std::string paramN = ((*it).second)->m_paramName;
std::string category = ((*it).second)->m_type;

bool is_int_val = (category.compare("int") == 0);
bool is_string_val = (category.compare("string") == 0);
bool is_bool_val = (category.compare("bool") == 0);
bool is_double_val = !(is_string_val || is_bool_val);
bool is_double_val = !(is_string_val || is_bool_val || is_int_val);

// if category is not double sting no point in trying to generate a double from parameter
double value = 0.0;
Expand All @@ -298,6 +299,12 @@ namespace API
bool b_val = convertBool(((*it).second)->m_value);
paramMap.addBool(((*it).second)->m_component,paramN,b_val);
}
else if (is_int_val )
{
int i_val = boost::lexical_cast<int>(((*it).second)->m_value);
paramMap.addInt(((*it).second)->m_component,paramN,i_val);
}


else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,18 @@ namespace Mantid
return getParameter<double>(pname, recursive);
}

/**
* Get a parameter defined as an int
* @param pname :: The name of the parameter
* @param recursive :: If true the search will walk up through the parent components
* @returns A list of values
*/
std::vector<int> getIntParameter(const std::string& pname, bool recursive = true) const
{
return getParameter<int>(pname, recursive);
}


/**
* Get a parameter's type -- this is HACK untill Python can export property regardless of the property type
* @param pname :: The name of the parameter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ namespace
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(Component_getPositionParameter,Component::getPositionParameter,1,2);
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(Component_getRotationParameter,Component::getRotationParameter,1,2);
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(Component_getStringParameter,Component::getStringParameter,1,2);
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(Component_getIntParameter,Component::getIntParameter,1,2);
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(Component_getParameterType,Component::getParameterType,1,2);


Expand All @@ -31,14 +32,15 @@ void export_Component()
.def("getPositionParameter", &Component::getPositionParameter, Component_getPositionParameter())
.def("getRotationParameter", &Component::getRotationParameter, Component_getRotationParameter())
.def("getStringParameter", &Component::getStringParameter, Component_getStringParameter())
// HACK -- python should return parameters regardless of type. this is untill rows below this do not work
.def("getIntParameter", &Component::getIntParameter, Component_getIntParameter())
// HACK -- python should return parameters regardless of type. this is untill rows below do not work
.def("getParameterType", &Component::getParameterType, Component_getParameterType())
// this does not work for some obvious or not obvious reasons
.def("getParameter", &Component::getNumberParameter, Component_getNumberParameter())
.def("getParameter", &Component::getBoolParameter, Component_getBoolParameter())
.def("getParameter", &Component::getStringParameter, Component_getStringParameter())
.def("getParameter", &Component::getPositionParameter, Component_getPositionParameter())
.def("getParameter", &Component::getRotationParameter, Component_getRotationParameter())
//// this does not work for some obvious or not obvious reasons
//.def("getParameter", &Component::getNumberParameter, Component_getNumberParameter())
//.def("getParameter", &Component::getBoolParameter, Component_getBoolParameter())
//.def("getParameter", &Component::getStringParameter, Component_getStringParameter())
//.def("getParameter", &Component::getPositionParameter, Component_getPositionParameter())
//.def("getParameter", &Component::getRotationParameter, Component_getRotationParameter())

;

Expand Down
59 changes: 43 additions & 16 deletions Code/Mantid/instrument/MAPS_Parameters.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,19 @@

<!-- First spectra number (monitor number) to use when measuring incident energy
Should be spectra with well defined energy peak -->
<parameter name="ei-mon1-spec">
<parameter name="ei-mon1-spec" type="int">
<value val="41474"/>
</parameter>
<!-- Second spectra number (monitor number) to use when measuring incident energy
Should be spectra with well defined energy peak -->
<parameter name="ei-mon2-spec">
<parameter name="ei-mon2-spec" type="int">
<value val="41475"/>
</parameter>
<parameter name="ei_mon_spectra" type="string">
<value val="ei-mon1-spec:ei-mon2-spec"/>
</parameter>



<parameter name="scale-factor">
<value val="1.7016e8"/>
Expand All @@ -52,14 +57,14 @@
</parameter>

<!-- integration range for background tests (in TOF) - composite property -->
<parameter name="bkgd-range-min">
<value val="12000"/>
<parameter name="bkgd-range-min">
<value val="15000"/>
</parameter>
<parameter name="bkgd-range-max">
<value val="18000"/>
<value val="19000"/>
</parameter>
<parameter name="bkgd-range" type="string">
<value val="bkgd-range-min,bkgd-range-max"/>
<parameter name="background_range" type="string">
<value val="bkgd-range-min:bkgd-range-max"/>
</parameter>
<!-- Remove the count rate seen in the regions of the histograms defined as the background regions -->
<parameter name="background" type="bool">
Expand All @@ -77,32 +82,40 @@
<value val="20"/>
</parameter>
<parameter name="wb-integr-max">
<value val="300"/>
<value val="100"/>
</parameter>
<parameter name="wb_integr_range" type="string">
<value val="wb-integr-min,wb-integr-max"/>
<value val="wb-integr-min:wb-integr-max"/>
</parameter>


<parameter name="norm-mon1-spec">
<value val="41473"/>
</parameter>


<parameter name="norm-mon1-min">
<value val="1000"/>
</parameter>

<parameter name="norm-mon1-max">
<value val="2000"/>
</parameter>
<parameter name="mon_norm_range" type="string">
<value val="norm-mon1-min:norm-mon1-max"/>
</parameter>


<parameter name="monovan-integr-min">
<value val="-1"/>
</parameter>

<parameter name="monovan-integr-max">
<value val="1"/>
</parameter>
<parameter name="monovan_integr_range" type="string">
<value val="monovan-integr-min:monovan-integr-max"/>
</parameter>



<parameter name="vanadium-mass">
<value val="30.1"/>
Expand Down Expand Up @@ -194,12 +207,24 @@
<parameter name="monovan_lo_frac">
<value val="0.8"/>
</parameter>
<parameter name="monovan_lo_value">
<value val="-40."/>
</parameter>


<parameter name="monovan_hi_frac">
<value val="1.2"/>
</parameter>
<!-- integration for absolute units correction vanadium data
if None, range is calculated from monovan_hi_frac/monovan_lo_frac -->
<parameter name="monovan_hi_value">
<value val="40."/>
</parameter>

<!-- energy range for integration calculating absolute units correction vanadium data
if None, range is calculated from monovan_hi_frac/monovan_lo_frac
- providing the fractions of the incident energy
if one wants to specify the energy values here it has to be defined in the form:
<value val="monovan_lo_value,monovan_hi_value"/>
-->
<parameter name="abs_units_van_range" type="string">
<value val="None"/>
</parameter>
Expand Down Expand Up @@ -242,7 +267,7 @@
</parameter>

<!-- # Run Detector Efficiency Correction -->
<parameter name="apply_detector_eff" type="bool">
<parameter name="apply_detector_eff" type="bool">
<value val="True"/>
</parameter>

Expand All @@ -252,11 +277,13 @@
-->
<parameter name="synonims" type="string">
<value val="normalise_method=norm_method;
fix_ei=fixei;
fix_ei=fixei;
save_formats=save_format;
sum_runs=sum;
wb_integr_range=detector_van_range;
van_mass=vanadium-mass"
van_mass=vanadium-mass;
background_range=bkgd_range;
monovan_integr_range=abs_units_van_range"
/>
</parameter>

Expand Down

0 comments on commit fd10459

Please sign in to comment.