ROOT logo
AliTOFAnalysisTaskCalibTree *AddTOFAnalysisTaskCalibTree()
{

  // check analysis manager 
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTOFAnalysisTaskCalibTree", "cannot get analysis manager");
    return NULL;
  }

  //check input event handler
  if (!mgr->GetInputEventHandler()) {
    Error("AddTOFAnalysisTaskCalibTree", "cannot get input event handler");
    return NULL;
  }
  
  // check input data type 
  TString str = mgr->GetInputEventHandler()->GetDataType();
  if (str.CompareTo("ESD")) {
    Error("AddTOFAnalysisTaskCalibTree", "input data type is not \"ESD\"");
    return NULL;
  }

  // get common input data container
  AliAnalysisDataContainer *inputc = mgr->GetCommonInputContainer();
  if (!inputc) {
    Error("AddTOFAnalysisTaskCalibTree", "cannot get common input container");
    return NULL;
  }
  
  // setup output event handler

  // old way: expecting to use AOD tree
  // AliAODHandler *outputh = (AliAODHandler *)mgr->GetOutputEventHandler();
  // outputh->SetCreateNonStandardAOD();
  // outputh->SetOutputFileName("TOFcalibTree.root");

  // new way:
  AliAnalysisDataContainer *coutput   = mgr->CreateContainer(Form("aodTree"), TTree::Class(), AliAnalysisManager::kOutputContainer, "TOFcalibTree.root"); // tree
  if (!coutput) {
    Error("AddTOFAnalysisTaskCalibTree", "cannot create output container");
    return NULL;
  }

  //  create task and connect input/output 
  AliTOFAnalysisTaskCalibTree *task = new AliTOFAnalysisTaskCalibTree();
  mgr->ConnectInput(task, 0, inputc);
  mgr->ConnectOutput(task, 1, coutput);

  // setup task 
  task->SetEventSelectionFlag(kFALSE);
  task->SetVertexSelectionFlag(kTRUE);
  task->SetVertexCut(50.0);
  task->SetDiscardPileupEventFlag(kFALSE);
  task->SetPrimaryDCASelectionFlag(kFALSE);
  task->SetCalibrateTOFsignal(kTRUE);
  task->SetComputeT0TOF(kTRUE);
  task->SetUseT0TOF(kFALSE);
  task->SetUseLHCClockPhase(kFALSE);
  //  task->SetSpecificStorageParOffline("alien://?folder=/alice/cern.ch/user/r/rpreghen/OCDB");
  //  task->SetSpecificStorageRunParams("alien://?folder=/alice/cern.ch/user/r/rpreghen/OCDB");

  // setup event cuts 
  task->GetEventCuts()->SetAnalyzeMC(kFALSE);

  // setup TOF calib 
  task->GetTOFcalib()->SetRemoveMeanT0(kFALSE);
  task->GetTOFcalib()->SetCalibrateTOFsignal(kTRUE);
  task->GetTOFcalib()->SetCorrectTExp(kFALSE);

  //setup resolution 
  Double_t timeReso = 100.;

  // setup TOF response 
  //task->GetESDpid()->GetTOFResponse().SetTimeResolution(timeReso);

  // setup TOF-T0 maker 
  task->GetTOFT0maker()->SetTimeResolution(timeReso);

  // setup track cuts 
  AliESDtrackCuts *trackCuts = task->GetTrackCuts();
  trackCuts->SetPtRange(0.15, 10.);
  trackCuts->SetEtaRange(-1.0, 1.0);
  trackCuts->SetRequireITSRefit(kTRUE);
  trackCuts->SetMinNClustersITS(1);
  //  trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  trackCuts->SetRequireTPCRefit(kTRUE);
  trackCuts->SetMinNClustersTPC(70);
  trackCuts->SetMaxChi2PerClusterTPC(4.);
  trackCuts->SetAcceptKinkDaughters(kFALSE);
  trackCuts->SetMaxDCAToVertexZ(3.2);
  trackCuts->SetMaxDCAToVertexXY(2.4);
  trackCuts->SetDCAToVertex2D(kTRUE);

  // return task 
  return task;

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