4 added files
lcdd/include
diff -N NistWriter.hh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ NistWriter.hh 9 Jan 2007 00:42:10 -0000 1.1
@@ -0,0 +1,21 @@
+#ifndef NISTWRITER_HH
+#define NISTWRITER_HH 1
+
+#include <string>
+
+class NistWriter
+{
+
+public:
+ NistWriter();
+ virtual ~NistWriter();
+
+public:
+ void write(const std::string& path);
+
+private:
+ void defineMaterials();
+ void defineElements();
+};
+
+#endif
lcdd/include
diff -N NistWriterMessenger.hh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ NistWriterMessenger.hh 9 Jan 2007 00:42:10 -0000 1.1
@@ -0,0 +1,28 @@
+#ifndef NISTWRITERMESSENGER_HH
+#define NISTWRITERMESSENGER_HH 1
+
+#include "G4UImessenger.hh"
+#include "G4UIcmdWithAString.hh"
+
+#include <string>
+
+class NistWriter;
+
+class NistWriterMessenger : public G4UImessenger
+{
+public:
+ NistWriterMessenger();
+ virtual ~NistWriterMessenger();
+
+public:
+ virtual void SetNewValue(G4UIcommand *cmd, G4String newVals);
+
+private:
+ void defineCommands();
+
+private:
+ G4UIcmdWithAString* m_dumpNistMaterialsCmd;
+ static NistWriter* m_writer;
+};
+
+#endif
lcdd/src
diff -N NistWriter.cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ NistWriter.cc 9 Jan 2007 00:42:10 -0000 1.1
@@ -0,0 +1,73 @@
+#include "NistWriter.hh"
+
+#include "G4NistManager.hh"
+#include "G4Material.hh"
+
+#include "GDMLWriter.hh"
+
+NistWriter::NistWriter()
+{
+ defineElements();
+ defineMaterials();
+}
+
+NistWriter::~NistWriter()
+{}
+
+void NistWriter::defineMaterials()
+{
+ G4NistManager* mgr = G4NistManager::Instance();
+ const std::vector< G4String > & materialNames = mgr->GetNistMaterialNames();
+ for ( std::vector< G4String >::const_iterator it = materialNames.begin();
+ it != materialNames.end();
+ it++ ) {
+ std::cout << "dumping " << *it << std::endl;
+ mgr->FindOrBuildMaterial( *it );
+ }
+}
+
+void NistWriter::defineElements()
+{
+ G4NistManager* mgr = G4NistManager::Instance();
+ const std::vector< G4String > & elementNames = mgr->GetNistElementNames();
+ for ( std::vector< G4String >::const_iterator it = elementNames.begin();
+ it != elementNames.end();
+ it++ ) {
+ const std::string& e = *it;
+
+ // Geant4 can't use any elements with Z > 101 .
+ if ( e != "No" &&
+ e != "Lr" &&
+ e != "Rf" &&
+ e != "Db" &&
+ e != "Sg" &&
+ e != "Bh" &&
+ e != "Hs" &&
+ e != "Mt" &&
+ e != "Dm" &&
+ e != "Rg" &&
+ e != "Ub" ) {
+ std::cout << "dumping " << *it << std::endl;
+ mgr->FindOrBuildElement( *it );
+ }
+ else {
+ std::cout << "skipping " << *it << " with Z > 101" << std::endl;
+ }
+ }
+}
+
+void NistWriter::write(const std::string& path)
+{
+ std::cout << "Writing NIST elements and materials to <" << path << "> ..." << std::endl;
+
+ G4NistManager* mgr = G4NistManager::Instance();
+ mgr->SetVerbose(4);
+
+ int nm = mgr->GetNumberOfMaterials();
+ std::cout << "number of materials: " << nm << std::endl;
+
+ int ne = mgr->GetNumberOfElements();
+ std::cout << "number of elements: " << nm << std::endl;
+
+ GDMLWriter::writeCurrentGeometry(path);
+}
lcdd/src
diff -N NistWriterMessenger.cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ NistWriterMessenger.cc 9 Jan 2007 00:42:10 -0000 1.1
@@ -0,0 +1,39 @@
+#include "NistWriterMessenger.hh"
+
+// lcdd
+#include "NistWriter.hh"
+
+// geant4
+#include "G4NistManager.hh"
+#include "G4NistMessenger.hh"
+
+NistWriter* NistWriterMessenger::m_writer = 0;
+
+NistWriterMessenger::NistWriterMessenger()
+{
+ defineCommands();
+}
+
+NistWriterMessenger::~NistWriterMessenger()
+{}
+
+void NistWriterMessenger::SetNewValue(G4UIcommand *cmd, G4String newVals)
+{
+ if ( m_writer == 0 ) {
+ m_writer = new NistWriter();
+ }
+
+ m_writer->write(newVals);
+}
+
+void NistWriterMessenger::defineCommands()
+{
+ m_dumpNistMaterialsCmd = new G4UIcmdWithAString("/lcdd/dumpNistMaterials",this);
+ m_dumpNistMaterialsCmd->SetGuidance("Dump GEANT4's NIST materials database to an output file.");
+ m_dumpNistMaterialsCmd->SetParameterName("materialsFile",true);
+ m_dumpNistMaterialsCmd->SetDefaultValue("NistMaterials.gdml");
+
+// G4NistManager* mgr = G4NistManager::Instance();
+// mgr->SetVerbose(4);
+// new G4NistMessenger(mgr);
+}
CVSspam 0.2.8