#include "AliT0CalibSeasonTimeShift.h"
#include "AliLog.h"
#include <TFile.h>
#include <TMath.h>
#include <TF1.h>
#include <TProfile.h>
#include <iostream>
ClassImp(AliT0CalibSeasonTimeShift)
AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift():TNamed()
{
for (Int_t i=0; i<4; i++)
fMeanPar[i] = fSigmaPar[i] = 0;
}
AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift(const char* name):TNamed()
{
TString namst = "Calib_";
namst += name;
SetName(namst.Data());
SetTitle(namst.Data());
for (Int_t i=0; i<4; i++)
fMeanPar[i] = fSigmaPar[i] = 0;
}
AliT0CalibSeasonTimeShift::AliT0CalibSeasonTimeShift(const AliT0CalibSeasonTimeShift& calibda):TNamed(calibda)
{
SetName(calibda.GetName());
SetTitle(calibda.GetName());
((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
}
AliT0CalibSeasonTimeShift &AliT0CalibSeasonTimeShift::operator =(const AliT0CalibSeasonTimeShift& calibda)
{
SetName(calibda.GetName());
SetTitle(calibda.GetName());
if (this != &calibda) ((AliT0CalibSeasonTimeShift &) calibda).Copy(*this);
return *this;
}
AliT0CalibSeasonTimeShift::~AliT0CalibSeasonTimeShift()
{
}
void AliT0CalibSeasonTimeShift::Print(Option_t*) const
{
printf("\n ---- T0 results ----\n\n");
printf(" (T0A+T0C)/2 = %f; T0A = %f; T0C = %f; resolution = %f \n", fMeanPar[0], fMeanPar[1],fMeanPar[2],fMeanPar[3]);
printf(" sigma(T0A+T0C)/2 = %f; sigma(T0 = %f; sigma(T0C) = %f; sigma(resolution) = %f \n" , fSigmaPar[0], fSigmaPar[1], fSigmaPar[2],fSigmaPar[3]);
}
Bool_t AliT0CalibSeasonTimeShift::SetT0Par(Float_t par[4],Float_t spar[4])
{
Bool_t ok=false;
for (Int_t i=0; i<4; i++)
{
fMeanPar[i] = par[i];
fSigmaPar[i] = spar[i];
if ( fSigmaPar[i] == 0 || fSigmaPar[i] > 500) ok = false;
}
return ok;
}
Int_t AliT0CalibSeasonTimeShift::SetT0Par(const char* filePhys, Float_t *cdbtime)
{
Float_t mean, sigma;
Int_t ok = 0;
TH1F *cfd = NULL;
TObjArray * tzeroObj = NULL;
gFile = TFile::Open(filePhys);
if(!gFile) {
AliError("No input PHYS data found ");
return 2000;
}
else {
tzeroObj = dynamic_cast<TObjArray*>(gFile->Get("T0Calib"));
TString histname[4]={"fTzeroORAplusORC", "fTzeroORA", "fTzeroORC", "fResolution"};
for (Int_t i=0; i<4; i++)
{
if(cfd) cfd->Reset();
if(tzeroObj)
cfd = (TH1F*)tzeroObj->FindObject( histname[i].Data());
else
cfd = (TH1F*)gFile ->Get(histname[i].Data());
if(!cfd) {
AliError(Form("no histograms collected for %s", histname[i].Data()));
return 300;
}
if(cfd) {
if( cfd->GetEntries() == 0) {
AliError(Form("%s histogram is empty", histname[i].Data()));
return 300;
}
GetMeanAndSigma(cfd, mean, sigma);
if (sigma == 0 || sigma > 600 || cfd->GetEntries()<50 ){
AliError(Form("%s low statsitics or bad histogram, OCDB value is = %f", histname[i].Data(), cdbtime[i]) );
return 400;
}
if ( sigma > 0 && sigma < 600 && cfd->GetEntries()>=50)
{
fMeanPar[i] = mean;
fSigmaPar[i] = sigma;
}
}
}
}
gFile->Close();
delete gFile;
return ok;
}
void AliT0CalibSeasonTimeShift::GetMeanAndSigma(TH1F* hist, Float_t &mean, Float_t &sigma) {
const double window =3.;
double meanEstimate, sigmaEstimate;
int maxBin;
maxBin = hist->GetMaximumBin();
meanEstimate = hist->GetBinCenter( 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","R","");
mean = (Float_t) fit->GetParameter(1);
sigma = (Float_t) fit->GetParameter(2);
delete fit;
}
AliT0CalibSeasonTimeShift.cxx:1 AliT0CalibSeasonTimeShift.cxx:2 AliT0CalibSeasonTimeShift.cxx:3 AliT0CalibSeasonTimeShift.cxx:4 AliT0CalibSeasonTimeShift.cxx:5 AliT0CalibSeasonTimeShift.cxx:6 AliT0CalibSeasonTimeShift.cxx:7 AliT0CalibSeasonTimeShift.cxx:8 AliT0CalibSeasonTimeShift.cxx:9 AliT0CalibSeasonTimeShift.cxx:10 AliT0CalibSeasonTimeShift.cxx:11 AliT0CalibSeasonTimeShift.cxx:12 AliT0CalibSeasonTimeShift.cxx:13 AliT0CalibSeasonTimeShift.cxx:14 AliT0CalibSeasonTimeShift.cxx:15 AliT0CalibSeasonTimeShift.cxx:16 AliT0CalibSeasonTimeShift.cxx:17 AliT0CalibSeasonTimeShift.cxx:18 AliT0CalibSeasonTimeShift.cxx:19 AliT0CalibSeasonTimeShift.cxx:20 AliT0CalibSeasonTimeShift.cxx:21 AliT0CalibSeasonTimeShift.cxx:22 AliT0CalibSeasonTimeShift.cxx:23 AliT0CalibSeasonTimeShift.cxx:24 AliT0CalibSeasonTimeShift.cxx:25 AliT0CalibSeasonTimeShift.cxx:26 AliT0CalibSeasonTimeShift.cxx:27 AliT0CalibSeasonTimeShift.cxx:28 AliT0CalibSeasonTimeShift.cxx:29 AliT0CalibSeasonTimeShift.cxx:30 AliT0CalibSeasonTimeShift.cxx:31 AliT0CalibSeasonTimeShift.cxx:32 AliT0CalibSeasonTimeShift.cxx:33 AliT0CalibSeasonTimeShift.cxx:34 AliT0CalibSeasonTimeShift.cxx:35 AliT0CalibSeasonTimeShift.cxx:36 AliT0CalibSeasonTimeShift.cxx:37 AliT0CalibSeasonTimeShift.cxx:38 AliT0CalibSeasonTimeShift.cxx:39 AliT0CalibSeasonTimeShift.cxx:40 AliT0CalibSeasonTimeShift.cxx:41 AliT0CalibSeasonTimeShift.cxx:42 AliT0CalibSeasonTimeShift.cxx:43 AliT0CalibSeasonTimeShift.cxx:44 AliT0CalibSeasonTimeShift.cxx:45 AliT0CalibSeasonTimeShift.cxx:46 AliT0CalibSeasonTimeShift.cxx:47 AliT0CalibSeasonTimeShift.cxx:48 AliT0CalibSeasonTimeShift.cxx:49 AliT0CalibSeasonTimeShift.cxx:50 AliT0CalibSeasonTimeShift.cxx:51 AliT0CalibSeasonTimeShift.cxx:52 AliT0CalibSeasonTimeShift.cxx:53 AliT0CalibSeasonTimeShift.cxx:54 AliT0CalibSeasonTimeShift.cxx:55 AliT0CalibSeasonTimeShift.cxx:56 AliT0CalibSeasonTimeShift.cxx:57 AliT0CalibSeasonTimeShift.cxx:58 AliT0CalibSeasonTimeShift.cxx:59 AliT0CalibSeasonTimeShift.cxx:60 AliT0CalibSeasonTimeShift.cxx:61 AliT0CalibSeasonTimeShift.cxx:62 AliT0CalibSeasonTimeShift.cxx:63 AliT0CalibSeasonTimeShift.cxx:64 AliT0CalibSeasonTimeShift.cxx:65 AliT0CalibSeasonTimeShift.cxx:66 AliT0CalibSeasonTimeShift.cxx:67 AliT0CalibSeasonTimeShift.cxx:68 AliT0CalibSeasonTimeShift.cxx:69 AliT0CalibSeasonTimeShift.cxx:70 AliT0CalibSeasonTimeShift.cxx:71 AliT0CalibSeasonTimeShift.cxx:72 AliT0CalibSeasonTimeShift.cxx:73 AliT0CalibSeasonTimeShift.cxx:74 AliT0CalibSeasonTimeShift.cxx:75 AliT0CalibSeasonTimeShift.cxx:76 AliT0CalibSeasonTimeShift.cxx:77 AliT0CalibSeasonTimeShift.cxx:78 AliT0CalibSeasonTimeShift.cxx:79 AliT0CalibSeasonTimeShift.cxx:80 AliT0CalibSeasonTimeShift.cxx:81 AliT0CalibSeasonTimeShift.cxx:82 AliT0CalibSeasonTimeShift.cxx:83 AliT0CalibSeasonTimeShift.cxx:84 AliT0CalibSeasonTimeShift.cxx:85 AliT0CalibSeasonTimeShift.cxx:86 AliT0CalibSeasonTimeShift.cxx:87 AliT0CalibSeasonTimeShift.cxx:88 AliT0CalibSeasonTimeShift.cxx:89 AliT0CalibSeasonTimeShift.cxx:90 AliT0CalibSeasonTimeShift.cxx:91 AliT0CalibSeasonTimeShift.cxx:92 AliT0CalibSeasonTimeShift.cxx:93 AliT0CalibSeasonTimeShift.cxx:94 AliT0CalibSeasonTimeShift.cxx:95 AliT0CalibSeasonTimeShift.cxx:96 AliT0CalibSeasonTimeShift.cxx:97 AliT0CalibSeasonTimeShift.cxx:98 AliT0CalibSeasonTimeShift.cxx:99 AliT0CalibSeasonTimeShift.cxx:100 AliT0CalibSeasonTimeShift.cxx:101 AliT0CalibSeasonTimeShift.cxx:102 AliT0CalibSeasonTimeShift.cxx:103 AliT0CalibSeasonTimeShift.cxx:104 AliT0CalibSeasonTimeShift.cxx:105 AliT0CalibSeasonTimeShift.cxx:106 AliT0CalibSeasonTimeShift.cxx:107 AliT0CalibSeasonTimeShift.cxx:108 AliT0CalibSeasonTimeShift.cxx:109 AliT0CalibSeasonTimeShift.cxx:110 AliT0CalibSeasonTimeShift.cxx:111 AliT0CalibSeasonTimeShift.cxx:112 AliT0CalibSeasonTimeShift.cxx:113 AliT0CalibSeasonTimeShift.cxx:114 AliT0CalibSeasonTimeShift.cxx:115 AliT0CalibSeasonTimeShift.cxx:116 AliT0CalibSeasonTimeShift.cxx:117 AliT0CalibSeasonTimeShift.cxx:118 AliT0CalibSeasonTimeShift.cxx:119 AliT0CalibSeasonTimeShift.cxx:120 AliT0CalibSeasonTimeShift.cxx:121 AliT0CalibSeasonTimeShift.cxx:122 AliT0CalibSeasonTimeShift.cxx:123 AliT0CalibSeasonTimeShift.cxx:124 AliT0CalibSeasonTimeShift.cxx:125 AliT0CalibSeasonTimeShift.cxx:126 AliT0CalibSeasonTimeShift.cxx:127 AliT0CalibSeasonTimeShift.cxx:128 AliT0CalibSeasonTimeShift.cxx:129 AliT0CalibSeasonTimeShift.cxx:130 AliT0CalibSeasonTimeShift.cxx:131 AliT0CalibSeasonTimeShift.cxx:132 AliT0CalibSeasonTimeShift.cxx:133 AliT0CalibSeasonTimeShift.cxx:134 AliT0CalibSeasonTimeShift.cxx:135 AliT0CalibSeasonTimeShift.cxx:136 AliT0CalibSeasonTimeShift.cxx:137 AliT0CalibSeasonTimeShift.cxx:138 AliT0CalibSeasonTimeShift.cxx:139 AliT0CalibSeasonTimeShift.cxx:140 AliT0CalibSeasonTimeShift.cxx:141 AliT0CalibSeasonTimeShift.cxx:142 AliT0CalibSeasonTimeShift.cxx:143 AliT0CalibSeasonTimeShift.cxx:144 AliT0CalibSeasonTimeShift.cxx:145 AliT0CalibSeasonTimeShift.cxx:146 AliT0CalibSeasonTimeShift.cxx:147 AliT0CalibSeasonTimeShift.cxx:148 AliT0CalibSeasonTimeShift.cxx:149 AliT0CalibSeasonTimeShift.cxx:150 AliT0CalibSeasonTimeShift.cxx:151 AliT0CalibSeasonTimeShift.cxx:152 AliT0CalibSeasonTimeShift.cxx:153 AliT0CalibSeasonTimeShift.cxx:154 AliT0CalibSeasonTimeShift.cxx:155 AliT0CalibSeasonTimeShift.cxx:156 AliT0CalibSeasonTimeShift.cxx:157 AliT0CalibSeasonTimeShift.cxx:158 AliT0CalibSeasonTimeShift.cxx:159 AliT0CalibSeasonTimeShift.cxx:160 AliT0CalibSeasonTimeShift.cxx:161 AliT0CalibSeasonTimeShift.cxx:162 AliT0CalibSeasonTimeShift.cxx:163 AliT0CalibSeasonTimeShift.cxx:164 AliT0CalibSeasonTimeShift.cxx:165 AliT0CalibSeasonTimeShift.cxx:166 AliT0CalibSeasonTimeShift.cxx:167 AliT0CalibSeasonTimeShift.cxx:168 AliT0CalibSeasonTimeShift.cxx:169 AliT0CalibSeasonTimeShift.cxx:170 AliT0CalibSeasonTimeShift.cxx:171 AliT0CalibSeasonTimeShift.cxx:172 AliT0CalibSeasonTimeShift.cxx:173 AliT0CalibSeasonTimeShift.cxx:174 AliT0CalibSeasonTimeShift.cxx:175 AliT0CalibSeasonTimeShift.cxx:176 AliT0CalibSeasonTimeShift.cxx:177 AliT0CalibSeasonTimeShift.cxx:178 AliT0CalibSeasonTimeShift.cxx:179 AliT0CalibSeasonTimeShift.cxx:180 AliT0CalibSeasonTimeShift.cxx:181 AliT0CalibSeasonTimeShift.cxx:182 AliT0CalibSeasonTimeShift.cxx:183 AliT0CalibSeasonTimeShift.cxx:184 AliT0CalibSeasonTimeShift.cxx:185 AliT0CalibSeasonTimeShift.cxx:186 AliT0CalibSeasonTimeShift.cxx:187 AliT0CalibSeasonTimeShift.cxx:188 AliT0CalibSeasonTimeShift.cxx:189 AliT0CalibSeasonTimeShift.cxx:190