4 modified files
lcdd/include
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
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
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
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