AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift():TNamed()
{
//
-
+ for (Int_t i=0; i<4; i++)
+ fMeanPar[i] = fSigmaPar[i] = 0;
}
//________________________________________________________________
TString namst = "Calib_";
namst += name;
SetName(namst.Data());
- SetTitle(namst.Data());
+ SetTitle(namst.Data());
+
+ for (Int_t i=0; i<4; i++)
+ fMeanPar[i] = fSigmaPar[i] = 0;
+
}
//________________________________________________________________
// copy constructor
SetName(calibda.GetName());
SetTitle(calibda.GetName());
+ ((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
}
// assignment operator
SetName(calibda.GetName());
SetTitle(calibda.GetName());
+ if (this != &calibda) ((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
return *this;
}
//________________________________________________________________
Int_t AliT0CalibSeasonTimeShift::SetT0Par(const char* filePhys, Float_t *cdbtime)
{
- // compute online equalized time
+ // compute shifts fo T0A, T0C, T0AC and resolution
+ //Status : writeok:
+ // 0 OK
+ // 2000 - no data file
+ // 300 no one histogram or it is empty
+ //-100 peak is very narrow
+
Float_t mean, sigma;
Int_t ok = 0;
TH1F *cfd = NULL;
gFile = TFile::Open(filePhys);
if(!gFile) {
AliError("No input PHYS data found ");
- ok = 2000;
+ return 2000;
}
else {
// gFile->ls();
cfd = (TH1F*)gFile ->Get(histname[i].Data());
if(!cfd) {
- ok=300;
AliError(Form("no histograms collected for %s", histname[i].Data()));
- return ok;
+ return 300;
}
if(cfd) {
if( cfd->GetEntries() == 0) {
- ok=300;
AliError(Form("%s histogram is empty", histname[i].Data()));
- return ok;
+ return 300;
}
- GetMeanAndSigma(cfd, mean, sigma);
- if (sigma == 0 || sigma > 500 || cfd->GetEntries()<200 ){
- ok = -100;
- fMeanPar[i] = cdbtime[i];
- fSigmaPar[i] = -1;
- }
- if ( sigma > 0 && sigma < 500 && cfd->GetEntries()>200)
- {
- fMeanPar[i] = mean;
- fSigmaPar[i] = sigma;
- }
+ GetMeanAndSigma(cfd, mean, sigma);
+ if (sigma == 0 || sigma > 600 || cfd->GetEntries()<50 ){ //!!!
+ AliError(Form("%s low statsitics or bad histogram", histname[i].Data()));
+ return 400;
}
+ if ( sigma > 0 && sigma < 600 && cfd->GetEntries()>=50) //!!!
+ {
+ fMeanPar[i] = mean;
+ fSigmaPar[i] = sigma;
+ }
+ }
}
}
gFile->Close();
//________________________________________________________________________
void AliT0CalibSeasonTimeShift::GetMeanAndSigma(TH1F* hist, Float_t &mean, Float_t &sigma) {
- const double window =2.; //fit window
+ const double window =3.; //fit window
double meanEstimate, sigmaEstimate;
int maxBin;
sigmaEstimate = hist->GetRMS();
TF1* fit= new TF1("fit","gaus", meanEstimate - window*sigmaEstimate, meanEstimate + window*sigmaEstimate);
fit->SetParameters(hist->GetBinContent(maxBin), meanEstimate, sigmaEstimate);
- hist->Fit("fit","RQ","Q");
+ hist->Fit("fit","R","");
mean = (Float_t) fit->GetParameter(1);
sigma = (Float_t) fit->GetParameter(2);