+ if (i != badpmt) {
+ if(tzeroObj) {
+ cfddiff = (TH1F*) tzeroObj->FindObject(Form("CFD1minCFD%d",i+1));
+ cfdtime = (TH1F*)tzeroObj->FindObject(Form("CFD%d",i+1));
+ }
+ else
+ {
+ cfddiff = (TH1F*)gFile->Get(Form("CFD1minCFD%d",i+1));
+ cfdtime = (TH1F*)gFile->Get(Form("CFD%d",i+1));
+
+ }
+ if(!cfddiff ) {
+ AliWarning(Form("no histograms collected by pass0 for diff channel %i", i));
+ okdiff++;
+ if(okdiff<4) {
+ meandiff = timecdb[i];
+ sigmadiff = 0;
+ ok = -1;
+ }
+ else
+ return 100+okdiff;
+ }
+ if(cfddiff) {
+ nent = Int_t(cfddiff->GetEntries());
+ if ( nent == 0) {
+ okdiff++;
+ if(okdiff<4) {
+ meandiff = timecdb[i];
+ sigmadiff = 0;
+ ok = - 1;
+ }
+ else
+ return 100;
+ }
+ if(nent<100 && nent>0) { //!!!!!
+ AliWarning(Form(" Not enouph data in PMT %i- PMT1: %i ", i, nent));
+ ok=-2;
+ meandiff = timecdb[i];
+ sigmadiff = 0;
+ }
+ if(nent>100 ) { //!!!!!
+ {
+ if(cfddiff->GetRMS()>1.5 )
+ GetMeanAndSigma(cfddiff, meandiff, sigmadiff);
+ if(cfddiff->GetRMS()<=1.5)
+ {
+ meandiff = cfddiff->GetMean();
+ sigmadiff = cfddiff->GetRMS();
+ }
+ Int_t maxBin = cfddiff->GetMaximumBin();
+ Double_t meanEstimate = cfddiff->GetBinCenter( maxBin);
+ if(TMath::Abs(meanEstimate - meandiff) > 20 ) meandiff = meanEstimate;
+ }
+ }
+ }
+ if(!cfdtime ) {
+ AliWarning(Form("no histograms collected by pass0 for time channel %i", i));
+ meancfdtime = cfdvalue[i];
+ okcfd++;
+ if(okcfd<4) {
+ meancfdtime = cfdvalue[i];
+ ok = -11;
+ }
+ else {
+ AliError(Form("no histograms collected by pass0 for time %i channels ", okcfd));
+ return 200;
+ }
+ }
+ if(cfdtime) {
+ nent = Int_t(cfdtime->GetEntries());
+ if (nent == 0 ||
+ (cfdtime->GetRMS() == 0 || cfdtime->GetMean() ==0 ) )
+ {
+ okcfd++;
+ if(okcfd<4) {
+ meancfdtime = cfdvalue[i];
+ ok = -11;
+ printf("!!!!bad data:: pmt %i nent%i RMS %f mean %f cdbtime %f \n",
+ i, nent, cfdtime->GetRMS(), cfdtime->GetMean(), fCFDvalue[i][0]);
+ }
+ else
+ {
+ printf("!!!!fatal data:: pmt %i nent%i RMS %f mean %f cdbtime %f \n",
+ i, nent, cfdtime->GetRMS(), cfdtime->GetMean(), fCFDvalue[i][0]);
+ AliError(Form(" histograms collected by pass0 for time %i channels are empty", okcfd));
+ return 200;
+ }
+ }
+
+
+ if(nent<500 && nent>0 )
+ {
+ AliWarning(Form(" Not enouph data in PMT in CFD peak %i - %i ", i, nent));
+ if(okcfd<4) {
+ meancfdtime = cfdvalue[i];
+ ok = -22;
+ printf("!!!!low statstics:: pmt %i nent%i RMS %f mean %f cdbtime %f \n",
+ i, nent, cfdtime->GetRMS(), cfdtime->GetMean(), fCFDvalue[i][0]);
+ }
+ else {
+ printf("!!!!low fatal statstics:: pmt %i nent%i RMS %f mean %f cdbtime %f \n",
+ i, nent, cfdtime->GetRMS(), cfdtime->GetMean(), fCFDvalue[i][0]);
+
+ AliError(Form(" Not enouph data in PMT in CFD peak %i in channels ", okcfd));
+ return 200;
+ }
+
+ }
+
+ if( nent>500 && cfdtime->GetRMS() != 0 ) { //!!!!!
+ if(cfdtime->GetRMS()>1.5 )
+ GetMeanAndSigma(cfdtime,meancfdtime, sigmacfdtime);
+ if(cfdtime->GetRMS()<=1.5)
+ {
+ meancfdtime = cfdtime->GetMean();
+ sigmacfdtime=cfdtime->GetRMS();
+ }
+ Int_t maxBin = cfdtime->GetMaximumBin();
+ Double_t meanEstimate = cfdtime->GetBinCenter( maxBin);
+ if(TMath::Abs(meanEstimate - meancfdtime) > 20 ) meancfdtime = meanEstimate;
+ }
+ }
+
+ SetTimeEq(i,meandiff);
+ SetTimeEqRms(i,sigmadiff);
+ SetCFDvalue(i,0, meancfdtime );
+ printf(" pmt %i diff %f sigma %f meancfdtime %f cdbtime %f \n",i, meandiff, sigmadiff, meancfdtime, fCFDvalue[i][0]);
+ if (cfddiff) cfddiff->Reset();
+ if (cfdtime) cfdtime->Reset();
+ } //bad pmt
+ }
+ gFile->Close();
+ delete gFile;
+ }
+ return ok;