ROOT logo
void UpdateVZEROTimeDelaysEntries(Int_t year = 2010, Int_t period = 0, Bool_t local = kFALSE)
{
  Int_t runRange[2];
  if (year == 2009) {
    runRange[0] = 0;
    runRange[1] = 105268;
  }
  else if (year == 2010) {
    if (period == 0) {
      runRange[0] = 106031;
      runRange[1] = 116353;
    }
    else if (period == 1) {
      runRange[0] = 116354;
      runRange[1] = 118285;
    }
    else if (period == 2) {
      runRange[0] = 118486;
      runRange[1] = 118556;
    }
    else {
      printf("Invalid run period...\n");
      return;
    }
  }
  else {
    printf("Invalid year...\n");
    return;
  }

  AliCDBManager *man = AliCDBManager::Instance();
  man->SetDefaultStorage(Form("alien://?folder=/alice/data/%d/OCDB",year));

  man->SetRun(runRange[1]);

  AliCDBEntry *entry = man->Get("VZERO/Calib/Data");
  AliVZEROCalibData *calibda = (AliVZEROCalibData*)entry->GetObject();
  printf("Year %d Period %d:\n",year,period);
  printf("Calib:\n");
  for(Int_t i = 0; i < 64; ++i) printf("%.2f ",calibda->GetTimeOffset(i));
  printf("\n");
  entry = man->Get("VZERO/Calib/TimeDelays");
  TH1F *delays = (TH1F*)entry->GetObject();
  TH1F *delaysNew = new TH1F(*delays);
  printf("Delay:\n");
  for(Int_t i = 0; i < 64; ++i) printf("%.2f ",delaysNew->GetBinContent(i+1));
  printf("\n");
  for(Int_t i = 0; i < 64; ++i) {
    if (year == 2009) delaysNew->SetBinContent(i+1,delays->GetBinContent(i+1)+5.0);
    if (year == 2010 && period == 0) delaysNew->SetBinContent(i+1,5.0);
    if (year == 2010 && (period == 1 || period == 2)) {
      Int_t board = i / 8;
      Int_t channel = i % 8;
      Int_t j = AliVZEROCalibData::GetOfflineChannelNumber(board,channel);
      delaysNew->SetBinContent(j+1,
			       delays->GetBinContent(j+1)+
			       calibda->GetTimeOffset(i)-
			       calibda->GetTimeOffset(j));
    }
  }
  printf("CorrDelay:\n");
  for(Int_t i = 0; i < 64; ++i) printf("%.2f ",delaysNew->GetBinContent(i+1));
  printf("\n");

  if (local) man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");

  {
    AliCDBMetaData *md= new AliCDBMetaData(); // metaData describing the object
    md->SetResponsible("Brigitte Cheynis");
    md->SetBeamPeriod(0);
    md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
    md->SetComment(Form("Time delays channel by channel (corrected values for year %d, period %d)",year,period));
    md->PrintMetaData();

    AliCDBStorage *storLoc = man->GetDefaultStorage();
    AliCDBId id("VZERO/Calib/TimeDelays",runRange[0],runRange[1]);

    storLoc->Put(delaysNew, id, md);

    storLoc->Delete();
    delete md;
  }

}
 UpdateVZEROTimeDelaysEntries.C:1
 UpdateVZEROTimeDelaysEntries.C:2
 UpdateVZEROTimeDelaysEntries.C:3
 UpdateVZEROTimeDelaysEntries.C:4
 UpdateVZEROTimeDelaysEntries.C:5
 UpdateVZEROTimeDelaysEntries.C:6
 UpdateVZEROTimeDelaysEntries.C:7
 UpdateVZEROTimeDelaysEntries.C:8
 UpdateVZEROTimeDelaysEntries.C:9
 UpdateVZEROTimeDelaysEntries.C:10
 UpdateVZEROTimeDelaysEntries.C:11
 UpdateVZEROTimeDelaysEntries.C:12
 UpdateVZEROTimeDelaysEntries.C:13
 UpdateVZEROTimeDelaysEntries.C:14
 UpdateVZEROTimeDelaysEntries.C:15
 UpdateVZEROTimeDelaysEntries.C:16
 UpdateVZEROTimeDelaysEntries.C:17
 UpdateVZEROTimeDelaysEntries.C:18
 UpdateVZEROTimeDelaysEntries.C:19
 UpdateVZEROTimeDelaysEntries.C:20
 UpdateVZEROTimeDelaysEntries.C:21
 UpdateVZEROTimeDelaysEntries.C:22
 UpdateVZEROTimeDelaysEntries.C:23
 UpdateVZEROTimeDelaysEntries.C:24
 UpdateVZEROTimeDelaysEntries.C:25
 UpdateVZEROTimeDelaysEntries.C:26
 UpdateVZEROTimeDelaysEntries.C:27
 UpdateVZEROTimeDelaysEntries.C:28
 UpdateVZEROTimeDelaysEntries.C:29
 UpdateVZEROTimeDelaysEntries.C:30
 UpdateVZEROTimeDelaysEntries.C:31
 UpdateVZEROTimeDelaysEntries.C:32
 UpdateVZEROTimeDelaysEntries.C:33
 UpdateVZEROTimeDelaysEntries.C:34
 UpdateVZEROTimeDelaysEntries.C:35
 UpdateVZEROTimeDelaysEntries.C:36
 UpdateVZEROTimeDelaysEntries.C:37
 UpdateVZEROTimeDelaysEntries.C:38
 UpdateVZEROTimeDelaysEntries.C:39
 UpdateVZEROTimeDelaysEntries.C:40
 UpdateVZEROTimeDelaysEntries.C:41
 UpdateVZEROTimeDelaysEntries.C:42
 UpdateVZEROTimeDelaysEntries.C:43
 UpdateVZEROTimeDelaysEntries.C:44
 UpdateVZEROTimeDelaysEntries.C:45
 UpdateVZEROTimeDelaysEntries.C:46
 UpdateVZEROTimeDelaysEntries.C:47
 UpdateVZEROTimeDelaysEntries.C:48
 UpdateVZEROTimeDelaysEntries.C:49
 UpdateVZEROTimeDelaysEntries.C:50
 UpdateVZEROTimeDelaysEntries.C:51
 UpdateVZEROTimeDelaysEntries.C:52
 UpdateVZEROTimeDelaysEntries.C:53
 UpdateVZEROTimeDelaysEntries.C:54
 UpdateVZEROTimeDelaysEntries.C:55
 UpdateVZEROTimeDelaysEntries.C:56
 UpdateVZEROTimeDelaysEntries.C:57
 UpdateVZEROTimeDelaysEntries.C:58
 UpdateVZEROTimeDelaysEntries.C:59
 UpdateVZEROTimeDelaysEntries.C:60
 UpdateVZEROTimeDelaysEntries.C:61
 UpdateVZEROTimeDelaysEntries.C:62
 UpdateVZEROTimeDelaysEntries.C:63
 UpdateVZEROTimeDelaysEntries.C:64
 UpdateVZEROTimeDelaysEntries.C:65
 UpdateVZEROTimeDelaysEntries.C:66
 UpdateVZEROTimeDelaysEntries.C:67
 UpdateVZEROTimeDelaysEntries.C:68
 UpdateVZEROTimeDelaysEntries.C:69
 UpdateVZEROTimeDelaysEntries.C:70
 UpdateVZEROTimeDelaysEntries.C:71
 UpdateVZEROTimeDelaysEntries.C:72
 UpdateVZEROTimeDelaysEntries.C:73
 UpdateVZEROTimeDelaysEntries.C:74
 UpdateVZEROTimeDelaysEntries.C:75
 UpdateVZEROTimeDelaysEntries.C:76
 UpdateVZEROTimeDelaysEntries.C:77
 UpdateVZEROTimeDelaysEntries.C:78
 UpdateVZEROTimeDelaysEntries.C:79
 UpdateVZEROTimeDelaysEntries.C:80
 UpdateVZEROTimeDelaysEntries.C:81
 UpdateVZEROTimeDelaysEntries.C:82
 UpdateVZEROTimeDelaysEntries.C:83
 UpdateVZEROTimeDelaysEntries.C:84
 UpdateVZEROTimeDelaysEntries.C:85