#include "TMath.h" #include "TRandom.h" #include //______________________________________________________________________________ Double_t XMedian(Int_t n, const Double_t *arr) { if (n == 1) return arr[0]; // Create index and sort array //x Int_t *index = 0; //x if (!(index = new Int_t[n])) {return 1;} //return not ok Long64_t *index = 0; if (!(index = new Long64_t[n])) {return 1;} //return not ok TMath::Sort(n, arr, index); // Find median Int_t k; Double_t median = 0; if ((n % 2) == 0){ k = (Int_t)TMath::Floor(n / 2.0) - 1; median = (arr[index[k]] + arr[index[k+1]])/2; } else { k = (Int_t)TMath::Floor(n / 2.0); median = arr[index[k]]; }//if delete [] index; return median; }//Median //______________________________________________________________________________ Double_t *Weights(Int_t n, const Double_t *arr, Double_t *w) { // Weighting function using Tukey biweight. Double_t *x = new Double_t[n]; Double_t med = XMedian(n, arr); Double_t max = 0.0; Double_t sum = 0.0; for (Int_t i=0; i max) ? TMath::Abs(x[i]) : max; }//for_i if (max == 0.0) { for (Int_t i=0; i