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

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

intro PERC_GARDE pour localiser les pb cmv 14/7/2002

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