| 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 | }
|
|---|