source: trunk/environments/g4py/source/event/pyG4ParticleGun.cc@ 1339

Last change on this file since 1339 was 1337, checked in by garnier, 15 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: pyG4ParticleGun.cc,v 1.7 2007/11/08 06:42:03 kmura Exp $
27// $Name: geant4-09-04-beta-01 $
28// ====================================================================
29// pyG4ParticleGun.cc
30//
31// 2005 Q
32// ====================================================================
33#include <boost/python.hpp>
34#include "G4Version.hh"
35#include "G4ParticleGun.hh"
36#include "G4ParticleTable.hh"
37#include "G4Event.hh"
38
39using namespace boost::python;
40
41#if G4VERSION_NUMBER < 910
42// ====================================================================
43// miscs
44// ====================================================================
45// What a hell!
46
47////////////////////////////////////////////////////////
48G4ParticleGun::G4ParticleGun(const G4ParticleGun &right)
49////////////////////////////////////////////////////////
50{
51 *this= right;
52}
53
54/////////////////////////////////////////////////////////////////////////
55const G4ParticleGun& G4ParticleGun::operator=(const G4ParticleGun &right)
56/////////////////////////////////////////////////////////////////////////
57{
58 NumberOfParticlesToBeGenerated= right.NumberOfParticlesToBeGenerated;
59 particle_definition= right.particle_definition;
60 particle_momentum_direction= right.particle_momentum_direction;
61 particle_energy= right.particle_energy;
62 particle_charge= right.particle_charge;
63 particle_polarization= right.particle_polarization;
64
65 return *this;
66}
67
68/////////////////////////////////////////////////////////////////
69G4int G4ParticleGun::operator==(const G4ParticleGun &right) const
70/////////////////////////////////////////////////////////////////
71{
72 return 0;
73}
74
75/////////////////////////////////////////////////////////////////
76G4int G4ParticleGun::operator!=(const G4ParticleGun &right) const
77/////////////////////////////////////////////////////////////////
78{
79 return 0;
80}
81
82#endif
83
84
85// ====================================================================
86// thin wrappers
87// ====================================================================
88namespace pyG4ParticleGun {
89
90#if G4VERSION_NUMBER >= 910
91// SetParticleMomentum
92void (G4ParticleGun::*f1_SetParticleMomentum)(G4double)
93 = &G4ParticleGun::SetParticleMomentum;
94void (G4ParticleGun::*f2_SetParticleMomentum)(G4ParticleMomentum)
95 = &G4ParticleGun::SetParticleMomentum;
96#endif
97
98
99////////////////////////////////////////////////////////////////////
100void SetParticleByName(G4ParticleGun* gun, const std::string& pname)
101////////////////////////////////////////////////////////////////////
102{
103 G4ParticleTable* particleTable= G4ParticleTable::GetParticleTable();
104 G4ParticleDefinition* pd= particleTable-> FindParticle(pname);
105 if (pd != 0) {
106 gun-> SetParticleDefinition(pd);
107 } else {
108 G4cout << "*** \"" << pname << "\" is not registered "
109 << "in available particle list" << G4endl;
110 }
111}
112
113/////////////////////////////////////////////////
114std::string GetParticleByName(G4ParticleGun* gun)
115/////////////////////////////////////////////////
116{
117 const G4ParticleDefinition* pd= gun-> GetParticleDefinition();
118 return (pd-> GetParticleName()).c_str();
119}
120
121};
122
123using namespace pyG4ParticleGun;
124
125// ====================================================================
126// module definition
127// ====================================================================
128void export_G4ParticleGun()
129{
130#if G4VERSION_NUMBER < 910
131 class_<G4ParticleGun>
132#else
133 class_<G4ParticleGun, boost::noncopyable>
134#endif
135 ("G4ParticleGun", "particle gun")
136 // constructor
137 .def(init<G4int>())
138 .def(init<G4ParticleDefinition*>())
139 .def(init<G4ParticleDefinition*, G4int>())
140 // ---
141 .def("GeneratePrimaryVertex", &G4ParticleGun::GeneratePrimaryVertex)
142 .def("SetParticleDefinition", &G4ParticleGun::SetParticleDefinition)
143 .def("GetParticleDefinition", &G4ParticleGun::GetParticleDefinition,
144 return_value_policy<reference_existing_object>())
145#if G4VERSION_NUMBER >= 910
146 .def("SetParticleMomentum", f1_SetParticleMomentum)
147 .def("SetParticleMomentum", f2_SetParticleMomentum)
148#else
149 .def("SetParticleMomentum", &G4ParticleGun::SetParticleMomentum)
150#endif
151 .def("SetParticleMomentumDirection",
152 &G4ParticleGun::SetParticleMomentumDirection)
153 .def("GetParticleMomentumDirection",
154 &G4ParticleGun::GetParticleMomentumDirection)
155 .def("SetParticleEnergy", &G4ParticleGun::SetParticleEnergy)
156 .def("GetParticleEnergy", &G4ParticleGun::GetParticleEnergy)
157 .def("SetParticleCharge", &G4ParticleGun::SetParticleCharge)
158 .def("GetParticleCharge", &G4ParticleGun::GetParticleCharge)
159 .def("SetParticlePolarization", &G4ParticleGun::SetParticlePolarization)
160 .def("GetParticlePolarization", &G4ParticleGun::GetParticlePolarization)
161 .def("SetNumberOfParticles", &G4ParticleGun::SetNumberOfParticles)
162 .def("GetNumberOfParticles", &G4ParticleGun::GetNumberOfParticles)
163 .def("SetParticlePosition", &G4ParticleGun::SetParticlePosition)
164 .def("GetParticlePosition", &G4ParticleGun::GetParticlePosition)
165 .def("SetParticleTime", &G4ParticleGun::SetParticleTime)
166 .def("GetParticleTime", &G4ParticleGun::GetParticleTime)
167 .def("SetParticleByName", SetParticleByName)
168 .def("GetParticleByName", GetParticleByName)
169 ;
170}
Note: See TracBrowser for help on using the repository browser.