The –test option results in a totally changed mesh0 so actions done in GGeo::loadFromCache depending on specific geometry volume indices will go stale...
Idea for test geometry is to have all the materials and just use simplified geometry. Problems are that surfaces via GSur wrappers mix properties with specific geometry:
PMTInBox is the test geometry that most needs to have proper surface handling... Hmm getting the general case to work just for the cathode surface seems overkill..
So stick with CTestDetector::kludgePhotoCathode for now.
184 void OpticksGeometry::loadGeometry()
185 {
186 bool modify = m_opticks->hasOpt("test") ;
...
190 loadGeometryBase(); // usually from cache
...
199 if(modify) modifyGeometry() ;
200
256 void OpticksGeometry::modifyGeometry()
257 {
258 assert(m_opticks->hasOpt("test"));
259 LOG(debug) << "OpticksGeometry::modifyGeometry" ;
260
261 std::string testconf = m_fcfg->getTestConfig();
262 m_ggeo->modifyGeometry( testconf.empty() ? NULL : testconf.c_str() );
263
264
265 if(m_ggeo->getMeshVerbosity() > 2)
266 {
267 GMergedMesh* mesh0 = m_ggeo->getMergedMesh(0);
268 if(mesh0)
269 {
270 mesh0->dumpSolids("OpticksGeometry::modifyGeometry mesh0");
271 mesh0->save("$TMP", "GMergedMesh", "modifyGeometry") ;
272 }
273 }
274
275
276 TIMER("modifyGeometry");
277 }
601 void GGeo::loadFromCache()
602 {
603 LOG(trace) << "GGeo::loadFromCache START" ;
604
605 m_geolib = GGeoLib::load(m_opticks);
606
607 const char* idpath = m_opticks->getIdPath() ;
608 m_meshindex = GItemIndex::load(idpath, "MeshIndex");
609
610 if(m_volnames)
611 {
612 m_pvlist = GItemList::load(idpath, "PVNames");
613 m_lvlist = GItemList::load(idpath, "LVNames");
614 }
615
616 m_bndlib = GBndLib::load(m_opticks); // GBndLib is persisted via index buffer, not float buffer
617
618
619
620 m_materiallib = GMaterialLib::load(m_opticks);
621 m_surfacelib = GSurfaceLib::load(m_opticks);
622
623 m_bndlib->setMaterialLib(m_materiallib);
624 m_bndlib->setSurfaceLib(m_surfacelib);
625
626 m_scintillatorlib = GScintillatorLib::load(m_opticks);
627 m_sourcelib = GSourceLib::load(m_opticks);
628
629 m_surlib = new GSurLib(this) ;
630 m_surlib->dump("GGeo::loadFromCache GSurLib::dump");
631
632 LOG(trace) << "GGeo::loadFromCache DONE" ;
633 }