source: trunk/environments/g4py/source/materials/pyG4Element.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: 5.2 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: pyG4Element.cc,v 1.7 2008/12/04 08:55:25 kmura Exp $
27// $Name: geant4-09-04-beta-01 $
28// ====================================================================
29//   pyG4Element.cc
30//
31//                                         2005 Q
32// ====================================================================
33#include <boost/python.hpp>
34#include "G4Version.hh"
35#include "G4Element.hh"
36
37using namespace boost::python;
38
39// ====================================================================
40// thin wrappers
41// ====================================================================
42namespace pyG4Element {
43
44// raw pointer -> Python list conversion
45list f_GetRelativeAbundanceVector(const G4Element* element)
46{
47  list aList;
48  const G4double* aVec= element-> GetRelativeAbundanceVector();
49  G4int niso= element-> GetNumberOfIsotopes();
50  for(G4int i=0; i<niso; i++) {
51    aList.append(aVec[i]);
52  }
53  return aList;
54}
55
56// copy constructor is private, so ...
57void Print(G4Element& ele)
58{
59  std::cout << ele;  // problem with G4cout. (delayed message)
60}
61
62};
63
64using namespace pyG4Element;
65
66// ====================================================================
67// module definition
68// ====================================================================
69void export_G4Element()
70{
71  class_<G4Element, G4Element*, boost::noncopyable>
72    ("G4Element", "element class", no_init)
73    // constructors
74    .def(init<const G4String&, const G4String&, G4double, G4double>())
75    .def(init<const G4String&, const G4String&, G4int>())
76    // ---
77    .def("AddIsotope",          &G4Element::AddIsotope)
78#if G4VERSION_NUMBER >= 920
79    .def("GetName",             &G4Element::GetName,
80         return_value_policy<reference_existing_object>())
81    .def("GetSymbol",           &G4Element::GetSymbol,
82         return_value_policy<reference_existing_object>())
83    .def("SetName",             &G4Element::SetName)
84#else
85    .def("GetName",             &G4Element::GetName)
86    .def("GetSymbol",           &G4Element::GetSymbol)
87#endif
88
89    .def("GetZ",                &G4Element::GetZ)
90    .def("GetN",                &G4Element::GetN)
91    .def("GetA",                &G4Element::GetA)
92    .def("GetNbOfAtomicShells", &G4Element::GetNbOfAtomicShells)
93    .def("GetAtomicShell",      &G4Element::GetAtomicShell)
94    .def("GetNumberOfIsotopes", &G4Element::GetNumberOfIsotopes)
95    .def("GetIsotopeVector",    &G4Element::GetIsotopeVector,
96         return_internal_reference<>())
97    .def("GetRelativeAbundanceVector", f_GetRelativeAbundanceVector)
98    .def("GetIsotope",          &G4Element::GetIsotope,
99         return_value_policy<reference_existing_object>())
100    .def("GetElementTable",     &G4Element::GetElementTable,
101         return_value_policy<reference_existing_object>())
102    .staticmethod("GetElementTable")
103    .def("GetNumberOfElements", &G4Element::GetNumberOfElements)
104    .staticmethod("GetNumberOfElements")
105    .def("GetIndex",            &G4Element::GetIndex)
106    .def("GetElement",          &G4Element::GetElement,
107         return_value_policy<reference_existing_object>())
108    .staticmethod("GetElement")
109    .def("GetCountUse",         &G4Element::GetCountUse)
110    .def("increaseCountUse",    &G4Element::increaseCountUse)
111    .def("decreaseCountUse",    &G4Element::decreaseCountUse)
112#if G4VERSION_NUMBER >= 710
113    .def("GetIndexZ",           &G4Element::GetIndexZ)
114#endif
115    .def("GetfCoulomb",         &G4Element::GetfCoulomb)
116    .def("GetfRadTsai",         &G4Element::GetfRadTsai)
117    .def("GetIonisation",       &G4Element::GetIonisation,
118         return_internal_reference<>())
119    // ---
120    .def("Print", Print)
121    .def(self == self)
122    .def(self != self)
123    ;
124
125}
126
Note: See TracBrowser for help on using the repository browser.