From 4cfc689bfdd3e1409f14a0fc6438e6fe90006eaa Mon Sep 17 00:00:00 2001 From: "W.David Dagenhart" Date: Mon, 27 Sep 2010 20:45:11 +0000 Subject: [PATCH] Fix the html_ddd unit test so that it will pass. Fix the DOMCount and DDErrorReport unit tests so they will fail if there are errors. Fix unit tests test_rot, reg_ddcore, reg_ddparser so that they are run as intended. Add an attribute to the DDLSchema because it already exists in many geometry XML files and the DOMCount unit test will fail without it. We might or might not want to remove this attribute named pork in the future. Remove many schema files that have not been used for anything for years and also some unused test related files. Some other minor cleanup. All these changes should only affect the unit tests in the RegressionTest package. --- .../Parser/interface/FIPConfiguration.h | 3 + .../Parser/src/FIPConfiguration.cc | 19 +- .../interface/DDErrorDetection.h | 2 + .../RegressionTest/src/DDErrorDetection.cc | 14 + .../RegressionTest/test/BuildFile.xml | 54 +- .../RegressionTest/test/DDErrorReport.cpp | 101 +- .../RegressionTest/test/html_ddd.cpp | 39 +- .../RegressionTest/test/run_DDErrorReport.py | 36 + .../RegressionTest/test/run_DDErrorReport.sh | 22 + .../RegressionTest/test/run_DOMCount.py | 98 ++ .../RegressionTest/test/run_DOMCount.sh | 39 + DetectorDescription/Schema/DDLConstraints.xsd | 77 - DetectorDescription/Schema/DDLLogicalPart.xsd | 58 - DetectorDescription/Schema/DDLMaterial.xsd | 110 -- DetectorDescription/Schema/DDLMergeScheme.vi | 80 -- DetectorDescription/Schema/DDLParameter.xsd | 33 - DetectorDescription/Schema/DDLPosPart.xsd | 107 -- DetectorDescription/Schema/DDLReference.xsd | 77 - DetectorDescription/Schema/DDLRotation.xsd | 45 - DetectorDescription/Schema/DDLSchema.xsd | 1 + .../Schema/DDLSchemaBREAKSCompatibility.xsd | 1269 ----------------- .../Schema/DDLSchemaConstraints.xsd | 100 -- DetectorDescription/Schema/DDLScheme.xsd | 1216 ---------------- DetectorDescription/Schema/DDLSections.xsd | 136 -- DetectorDescription/Schema/DDLSolid.xsd | 257 ---- DetectorDescription/Schema/DDLSpecPar.xsd | 92 -- DetectorDescription/Schema/DDLTranslation.xsd | 36 - DetectorDescription/Schema/DDLTypes.xsd | 210 --- 28 files changed, 342 insertions(+), 3989 deletions(-) create mode 100755 DetectorDescription/RegressionTest/test/run_DDErrorReport.py create mode 100755 DetectorDescription/RegressionTest/test/run_DDErrorReport.sh create mode 100755 DetectorDescription/RegressionTest/test/run_DOMCount.py create mode 100755 DetectorDescription/RegressionTest/test/run_DOMCount.sh delete mode 100644 DetectorDescription/Schema/DDLConstraints.xsd delete mode 100644 DetectorDescription/Schema/DDLLogicalPart.xsd delete mode 100644 DetectorDescription/Schema/DDLMaterial.xsd delete mode 100644 DetectorDescription/Schema/DDLMergeScheme.vi delete mode 100644 DetectorDescription/Schema/DDLParameter.xsd delete mode 100644 DetectorDescription/Schema/DDLPosPart.xsd delete mode 100644 DetectorDescription/Schema/DDLReference.xsd delete mode 100644 DetectorDescription/Schema/DDLRotation.xsd delete mode 100644 DetectorDescription/Schema/DDLSchemaBREAKSCompatibility.xsd delete mode 100644 DetectorDescription/Schema/DDLSchemaConstraints.xsd delete mode 100644 DetectorDescription/Schema/DDLScheme.xsd delete mode 100644 DetectorDescription/Schema/DDLSections.xsd delete mode 100644 DetectorDescription/Schema/DDLSolid.xsd delete mode 100644 DetectorDescription/Schema/DDLSpecPar.xsd delete mode 100644 DetectorDescription/Schema/DDLTranslation.xsd delete mode 100644 DetectorDescription/Schema/DDLTypes.xsd diff --git a/DetectorDescription/Parser/interface/FIPConfiguration.h b/DetectorDescription/Parser/interface/FIPConfiguration.h index a38e50ae2bff..be494ffb3350 100644 --- a/DetectorDescription/Parser/interface/FIPConfiguration.h +++ b/DetectorDescription/Parser/interface/FIPConfiguration.h @@ -39,6 +39,9 @@ class FIPConfiguration : public DDLDocumentProvider { /// Read in the configuration file. int readConfig(const std::string& filename); + /// Read in the configuration file. + int readConfig(const std::string& filename, bool fullPath); + /// Return a list of files as a std::vector of strings. virtual const std::vector < std::string >& getFileList(void) const; diff --git a/DetectorDescription/Parser/src/FIPConfiguration.cc b/DetectorDescription/Parser/src/FIPConfiguration.cc index bfb44e14ee5e..5a931173474b 100644 --- a/DetectorDescription/Parser/src/FIPConfiguration.cc +++ b/DetectorDescription/Parser/src/FIPConfiguration.cc @@ -75,18 +75,22 @@ void FIPConfiguration::dumpFileList(void) const { // Here the Xerces parser is used to process the content of the // configuration file. //----------------------------------------------------------------------- -int FIPConfiguration::readConfig(const std::string& filename) + +int FIPConfiguration::readConfig(const std::string& filename, bool fullPath) { + std::string absoluteFileName (filename); + if (!fullPath) { + edm::FileInPath fp(filename); + // config file + absoluteFileName = fp.fullPath(); + } + DCOUT('P', "FIPConfiguration::ReadConfig(): started"); // Set the parser to use the handler for the configuration file. // This makes sure the Parser is initialized and gets a handle to it. DDLParser ddlp(cpv_); ddlp.getXMLParser()->setContentHandler(&configHandler_); - edm::FileInPath fp(filename); - // config file - std::string absoluteFileName (filename); - absoluteFileName = fp.fullPath(); ddlp.getXMLParser()->parse(absoluteFileName.c_str()); const std::vector& vURLs = configHandler_.getURLs(); const std::vector& vFiles = configHandler_.getFileNames(); @@ -106,3 +110,8 @@ int FIPConfiguration::readConfig(const std::string& filename) // std::cout << "url=" << configHandler_.getURLs()[i] << " file=" << configHandler_.getFileNames()[i] << std::endl; return 0; } + +int FIPConfiguration::readConfig(const std::string& filename) +{ + return readConfig(filename, false); +} diff --git a/DetectorDescription/RegressionTest/interface/DDErrorDetection.h b/DetectorDescription/RegressionTest/interface/DDErrorDetection.h index c4457b0f979c..17c7083227af 100644 --- a/DetectorDescription/RegressionTest/interface/DDErrorDetection.h +++ b/DetectorDescription/RegressionTest/interface/DDErrorDetection.h @@ -138,6 +138,8 @@ class DDErrorDetection void report(const DDCompactView& cpv, std::ostream & o); + bool noErrorsInTheReport(const DDCompactView& cpv); + private: DDErrorDetection() { }; diff --git a/DetectorDescription/RegressionTest/src/DDErrorDetection.cc b/DetectorDescription/RegressionTest/src/DDErrorDetection.cc index c568a03673c3..03a5b3b09d5c 100644 --- a/DetectorDescription/RegressionTest/src/DDErrorDetection.cc +++ b/DetectorDescription/RegressionTest/src/DDErrorDetection.cc @@ -276,3 +276,17 @@ void DDErrorDetection::report(const DDCompactView& cpv, ostream & o) o << std::endl; //nix(); } + +bool DDErrorDetection::noErrorsInTheReport(const DDCompactView& cpv) +{ + return lp_err::instance().empty() && + ma_err::instance().empty() && + so_err::instance().empty() && + ro_err::instance().empty() && + sp_err::instance().empty() && + lp_cpv(cpv).empty() && + ma().empty() && + so().empty() && + ma_lp().empty() && + so_lp().empty(); +} diff --git a/DetectorDescription/RegressionTest/test/BuildFile.xml b/DetectorDescription/RegressionTest/test/BuildFile.xml index b91116787ec2..e26f4503b7b4 100644 --- a/DetectorDescription/RegressionTest/test/BuildFile.xml +++ b/DetectorDescription/RegressionTest/test/BuildFile.xml @@ -1,36 +1,42 @@ - - - - - - - - - - - - - - - - + + + + + + + + + - - + + + + + - - + + + + + + + + + + + + + -# + + + - - - # # # diff --git a/DetectorDescription/RegressionTest/test/DDErrorReport.cpp b/DetectorDescription/RegressionTest/test/DDErrorReport.cpp index 94ced2612e59..d4e85d0af5e9 100644 --- a/DetectorDescription/RegressionTest/test/DDErrorReport.cpp +++ b/DetectorDescription/RegressionTest/test/DDErrorReport.cpp @@ -1,33 +1,64 @@ -#include -#include - +#include "FWCore/PluginManager/interface/PluginManager.h" +#include "FWCore/PluginManager/interface/standard.h" +#include "DetectorDescription/Core/interface/DDCompactView.h" #include "DetectorDescription/Parser/interface/DDLParser.h" +#include "DetectorDescription/Parser/interface/DDLSAX2FileHandler.h" #include "DetectorDescription/Parser/interface/FIPConfiguration.h" #include "DetectorDescription/RegressionTest/interface/DDErrorDetection.h" -#include -// #include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/PluginManager/interface/PluginManager.h" -#include "FWCore/PluginManager/interface/standard.h" -// #include "FWCore/Utilities/interface/Presence.h" -// #include "FWCore/PluginManager/interface/PresenceFactory.h" -// #include "FWCore/ParameterSet/interface/ParameterSet.h" -// #include "FWCore/PythonParameterSet/interface/MakeParameterSets.h" -// #include "FWCore/ServiceRegistry/interface/Service.h" -// #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include -namespace DD { } using namespace DD; +#include +#include int main(int argc, char *argv[]) { - std::string const kProgramName = argv[0]; - edmplugin::PluginManager::configure(edmplugin::standard::config()); - std::cout << "initialize DDL parser" << std::endl; + edmplugin::PluginManager::configure(edmplugin::standard::config()); + + // Process the command line arguments + std::string descString("DDErrorReport"); + descString += " [options] configurationFileName\n"; + descString += "Allowed options"; + boost::program_options::options_description desc(descString); + desc.add_options() + ("help,h", "Print this help message") + ("file,f", boost::program_options::value(), "XML configuration file name. " + "Default is DetectorDescription/RegressionTest/test/configuration.xml") + ("path,p", "Specifies filename is a full path and not to use FileInPath to find file. " + " This option is ignored if a filename is not specified"); + + boost::program_options::positional_options_description p; + p.add("file", -1); + + boost::program_options::variables_map vm; + try { + store(boost::program_options::command_line_parser(argc,argv).options(desc).positional(p).run(),vm); + notify(vm); + } catch(boost::program_options::error const& iException) { + std::cerr << "Exception from command line processing: " + << iException.what() << "\n"; + std::cerr << desc << std::endl; + return 1; + } + + if(vm.count("help")) { + std::cout << desc << std::endl; + return 0; + } + + bool fullPath = false; + std::string configfile("DetectorDescription/RegressionTest/test/configuration.xml"); + if (vm.count("file")) { + configfile = vm["file"].as(); + if (vm.count("path")) { + fullPath = true; + } + } + DDCompactView cpv; - DDLParser myP(cpv);// = DDLParser::instance(); + DDLParser myP(cpv); myP.getDDLSAX2FileHandler()->setUserNS(false); - // std::cout << "about to set configuration" << std::endl; /* The configuration file tells the parser what to parse. The sequence of files to be parsed does not matter but for one exception: XML containing SpecPar-tags must be parsed AFTER all corresponding @@ -36,33 +67,27 @@ int main(int argc, char *argv[]) will not suffer from this restriction). */ - std::cout << "about to start parsing" << std::endl; - std::string configfile("DetectorDescription/RegressionTest/test/configuration.xml"); - if (argc==2) { - configfile = argv[1]; - } else { - std::cout << "running default " << configfile << std::endl; - } - // Use the File-In-Path configuration document provider. + // Use the File-In-Path configuration document provider. FIPConfiguration fp(cpv); - fp.readConfig(configfile); + fp.readConfig(configfile, fullPath); int parserResult = myP.parse(fp); - std::cout << "done parsing" << std::endl; - std::cout.flush(); if (parserResult != 0) { std::cout << " problem encountered during parsing. exiting ... " << std::endl; exit(1); } - std::cout << " parsing completed" << std::endl; - std::cout << std::endl << std::endl << "Start checking!" << std::endl << std::endl; - std::cout.flush(); + std::cout << "Parsing completed. Start checking for errors." << std::endl; DDErrorDetection ed(cpv); - // maybe later ed.report(cpv,std::cout); - // DDErrorDetection ed; - // ed.scan(); - ed.report(cpv, std::cout); + bool noErrors = ed.noErrorsInTheReport(cpv); + if (noErrors && fullPath) { + std::cout << "DDErrorReport did not find any errors and is finished." << std::endl; + } + else { + ed.report(cpv, std::cout); + if (!noErrors) { + return 1; + } + } return 0; - } diff --git a/DetectorDescription/RegressionTest/test/html_ddd.cpp b/DetectorDescription/RegressionTest/test/html_ddd.cpp index aa56d6e87282..8c6ff536abbb 100644 --- a/DetectorDescription/RegressionTest/test/html_ddd.cpp +++ b/DetectorDescription/RegressionTest/test/html_ddd.cpp @@ -1,32 +1,33 @@ -#include -#include - -#include "DetectorDescription/RegressionTest/interface/DDHtmlFormatter.h" - -// required for main() in cmssw framework #include "FWCore/PluginManager/interface/PluginManager.h" #include "FWCore/PluginManager/interface/standard.h" - -#include "DetectorDescription/Core/src/LogicalPart.h" - +#include "DetectorDescription/Core/interface/DDCompactView.h" #include "DetectorDescription/Parser/interface/DDLParser.h" +#include "DetectorDescription/Parser/interface/DDLSAX2FileHandler.h" #include "DetectorDescription/Parser/interface/FIPConfiguration.h" #include "DetectorDescription/Core/src/DDCheck.h" -#include "DetectorDescription/Core/interface/DDRoot.h" -#include "DetectorDescription/Base/interface/DDException.h" -#include "DetectorDescription/Core/interface/DDFilter.h" -#include "DetectorDescription/Core/interface/DDFilteredView.h" -#include "DetectorDescription/Core/interface/DDValue.h" -#include "DetectorDescription/Core/interface/DDQuery.h" -#include "DetectorDescription/Core/interface/DDSpecifics.h" -#include "DetectorDescription/Core/interface/DDSolid.h" -#include "DetectorDescription/Core/interface/DDCompactView.h" +#include "DetectorDescription/RegressionTest/interface/DDHtmlFormatter.h" +#include "DetectorDescription/Core/src/LogicalPart.h" #include "DetectorDescription/RegressionTest/interface/DDErrorDetection.h" +#include "DetectorDescription/Base/interface/DDException.h" + +#include +#include +#include +#include int main(int argc, char *argv[]) { + if (argc < 2) { + std::cout << "This program does nothing unless it is given a command line argument.\n"; + std::cout << "The argument should be the name of an xml configuration file.\n"; + std::cout << "It is intentional this does nothing when run as part of the unit tests.\n"; + std::cout << "It is not a test. We only put it in the test directory because it is\n"; + std::cout << "not of general use and so does not belong in the bin directory.\n"; + std::cout << "There is currently no other place to put it.\n"; + return 0; + } + // required for main() in cmssw framework - std::string const kProgramName = argv[0]; edmplugin::PluginManager::configure(edmplugin::standard::config()); try { diff --git a/DetectorDescription/RegressionTest/test/run_DDErrorReport.py b/DetectorDescription/RegressionTest/test/run_DDErrorReport.py new file mode 100755 index 000000000000..51bb74de1dcf --- /dev/null +++ b/DetectorDescription/RegressionTest/test/run_DDErrorReport.py @@ -0,0 +1,36 @@ +#! /usr/bin/env python + +import FWCore.ParameterSet.Config as cms +import sys +import os + +if os.getenv('LOCAL_TOP_DIR') == None: + print "The environment variable LOCAL_TOP_DIR must be set to run this script" + print "Usually setting it equal to the value of CMSSW_BASE will do what you want" + print "In the context of a unit test this variable is always set automatically" + sys.exit(1) + +# get the list of XML files from the cfi file +process = cms.Process("TEST") +cfiFile = 'Geometry/CMSCommonData/cmsIdealGeometryXML_cfi' +if len(sys.argv) > 1: + cfiFile = sys.argv[1] +process.load(cfiFile) +xmlFiles = process.es_sources['XMLIdealGeometryESSource'].geomXMLFiles.value() + +# create an XML configuration file that contains the same list of XML files as the python cfi file +configXMLFile = open('dddreportconfig.xml', 'w') +configXMLFile.write('\n') +configXMLFile.write('\n') +configXMLFile.write(' \n') +for name in xmlFiles: + configXMLFile.write(" \n") +configXMLFile.write(' \n') +configXMLFile.write('\n') +configXMLFile.write('\n') +configXMLFile.close() + +command = os.getenv('LOCAL_TOP_DIR') + "/test/" + os.getenv('SCRAM_ARCH') + "/DDErrorReport dddreportconfig.xml -p" +status = os.system( command ) +if (status != 0): + sys.exit(1) diff --git a/DetectorDescription/RegressionTest/test/run_DDErrorReport.sh b/DetectorDescription/RegressionTest/test/run_DDErrorReport.sh new file mode 100755 index 000000000000..a68f75cf50c1 --- /dev/null +++ b/DetectorDescription/RegressionTest/test/run_DDErrorReport.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +pushd ${LOCAL_TMP_DIR} + +cfiFiles=Geometry/CMSCommonData/cmsIdealGeometryXML_cfi +cfiFiles="${cfiFiles} Geometry/CMSCommonData/cmsExtendedGeometryXML_cfi" +cfiFiles="${cfiFiles} Geometry/CMSCommonData/cmsExtendedGeometryLiMaxXML_cfi" + +status=0 + +for cfiFile in ${cfiFiles} +do + echo "run_DDErrorReport.py $cfiFile" + ${LOCAL_TEST_DIR}/run_DDErrorReport.py $cfiFile + if [ $? -ne 0 ] + then + status=1 + fi +done + +popd +exit $status diff --git a/DetectorDescription/RegressionTest/test/run_DOMCount.py b/DetectorDescription/RegressionTest/test/run_DOMCount.py new file mode 100755 index 000000000000..85027d206b92 --- /dev/null +++ b/DetectorDescription/RegressionTest/test/run_DOMCount.py @@ -0,0 +1,98 @@ +#! /usr/bin/env python + +import FWCore.ParameterSet.Config as cms +import sys +import os +import re + +if os.getenv('LOCAL_TOP_DIR') == None: + print "The environment variable LOCAL_TOP_DIR must be set to run this script" + print "Usually setting it equal to the value of CMSSW_BASE will do what you want" + print "In the context of a unit test this variable is always set automatically" + sys.exit(1) + +# get the list of XML files from the cfi file +process = cms.Process("TEST") +cfiFile = 'Geometry/CMSCommonData/cmsIdealGeometryXML_cfi' +if len(sys.argv) > 1: + cfiFile = sys.argv[1] +process.load(cfiFile) +xmlFiles = process.es_sources['XMLIdealGeometryESSource'].geomXMLFiles.value() + +def callDOMCount(schemaPath, xmlPath): + xmlFilename = os.path.basename(xmlPath) + xmlFile = open(xmlPath, 'r') + tmpXMLFile = open(xmlFilename, 'w') + # Inside each XML file, there is a path to the schema file. + # We modify this path in a copy of the XML file for two reasons. + # The XML file might be in a package checked out in a working release + # area and the schema file might not be checked out or vice versa. + # This allows DOMCount to run in spite of that. The second reason + # is that the relative path is erroneous in many of the XML files + # and has to be fixed. + for line in xmlFile.readlines(): + line = line.replace("../../../../../DetectorDescription/Schema/DDLSchema.xsd",schemaPath) + line = line.replace("../../../../DetectorDescription/Schema/DDLSchema.xsd",schemaPath) + line = line.replace("../../../DetectorDescription/Schema/DDLSchema.xsd",schemaPath) + line = line.replace("../../DetectorDescription/Schema/DDLSchema.xsd",schemaPath) + line = line.replace("../DetectorDescription/Schema/DDLSchema.xsd",schemaPath) + tmpXMLFile.write(line) + tmpXMLFile.close() + xmlFile.close() + + # Run DOMCount + command = 'DOMCount -v=always -n -s -f %s' % (xmlFilename) + os.system ( command ) + + # Cleanup + os.system ("rm %s" % (xmlFilename)) + +# Find the schema file +schema = os.environ['LOCAL_TOP_DIR'] + '/src/DetectorDescription/Schema/DDLSchema.xsd' +if os.path.isfile(schema): + pass +else: + # It is an error if the file is not there but the package is + packageDirectory = os.environ['LOCAL_TOP_DIR'] + '/src/DetectorDescription/Schema' + if os.path.isdir(packageDirectory): + print 'Error, schema file not found' + print 'DDLSchema.xsd not found in ' + packageDirectory + print 'Quitting, cannot test XML files without a schema' + sys.exit(0) + + # if there is a base release then try to find the file there + schema = os.getenv('CMSSW_RELEASE_BASE') + '/src/DetectorDescription/Schema/DDLSchema.xsd' + if os.path.isfile(schema): + pass + else: + print 'Error, schema file not found' + print 'DetectorDescription/Schema/DDLSchema.xsd' + print 'Quitting, cannot test XML files without a schema' + sys.exit(0) +print "schema file is:" +print schema +sys.stdout.flush() + +# Loop over the XML files listed in the cfi file and find them +for name in xmlFiles: + fullpath = '%s/src/%s' % (os.environ['LOCAL_TOP_DIR'], name) + if os.path.isfile(fullpath): + callDOMCount(schema, fullpath) + else: + # It is an error if the file is not there but the package is + packageDirectory = os.environ['LOCAL_TOP_DIR'] + '/src/' + re.split('/', name)[0] + '/' + re.split('/', name)[1] + if os.path.isdir(packageDirectory): + print 'Error, xml file not found:' + print fullpath + print 'Package is there but the xml file is not' + sys.stdout.flush() + continue + + # if there is a base release then try to find the file there + fullpath = '%s/src/%s' % (os.getenv('CMSSW_RELEASE_BASE'), name) + if os.path.isfile(fullpath): + callDOMCount(schema, fullpath) + else: + print 'Error, xml file not found' + print name + sys.stdout.flush() diff --git a/DetectorDescription/RegressionTest/test/run_DOMCount.sh b/DetectorDescription/RegressionTest/test/run_DOMCount.sh new file mode 100755 index 000000000000..b5e072bcee27 --- /dev/null +++ b/DetectorDescription/RegressionTest/test/run_DOMCount.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +function die { echo Failure $1: status $2 ; exit $2 ; } + +pushd ${LOCAL_TMP_DIR} + +rm -f run_DOMCount.log +echo "Normal output of DOMCount is written to file tmp/${SCRAM_ARCH}/run_DOMCount.log" + +# Each of these cfi files contains a list of xml files +# We will run DOMCount on each of the xml files +cfiFiles=Geometry/CMSCommonData/cmsIdealGeometryXML_cfi +cfiFiles="${cfiFiles} Geometry/CMSCommonData/cmsExtendedGeometryXML_cfi" +cfiFiles="${cfiFiles} Geometry/CMSCommonData/cmsExtendedGeometryLiMaxXML_cfi" + +for cfiFile in ${cfiFiles} +do + echo "run_DOMCount.py $cfiFile" | tee -a run_DOMCount.log + ${LOCAL_TEST_DIR}/run_DOMCount.py $cfiFile >> run_DOMCount.log 2>&1 || die "run_DOMCount.py $cfiFile" $? +done + +# Errors in the xml files and also missing xml or schema files will +# show up in the log file. (if the python script above actually +# exits with a nonzero status it probably means the python test +# script has a bug in it) +errorCount=`(grep --count "Error" run_DOMCount.log)` + +if [ $errorCount -eq 0 ] +then + echo "No XML Schema violations in xml files." +else + echo "Test failed. Here are the errors from tmp/${SCRAM_ARCH}/run_DOMCount.log:" + cat run_DOMCount.log | grep -v '\.xml:.*elems\.$' + popd + exit 1 +fi + +popd +exit 0 diff --git a/DetectorDescription/Schema/DDLConstraints.xsd b/DetectorDescription/Schema/DDLConstraints.xsd deleted file mode 100644 index 4e2181065494..000000000000 --- a/DetectorDescription/Schema/DDLConstraints.xsd +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - There are two types of constraints. Constraints on the parts. e.g. the name should start with "tk". Or constraints on specific parameters. e.g. parameter should be smaller than 5. Within the DDL we have a very simple constraint mechanism. Other more general constraint mechanisms can be found in projects such as Protege - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLLogicalPart.xsd b/DetectorDescription/Schema/DDLLogicalPart.xsd deleted file mode 100644 index b0be305e406c..000000000000 --- a/DetectorDescription/Schema/DDLLogicalPart.xsd +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - It describes the definition of a logical part. A logicalpart definition is based on a solid and a type of material. These can either be defined "inline" or be referenced - - - - - The sensitive attribute should be set true if this document is a sensitive logicalpart - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DetectorDescription/Schema/DDLMaterial.xsd b/DetectorDescription/Schema/DDLMaterial.xsd deleted file mode 100644 index 80a9bb05dcd8..000000000000 --- a/DetectorDescription/Schema/DDLMaterial.xsd +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - There are 2 types of material that inherit from the general material element: elementary materials and composite materials. Elementary materials describe materials such as oxygen, iron, etc.. composite are mixtures of material (which can themselves also be composites) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLMergeScheme.vi b/DetectorDescription/Schema/DDLMergeScheme.vi deleted file mode 100644 index 55fe27bb9674..000000000000 --- a/DetectorDescription/Schema/DDLMergeScheme.vi +++ /dev/null @@ -1,80 +0,0 @@ -" make sure that every element in the xsd (xml) file is written on 1 line!! -" otherwise this script does not delete the proper stuff!! -a - - -. -:r DDLTypes.xsd -1,3d -:%s/ - -. -:r DDLReference.xsd -:$ -a - - -. -:r DDLSolid.xsd -:$ -a - - -. -:r DDLRotation.xsd -:$ -a - - -. -:r DDLConstraints.xsd -:$ -a - - -. -:r DDLSpecPar.xsd -:$ -a - - -. -:r DDLMaterial.xsd -:$ -a - - -. -:r DDLPosPart.xsd -:$ -a - - -. -:r DDLLogicalPart.xsd -:$ -a - - -. -:r DDLSections.xsd -:$ -a - - -. -:r DDLSchemaConstraints.xsd -:$ -:g/ -. diff --git a/DetectorDescription/Schema/DDLParameter.xsd b/DetectorDescription/Schema/DDLParameter.xsd deleted file mode 100644 index 412b3e8f4a23..000000000000 --- a/DetectorDescription/Schema/DDLParameter.xsd +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLPosPart.xsd b/DetectorDescription/Schema/DDLPosPart.xsd deleted file mode 100644 index c5c9e7bcf793..000000000000 --- a/DetectorDescription/Schema/DDLPosPart.xsd +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - This schema describes position parts (PosParts). A position part is based on a logical part and via a rotation and translation it is placed in another logical part. The rotation can be referenced or be defined in line. Furthermore it is possible to refer to functions that describe a Parameterised positioning. - - - - - - - - - - - The call element is used to make external calls to fuctions that describe parameterizations. The functionName attribute is a string that will have the following format: f([vector of parameters],function name). I will return a vector of rotations and translations. - - - - - - - - - - - Changes: - mec 20011018 Include DDLTypes. - Gave lengthT type to Translation dx, dy, dz - Changed RotationOptions by adding minOccurs = "0" to the choice tag. - mec 20020131 Change CALL to new ParameterisedBuilder. - mec 20020219 Moved Translation to DDLTranslation.xsd - mec 20020419 Deleted ParameterisedBuilder because Martin called it - AlgoPosPart... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLReference.xsd b/DetectorDescription/Schema/DDLReference.xsd deleted file mode 100644 index 3b007a50be5f..000000000000 --- a/DetectorDescription/Schema/DDLReference.xsd +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - This schema describes references between data. 5 types of references have been identified. These point respectively to: Solids, Material, Rotation, LogicalPart and Parameter. I would have been possible to use Xlink/xpointer or key/keyrefs. But xlink is a very verbose way of describing links, and key/keyrefs are only defined on one file. The references also have an optional "url" attribute that points to the file, where the reference is pointing to an element. The rLogicalPart has an extra optional attribute "parent" that describes the parent. - - - - The format of the string path will be based on the following grammar in order to locate parts in the exploded/compact view It is based on Xpath, but simpeler. This means it is easy to parse and to understand for physicists. In the exploded view you identify parts by there label (only physicalparts), their name (in a logical part) and their copy number (in case of parameterizations) - - - PATH == (ELEMENT)* - ELEMENT == PhysicalPartID | LogicalPartID | NavElement - LogicPartID == //string - PhysicalPartID == PosPartLabel (copynumber)^(0,1) - NavElement == "*" | ".." - PosPartLabel == /string - copynumber == [ integer (, integer)* ] - - the string can contain the wild character *. e.g. "tk*r" all strings starting with tk and ending on r. "*" and ".." represent "the following part in the path no matter how deep in the tree" and "go to parent" respectively. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DetectorDescription/Schema/DDLRotation.xsd b/DetectorDescription/Schema/DDLRotation.xsd deleted file mode 100644 index 73876a6b36d0..000000000000 --- a/DetectorDescription/Schema/DDLRotation.xsd +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Rotations are defined as described in GEANT3. It describes ONLY a rotation, and there is no handiness. The rotation will be used for positioning the PosParts in the LogicalParts, are defined relative to this LogicalPart. - - - - mec 20020219 Added element Reflection which is essentially a left-handed rotation so I used RotationType as the basis for this element. The "meaning" to Reflection being distinct from Rotation is in the Parser code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DetectorDescription/Schema/DDLSchema.xsd b/DetectorDescription/Schema/DDLSchema.xsd index c2ee3520cb36..56f07552b33f 100644 --- a/DetectorDescription/Schema/DDLSchema.xsd +++ b/DetectorDescription/Schema/DDLSchema.xsd @@ -1169,6 +1169,7 @@ + diff --git a/DetectorDescription/Schema/DDLSchemaBREAKSCompatibility.xsd b/DetectorDescription/Schema/DDLSchemaBREAKSCompatibility.xsd deleted file mode 100644 index aeb7872f0bb8..000000000000 --- a/DetectorDescription/Schema/DDLSchemaBREAKSCompatibility.xsd +++ /dev/null @@ -1,1269 +0,0 @@ - - - - - - This schema defines the Detector Description Language (DDL) for specifying the parts, materials and positioning of component parts of a physical detector being built. It is intended for use in simulating the detector in software, visualizing the detector, and reconstructing events off line. High Energy Physics experiments require the building of extremely complex detectors which need to have some common source for the geometry. The DDL is is part of the Detector Description Database (DDD) prototype which allows for any source to be used. This XML is one such example. - - - The names of each object which is needed by the DDD allow the specification of a namespace followed by colon, then the local name. It is important to note if you are authoring one of these XML documents that this and other rules are implied and documented below. - - - This schema document is structured as follows. Each group of types, elements, groups (attribute or otherwise) corresponds to a major section of the schema. Each section should be ordered in that order (types, elements, groups). - - - - - - - - - - - - - - - - - This is the main or root element of any DDL document. Inside it, you can place any of the sections described below. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This type describes references between data. Six (6) reference type elements have been identified. These point respectively to: Solids, Materials, Rotations, ReflectionRotations and LogicalParts. It would have been possible to use Xlink/xpointer or key/keyrefs. But xlink is a very verbose way of describing links, and key/keyrefs are only defined on one file. The name being referred to conforms to the syntax namespace:name. In the DDL, the namespace is the XML filename that contains the named object. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This type describes a selection mechanism for parts. It allows, for example, for association between a set of parameters and a set of parts. The syntax is defined as follows: - - Path := "//" LogicalPartName (Element)* - Element := LogicalPartNavigator | PositionedPartNavigator - LogicalPartNavigator := Nav TName - TName := NameSpace ":" Name | Name - PositionedPartNavigator := LogicalPartNavigator "[" CopyNumber "]" - CopyNumber := PositiveCopyNumber | NegativeCopyNumber - NegativeCopyNumber := "-" PositiveCopyNumber - Nav := "//" | "/" - PositiveCopyNumber := ["+"] (0..9)+ - NameSpace := StringName - Name := StringName - - I'm not sure about the following description. Basically, I want alpha-numeric names, and allow "_" (underscore) - StringName := Alpha (AlphaNumeric)* - Alpha := (a..z) | (A..Z) - AlphaNumeric := Alpha | (0..9) | "_" - - // indicates "every". For example //Ring would refer to all Parts named Ring. - / indicates "immediate child of". For example //Ring[1]/CSCType1 would indicate all CSCType1 elements that are immediate children of Ring with CopyNumber 1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - Rotations are defined as described in GEANT3. It describes a right-handed or proper rotation. ReflectionRotations are used to reflect parts when the symmetry of the actual detector allows for a part to be reflected in this way (i.e. truly mirror symmetric parts, not parts that can simply be translated and rotated to the appropriate position. These elements will be used in the PosParts for positioning the LogicalParts. - - - - - - - - - - - This new rotation type allow users to specify rotations around an axis. - - - - - - - - - - - - - This type is simply used to define translations for the positioning instructions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Certain primitive types are overloaded within the DDL. The reason is maintainability. When reading data it will be easier to see how certain pieces need to interpreted. For example, instead of reading a float, it is possible to see that this is a length type. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Definition of units. Attached to a type, users can specify the unit related to the type. For example for length this is m. cm. or mm. If this is not specified the default DDL unit is used. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The unit type describes the units that can be used if users define their own parameters attached to certain parts. This is not an exhaustive list, but tries to be as complete as possible. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ParameterType elements are used to specify named values for algorithmic positioning. They are also used by client applications of the DDD to specify parameters they need for their special use of the DDD. It allows such associated information to be attached within the DDD model so that the client application will not need to parse some other input file and synchronize that information with the parts in the detector. - - Parameter for part specific values, used in SpecPar. The eval attribute determines whether to evaluate the value or leave it as a string. TO BE DEPRECATED - String for part specific values in SpecPar. Never evaluated for expressions and/or constants. - Also used to replace ParS. - Numeric for part specific values in SpecPar. Evaluated always by the evaluator. - Also used to replace ParE. - Constant for specifying constants that can be used in expressions (for shapes and positioning) - are always evaluated. Should we just use Numeric and String in constant and again use existence of name attribute - - ParS and ParE are "named" in the DDD sense. This means that to use String and Numeric to replace them means that either - the Parser of the DDD will have to check and determine whether to name them or not based on context (i.e. parent is - SpecPar or parent is AlgoPosPart). - ParS for strings in AlgoPosPart. TO BE DEPRECATED - ParE for doubles resulting from evaluating the value attribute as an expression in AlgoPosPart. TO BE DEPRECATED - - - After this, ParameterType will basically be only for String and Numeric. The new (other) parameter type is the vector... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Describes the different types of solids that can be used in the definition of the detector description. Most of these descriptions are based on the GEANT (version 3 or 4) syntax. - - - - - - - - - By moving the rSolids into attributes we allow BooleanSolidType to be more compact and to allow Rotation or Translation to be defined inside the BooleanSolidtype. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - There are 2 types of material that inherit from the general material element: elementary materials and composite materials. Elementary materials describe materials such as oxygen, iron, etc.. composite are mixtures of material (which can themselves also be composites) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - It describes the definition of a logical part. A logicalpart definition is based on a solid and a type of material. These can either be defined "inline" or be referenced. - - - The category attribute is used to indicate which category the LogicalPart falls into, whether it is a sensitive volume, part of the cooling system, a support structure, etc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This element type is used to position LogicalParts within one another. - If rChild is called C, rParent is called P, Translation is called T and - the Rotation Options are called R then the possible combinations are: - CPTR PTRC RTCP TRCP CPT TCP - CPRT PTCR RTPC TRPC CPR TPC - CTPR PRTC RCTP TCRP CTP PCT CP - CTRP PRCT RCPT TCPR CRP PTC PC - CRTP PCRT RPCT TPRC RCP PCR - CRPT PCTR RPTC TPCR RPC PRC - - Because of ambiguity problems the options are limited to: - - CPRT = CPT CPR CP PCR PCT PC - RTCP = RCP and RTPC = RPC - TPRC = TPC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLSchemaConstraints.xsd b/DetectorDescription/Schema/DDLSchemaConstraints.xsd deleted file mode 100644 index 1f1569845ead..000000000000 --- a/DetectorDescription/Schema/DDLSchemaConstraints.xsd +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLScheme.xsd b/DetectorDescription/Schema/DDLScheme.xsd deleted file mode 100644 index e125f1b0a58d..000000000000 --- a/DetectorDescription/Schema/DDLScheme.xsd +++ /dev/null @@ -1,1216 +0,0 @@ - - - - - - - - - - - - - - - - - - - Certain primitive types are overloaded within the DDL. The reason is maintainability. When reading data it will be easier to see how certain pieces need to interpreted. For example, instead of reading in a float, it is possible to see that this is a length type. - - - - - - - - - - - - - - - - - - - - - - This file also contains the definition of units. Attached to a type, users can specify the unit related to the type. For example for length this is m. cm. or mm. If this is not specified the default DDL unit is used. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The unit type describes the units that can be used if users define their own parameters attached to certain parts. This is not an exhaustive list, but tries to be as complete as possible. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This schema describes references between data. 5 types of references have been identified. These point respectively to: Solids, Material, Rotation, LogicalPart and Parameter. I would have been possible to use Xlink/xpointer or key/keyrefs. But xlink is a very verbose way of describing links, and key/keyrefs are only defined on one file. The references also have an optional "url" attribute that points to the file, where the reference is pointing to an element. The rLogicalPart has an extra optional attribute "parent" that describes the parent. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The format of the string path will be based on the following grammar in order to locate parts in the exploded/compact view It is based on Xpath, but simpeler. This means it is easy to parse and to understand for physicists. In the exploded view you identify parts by there label (only physicalparts), their name (in a logical part) and their copy number (in case of parameterizations) - - - PATH == (ELEMENT)* - ELEMENT == PhysicalPartID | LogicalPartID | NavElement - LogicPartID == //string - PhysicalPartID == PosPartLabel (copynumber)^(0,1) - NavElement == "*" | ".." - PosPartLabel == /string - copynumber == [ integer (, integer)* ] - - the string can contain the wild character *. e.g. "tk*r" all strings starting with tk and ending on r. "*" and ".." represent "the following part in the path no matter how deep in the tree" and "go to parent" respectively. - - - - - - - - - - - - - - - - - - - - - - - - Describes the different types of solids that can be used in the definition of the detector description. Most of these descriptions are based on the GEANT3 syntax. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Rotations are defined as described in GEANT3. It describes ONLY a rotation, and there is no handiness. The rotation will be used for positioning the PosParts in the LogicalParts, are defined relative to this LogicalPart. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - There are two types of constraints. Constraints on the parts. e.g. the name should start with "tk". Or constraints on specific parameters. e.g. parameter should be smaller than 5. Within the DDL we have a very simple constraint mechanism. Other more general constraint mechanisms can be found in projects such as Protege - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - There are 2 types of material that inherit from the general material element: elementary materials and composite materials. Elementary materials describe materials such as oxygen, iron, etc.. composite are mixtures of material (which can themselves also be composites) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This schema describes position parts (PosParts). A position part is based on a logical part and via a rotation and translation it is placed in another logical part. The rotation can be referenced or be defined in line. Furthermore it is possible to refer to functions that describe a parameterized positioning. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The call element is used to make external calls to fuctions that describe parameterizations. The functionName attribute is a string that will have the following format: f([vector of parameters],function name). I will return a vector of rotations and translations. - - - - - - - - - - - - - - It describes the definition of a logical part. A logicalpart definition is based on a solid and a type of material. These can either be defined "inline" or be referenced - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The sensitive attribute should be set true if this document is a sensitive logicalpart - - - - - - - - - - - - - - - Describes the different sections that define the different "parts" of the DDL. These sections are based on schema descriptions of these different "parts" Within these sections in the instance documents, there can be references to other data in other instance documents. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLSections.xsd b/DetectorDescription/Schema/DDLSections.xsd deleted file mode 100644 index e66b2ef11b10..000000000000 --- a/DetectorDescription/Schema/DDLSections.xsd +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Describes the different sections that define the different "parts" of the DDL. These sections are based on schema descriptions of these different "parts" Within these sections in the instance documents, there can be references to other data in other instance documents. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLSolid.xsd b/DetectorDescription/Schema/DDLSolid.xsd deleted file mode 100644 index 7dddc611ded0..000000000000 --- a/DetectorDescription/Schema/DDLSolid.xsd +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - Describes the different types of solids that can be used in the definition of the detector description. Most of these descriptions are based on the GEANT3 syntax. - - - - - - - - - - Changes: - - mec 20011018 Added Polyhedra element, type and attributes. - Added PolyconeRZ element, type and attributes. - Changed Trd1 attribute y to y1 and y2. - Changed attribute names to agreed conventions. - Added attributes theta and phi to TrapezoidAttributes and made them optional - Added attributes startPhi and deltaPhi for ConeAttributes and made them optional - mec 20011211 Re-introduced SubtractionSolid, changing ID to name and Solid to rSolid. - Added IntersectionSolid and UnionSolid. All of these are of type BooleanSolidType - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLSpecPar.xsd b/DetectorDescription/Schema/DDLSpecPar.xsd deleted file mode 100644 index 0162e3ddbd28..000000000000 --- a/DetectorDescription/Schema/DDLSpecPar.xsd +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLTranslation.xsd b/DetectorDescription/Schema/DDLTranslation.xsd deleted file mode 100644 index 7067b2bd965b..000000000000 --- a/DetectorDescription/Schema/DDLTranslation.xsd +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - This schema contains the element Translation which is used in more than one component of the DDL. - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DetectorDescription/Schema/DDLTypes.xsd b/DetectorDescription/Schema/DDLTypes.xsd deleted file mode 100644 index 09d788a45955..000000000000 --- a/DetectorDescription/Schema/DDLTypes.xsd +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - Certain primitive types are overloaded within the DDL. The reason is maintainability. When reading data it will be easier to see how certain pieces need to interpreted. For example, instead of reading in a float, it is possible to see that this is a length type. - - mec 20020131: Changes made remove some of our type security by changing xsd:float to xsd:string in the lengthT and angleT types. This was done to allow constants and expressions. Eventually, it would be good to change that to something which restricts it to valid expressions. However, for now, that will be done by the parser. - - New type dimensionlessT was added. For such things as fractions in the Materials description. - New type quantityT. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This file also contains the definition of units. Attached to a type, users can specify the unit related to the type. For example for length this is m. cm. or mm. If this is not specified the default DDL unit is used. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The unit type describes the units that can be used if users define their own parameters attached to certain parts. This is not an exhaustive list, but tries to be as complete as possible. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -