]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0CalibSeasonTimeShift.cxx
modified Multi BF drawing macros (AliTHn::FillParent only once)
[u/mrichter/AliRoot.git] / T0 / AliT0CalibSeasonTimeShift.cxx
index de7ad568480cd67dcf8616061cb7cbdf82316319..7b11878b3885e98c5b9f9bf7f7761b509691064e 100644 (file)
@@ -36,7 +36,8 @@ ClassImp(AliT0CalibSeasonTimeShift)
   AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift():TNamed()
 {
   //
-
+  for (Int_t i=0; i<4; i++)
+    fMeanPar[i] = fSigmaPar[i] = 0; 
 }
 
 //________________________________________________________________
@@ -47,7 +48,11 @@ AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift(const char* name):TNamed()
   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; 
 }
 
 //________________________________________________________________
@@ -57,6 +62,7 @@ AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift(const AliT0CalibSeasonTimeS
 // copy constructor
   SetName(calibda.GetName());
   SetTitle(calibda.GetName());
+  ((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
 
 
 }
@@ -67,6 +73,7 @@ AliT0CalibSeasonTimeShift &AliT0CalibSeasonTimeShift::operator =(const AliT0Cali
 // assignment operator
   SetName(calibda.GetName());
   SetTitle(calibda.GetName());
+  if (this != &calibda) ((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
  
   return *this;
 }
@@ -106,7 +113,13 @@ Bool_t  AliT0CalibSeasonTimeShift::SetT0Par(Float_t par[4],Float_t spar[4])
 //________________________________________________________________
 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;
@@ -115,7 +128,7 @@ Int_t AliT0CalibSeasonTimeShift::SetT0Par(const char* filePhys, Float_t *cdbtime
   gFile = TFile::Open(filePhys);
   if(!gFile) {
     AliError("No input PHYS data found ");
-    ok = 2000;
+    return 2000;
   }
   else {
     //    gFile->ls();
@@ -131,28 +144,25 @@ Int_t AliT0CalibSeasonTimeShift::SetT0Par(const char* filePhys, Float_t *cdbtime
          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();
@@ -162,7 +172,7 @@ Int_t AliT0CalibSeasonTimeShift::SetT0Par(const char* filePhys, Float_t *cdbtime
 //________________________________________________________________________
 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;
@@ -171,7 +181,7 @@ void AliT0CalibSeasonTimeShift::GetMeanAndSigma(TH1F* hist,  Float_t &mean, Floa
   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);