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

Last change on this file since 2189 was 2115, checked in by cmv, 23 years ago

ResizeMinMax: cmv 17/07/2002

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/* --Methode-- */
7PIGenFitDat::PIGenFitDat(GeneralFitData* gfd, bool ad)
8: PIDrawer(), mGFD(gfd), mAdDO(ad), VarX(0), ErrX(false), ErrY(false)
9{
10SelectX(0);
11SelectErrBar(false,false);
12}
13
14PIGenFitDat::~PIGenFitDat()
15{
16if(mAdDO && mGFD) delete mGFD;
17}
18
19/* --Methode-- */
20void PIGenFitDat::SelectX(int varx)
21{
22VarX = -1;
23if(mGFD == NULL) return;
24if(varx<0 || varx>=mGFD->NVar()) return;
25VarX = varx;
26}
27
28/* --Methode-- */
29void PIGenFitDat::SelectErrBar(bool erbx,bool erby)
30{
31ErrX = erbx; ErrY = erby;
32if(mGFD == NULL) {ErrX = ErrY = false; return;}
33if(!mGFD->HasXErrors()) ErrX = false;
34}
35
36/* --Methode-- */
37void PIGenFitDat::UpdateLimits()
38{
39if(!mGFD) return;
40if(mGFD->NData()<=0) return;
41if(VarX<0) return;
42double xmin=9.e19, xmax=-9.e19, ymin=9.e19, ymax=-9.e19;
43mGFD->GetMnMx(10*VarX+2,xmin,xmax);
44mGFD->GetMnMx(0,ymin, ymax);
45if(xmax<=xmin) xmax = xmin+1.;
46if(ymax<=ymin) ymax = ymin+1.;
47PIAxes::ReSizeMinMax(isLogScaleX(),xmin,xmax);
48PIAxes::ReSizeMinMax(isLogScaleY(),ymin,ymax);
49SetLimits(xmin,xmax,ymin,ymax);
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(GetGraphicAtt().GetLineAtt()!=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.