source: Sophya/trunk/SophyaPI/PIext/pigfd2.cc@ 2189

Last change on this file since 2189 was 1905, checked in by ansari, 24 years ago

Adaptation a l'introduction de la classe PIGraphicAtt - Reza 18/02/2002

File size: 2.7 KB
Line 
1// Cette classe est maintenant obsolete: generaldata <==> ntuple pour le dessin
2
3#include <stdio.h>
4#include "pigfd2.h"
5
6/* --Methode-- */
7PIGenFitDat3D::PIGenFitDat3D(GeneralFitData* gfd, bool ad)
8: PIDrawer3D(), mGFD(gfd), mAdDO(ad)
9, VarX(0), VarY(1), ErrX(false), ErrY(false), ErrZ(false)
10{
11SelectXY(0,1);
12SelectErrBar(false,false,false);
13}
14
15PIGenFitDat3D::~PIGenFitDat3D()
16{
17if(mAdDO && mGFD) delete mGFD;
18}
19
20/* --Methode-- */
21void PIGenFitDat3D::SelectXY(int varx,int vary)
22{
23VarX = VarY = -1;
24if(mGFD == NULL) return;
25if(varx<0 || varx>=mGFD->NVar()) return;
26if(vary<0 || vary>=mGFD->NVar()) return;
27VarX = varx; VarY = vary;
28}
29
30/* --Methode-- */
31void PIGenFitDat3D::SelectErrBar(bool erbx,bool erby,bool erbz)
32{
33ErrX = erbx; ErrY = erby; ErrZ = erbz;
34if(mGFD == NULL) {ErrX = ErrY = ErrZ = false; return;}
35if(!mGFD->HasXErrors()) ErrX = ErrY = false;
36}
37
38/* --Methode-- */
39void PIGenFitDat3D::UpdateLimits()
40{
41if(!mGFD) return;
42if(mGFD->NData()<=0) return;
43if(VarX<0 || VarY<0) return;
44double xmin=9.e19, xmax=-9.e19, ymin=9.e19, ymax=-9.e19, zmin=9.e19, zmax=-9.e19;
45mGFD->GetMnMx(10*VarX+2,xmin,xmax);
46mGFD->GetMnMx(10*VarY+2,ymin,ymax);
47mGFD->GetMnMx(0,zmin, zmax);
48if(xmax<=xmin) xmax = xmin+1.;
49if(ymax<=ymin) ymax = ymin+1.;
50if(zmax<=zmin) zmax = zmin+1.;
51// Voir commentaires pintuple3d.cc
52double D = xmax-xmin;
53if (D < (ymax-ymin)) D = ymax-ymin;
54D *= 1.4;
55Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2.,
56 (xmin+xmax)/2.+D , (ymin+ymax)/2.-2.5*D , zmin+(zmax-zmin)*0.85, 0.25, 0.25);
57
58x3Min = xmin; x3Max = xmax;
59y3Min = ymin; y3Max = ymax;
60z3Min = zmin; z3Max = zmax;
61
62}
63
64/* --Methode-- */
65void PIGenFitDat3D::Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax)
66{
67// On trace les axes - En attendant de faire mieux - Reza 8/12/98
68if (axesFlags != kAxesNone) DrawAxes(g);
69
70if (!mGFD) return;
71if(mGFD->NData()<=0) return;
72if(VarX<0 || VarY<0) return;
73
74// On plotte les barre d'erreurs ligne demandee explicitement
75if(GetGraphicAtt().GetLineAtt()!=PI_NotDefLineAtt) SelectErrBar(true,true,true);
76
77#if defined(CC_HAS_RTTI_SUPPORT)
78PIGraphic3D* g3 = dynamic_cast<PIGraphic3D*>(g);
79#else
80PIGraphic3D* g3 = (PIGraphic3D*)(g);
81#endif
82
83if (GetGraphicAtt().GetLineAtt() == PI_NotDefLineAtt) g3->SelLine(PI_ThinLine);
84
85double xp,yp,zp,er;
86for (int i=0; i<mGFD->NData(); i++) {
87 xp = mGFD->Absc(VarX,i);
88 yp = mGFD->Absc(VarY,i);
89 zp = mGFD->Val(i);
90 if(ErrX) {
91 er = mGFD->EAbsc(VarX,i);
92 if(er>0.) g3->DrawLine3D(xp-er,yp,zp,xp+er,yp,zp);
93 }
94 if(ErrY) {
95 er = mGFD->EAbsc(VarY,i);
96 g3->DrawLine3D(xp,yp-er,zp,xp,yp+er,zp);
97 }
98 if(ErrZ) {
99 er = mGFD->EVal(i);
100 g3->DrawLine3D(xp,yp,zp-er,xp,yp,zp+er);
101 }
102 g3->DrawMarker3D(xp,yp,zp);
103}
104
105return;
106}
107
Note: See TracBrowser for help on using the repository browser.