Luiza
v03-01
|
#include <XMLParser.h>
Classes | |
class | LCTokenizer |
Public Member Functions | |
void | setCmdLineParameters (const CommandLineParametersMap &cmdlineparams) |
void | parse () |
StringParameters * | getParameters (const std::string §ionName) const |
Protected Member Functions | |
void | parametersFromNode (TiXmlNode *section, std::pair< unsigned, unsigned > *typeCount=0) |
const char * | getAttribute (TiXmlNode *node, const std::string &name) |
void | replacegroups (TiXmlNode *section) |
TiXmlNode * | findElement (TiXmlNode *node, const std::string &type, const std::string &attribute, const std::string &value) |
void | processconditions (TiXmlNode *current, const std::string &conditions) |
XML parser for Marlin steering files. Marlin XML steering files have the following form (use Marlin -x > example.xml to generate a template steering file):
<marlin> <execute> [1] ... // the processors and processor groups to be executed </execute> <global> [1] ... // global parameter section </global> <processor> [n] ... // definition of the processor and its parameters </processor> <group> [m] ... // a group of processors <processor> [k] ... // definition of the processor and its parameters </processor> </group> </marlin>
where the numbers enclosed in "[]" denote how many elements of the given type are allowed or required, n,m,k = [0,1,2,...].
The <execute/> section defines the processors that are to be called in the order specified. The Processor::processEvent() method is only called if the relevant condition (<if condition="A"/>) is fullfilled. Conditions can be arbitrary logical expressions formed of [!,(,&&,||,),value], e.g.
( A && ( B || !C ) ) || ( !B && D ), where the keys A,B,C,D can be either procesor names (Processor::setReturnValue(bool val) ) or processor names followed by a string ( Processor::setReturnValue(const std::string &name, bool val) ).
In the following example the Pflow processor is only called for events where the EventSelection processor has returnd true and the TwoJetAnalysis is is then in turn only called for events identified as having tow jets by the Pflow processor
<execute> <processor name="MyAIDAProcessor"/> <processor name="EventSelection"/> <if condition="EventSelection"> <processor name="Pflow"/> <if condition="Pflow.TwoJet"> <group name="TwoJetAnalysis"/> </if> </if> <processor name="MyLCIOOutputProcessor"/> </execute>
The <global> section defines the global paramters:
<global> <parameter name="LCIOInputFiles">dd_rec.slcio </parameter> <parameter name="LCIOInputFiles">../tt500_all_set1_12.slcio </parameter> <parameter name="MaxRecordNumber" value="5001" /> <parameter name="SupressCheck" value="false" /> </global>
Parameters can be either specified as the content of the <parameter/> tag or in the value-attribute of the tag !
The <processor name="..." type="..." > section defines the processor and its parameters, where name and type are required attibutes, e.g.
<processor name="EventSelection" type="SelectionProcessor"> <parameter name="EnergyCut" type="float">50.0</parameter> </processor>
Note: the parameter's type-attribute is optional.
Processor sections can be enclosed in a <group/> tag, where parameters defined outside any <processor/> tag are group parameters valid for all processors in the group, .e.g.
<group> <parameter name="PtCut" value="0.03"> <processor name="TrackFinding" type="TrackFinder"/> <processor name="TrackFitting" type="KalmanProcessor"> <parameter name="UseDAF" value="true"> <processor> </group>
|
protected |
Helper method - finds child element of node with given type and attribute value.
References TiXmlElement::Attribute(), TiXmlNode::IterateChildren(), and TiXmlNode::ToElement().
Referenced by replacegroups().
|
protected |
Return named attribute - throws ParseException if attribute doesn't exist
References TiXmlElement::Attribute(), TiXmlNode::ToElement(), and TiXmlNode::Value().
Referenced by parametersFromNode(), parse(), processconditions(), and replacegroups().
|
virtual |
Return the StringParameters for the section as read from the xml file
Implements luiza::IParser.
|
protected |
Extracts all parameters from the given node and adss them to the current StringParameters object
References TiXmlElement::Attribute(), TiXmlNode::FirstChild(), getAttribute(), TiXmlNode::IterateChildren(), TiXmlNode::ToElement(), and TiXmlNode::Value().
Referenced by parse().
|
virtual |
Parse the input file
Implements luiza::IParser.
References TiXmlNode::Clone(), TiXmlDocument::ErrorCol(), TiXmlDocument::ErrorDesc(), TiXmlDocument::ErrorRow(), TiXmlNode::FirstChild(), getAttribute(), TiXmlNode::InsertBeforeChild(), TiXmlNode::InsertEndChild(), TiXmlNode::IterateChildren(), TiXmlDocument::LoadFile(), parametersFromNode(), processconditions(), TiXmlNode::RemoveChild(), replacegroups(), TiXmlDocument::RootElement(), and TiXmlNode::Value().
|
protected |
Helper method - recursively moves processors from <if> tags to top level (<execute>) and adds corresponding conditions attribute
References TiXmlElement::Attribute(), TiXmlNode::Clone(), getAttribute(), TiXmlNode::InsertBeforeChild(), TiXmlNode::IterateChildren(), TiXmlNode::Parent(), TiXmlNode::RemoveChild(), TiXmlElement::SetAttribute(), TiXmlNode::ToElement(), and TiXmlNode::Value().
Referenced by parse().
|
protected |
Helper method - replaces all <group> tag with corresponding <processor> tags
References TiXmlElement::Attribute(), findElement(), getAttribute(), TiXmlNode::InsertBeforeChild(), TiXmlNode::IterateChildren(), TiXmlNode::RemoveChild(), TiXmlDocument::RootElement(), TiXmlElement::SetAttribute(), TiXmlNode::ToElement(), and TiXmlNode::Value().
Referenced by parse().
|
inlinevirtual |
set command line parameters
Implements luiza::IParser.