source: trunk/environments/g4py/source/global/pyG4TwoVector.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: 4.3 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: pyG4TwoVector.cc,v 1.2 2008/03/13 07:32:18 kmura Exp $
27// $Name: geant4-09-04-beta-01 $
28// ====================================================================
29//   pyG4TwoVector.cc
30//
31//                                         2007 Q
32// ====================================================================
33#include <boost/python.hpp>
34#include "G4Version.hh"
35
36#if G4VERSION_NUMBER >= 830
37#include "G4TwoVector.hh"
38
39using namespace boost::python;
40using namespace CLHEP;
41
42typedef G4TwoVector XXX; // ...
43
44// ====================================================================
45// thin wrappers
46// ====================================================================
47namespace pyG4TwoVector {
48 
49BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_isNear, isNear, 1, 2);
50BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_isParallel, isParallel, 1, 2);
51BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_isOrthogonal, isOrthogonal, 1, 2);
52
53};
54
55using namespace pyG4TwoVector;
56
57#endif
58
59// ====================================================================
60// module definition
61// ====================================================================
62void export_G4TwoVector()
63{
64#if G4VERSION_NUMBER >= 830
65
66  class_<G4TwoVector>("G4TwoVector", "general 2-vector")
67    // constructors
68    .def(init<G4double>())
69    .def(init<G4double, G4double>())
70    .def(init<const XXX&>())
71
72    // property
73    .add_property("x", &XXX::x, &XXX::setX)
74    .add_property("y", &XXX::y, &XXX::setY)
75
76    // methods
77    .def("set",      &XXX::set)
78    .def("phi",      &XXX::phi)
79    .def("mag",      &XXX::mag)
80    .def("mag2",     &XXX::mag2)
81    .def("r",        &XXX::r)
82    .def("setPhi",   &XXX::setPhi)
83    .def("setMag",   &XXX::setMag)
84    .def("setR",     &XXX::setR)
85    .def("setPolar", &XXX::setPolar)
86    .def("howNear",  &XXX::howNear)
87    .def("isNear",   &XXX::isNear,            f_isNear())
88    .def("howParallel",   &XXX::howParallel)
89    .def("isParallel",    &XXX::isParallel,   f_isParallel())
90    .def("howOrthogonal", &XXX::howOrthogonal)
91    .def("isOrthogonal",  &XXX::isOrthogonal, f_isOrthogonal())
92    .def("unit",       &XXX::unit)
93    .def("orthogonal", &XXX::orthogonal)
94    .def("dot",        &XXX::dot)
95    .def("angle",      &XXX::angle)
96    .def("rotate",     &XXX::rotate)
97
98    // operators
99    .def(self_ns::str(self))
100    .def(self == self)
101    .def(self != self)
102    .def(self += self)
103    .def(self -= self)
104    .def(self -  self)
105    .def(self + self)
106    .def(self * self)
107    .def(self * G4double())
108    .def(self / G4double())
109    .def(G4double() * self)
110    .def(self *= G4double())
111    .def(self >  self)
112    .def(self <  self)
113    .def(self >= self)
114    .def(self <= self)
115    ;
116#endif
117
118}
119
120
Note: See TracBrowser for help on using the repository browser.