Print

Print


Commit in lcdd on MAIN
include/NistWriter.hh+21added 1.1
       /NistWriterMessenger.hh+28added 1.1
src/NistWriter.cc+73added 1.1
   /NistWriterMessenger.cc+39added 1.1
+161
4 added files
JM: Preliminary version of NIST material dump.

lcdd/include
NistWriter.hh added at 1.1
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
NistWriterMessenger.hh added at 1.1
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
NistWriter.cc added at 1.1
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
NistWriterMessenger.cc added at 1.1
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