source: Sophya/trunk/SophyaPI/PIext/pipodrw.cc@ 2683

Last change on this file since 2683 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

File size: 2.9 KB
Line 
1// Adaptateurs et Drawers divers pour Outils PEIDA++
2// R. Ansari 06-08/98
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include "sopnamsp.h"
6#include "pipodrw.h"
7#include "generalfit.h"
8
9
10//================================================================
11// PIGFFDrawer
12//================================================================
13
14PIGFFDrawer::PIGFFDrawer(GeneralFunction* f)
15: mFunc(f), mNParms(f->NPar()), mParms(new double[mNParms])
16{
17 ASSERT(f->NVar() == 1);
18}
19
20PIGFFDrawer::~PIGFFDrawer()
21{
22 delete[] mParms;
23}
24
25void
26PIGFFDrawer::SetParms(double const* p)
27{
28 for (int i=0; i<mNParms; i++)
29 mParms[i] = p[i];
30}
31
32
33void
34PIGFFDrawer::Draw(PIGraphicUC* g, double /*xmin*/, double/*ymin*/, double/*xmax*/, double/*ymax*/)
35{
36 PIGrCoord x1, x2, y1, y2;
37 g->GetGrSpace(x1, x2, y1, y2);
38 double xMax = x2;
39 double xMin = x1;
40 double yMax = y2;
41 double yMin = y1;
42 double xStep = (xMax - xMin)/100;
43 double xOld = xMin;
44 double yOld = 0;
45// double yOld = f->Value(&xMin, mParms);
46 for (double x = xMin+xStep; x<xMax; x+=xStep) {
47 double y = 0; // $CHECK$
48// double y = f->Value(&x, mParms);
49 if (y>yMin && yOld>yMin &&
50 y<yMax && yOld<yMax)
51 g->DrawLine(xOld, yOld, x, y);
52 xOld = x;
53 yOld = y;
54 }
55}
56
57
58// ----------------------------------------------------------
59// Adaptateur d'Histo-2D Peida++ a P2DArrayAdapter
60// ----------------------------------------------------------
61
62/* --Methode-- */
63POH2DAdapter::POH2DAdapter(Histo2D* h2d, bool ad)
64 : P2DArrayAdapter(h2d->NBinX(), h2d->NBinY())
65{
66aDel = ad; mH2d = h2d;
67DefineXYCoordinates(h2d->XMin(), h2d->YMin(), h2d->WBinX(), h2d->WBinY() );
68}
69
70/* --Methode-- */
71POH2DAdapter::~POH2DAdapter()
72{
73if (aDel) delete mH2d;
74}
75
76/* --Methode-- */
77double POH2DAdapter::Value(int ix, int iy)
78{
79return((*mH2d)(ix, iy));
80}
81
82
83#ifdef SANS_EVOLPLANCK
84
85// ----------------------------------------------------------
86// Adaptateur de vecteurs Peida++ a P1DArrayAdapter
87// ----------------------------------------------------------
88
89/* --Methode-- */
90POVectorAdapter::POVectorAdapter(Vector* v, bool ad)
91 : P1DArrayAdapter(v->NElts())
92{
93aDel = ad; mVec = v;
94}
95
96/* --Methode-- */
97POVectorAdapter::~POVectorAdapter()
98{
99if (aDel) delete mVec;
100}
101
102/* --Methode-- */
103double POVectorAdapter::Value(int i)
104{
105return((*mVec)(i));
106}
107
108// ----------------------------------------------------------
109// Adaptateur de matrice Peida++ a P2DArrayAdapter
110// Attention Y: Lignes (rows) X: Colonnes
111// ----------------------------------------------------------
112
113/* --Methode-- */
114POMatrixAdapter::POMatrixAdapter(Matrix* mtx, bool ad)
115 : P2DArrayAdapter(mtx->NCol(), mtx->NRows())
116{
117aDel = ad; mMtx = mtx;
118}
119
120/* --Methode-- */
121POMatrixAdapter::~POMatrixAdapter()
122{
123if (aDel) delete mMtx;
124}
125
126/* --Methode-- */
127double POMatrixAdapter::Value(int ix, int iy)
128{
129// Attention MatrixAdapter(X=Colonne, Y= Row) = Matrix(row, col)
130return((*mMtx)(iy, ix));
131}
132
133#endif // SANS_EVOLPLANCK
134
Note: See TracBrowser for help on using the repository browser.