source: Sophya/trunk/SophyaPI/PIext/pigfd1.cc@ 1134

Last change on this file since 1134 was 339, checked in by ercodmgr, 26 years ago

Pour creer les ADAPTER de GeneralFitData cmv 27/7/99

File size: 1.8 KB
Line 
1// Cette classe est maintenant obsolete: generaldata <==> ntuple pour le dessin
2
3#include <stdio.h>
4#include "pigfd1.h"
5
6
7/* --Methode-- */
8PIGenFitDat::PIGenFitDat(GeneralFitData* gfd, bool ad)
9: PIDrawer(), mGFD(gfd), mAdDO(ad), VarX(0), ErrX(false), ErrY(false)
10{
11SelectX(0);
12SelectErrBar(false,false);
13}
14
15PIGenFitDat::~PIGenFitDat()
16{
17if(mAdDO && mGFD) delete mGFD;
18}
19
20/* --Methode-- */
21void PIGenFitDat::SelectX(int varx)
22{
23VarX = -1;
24if(mGFD == NULL) return;
25if(varx<0 || varx>=mGFD->NVar()) return;
26VarX = varx;
27}
28
29/* --Methode-- */
30void PIGenFitDat::SelectErrBar(bool erbx,bool erby)
31{
32ErrX = erbx; ErrY = erby;
33if(mGFD == NULL) {ErrX = ErrY = false; return;}
34if(!mGFD->HasXErrors()) ErrX = false;
35}
36
37/* --Methode-- */
38void PIGenFitDat::UpdateLimits()
39{
40if(!mGFD) return;
41if(mGFD->NData()<=0) return;
42if(VarX<0) return;
43double dx, dy;
44double xmin=9.e19, xmax=-9.e19, ymin=9.e19, ymax=-9.e19;
45mGFD->GetMnMx(10*VarX+2,xmin,xmax);
46mGFD->GetMnMx(0,ymin, ymax);
47if(xmax<=xmin) xmax = xmin+1.;
48if(ymax<=ymin) ymax = ymin+1.;
49dx = 0.02*(xmax-xmin);
50dy = 0.02*(ymax-ymin);
51SetLimits((double)xmin-dx,(double)xmax+dx,(double)ymin-dy,(double)ymax+dy);
52SetAxesFlags(kBoxAxes | kExtTicks | kLabels);
53}
54
55/* --Methode-- */
56void PIGenFitDat::Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax)
57{
58if (!mGFD) return;
59if(mGFD->NData()<=0) return;
60if(VarX<0) return;
61// On plotte les barre d'erreurs ligne demandee explicitement
62if(mLAtt!=PI_NotDefLineAtt) SelectErrBar(true,true);
63double xp,yp,er;
64for (int i=0; i<mGFD->NData(); i++) {
65 xp = mGFD->Absc(VarX,i);
66 yp = mGFD->Val(i);
67 if(xp<xmin || xp>xmax || yp<ymin || yp>ymax) continue;
68 if(ErrX) {
69 er = mGFD->EAbsc(VarX,i);
70 if(er>0.) g->DrawLine(xp-er,yp,xp+er,yp);
71 }
72 if(ErrY) {
73 er = mGFD->EVal(i);
74 if(er>0.) g->DrawLine(xp,yp-er,xp,yp+er);
75 }
76 g->DrawMarker(xp, yp);
77}
78return;
79}
Note: See TracBrowser for help on using the repository browser.