+ // -- Get Data Specifications from blocks
+ // ----------------------------------------
+
+ do {
+ prevInnerNode = serviceNode;
+
+ if ( strcmp( serviceNode->GetNodeName(), "blocks") )
+ continue;
+
+ TXMLNode* blocks = serviceNode->GetChildren();
+
+ if ( ! blocks ) {
+ HLTError(Form("No blocks present"));
+ return 1;
+ }
+
+ TXMLNode* blockNode = blocks->GetNextNode();
+ TXMLNode* prevBlockNode = NULL;
+
+ if ( ! blockNode ) {
+ HLTError(Form("No block present in the blocks tag"));
+ return 1;
+ }
+
+ // -- blocks loop
+
+ do {
+ prevBlockNode = blockNode;
+
+ if ( strcmp( blockNode->GetNodeName(), "block") )
+ continue;
+
+ TXMLNode *dataNode = blockNode->GetChildren();
+ TXMLNode *prevDataNode = NULL;
+
+ if ( ! dataNode ) {
+ HLTError(Form("No data specification tags present in block tag."));
+ return 1;
+ }
+ // -- data spec loop
+
+ do {
+ prevDataNode = dataNode;
+
+ if ( ! strcmp(dataNode->GetNodeName(), "text" ) )
+ continue;
+
+ HLTInfo(Form(" %s ++ %s", dataNode->GetNodeName(), dataNode->GetText() ));
+
+ if ( ! strcmp( dataNode->GetNodeName(), "dataorigin") ) {
+ dataOrigin = dataNode->GetText();
+ }
+ else if ( ! strcmp( dataNode->GetNodeName(), "datatype") ) {
+ dataType = dataNode->GetText();
+ }
+ else if ( ! strcmp( dataNode->GetNodeName(), "dataspecification") ) {
+ dataSpecification = dataNode->GetText();
+ }
+ } while ( ( dataNode = prevDataNode->GetNextNode() ) && !iResult );
+
+ // -- data spec loop