Commit in lcdd on MAIN
include/GDMLWriter.hh+6-31.3 -> 1.4
       /GDMLWriterMessenger.hh+3-41.1 -> 1.2
src/GDMLWriter.cc+26-141.2 -> 1.3
   /GDMLWriterMessenger.cc+25-81.2 -> 1.3
+60-29
4 modified files
JM: add support for selecting top physical volume when dumping to gdml

lcdd/include
GDMLWriter.hh 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- GDMLWriter.hh	18 Dec 2006 22:49:01 -0000	1.3
+++ GDMLWriter.hh	3 Sep 2008 18:53:47 -0000	1.4
@@ -1,13 +1,16 @@
-// $Header: /cvs/lcd/lcdd/include/GDMLWriter.hh,v 1.3 2006/12/18 22:49:01 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/include/GDMLWriter.hh,v 1.4 2008/09/03 18:53:47 jeremy Exp $
 #ifndef LCDD_GDMLWRITER_HH
 #define LCDD_GDMLWRITER_HH 1
 
+// stl
 #include <string>
+#include <vector>
 
 class GDMLWriter
 {
-public:
-  static void writeCurrentGeometry(const std::string& path);
+    public:
+        static void writeCurrentGeometry(const std::string& fileName);
+        static void writeCurrentGeometry(const std::string& fileName, std::vector<std::string> volumes);
 };
 
 #endif

lcdd/include
GDMLWriterMessenger.hh 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- GDMLWriterMessenger.hh	17 Nov 2005 19:59:43 -0000	1.1
+++ GDMLWriterMessenger.hh	3 Sep 2008 18:53:47 -0000	1.2
@@ -1,12 +1,11 @@
-// $Header: /cvs/lcd/lcdd/include/GDMLWriterMessenger.hh,v 1.1 2005/11/17 19:59:43 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/include/GDMLWriterMessenger.hh,v 1.2 2008/09/03 18:53:47 jeremy Exp $
 
 #ifndef GDMLWriterMessenger_h
 #define GDMLWriterMessenger_h 1
 
 #include "G4UImessenger.hh"
 
-class G4UIcmdWithAString;
-class G4UIdirectory;
+class G4UIcommand;
 
 /**
  * @class GDMLWriterMessenger
@@ -29,6 +28,6 @@
 
 private:
 
-  G4UIcmdWithAString* m_dumpGDMLCmd;
+  G4UIcommand* m_dumpGDMLCmd;
 }; // class
 #endif

lcdd/src
GDMLWriter.cc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- GDMLWriter.cc	18 Nov 2005 19:18:52 -0000	1.2
+++ GDMLWriter.cc	3 Sep 2008 18:53:47 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/src/GDMLWriter.cc,v 1.2 2005/11/18 19:18:52 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/GDMLWriter.cc,v 1.3 2008/09/03 18:53:47 jeremy Exp $
 #include "GDMLWriter.hh"
 
 // gdml
@@ -8,19 +8,31 @@
 #include "G4VPhysicalVolume.hh"
 #include "G4TransportationManager.hh"
 
-void GDMLWriter::writeCurrentGeometry(const std::string& path)
+void GDMLWriter::writeCurrentGeometry(const std::string& fileName, std::vector<std::string> volumes)
 {
-  G4cout << "Dumping current geometry to file <" << path << ">" << G4endl;
-
-  G4VPhysicalVolume* g4wv =
-    G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
-
-  G4GDMLWriter g4writer("http://www.lcsim.org/schemas/gdml/1.0/gdml.xsd", path);
+    G4VPhysicalVolume* world = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
+    G4GDMLWriter g4writer("http://www.lcsim.org/schemas/gdml/1.0/gdml.xsd", fileName);
+    try {
+        g4writer.DumpGeometryInfo(world, volumes);
+    }
+    catch (std::exception &err) {
+        G4cerr << "problem writing geometry: " << err.what() << std::endl;
+    }
+}
 
-  try {
-    g4writer.DumpGeometryInfo(g4wv);
-  }
-  catch(std::exception &lerr) {
-    G4cerr << "problem writing geometry: " << lerr.what () << std::endl;
-  }
+void GDMLWriter::writeCurrentGeometry(const std::string& fileName)
+{
+    G4cout << "Dumping current geometry to file <" << fileName << ">" << G4endl;
+    
+    G4VPhysicalVolume* world =
+        G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
+    
+    G4GDMLWriter g4writer("http://www.lcsim.org/schemas/gdml/1.0/gdml.xsd", fileName);
+    
+    try {
+        g4writer.DumpGeometryInfo(world);
+    }
+    catch(std::exception &lerr) {
+        G4cerr << "problem writing geometry: " << lerr.what () << std::endl;
+    }
 }

lcdd/src
GDMLWriterMessenger.cc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- GDMLWriterMessenger.cc	7 Feb 2007 08:37:55 -0000	1.2
+++ GDMLWriterMessenger.cc	3 Sep 2008 18:53:47 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/src/GDMLWriterMessenger.cc,v 1.2 2007/02/07 08:37:55 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/GDMLWriterMessenger.cc,v 1.3 2008/09/03 18:53:47 jeremy Exp $
 #include "GDMLWriterMessenger.hh"
 
 // geant4
@@ -9,7 +9,7 @@
 
 GDMLWriterMessenger::GDMLWriterMessenger()
 {
-  defineCommands();
+    defineCommands();
 }
 
 GDMLWriterMessenger::~GDMLWriterMessenger()
@@ -17,16 +17,33 @@
 
 void GDMLWriterMessenger::SetNewValue(G4UIcommand *, G4String newVals)
 {
-  GDMLWriter::writeCurrentGeometry(newVals);
+    std::string volume;
+    std::string fileName;
+    std::istringstream is(newVals);
+
+    is >> fileName >> volume;
+
+    if (volume.length() > 1)
+    {
+        std::vector<std::string> volumes;
+        volumes.push_back(volume);
+        GDMLWriter::writeCurrentGeometry(fileName, volumes);
+    }
+    else
+    {
+        GDMLWriter::writeCurrentGeometry(fileName);
+    }    
 }
 
 void GDMLWriterMessenger::defineCommands()
 {
-  m_dumpGDMLCmd = new G4UIcmdWithAString("/lcdd/dumpGDML", this);
-  m_dumpGDMLCmd->SetGuidance("Dump current geometry to GDML output file.");
-  m_dumpGDMLCmd->SetParameterName("geometryFile", false);
-  //m_dumpGDMLCmd->SetDefaultValue("geometry.gdml");
-  m_dumpGDMLCmd->AvailableForStates(G4State_Idle);
+    m_dumpGDMLCmd = new G4UIcommand("/lcdd/dumpGDML", this);
+    m_dumpGDMLCmd->SetGuidance("Dump current geometry to GDML output file.");
+    G4UIparameter* p = new G4UIparameter("outputFile",'s',false);
+    m_dumpGDMLCmd->SetParameter(p);
+    p = new G4UIparameter("topVolume",'s',true);
+    m_dumpGDMLCmd->SetParameter(p);
+    m_dumpGDMLCmd->AvailableForStates(G4State_Idle);
 }
 
 
CVSspam 0.2.8