Cat
Python_Proc.cpp
Go to the documentation of this file.
1 #include <vector>
2 #include <map>
3 #include <list>
4 
5 #include "TH1D.h"
6 
7 #include "ProcDataBase.h"
8 #include "Processus.h"
9 //#include "Plot.h"
10 #include "Data.h"
11 #include "Histo1D.h"
12 #include "Histo2D.h"
13 
14 #include "TestSuite.h"
15 
16 #include <boost/python.hpp>
17 #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
18 
19 using namespace boost::python;
20 
21 struct ProcessusWrap : Processus, wrapper<Processus>
22 {
23  StatusCode initialize() {return this->get_override("initialize")();};
24  StatusCode execute() {return this->get_override("execute")();};
25  StatusCode finalize() {return this->get_override("finalize")();};
26  Processus* clone() {return this->get_override("clone")();};
27 };
28 
30 {
31  class_< std::vector<Processus*> >("ProcessusPtrVec")
32  .def(vector_indexing_suite< std::vector<Processus*> >())
33  ;
34 
35  std::vector<Processus*> (ProcDataBase::*listElement)(Element*) = (&ProcDataBase::list);
36  std::vector<Processus*> (ProcDataBase::*listFull)( ) = (&ProcDataBase::list);
37 
38  // class_<ProcDataBase>("ProcDb")
39  // .def("list", listElement)
40  // .def("list", listFull )
41  // ;
42 
43  class_< std::vector<Histo1D*> >("Histo1DPtrVec")
44  .def(vector_indexing_suite< std::vector<Histo1D*> >())
45  ;
46 
47  class_< std::vector<double> >("DoubleVec")
48  .def(vector_indexing_suite< std::vector<double> >())
49  ;
50 
51  class_<Histo1D, bases<Object> >("Histo1D", init<TH1D*>())
52  .def("bins",&Histo1D::bins)
53  .def("xbins",&Histo1D::centers)
54  .def("edges",&Histo1D::edges)
55  .def("minX",&Histo1D::minX)
56  .def("maxX",&Histo1D::maxX)
57  .def("minY",&Histo1D::minY)
58  .def("maxY",&Histo1D::maxY)
59  .def("nbins",&Histo1D::nBin)
60  .def("overflow",&Histo1D::overflow)
61  .def("underflow",&Histo1D::underflow)
62  // .def("overflow",&Histo1D::overflow)
63  ;
64 
65  class_< std::vector< std::pair < unsigned int , Histo1D* > > >("PairIntHisto1DVec")
66  .def(vector_indexing_suite< std::vector< std::pair < unsigned int , Histo1D* > > >())
67  ;
68  /*
69  class_< std::vector< std::vector<double> > > ("VecVecDouble")
70  .def(vector_indexing_suite< std::vector< std::vector < double > > >())
71  ;
72  */
73  class_<Histo2D, bases<Object> >("Histo2D", init<TH2D*>())
74  .def("bins",&Histo2D::bins)
75  .def("xbins",&Histo2D::xbins)
76  .def("ybins",&Histo2D::ybins)
77  .def("minX",&Histo2D::minX)
78  .def("maxX",&Histo2D::maxX)
79  .def("minY",&Histo2D::minY)
80  .def("maxY",&Histo2D::maxY)
81  .def("minY",&Histo2D::minZ)
82  .def("maxY",&Histo2D::maxZ)
83  .def("nxbins",&Histo2D::nxbins)
84  .def("nybins",&Histo2D::nybins)
85  /*
86  .def("overflow",&Histo1D::overflow)
87  .def("underflow",&Histo1D::underflow)
88  */
89  ;
90  /*
91  class_<Plot, bases<Object> >("Plot")
92  .def("histos", &Plot::histos)
93  .def("histo1d",&Plot::histo1d)
94  .def("format", &Plot::format)
95  .def("pos", &Plot::pos)
96  .def("make", &Plot::make)
97  .def("draw", &Plot::draw)
98  ;
99  */
100  std::vector<double> (Data::*vectorx0)(unsigned int) = (&Data::vector);
101  std::vector<double> (Data::*vectorx1)(std::string) = (&Data::vector);
102 
103  Histo1D* (Data::*hist1dx0)(unsigned int) = (&Data::hist1d);
104  Histo1D* (Data::*hist1dx1)(std::string) = (&Data::hist1d);
105  Histo2D* (Data::*hist2dx0)(unsigned int) = (&Data::hist2d);
106  Histo2D* (Data::*hist2dx1)(std::string) = (&Data::hist2d);
107 
108  class_<Data, bases<Object> >("Data")
109  .def("name", &Data::name)
110  .def("title", &Data::title)
111  .def("vector",vectorx0)
112  .def("vector",vectorx1)
113  .def("info", &Data::print)
114  .def("hist1d",hist1dx0,return_value_policy<reference_existing_object>())
115  .def("hist1d",hist1dx1,return_value_policy<reference_existing_object>())
116  .def("hist2d",hist2dx0,return_value_policy<reference_existing_object>())
117  .def("hist2d",hist2dx1,return_value_policy<reference_existing_object>())
118  ;
119 
120  Data* (Processus::*datax0) () = (&Processus::data);
121  std::vector<double> (Processus::*datax1) (std::string) = (&Processus::data);
122  std::vector<double> (Processus::*datax2) (unsigned int) = (&Processus::data);
123 
124  Histo1D* (Processus::*datax3) (unsigned int) = (&Processus::hist1d);
125  Histo2D* (Processus::*datax4) (unsigned int) = (&Processus::hist2d);
126 
127  class_<ProcessusWrap, boost::noncopyable, bases<Object> >("Processus")
128  .def("initialize",pure_virtual(&Processus::initialize))
129  .def("execute",pure_virtual(&Processus::execute))
130  .def("finalize",pure_virtual(&Processus::finalize))
131  .def("startProcessing",&Processus::startProcessing)
132  .def("endProcessing",&Processus::endProcessing)
133  .def("setStorage",&Processus::setStorage)
134  .def("storage",&Processus::storage)
135  .def("setElement",&Processus::setElement)
136  .def("element",&Processus::element,return_value_policy<reference_existing_object>())
137  .def("data",datax0,return_value_policy<reference_existing_object>())
138  .def("data",datax1)
139  .def("data",datax2)
140  .def("hist1d",datax3,return_value_policy<reference_existing_object>())
141  .def("hist2d",datax4,return_value_policy<reference_existing_object>())
142  ;
143 
144  class_<TestSuite, bases<Processus> > ("TestSuite")
145  .def("setSigma", &TestSuite::setSigma)
146  .def("sigma", &TestSuite::sigma)
147  ;
148 }
149 
double minX()
Definition: Histo1D.h:45
std::vector< double > ybins()
Definition: Histo2D.h:80
void setElement(Element *element)
Definition: Processus.h:217
double maxY()
Definition: Histo1D.cpp:70
StatusCode endProcessing()
Definition: Processus.cpp:115
std::string title()
Definition: Object.h:31
std::vector< double > bins()
Definition: Histo1D.h:49
double sigma(int i)
Definition: TestSuite.h:37
std::vector< double > centers()
Definition: Histo1D.h:53
std::vector< double > vector(unsigned int)
Definition: Data.cpp:146
Processus * clone()
Definition: Python_Proc.cpp:26
double maxY()
Definition: Histo2D.h:47
double minY()
Definition: Histo1D.cpp:66
std::vector< double > edges()
Definition: Histo1D.h:57
double maxZ()
Definition: Histo2D.h:55
std::vector< Processus * > list()
virtual StatusCode execute()=0
void setStorage(std::string storage)
Definition: Processus.h:106
unsigned long nybins()
Definition: Histo2D.h:88
StatusCode execute()
Definition: Python_Proc.cpp:24
virtual StatusCode finalize()=0
void print()
Definition: Data.cpp:186
Histo1D * hist1d(unsigned int row)
Definition: Processus.h:138
unsigned long nBin()
Definition: Histo1D.h:61
void export_proc()
Definition: Python_Proc.cpp:29
Histo1D * hist1d(unsigned int row)
Definition: Data.h:30
double overflow()
Definition: Histo1D.h:75
std::vector< double > xbins()
Definition: Histo2D.h:76
std::string name() const
Definition: Object.h:28
double maxX()
Definition: Histo2D.h:39
StatusCode startProcessing()
Definition: Processus.cpp:93
Element * element()
Definition: Processus.h:231
Histo2D * hist2d(unsigned int row)
Definition: Data.h:35
Definition: Data.h:16
StatusCode setSigma(double m1, double m2, double m3, double m4)
Definition: TestSuite.h:29
StatusCode finalize()
Definition: Python_Proc.cpp:25
double maxX()
Definition: Histo1D.h:42
Histo2D * hist2d(unsigned int row)
Definition: Processus.h:146
std::string storage()
Definition: Processus.h:205
StatusCode initialize()
Definition: Python_Proc.cpp:23
std::vector< double > bins()
Definition: Histo2D.h:72
unsigned long nxbins()
Definition: Histo2D.h:84
double minY()
Definition: Histo2D.h:43
virtual StatusCode initialize()=0
double minZ()
Definition: Histo2D.h:51
Data * data()
Definition: Processus.h:114
double underflow()
Definition: Histo1D.h:78
double minX()
Definition: Histo2D.h:35