ROOT logo
TH1F *
ReadT0FillReference(Int_t run, Int_t year = 2010)
{

  AliCDBManager *cdb = AliCDBManager::Instance();
  cdb->SetDefaultStorage(Form("alien://folder=/alice/data/%d/Reference", year));
  cdb->SetRun(run);
  AliCDBEntry *cdbe = cdb->Get("TOF/Calib/T0Fill");
  TH1F *hT0Fill = (TH1F *)cdbe->GetObject();

  /* rebin until maximum bin has required minimum entries */
  Int_t maxBin = hT0Fill->GetMaximumBin();
  Float_t maxBinContent = hT0Fill->GetBinContent(maxBin);
  Float_t binWidth = hT0Fill->GetBinWidth(maxBin);
  while (maxBinContent < 400 && binWidth < 90.) {
    hT0Fill->Rebin(2);
    maxBin = hT0Fill->GetMaximumBin();
    maxBinContent = hT0Fill->GetBinContent(maxBin);
    binWidth = hT0Fill->GetBinWidth(maxBin);
  }
  Float_t maxBinCenter = hT0Fill->GetBinCenter(maxBin);

  /* rough fit of the edge */
  TF1 *gaus = (TF1 *)gROOT->GetFunction("gaus");
  gaus->SetParameter(1, maxBinCenter);
  Float_t fitMin = maxBinCenter - 100.; /* fit from 0.1 ns before max */
  Float_t fitMax = maxBinCenter + 100.; /* fit until 0.1 ns above max */
  hT0Fill->Fit("gaus", "q0", "", fitMin, fitMax);
  /* better fit of the edge */
  Float_t mean, sigma;
  for (Int_t istep = 0; istep < 10; istep++) {
    mean = gaus->GetParameter(1);
    sigma = gaus->GetParameter(2);
    fitMin = mean - 1. * sigma;
    fitMax = mean + 0.1 * sigma;
    hT0Fill->Fit("gaus", "q", "", fitMin, fitMax);
  }
  /* print params */
  mean = gaus->GetParameter(1);
  sigma = gaus->GetParameter(2);
  Float_t meane = gaus->GetParError(1);
  Float_t sigmae = gaus->GetParError(2);
  printf("edge fit: mean  = %f +- %f ps\n", mean, meane);
  printf("edge fit: sigma = %f +- %f ps\n", sigma, sigmae);

  hT0Fill->DrawCopy();
  gaus->Draw("same");

  return hT0Fill;

}
 ReadT0FillReference.C:1
 ReadT0FillReference.C:2
 ReadT0FillReference.C:3
 ReadT0FillReference.C:4
 ReadT0FillReference.C:5
 ReadT0FillReference.C:6
 ReadT0FillReference.C:7
 ReadT0FillReference.C:8
 ReadT0FillReference.C:9
 ReadT0FillReference.C:10
 ReadT0FillReference.C:11
 ReadT0FillReference.C:12
 ReadT0FillReference.C:13
 ReadT0FillReference.C:14
 ReadT0FillReference.C:15
 ReadT0FillReference.C:16
 ReadT0FillReference.C:17
 ReadT0FillReference.C:18
 ReadT0FillReference.C:19
 ReadT0FillReference.C:20
 ReadT0FillReference.C:21
 ReadT0FillReference.C:22
 ReadT0FillReference.C:23
 ReadT0FillReference.C:24
 ReadT0FillReference.C:25
 ReadT0FillReference.C:26
 ReadT0FillReference.C:27
 ReadT0FillReference.C:28
 ReadT0FillReference.C:29
 ReadT0FillReference.C:30
 ReadT0FillReference.C:31
 ReadT0FillReference.C:32
 ReadT0FillReference.C:33
 ReadT0FillReference.C:34
 ReadT0FillReference.C:35
 ReadT0FillReference.C:36
 ReadT0FillReference.C:37
 ReadT0FillReference.C:38
 ReadT0FillReference.C:39
 ReadT0FillReference.C:40
 ReadT0FillReference.C:41
 ReadT0FillReference.C:42
 ReadT0FillReference.C:43
 ReadT0FillReference.C:44
 ReadT0FillReference.C:45
 ReadT0FillReference.C:46
 ReadT0FillReference.C:47
 ReadT0FillReference.C:48
 ReadT0FillReference.C:49
 ReadT0FillReference.C:50
 ReadT0FillReference.C:51
 ReadT0FillReference.C:52