ROOT logo


void    readCDB (TObject *task1);
//_____________________________________________________________________________
AliAnalysisTask  *AddTaskT0Calib(Int_t runNumber)
{
  //
  // add calibration task
  //
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskT0Calib", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // check the input handler
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskT0Calib", "This task requires an input event handler");
    return NULL;
  }  

  // set TPC OCDB parameters
  //ConfigOCDB(runNumber);

  // setup task
  AliT0CalibOffsetChannelsTask  *task1 = new AliT0CalibOffsetChannelsTask("CalibObjectsTrain1");
  readCDB(task1, runNumber);
  mgr->AddTask(task1);
  
  //  AliT0AnalysisTaskQA * task2 = new AliT0AnalysisTaskQA("QA task");
  //    mgr->AddTask(task2);

  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
  if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(), 
                                      AliAnalysisManager::kInputContainer);
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("T0Calib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");  

  mgr->ConnectInput(task1,0,cinput1);
  mgr->ConnectOutput(task1,1,coutput1);
  return task1;
}
//_____________________________________________________________________________
void    readCDB (TObject *task1,  Int_t runNumber) {

  Float_t zero_timecdb[24]={0};
  Float_t *timecdb = zero_timecdb;
  Float_t cfdvalue[24][5];
  for(Int_t i=0; i<24; i++) 
    for (Int_t i0=0; i0<5; i0++)
      cfdvalue[i][i0] = 0;
      
  Float_t zero_shiftcdb[4]={0};
  Float_t *shiftcdb = zero_shiftcdb;
  AliT0CalibOffsetChannelsTask *mytask = (AliT0CalibOffsetChannelsTask*)task1;

  AliCDBManager* man = AliCDBManager::Instance();
  AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
  if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
  AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();
  Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;

  AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
  if (!entry1) AliFatal("CTP time-alignment is not found in OCDB !");
  AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();
  l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);
 
  AliCDBEntry *entry4 = AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase");
  if (!entry4) AliFatal("LHC clock-phase shift is not found in OCDB !");
  AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject();
  Float_t fGRPdelays = l1Delay - phase->GetMeanPhase();

  AliCDBEntry *entryCalib0 = man->Get("T0/Calib/Latency");
  if(!entryCalib0) {
    AliError::(Form("Cannot find any AliCDBEntry for [Calib, Latency]!"));
    return;
  }
  AliT0CalibLatency *calibda=(AliT0CalibLatency*)entryCalib0->GetObject();
  Float_t fLatencyL1 = calibda->GetLatencyL1();
  Float_t fLatencyHPTDC = calibda->GetLatencyHPTDC();
 
  AliCDBEntry *entryCalib1 = man->Get("T0/Calib/TimeDelay");
  if(!entryCalib1) {
    AliError::(Form("Cannot find any AliCDBEntry for [Calib, TimeDelay]!"));
    return;
  }
  else
    {
      AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entryCalib1->GetObject();
      timecdb = clb->GetTimeEq();
      for(Int_t i=0; i<24; i++) 
	for (Int_t i0=0; i0<5; i0++){
	  cfdvalue[i][i0] = clb->GetCFDvalue(i, i0);
	}
    }
 
  for (Int_t i=0; i<24; i++) {
    Float_t cfdmean = cfdvalue[i][0];
    if( cfdvalue[i][0] < 500 || cfdvalue[i][0] > 50000) cfdmean = ( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
     mytask->SetCFDvalue(i, cfdmean);
    mytask->SetTimeEq(i, timecdb[i]);
  } 

  AliCDBEntry *entryCalib2 = man->Get("T0/Calib/TimeAdjust");
  if(!entryCalib2) {
     AliError(Form("Cannot find any AliCDBEntry for [Calib, TimeAdjust]!"));
  }
 else
    {
      AliT0CalibSeasonTimeShift *clb1 = (AliT0CalibSeasonTimeShift*)entryCalib2->GetObject();
      shiftcdb = clb1->GetT0Means();
    }
  
  for (Int_t i=0; i<4; i++)  mytask->SetT0Means(i,shiftcdb[i]);
}
 AddTaskT0Calib.C:1
 AddTaskT0Calib.C:2
 AddTaskT0Calib.C:3
 AddTaskT0Calib.C:4
 AddTaskT0Calib.C:5
 AddTaskT0Calib.C:6
 AddTaskT0Calib.C:7
 AddTaskT0Calib.C:8
 AddTaskT0Calib.C:9
 AddTaskT0Calib.C:10
 AddTaskT0Calib.C:11
 AddTaskT0Calib.C:12
 AddTaskT0Calib.C:13
 AddTaskT0Calib.C:14
 AddTaskT0Calib.C:15
 AddTaskT0Calib.C:16
 AddTaskT0Calib.C:17
 AddTaskT0Calib.C:18
 AddTaskT0Calib.C:19
 AddTaskT0Calib.C:20
 AddTaskT0Calib.C:21
 AddTaskT0Calib.C:22
 AddTaskT0Calib.C:23
 AddTaskT0Calib.C:24
 AddTaskT0Calib.C:25
 AddTaskT0Calib.C:26
 AddTaskT0Calib.C:27
 AddTaskT0Calib.C:28
 AddTaskT0Calib.C:29
 AddTaskT0Calib.C:30
 AddTaskT0Calib.C:31
 AddTaskT0Calib.C:32
 AddTaskT0Calib.C:33
 AddTaskT0Calib.C:34
 AddTaskT0Calib.C:35
 AddTaskT0Calib.C:36
 AddTaskT0Calib.C:37
 AddTaskT0Calib.C:38
 AddTaskT0Calib.C:39
 AddTaskT0Calib.C:40
 AddTaskT0Calib.C:41
 AddTaskT0Calib.C:42
 AddTaskT0Calib.C:43
 AddTaskT0Calib.C:44
 AddTaskT0Calib.C:45
 AddTaskT0Calib.C:46
 AddTaskT0Calib.C:47
 AddTaskT0Calib.C:48
 AddTaskT0Calib.C:49
 AddTaskT0Calib.C:50
 AddTaskT0Calib.C:51
 AddTaskT0Calib.C:52
 AddTaskT0Calib.C:53
 AddTaskT0Calib.C:54
 AddTaskT0Calib.C:55
 AddTaskT0Calib.C:56
 AddTaskT0Calib.C:57
 AddTaskT0Calib.C:58
 AddTaskT0Calib.C:59
 AddTaskT0Calib.C:60
 AddTaskT0Calib.C:61
 AddTaskT0Calib.C:62
 AddTaskT0Calib.C:63
 AddTaskT0Calib.C:64
 AddTaskT0Calib.C:65
 AddTaskT0Calib.C:66
 AddTaskT0Calib.C:67
 AddTaskT0Calib.C:68
 AddTaskT0Calib.C:69
 AddTaskT0Calib.C:70
 AddTaskT0Calib.C:71
 AddTaskT0Calib.C:72
 AddTaskT0Calib.C:73
 AddTaskT0Calib.C:74
 AddTaskT0Calib.C:75
 AddTaskT0Calib.C:76
 AddTaskT0Calib.C:77
 AddTaskT0Calib.C:78
 AddTaskT0Calib.C:79
 AddTaskT0Calib.C:80
 AddTaskT0Calib.C:81
 AddTaskT0Calib.C:82
 AddTaskT0Calib.C:83
 AddTaskT0Calib.C:84
 AddTaskT0Calib.C:85
 AddTaskT0Calib.C:86
 AddTaskT0Calib.C:87
 AddTaskT0Calib.C:88
 AddTaskT0Calib.C:89
 AddTaskT0Calib.C:90
 AddTaskT0Calib.C:91
 AddTaskT0Calib.C:92
 AddTaskT0Calib.C:93
 AddTaskT0Calib.C:94
 AddTaskT0Calib.C:95
 AddTaskT0Calib.C:96
 AddTaskT0Calib.C:97
 AddTaskT0Calib.C:98
 AddTaskT0Calib.C:99
 AddTaskT0Calib.C:100
 AddTaskT0Calib.C:101
 AddTaskT0Calib.C:102
 AddTaskT0Calib.C:103
 AddTaskT0Calib.C:104
 AddTaskT0Calib.C:105
 AddTaskT0Calib.C:106
 AddTaskT0Calib.C:107
 AddTaskT0Calib.C:108
 AddTaskT0Calib.C:109
 AddTaskT0Calib.C:110
 AddTaskT0Calib.C:111
 AddTaskT0Calib.C:112
 AddTaskT0Calib.C:113
 AddTaskT0Calib.C:114
 AddTaskT0Calib.C:115