int main(int argc, char *argv[]) { typedef DDCompactView::graph_type::const_adj_iterator adjl_iterator; std::cout << "main:: initialize" << std::endl; // AlgoInit(); // Copied from example stand-alone program in Message Logger July 18, 2007 std::string const kProgramName = argv[0]; int rc = 0; try { // A. Instantiate a plug-in manager first. edm::AssertHandler ah; // B. Load the message service plug-in. Forget this and bad things happen! // In particular, the job hangs as soon as the output buffer fills up. // That's because, without the message service, there is no mechanism for // emptying the buffers. boost::shared_ptr<edm::Presence> theMessageServicePresence; theMessageServicePresence = boost::shared_ptr<edm::Presence>(edm::PresenceFactory::get()-> makePresence("MessageServicePresence").release()); // C. Manufacture a configuration and establish it. std::string config = "import FWCore.ParameterSet.Config as cms\n" "process = cms.Process('TEST')\n" "process.maxEvents = cms.untracked.PSet(\n" " input = cms.untracked.int32(5)\n" ")\n" "process.source = cms.Source('EmptySource')\n" "process.JobReportService = cms.Service('JobReportService')\n" "process.InitRootHandlers = cms.Service('InitRootHandlers')\n" // "process.MessageLogger = cms.Service('MessageLogger')\n" "process.m1 = cms.EDProducer('IntProducer',\n" " ivalue = cms.int32(11)\n" ")\n" "process.out = cms.OutputModule('PoolOutputModule',\n" " fileName = cms.untracked.string('testStandalone.root')\n" ")\n" "process.p = cms.Path(process.m1)\n" "process.e = cms.EndPath(process.out)\n"; boost::shared_ptr<std::vector<edm::ParameterSet> > pServiceSets; boost::shared_ptr<edm::ParameterSet> params_; edm::makeParameterSets(config, params_, pServiceSets); // D. Create the services. edm::ServiceToken tempToken(edm::ServiceRegistry::createSet(*pServiceSets.get())); // E. Make the services available. edm::ServiceRegistry::Operate operate(tempToken); // END Copy from example stand-alone program in Message Logger July 18, 2007 std::cout << "main::initialize DDL parser" << std::endl; DDCompactView cpv; DDLParser myP(cpv);// = DDLParser::instance(); // std::cout << "main:: about to start parsing field configuration..." << std::endl; // FIPConfiguration dp2; // dp2.readConfig("Geometry/CMSCommonData/data/FieldConfiguration.xml"); // myP->parse(dp2); std::cout << "main::about to start parsing main configuration... " << std::endl; FIPConfiguration dp(cpv); dp.readConfig("DetectorDescription/Parser/test/cmsIdealGeometryXML.xml"); myP.parse(dp); std::cout << "main::completed Parser" << std::endl; std::cout << std::endl << std::endl << "main::Start checking!" << std::endl << std::endl; DDCheckMaterials(std::cout); // cpv.setRoot(DDLogicalPart(DDName("cms:World"))); std::cout << "edge size of produce graph:" << cpv.writeableGraph().edge_size() << std::endl; DDExpandedView ev(cpv); std::cout << "== got the epv ==" << std::endl; // for now just count! std::ofstream plist("plist.out"); int numPhysParts(0); while ( ev.next() ) { ++numPhysParts; plist << ev.geoHistory() << std::endl; } plist.close(); std::cout << "Traversing the tree went to " << numPhysParts << " nodes, or \"PhysicalParts\" in online db terms." << std::endl; cpv.writeableGraph().clear(); // cpv.clear(); std::cout << "cleared DDCompactView. " << std::endl; } catch (DDException& e) { std::cerr << "DDD-PROBLEM:" << std::endl << e << std::endl; } // Deal with any exceptions that may have been thrown. catch (cms::Exception& e) { std::cout << "cms::Exception caught in " << kProgramName << "\n" << e.explainSelf(); rc = 1; } catch (std::exception& e) { std::cout << "Standard library exception caught in " << kProgramName << "\n" << e.what(); rc = 1; } catch (...) { std::cout << "Unknown exception caught in " << kProgramName; rc = 2; } return rc; }
int main(int argc, char *argv[]) { using Graph = DDCompactView::Graph; using adjl_iterator = Graph::const_adj_iterator; // Copied from example stand-alone program in Message Logger July 18, 2007 std::string const kProgramName = argv[0]; int rc = 0; try { // A. Instantiate a plug-in manager first. edm::AssertHandler ah; // B. Load the message service plug-in. Forget this and bad things happen! // In particular, the job hangs as soon as the output buffer fills up. // That's because, without the message service, there is no mechanism for // emptying the buffers. std::shared_ptr<edm::Presence> theMessageServicePresence; theMessageServicePresence = std::shared_ptr<edm::Presence>(edm::PresenceFactory::get()-> makePresence("MessageServicePresence").release()); // C. Manufacture a configuration and establish it. std::string config = "import FWCore.ParameterSet.Config as cms\n" "process = cms.Process('TEST')\n" "process.maxEvents = cms.untracked.PSet(\n" " input = cms.untracked.int32(5)\n" ")\n" "process.source = cms.Source('EmptySource')\n" "process.JobReportService = cms.Service('JobReportService')\n" "process.InitRootHandlers = cms.Service('InitRootHandlers')\n" // "process.MessageLogger = cms.Service('MessageLogger')\n" "process.m1 = cms.EDProducer('IntProducer',\n" " ivalue = cms.int32(11)\n" ")\n" "process.out = cms.OutputModule('PoolOutputModule',\n" " fileName = cms.untracked.string('testStandalone.root')\n" ")\n" "process.p = cms.Path(process.m1)\n" "process.e = cms.EndPath(process.out)\n"; // D. Create the services. std::unique_ptr<edm::ParameterSet> params; edm::makeParameterSets(config, params); edm::ServiceToken tempToken(edm::ServiceRegistry::createServicesFromConfig(std::move(params))); // E. Make the services available. edm::ServiceRegistry::Operate operate(tempToken); // END Copy from example stand-alone program in Message Logger July 18, 2007 std::cout << "main::initialize DDL parser" << std::endl; DDCompactView cpv; DDLParser myP(cpv);// = DDLParser::instance(); // std::cout << "main:: about to start parsing field configuration..." << std::endl; // FIPConfiguration dp2; // dp2.readConfig("Geometry/CMSCommonData/data/FieldConfiguration.xml"); // myP->parse(dp2); std::cout << "main::about to start parsing main configuration... " << std::endl; FIPConfiguration dp(cpv); dp.readConfig("DetectorDescription/Parser/test/cmsIdealGeometryXML.xml"); myP.parse(dp); std::cout << "main::completed Parser" << std::endl; std::cout << std::endl << std::endl << "main::Start checking!" << std::endl << std::endl; DDCheckMaterials(std::cout); // cpv.setRoot(DDLogicalPart(DDName("cms:World"))); std::cout << "edge size of produce graph:" << cpv.graph().edge_size() << std::endl; const auto& gt = cpv.graph(); adjl_iterator git = gt.begin(); adjl_iterator gend = gt.end(); Graph::index_type i=0; for (; git != gend; ++git) { const DDLogicalPart & ddLP = gt.nodeData(git); std::cout << ++i << " P " << ddLP.name() << std::endl; if (!git->empty()) { auto cit = git->begin(); auto cend = git->end(); for (; cit != cend; ++cit) { const DDLogicalPart & ddcurLP = gt.nodeData(cit->first); std::cout << ++i << " c--> " << gt.edgeData(cit->second)->copyno() << " " << ddcurLP.name() << std::endl; } } } } // Deal with any exceptions that may have been thrown. catch (cms::Exception& e) { std::cout << "cms::Exception caught in " << kProgramName << "\n" << e.explainSelf(); rc = 1; } catch (std::exception& e) { std::cout << "Standard library exception caught in " << kProgramName << "\n" << e.what(); rc = 1; } catch (...) { std::cout << "Unknown exception caught in " << kProgramName; rc = 2; } return rc; }