| 1 | void extralgospline() | 
|---|
| 2 | { | 
|---|
| 3 | Int_t n = 40; | 
|---|
| 4 |  | 
|---|
| 5 | TArrayF x(n); | 
|---|
| 6 | TArrayF y(n); | 
|---|
| 7 | for (int i=0; i<n; i++) | 
|---|
| 8 | { | 
|---|
| 9 | x[i] = i; | 
|---|
| 10 | y[i] = gRandom->Uniform(10)-5; | 
|---|
| 11 |  | 
|---|
| 12 | y[n/2-2] = 50; | 
|---|
| 13 | y[n/2-1] = 100; | 
|---|
| 14 | y[n/2]   = 110; | 
|---|
| 15 | y[n/2+1] = 70; | 
|---|
| 16 | y[n/2+2] = 30; | 
|---|
| 17 |  | 
|---|
| 18 | } | 
|---|
| 19 |  | 
|---|
| 20 | TArrayF d1(n); | 
|---|
| 21 | TArrayF d2(n); | 
|---|
| 22 |  | 
|---|
| 23 | // Do some handling if maxpos is last slice! | 
|---|
| 24 | MExtralgoSpline s(y.GetArray(), n, d1.GetArray(), d2.GetArray()); | 
|---|
| 25 |  | 
|---|
| 26 | s.SetHeightTm(0.5); | 
|---|
| 27 | s.SetRiseFallTime(0.5, 0.5); | 
|---|
| 28 |  | 
|---|
| 29 | Int_t maxpos = TMath::LocMax(n, y.GetArray()); | 
|---|
| 30 |  | 
|---|
| 31 | Float_t time, dtime, sum, dsum, mtime, max; | 
|---|
| 32 | s.SetExtractionType(MExtralgoSpline::kIntegralRel); | 
|---|
| 33 | s.Extract(0, maxpos); | 
|---|
| 34 | s.GetTime(time, dtime); | 
|---|
| 35 | s.GetSignal(sum, dsum); | 
|---|
| 36 |  | 
|---|
| 37 | s.SetExtractionType(MExtralgoSpline::kAmplitude); | 
|---|
| 38 | s.Extract(0, maxpos); | 
|---|
| 39 | s.GetTime(mtime, dtime); | 
|---|
| 40 | s.GetSignal(max, dsum); | 
|---|
| 41 |  | 
|---|
| 42 | TGraph gr1(n, x.GetArray(), y.GetArray()); | 
|---|
| 43 |  | 
|---|
| 44 | TGraph gr2; | 
|---|
| 45 | for (int i=0; i<n*10; i++) | 
|---|
| 46 | gr2.SetPoint(gr2.GetN(), 0.1*i, s.EvalAt(0.1*i)); | 
|---|
| 47 |  | 
|---|
| 48 | gr2.SetMarkerColor(kBlue); | 
|---|
| 49 | gr2.SetMarkerStyle(kFullDotMedium); | 
|---|
| 50 | gr1.SetMarkerStyle(kFullDotMedium); | 
|---|
| 51 |  | 
|---|
| 52 | gr1.DrawClone("AP*"); | 
|---|
| 53 | gr2.DrawClone("PL"); | 
|---|
| 54 |  | 
|---|
| 55 | TMarker m; | 
|---|
| 56 | m.SetMarkerStyle(kFullDotMedium); | 
|---|
| 57 | m.SetMarkerColor(kRed); | 
|---|
| 58 | m.DrawMarker(x[maxpos], y[maxpos]); | 
|---|
| 59 |  | 
|---|
| 60 | TLine line; | 
|---|
| 61 | line.SetLineColor(kRed); | 
|---|
| 62 | line.DrawLine(mtime, max-5, mtime, max+5); | 
|---|
| 63 | line.DrawLine(mtime-0.5, max, mtime+0.5, max); | 
|---|
| 64 | line.SetLineStyle(kDashed); | 
|---|
| 65 | line.DrawLine(time, 0, time, 110); | 
|---|
| 66 |  | 
|---|
| 67 | gPad->SetGridx(); | 
|---|
| 68 | gPad->SetGridy(); | 
|---|
| 69 | } | 
|---|