+ Int_t nbinsAdc = fAdcMax-fAdcMin;
+
+ TVectorD param(4);
+ TMatrixD dummy(3,3);
+
+ TH1F *hChannel=new TH1F("hChannel","hChannel",nbinsAdc,fAdcMin,fAdcMax);
+
+ Float_t *arrayhP=0;
+
+ for (Int_t iSec=0; iSec<72; ++iSec){
+ TH2F *hP = GetHistoPedestal(iSec);
+ if ( !hP ) continue;
+
+ AliTPCCalROC *rocPedestal = GetCalRocPedestal(iSec,kTRUE);
+ AliTPCCalROC *rocSigma = GetCalRocSigma(iSec,kTRUE);
+ AliTPCCalROC *rocMean = GetCalRocMean(iSec,kTRUE);
+ AliTPCCalROC *rocRMS = GetCalRocRMS(iSec,kTRUE);
+
+ arrayhP = hP->GetArray();
+ UInt_t nChannels = fROC->GetNChannels(iSec);
+
+ for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
+ Int_t offset = (nbinsAdc+2)*(iChannel+1)+1;
+ //calculate mean and sigma using a gaus fit
+ //Double_t ret =
+ AliMathBase::FitGaus(arrayhP+offset,nbinsAdc,fAdcMin,fAdcMax,¶m,&dummy);
+ // if the fitting failed set noise and pedestal to 0
+ // is now done in AliMathBase::FitGaus !
+// if ( ret == -4 ) {
+// param[1]=0;
+// param[2]=0;
+// }
+ if ( param[1]<fAdcMin || param[1]>fAdcMax ){
+ param[1]=0;
+ param[2]=0;
+ }
+ rocPedestal->SetValue(iChannel,param[1]);
+ rocSigma->SetValue(iChannel,param[2]);
+ //calculate mean and RMS using a truncated means
+ hChannel->Set(nbinsAdc+2,arrayhP+offset-1);
+ hChannel->SetEntries(param[3]);
+ param[1]=0;
+ param[2]=0;
+ if ( param[3]>0 ) AliMathBase::TruncatedMean(hChannel,¶m,fAnaMeanDown,fAnaMeanUp);
+ rocMean->SetValue(iChannel,param[1]);
+ rocRMS->SetValue(iChannel,param[2]);
+ }
+ }
+ delete hChannel;
+}