22 #ifndef ROOT_TGraphSmooth
23 #define ROOT_TGraphSmooth
36 class TGraphSmooth:
public TNamed {
39 TGraphSmooth(
const TGraphSmooth&);
40 TGraphSmooth& operator=(
const TGraphSmooth&);
52 TGraphSmooth(
const char *name);
54 virtual ~TGraphSmooth();
56 TGraph *Approx(TGraph *grin, Option_t *option=
"linear", Int_t nout=50, Double_t *xout=0,
57 Double_t yleft=0, Double_t yright=0, Int_t rule=0, Double_t f=0, Option_t *ties=
"mean");
58 TGraph *SmoothKern(TGraph *grin, Option_t *option=
"normal", Double_t bandwidth=0.5, Int_t nout=100, Double_t *xout=0);
59 TGraph *SmoothLowess(TGraph *grin, Option_t *option=
"",Double_t span=0.67, Int_t iter = 3, Double_t delta = 0);
60 TGraph *SmoothSuper(TGraph *grin, Option_t *option=
"", Double_t bass = 0, Double_t span=0, Bool_t isPeriodic = kFALSE, Double_t *w=0);
62 void Approxin(TGraph *grin, Int_t iKind, Double_t &Ylow, Double_t &Yhigh, Int_t rule, Int_t iTies);
63 void Smoothin(TGraph *grin);
64 static Double_t Approx1(Double_t v, Double_t f, Double_t *x, Double_t *y, Int_t n, Int_t iKind, Double_t Ylow, Double_t Yhigh);
65 void Lowess(Double_t *x, Double_t *y, Int_t n, Double_t *ys, Double_t span, Int_t iter, Double_t delta);
66 static void Lowest(Double_t *x, Double_t *y, Int_t n, Double_t &xs,
67 Double_t &ys, Int_t nleft, Int_t nright, Double_t *w, Bool_t userw, Double_t *rw, Bool_t &ok);
68 static Int_t Rcmp(Double_t x, Double_t y);
69 static void Psort(Double_t *x, Int_t n, Int_t k);
70 static void Rank(Int_t n, Double_t *a, Int_t *index, Int_t *rank, Bool_t down=kTRUE);
71 static void BDRksmooth(Double_t *x, Double_t *y, Int_t n,
72 Double_t *xp, Double_t *yp, Int_t np, Int_t kernel, Double_t bw);
73 static void BDRsupsmu(Int_t n, Double_t *x, Double_t *y, Double_t *w, Int_t iper,
74 Double_t span, Double_t alpha, Double_t *smo, Double_t *sc);
75 static void BDRsmooth(Int_t n, Double_t *x, Double_t *y, Double_t *w,
76 Double_t span, Int_t iper, Double_t vsmlsq, Double_t *smo, Double_t *acvr);
78 ClassDef(TGraphSmooth,1)