- //
- // Calculate calibration constants
- //
-
- TVectorD paramQ(3);
- TVectorD paramT0(3);
- TVectorD paramRMS(3);
- TMatrixD dummy(3,3);
-
- for (Int_t iSec=0; iSec<72; ++iSec){
- TH2S *hT0 = GetHistoT0(iSec);
- if (!hT0 ) continue;
-
- AliTPCCalROC *rocQ = GetCalRocQ (iSec,kTRUE);
- AliTPCCalROC *rocT0 = GetCalRocT0 (iSec,kTRUE);
- AliTPCCalROC *rocRMS = GetCalRocRMS(iSec,kTRUE);
- AliTPCCalROC *rocOut = GetCalRocOutliers(iSec,kTRUE);
-
- TH2S *hQ = GetHistoQ(iSec);
- TH2S *hRMS = GetHistoRMS(iSec);
-
- Short_t *arrayhQ = hQ->GetArray();
- Short_t *arrayhT0 = hT0->GetArray();
- Short_t *arrayhRMS = hRMS->GetArray();
-
- UInt_t nChannels = fROC->GetNChannels(iSec);
-
- //debug
- Int_t row=0;
- Int_t pad=0;
- Int_t padc=0;
- //! debug
-
- for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
-
- Float_t cogTime0 = -1000;
- Float_t cogQ = -1000;
- Float_t cogRMS = -1000;
- Float_t cogOut = 0;
-
- Int_t offsetQ = (fNbinsQ+2)*(iChannel+1)+1;
- Int_t offsetT0 = (fNbinsT0+2)*(iChannel+1)+1;
- Int_t offsetRMS = (fNbinsRMS+2)*(iChannel+1)+1;
+ //
+ // Calculate calibration constants
+ //
+
+ TVectorD paramQ(3);
+ TVectorD paramT0(3);
+ TVectorD paramRMS(3);
+ TMatrixD dummy(3,3);
+ //calculate mean time for each sector and mean time for each side
+ TH1F hMeanTsec("hMeanTsec","hMeanTsec",20*(fLastTimeBin-fFirstTimeBin),fFirstTimeBin,fLastTimeBin);
+ fVMeanTimeSector.Zero();
+
+ for (Int_t iSec=0; iSec<72; ++iSec){
+ TH2S *hT0 = GetHistoT0(iSec);
+ if (!hT0 ) continue;
+ //calculate sector mean T
+ if ( fHMeanTimeSector ){
+ Int_t nbinsT = fHMeanTimeSector->GetNbinsX();
+ Int_t offset = (nbinsT+2)*(iSec+1);
+ Float_t *arrP=fHMeanTimeSector->GetArray()+offset;
+ Int_t entries=0;
+ for ( Int_t i=0; i<nbinsT; i++ ) entries+=(Int_t)arrP[i+1];
+ hMeanTsec.Set(nbinsT+2,arrP);
+ hMeanTsec.SetEntries(entries);
+ paramT0.Zero();
+ // truncated mean: remove lower 5% and upper 5%
+ if ( entries>0 ) AliMathBase::TruncatedMean(&hMeanTsec,¶mT0,0.05,.95);
+ fVMeanTimeSector[iSec]=paramT0[1];
+ }
+
+ AliTPCCalROC *rocQ = GetCalRocQ (iSec,kTRUE);
+ AliTPCCalROC *rocT0 = GetCalRocT0 (iSec,kTRUE);
+ AliTPCCalROC *rocRMS = GetCalRocRMS(iSec,kTRUE);
+ AliTPCCalROC *rocOut = GetCalRocOutliers(iSec,kTRUE);
+
+ TH2S *hQ = GetHistoQ(iSec);
+ TH2S *hRMS = GetHistoRMS(iSec);
+
+ Short_t *arrayhQ = hQ->GetArray();
+ Short_t *arrayhT0 = hT0->GetArray();
+ Short_t *arrayhRMS = hRMS->GetArray();
+
+ UInt_t nChannels = fROC->GetNChannels(iSec);
+ Float_t meanTsec = fVMeanTimeSector[iSec];
+
+ //debug
+ Int_t row=0;
+ Int_t pad=0;
+ Int_t padc=0;
+ //! debug
+
+ for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
+
+ Float_t cogTime0 = -1000;
+ Float_t cogQ = -1000;
+ Float_t cogRMS = -1000;
+ Float_t cogOut = 0;
+
+ Int_t offsetQ = (fNbinsQ+2)*(iChannel+1)+1;
+ Int_t offsetT0 = (fNbinsT0+2)*(iChannel+1)+1;
+ Int_t offsetRMS = (fNbinsRMS+2)*(iChannel+1)+1;