source: Sophya/trunk/Poubelle/PIext/pigfd1.cc@ 4010

Last change on this file since 4010 was 223, checked in by ansari, 26 years ago

Creation module DPC/PIext Reza 09/04/99

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