source: trunk/environments/g4py/source/materials/pyG4NistManager.cc @ 1337

Last change on this file since 1337 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 6.8 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: pyG4NistManager.cc,v 1.6 2007/11/07 08:49:31 kmura Exp $
27// $Name: geant4-09-04-beta-01 $
28// ====================================================================
29//   pyG4NistManager.cc
30//
31//                                         2005 Q
32// ===================================================================
33#include <boost/python.hpp>
34#include "G4Version.hh"
35#if G4VERSION_NUMBER >= 710
36#include "G4NistManager.hh"
37
38using namespace boost::python;
39
40// ====================================================================
41// thin wrappers
42// ====================================================================
43namespace pyG4NistManager {
44
45// FindOrBuildElement
46G4Element*(G4NistManager::*f1_FindOrBuildElement)(G4int, G4bool)
47  = &G4NistManager::FindOrBuildElement;
48
49G4Element*(G4NistManager::*f2_FindOrBuildElement)(const G4String&, G4bool)
50  = &G4NistManager::FindOrBuildElement;
51
52BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_FindOrBuildElement, 
53                                       FindOrBuildElement, 1, 2);
54
55// PrintElement
56void(G4NistManager::*f1_PrintElement)(const G4String&)
57  = &G4NistManager::PrintElement;
58void(G4NistManager::*f2_PrintElement)(G4int)
59  = &G4NistManager::PrintElement;
60
61// FindOrBuildMaterial
62BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_FindOrBuildMaterial, 
63                                       FindOrBuildMaterial, 1, 2);
64
65// ConstructNewMaterial
66#if G4VERSION_NUMBER >= 910
67G4Material*(G4NistManager::*f1_ConstructNewMaterial)
68  (const G4String&, const std::vector<G4String>&, 
69   const std::vector<G4int>&, G4double, G4bool,
70   G4State, G4double, G4double)
71  = &G4NistManager::ConstructNewMaterial;
72
73G4Material*(G4NistManager::*f2_ConstructNewMaterial)
74  (const G4String&, const std::vector<G4String>&, 
75   const std::vector<G4double>&, G4double, G4bool,
76   G4State, G4double, G4double)
77  = &G4NistManager::ConstructNewMaterial;
78
79BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewMaterial,
80                                       ConstructNewMaterial, 4, 8);
81
82#else
83G4Material*(G4NistManager::*f1_ConstructNewMaterial)
84  (const G4String&, const std::vector<G4String>&, 
85   const std::vector<G4int>&, G4double, G4bool)
86  = &G4NistManager::ConstructNewMaterial;
87
88G4Material*(G4NistManager::*f2_ConstructNewMaterial)
89  (const G4String&, const std::vector<G4String>&, 
90   const std::vector<G4double>&, G4double, G4bool)
91  = &G4NistManager::ConstructNewMaterial;
92
93BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewMaterial,
94                                       ConstructNewMaterial, 4, 5);
95
96#endif
97
98#if G4VERSION_NUMBER >= 910
99BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewGasMaterial,
100                                       ConstructNewGasMaterial, 4, 5);
101#endif
102
103};
104
105using namespace pyG4NistManager;
106
107#endif
108
109// ====================================================================
110// module definition
111// ====================================================================
112void export_G4NistManager()
113{
114#if G4VERSION_NUMBER >= 710
115
116  class_<G4NistManager, boost::noncopyable>
117    ("G4NistManager", "manager class for NIST materials", no_init)
118    // ---
119    .def("Instance", &G4NistManager::Instance,
120         return_value_policy<reference_existing_object>())
121    .staticmethod("Instance")
122    // ---
123    .def("SetVerbose",          &G4NistManager::SetVerbose)
124    .def("GetVerbose",          &G4NistManager::GetVerbose)
125    // ---
126#if G4VERSION_NUMBER < 910
127    .def("RegisterElement",     &G4NistManager::RegisterElement)
128    .def("DeRegisterElement",   &G4NistManager::DeRegisterElement)
129#endif
130    .def("GetElement",          &G4NistManager::GetElement,
131         return_internal_reference<>())
132    .def("FindOrBuildElement",  f1_FindOrBuildElement,
133         f_FindOrBuildElement()
134         [return_value_policy<reference_existing_object>()])
135    .def("FindOrBuildElement",  f2_FindOrBuildElement,
136         f_FindOrBuildElement()
137         [return_value_policy<reference_existing_object>()])
138    .def("GetNumberOfElements", &G4NistManager::GetNumberOfElements)
139    .def("GetZ",                &G4NistManager::GetZ)
140    .def("GetIsotopeMass",      &G4NistManager::GetIsotopeMass)
141    .def("PrintElement",        f1_PrintElement)
142    .def("PrintElement",        f2_PrintElement)
143    .def("PrintG4Element",      &G4NistManager::PrintG4Element)
144    // ---
145#if G4VERSION_NUMBER < 910
146    .def("RegisterMaterial",    &G4NistManager::RegisterMaterial)
147    .def("DeRegisterMaterial",  &G4NistManager::DeRegisterMaterial)
148#endif
149    .def("GetMaterial",         &G4NistManager::GetMaterial,
150         return_value_policy<reference_existing_object>())
151    .def("FindOrBuildMaterial", &G4NistManager::FindOrBuildMaterial,
152         f_FindOrBuildMaterial()
153         [return_value_policy<reference_existing_object>()])
154    .def("ConstructNewMaterial", f1_ConstructNewMaterial,
155         f_ConstructNewMaterial()
156         [return_value_policy<reference_existing_object>()])
157    .def("ConstructNewMaterial", f2_ConstructNewMaterial,
158         f_ConstructNewMaterial()
159         [return_value_policy<reference_existing_object>()])
160#if G4VERSION_NUMBER >= 910
161    .def("ConstructNewGasMaterial", &G4NistManager::ConstructNewGasMaterial,
162         f_ConstructNewGasMaterial()
163         [return_value_policy<reference_existing_object>()])
164#endif
165    .def("GetNumberOfMaterials", &G4NistManager::GetNumberOfMaterials)
166    .def("ListMaterials",        &G4NistManager::ListMaterials)
167    .def("PrintG4Material",      &G4NistManager::PrintG4Material)
168    ;
169#endif
170}
171
Note: See TracBrowser for help on using the repository browser.