+Float_t* AliGRPPreprocessor::ProcessFloatAll(const TObjArray* array)
+{
+ //
+ // processing Float values using Mean, Median, Standard Deviation wrt Mean, Standar Deviation wrt Median
+ //
+ // parameters[0] = mean
+ // parameters[1] = truncated mean (calculated excluding points outside +/- 3RMS from mean
+ // parameters[2] = median
+ // parameters[3] = standard deviation wrt mean
+ // parameters[4] = standard deviation wrt median
+ //
+
+ Float_t* parameters = new Float_t[5];
+ Double_t aDCSArrayMean = 0; // Mean
+ Double_t aDCSArrayTruncMean = 0;// Truncated Mean
+ Double_t aDCSArrayMedian = 0; // Median
+ Double_t aDCSArraySDMean = 0; // Standard Deviation wrt Mean
+ Double_t aDCSArraySDMedian = 0; // Standard Deviation wrt Median
+ Float_t aDCSArraySum = 0.0;
+ Int_t iCounts = 0;
+ Int_t iCounts1 = 0;
+ Float_t temp = 0;
+ Float_t temp1 = 0;
+ Int_t nCounts = array->GetEntries();
+ Float_t *tempArray = new Float_t[nCounts];
+ for(Int_t i = 0; i < nCounts; i++) {
+ AliDCSValue *v = (AliDCSValue *)array->At(i);
+ if(((Int_t)(v->GetTimeStamp()) >= (Int_t)GetStartTimeDCSQuery()) &&((Int_t)(v->GetTimeStamp()) <= (Int_t)GetEndTimeDCSQuery())) {
+ aDCSArraySum += v->GetFloat();
+ tempArray[i] = v->GetFloat();
+ AliDebug(2,Form("%d-th entry = %f",i,tempArray[i]));
+ iCounts += 1;
+ }
+ }
+
+ AliDebug(2,Form("Using %i entries, starting from %i entries",iCounts,nCounts));
+ if(iCounts != 0) {
+ aDCSArrayMean = TMath::Mean(iCounts,tempArray);
+ aDCSArrayMedian = TMath::Median(iCounts,tempArray);
+ aDCSArraySDMean = TMath::RMS(iCounts,tempArray);
+ AliDebug(2,Form("SD = %f",aDCSArraySDMean));
+ // computing standard deviation wrt median
+ AliDebug(2,Form("maximum = %f, minimum = %f", aDCSArrayMean+3*aDCSArraySDMean, aDCSArrayMean-3*aDCSArraySDMean));
+ for (Int_t i = 0; i < iCounts; i++){
+ AliDCSValue *v = (AliDCSValue *)array->At(i);
+ AliDebug(2,Form("maximum = %f, minimum = %f", aDCSArrayMean+3*aDCSArraySDMean, aDCSArrayMean-3*aDCSArraySDMean));
+ AliDebug(2,Form("%i-th entry = %f",i, v->GetFloat()));
+ if ((v->GetFloat()<=aDCSArrayMean+3*aDCSArraySDMean) && (v->GetFloat()>=aDCSArrayMean-3*aDCSArraySDMean)){
+ temp1+=v->GetFloat();
+ iCounts1++;
+ AliDebug(2,Form("temp1 = %f, iCounts1 = %i",temp1,iCounts1));
+ }
+ temp += (v->GetFloat()-aDCSArrayMedian)*(v->GetFloat()-aDCSArrayMedian);
+ }
+ AliDebug(3,Form("temp before the ratio = %f, with %d counts", temp, iCounts));
+ temp/=iCounts;
+ AliDebug(3,Form("temp after the ratio = %f", temp));
+ if (temp>0) {
+ aDCSArraySDMedian = TMath::Sqrt(temp);
+ }
+ else if (temp==0) {
+ AliInfo(Form("Radical = 0 in computing standard deviation wrt median! Setting it to zero...."));
+ aDCSArraySDMedian = 0;
+ }
+ else{
+ AliError(Form("Radical < 0 in computing standard deviation! Setting it to invalid...."));
+ aDCSArraySDMedian = AliGRPObject::GetInvalidFloat();
+ }
+ }
+ else {
+ aDCSArrayMean = AliGRPObject::GetInvalidFloat();
+ aDCSArrayMedian = AliGRPObject::GetInvalidFloat();
+ aDCSArraySDMean = AliGRPObject::GetInvalidFloat();
+ }
+ AliDebug(2,Form("iCounts1 = %d and temp1 = %f",iCounts1, temp1));
+ if (iCounts1 > 0) {
+ aDCSArrayTruncMean = temp1/iCounts1;
+ }
+ else{
+ aDCSArrayTruncMean = AliGRPObject::GetInvalidFloat();
+ }
+
+
+
+ AliDebug(2,Form("mean within %d counts = %f ",iCounts,aDCSArrayMean));
+ AliDebug(2,Form("truncated mean within %d counts = %f (%i values used)",iCounts,aDCSArrayTruncMean,iCounts1));
+ AliDebug(2,Form("median within %d counts = %f ",iCounts,aDCSArrayMedian));
+ AliDebug(2,Form("standard deviation with mean within %d counts = %f ",iCounts,aDCSArraySDMean));
+ AliDebug(2,Form("standard deviation with median within %d counts = %f ",iCounts,aDCSArraySDMedian));
+
+ parameters[0] = aDCSArrayMean;
+ parameters[1] = aDCSArrayTruncMean;
+ parameters[2] = aDCSArrayMedian;
+ parameters[3] = aDCSArraySDMean;
+ parameters[4] = aDCSArraySDMedian;
+
+ // AliDebug(2,Form("mean = %f, truncated mean = %f, median = %f, SD wrt mean = %f, SD wrt median = %f ",parameters[0],parameters[1],parameters[2],parameters[3],parameters[4]));
+ AliInfo(Form("mean = %f, truncated mean = %f, median = %f, SD wrt mean = %f, SD wrt median = %f ",parameters[0],parameters[1],parameters[2],parameters[3],parameters[4]));
+
+ return parameters;
+}