ROOT logo
AliAnalysisTask *AddTaskTPCcalibResidualPID(TString period = "", Bool_t isPbpOrpPb = kFALSE,
                                            Bool_t producePIDqa = kTRUE, Bool_t useTPCCutMIGeo = kTRUE,
                                            Bool_t writeAdditionalQA = kFALSE,
                                            Bool_t cutOnProdRadiusForV0el = kTRUE,
                                            Bool_t correctdEdxEtaDependence = kFALSE, 
                                            Bool_t correctdEdxMultiplicityDependence = kFALSE,
                                            Bool_t useMCinfo = kTRUE){
  //get the current analysis manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTask_statsQA_TPCresPID", "No analysis manager found.");
    return 0;
  }

  //========= Add task to the ANALYSIS manager =====
  AliTPCcalibResidualPID *task=new AliTPCcalibResidualPID("TPCresPID");
  task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);

  // which THnSparse should be produced
  task->SetProducePIDqa(producePIDqa);
  
  AliESDtrackCuts* esdTrackCuts = 0x0;
  AliESDtrackCuts* esdTrackCutsV0 = 0x0;
  
  if (period.Contains("LHC11") || period.Contains("LHC12") || period.Contains("LHC13")) {
    esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
    esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
    task->SetESDtrackCuts(esdTrackCuts);
    //task->SetESDtrackCutsV0(esdTrackCutsV0);
    printf("Using standard ITS-TPC track cuts 2011.\n");
  }
  else if (period.Contains("LHC10")) {
    esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
    esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
    task->SetESDtrackCuts(esdTrackCuts);
    //task->SetESDtrackCutsV0(esdTrackCutsV0);
    printf("Using standard ITS-TPC track cuts 2010.\n");
  }
  else  {
    esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
    esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
    task->SetESDtrackCuts(esdTrackCuts);
    //task->SetESDtrackCutsV0(esdTrackCutsV0);
    
    printf("WARNING: Cuts not configured for this period!!! Using standard ITS-TPC track cuts 2011\n");
  }
  
  task->SetIsPbpOrpPb(isPbpOrpPb);
  if (task->GetIsPbpOrpPb()) {
    printf("Collision type pPb/Pbp set -> Adapting vertex cuts!\n");
  }
  else  {
    printf("Collision type different from pPb/Pbp -> Using standard vertex cuts!\n");
  }

  task->SetZvtxCutEvent(10.0);
  printf("Cut on z position of vertex: %.2f cm\n", task->GetZvtxCutEvent());
  
  task->SetUseTPCCutMIGeo(useTPCCutMIGeo);
  printf("UseTPCCutMIGeo: %d\n", task->GetUseTPCCutMIGeo());
  
  task->SetWriteAdditionalOutput(writeAdditionalQA);
  
  task->SetCutOnProdRadiusForV0el(cutOnProdRadiusForV0el);
  
  task->SetCorrectdEdxEtaDependence(correctdEdxEtaDependence);
  
  task->SetCorrectdEdxMultiplicityDependence(correctdEdxMultiplicityDependence);
  
  task->SetUseMCinfo(useMCinfo);
  
  printf("Eta correction: %s for this task\n", 
         task->GetCorrectdEdxEtaDependence() ? "enabled (only works if enabled in PIDresponse!)" : "explicitly disabled");
  
  printf("Multiplicity correction: %s for this task\n", 
         task->GetCorrectdEdxMultiplicityDependence() ? "enabled (only works if enabled in PIDresponse!)" : "explicitly disabled");

  printf("Use MC info: %d\n", task->GetUseMCinfo());
  
  printf("WriteAdditionalOutput: %d\n", task->GetWriteAdditionalOutput());
  
  printf("CutOnProdRadiusForV0el: %d\n", task->GetCutOnProdRadiusForV0el());
  
  
  mgr->AddTask(task);

  //================================================
  //              data containers
  //================================================
  //            find input container
  
  
  //            define output containers
  AliAnalysisDataContainer *coutput1 =
    mgr->CreateContainer("TPCresPID", TObjArray::Class(),
                         AliAnalysisManager::kOutputContainer,"TPCresidualPID.root");
  
  //           connect containers
  mgr->ConnectInput  (task,  0, mgr->GetCommonInputContainer() );
  mgr->ConnectOutput (task,  1, coutput1);
  
  if (task->GetWriteAdditionalOutput()) {
    AliAnalysisDataContainer *coutput2 =
      mgr->CreateContainer("TPCresPIDQA", TObjArray::Class(),
                          AliAnalysisManager::kOutputContainer,"TPCresidualPIDQA.root");
    
    AliAnalysisDataContainer *coutput3 =
      mgr->CreateContainer("TPCresPIDTreeEl", TTree::Class(),
                          AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_el.root");
    
    AliAnalysisDataContainer *coutput4 =
      mgr->CreateContainer("TPCresPIDTreePi", TTree::Class(),
                          AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_pi.root");
    
    AliAnalysisDataContainer *coutput5 =
      mgr->CreateContainer("TPCresPIDTreePr", TTree::Class(),
                          AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_pr.root");
    mgr->ConnectOutput (task,  2, coutput2);
    mgr->ConnectOutput (task,  3, coutput3);
    mgr->ConnectOutput (task,  4, coutput4);
    mgr->ConnectOutput (task,  5, coutput5);
  }
  
  return task;
}
 AddTaskTPCcalibResidualPID.C:1
 AddTaskTPCcalibResidualPID.C:2
 AddTaskTPCcalibResidualPID.C:3
 AddTaskTPCcalibResidualPID.C:4
 AddTaskTPCcalibResidualPID.C:5
 AddTaskTPCcalibResidualPID.C:6
 AddTaskTPCcalibResidualPID.C:7
 AddTaskTPCcalibResidualPID.C:8
 AddTaskTPCcalibResidualPID.C:9
 AddTaskTPCcalibResidualPID.C:10
 AddTaskTPCcalibResidualPID.C:11
 AddTaskTPCcalibResidualPID.C:12
 AddTaskTPCcalibResidualPID.C:13
 AddTaskTPCcalibResidualPID.C:14
 AddTaskTPCcalibResidualPID.C:15
 AddTaskTPCcalibResidualPID.C:16
 AddTaskTPCcalibResidualPID.C:17
 AddTaskTPCcalibResidualPID.C:18
 AddTaskTPCcalibResidualPID.C:19
 AddTaskTPCcalibResidualPID.C:20
 AddTaskTPCcalibResidualPID.C:21
 AddTaskTPCcalibResidualPID.C:22
 AddTaskTPCcalibResidualPID.C:23
 AddTaskTPCcalibResidualPID.C:24
 AddTaskTPCcalibResidualPID.C:25
 AddTaskTPCcalibResidualPID.C:26
 AddTaskTPCcalibResidualPID.C:27
 AddTaskTPCcalibResidualPID.C:28
 AddTaskTPCcalibResidualPID.C:29
 AddTaskTPCcalibResidualPID.C:30
 AddTaskTPCcalibResidualPID.C:31
 AddTaskTPCcalibResidualPID.C:32
 AddTaskTPCcalibResidualPID.C:33
 AddTaskTPCcalibResidualPID.C:34
 AddTaskTPCcalibResidualPID.C:35
 AddTaskTPCcalibResidualPID.C:36
 AddTaskTPCcalibResidualPID.C:37
 AddTaskTPCcalibResidualPID.C:38
 AddTaskTPCcalibResidualPID.C:39
 AddTaskTPCcalibResidualPID.C:40
 AddTaskTPCcalibResidualPID.C:41
 AddTaskTPCcalibResidualPID.C:42
 AddTaskTPCcalibResidualPID.C:43
 AddTaskTPCcalibResidualPID.C:44
 AddTaskTPCcalibResidualPID.C:45
 AddTaskTPCcalibResidualPID.C:46
 AddTaskTPCcalibResidualPID.C:47
 AddTaskTPCcalibResidualPID.C:48
 AddTaskTPCcalibResidualPID.C:49
 AddTaskTPCcalibResidualPID.C:50
 AddTaskTPCcalibResidualPID.C:51
 AddTaskTPCcalibResidualPID.C:52
 AddTaskTPCcalibResidualPID.C:53
 AddTaskTPCcalibResidualPID.C:54
 AddTaskTPCcalibResidualPID.C:55
 AddTaskTPCcalibResidualPID.C:56
 AddTaskTPCcalibResidualPID.C:57
 AddTaskTPCcalibResidualPID.C:58
 AddTaskTPCcalibResidualPID.C:59
 AddTaskTPCcalibResidualPID.C:60
 AddTaskTPCcalibResidualPID.C:61
 AddTaskTPCcalibResidualPID.C:62
 AddTaskTPCcalibResidualPID.C:63
 AddTaskTPCcalibResidualPID.C:64
 AddTaskTPCcalibResidualPID.C:65
 AddTaskTPCcalibResidualPID.C:66
 AddTaskTPCcalibResidualPID.C:67
 AddTaskTPCcalibResidualPID.C:68
 AddTaskTPCcalibResidualPID.C:69
 AddTaskTPCcalibResidualPID.C:70
 AddTaskTPCcalibResidualPID.C:71
 AddTaskTPCcalibResidualPID.C:72
 AddTaskTPCcalibResidualPID.C:73
 AddTaskTPCcalibResidualPID.C:74
 AddTaskTPCcalibResidualPID.C:75
 AddTaskTPCcalibResidualPID.C:76
 AddTaskTPCcalibResidualPID.C:77
 AddTaskTPCcalibResidualPID.C:78
 AddTaskTPCcalibResidualPID.C:79
 AddTaskTPCcalibResidualPID.C:80
 AddTaskTPCcalibResidualPID.C:81
 AddTaskTPCcalibResidualPID.C:82
 AddTaskTPCcalibResidualPID.C:83
 AddTaskTPCcalibResidualPID.C:84
 AddTaskTPCcalibResidualPID.C:85
 AddTaskTPCcalibResidualPID.C:86
 AddTaskTPCcalibResidualPID.C:87
 AddTaskTPCcalibResidualPID.C:88
 AddTaskTPCcalibResidualPID.C:89
 AddTaskTPCcalibResidualPID.C:90
 AddTaskTPCcalibResidualPID.C:91
 AddTaskTPCcalibResidualPID.C:92
 AddTaskTPCcalibResidualPID.C:93
 AddTaskTPCcalibResidualPID.C:94
 AddTaskTPCcalibResidualPID.C:95
 AddTaskTPCcalibResidualPID.C:96
 AddTaskTPCcalibResidualPID.C:97
 AddTaskTPCcalibResidualPID.C:98
 AddTaskTPCcalibResidualPID.C:99
 AddTaskTPCcalibResidualPID.C:100
 AddTaskTPCcalibResidualPID.C:101
 AddTaskTPCcalibResidualPID.C:102
 AddTaskTPCcalibResidualPID.C:103
 AddTaskTPCcalibResidualPID.C:104
 AddTaskTPCcalibResidualPID.C:105
 AddTaskTPCcalibResidualPID.C:106
 AddTaskTPCcalibResidualPID.C:107
 AddTaskTPCcalibResidualPID.C:108
 AddTaskTPCcalibResidualPID.C:109
 AddTaskTPCcalibResidualPID.C:110
 AddTaskTPCcalibResidualPID.C:111
 AddTaskTPCcalibResidualPID.C:112
 AddTaskTPCcalibResidualPID.C:113
 AddTaskTPCcalibResidualPID.C:114
 AddTaskTPCcalibResidualPID.C:115
 AddTaskTPCcalibResidualPID.C:116
 AddTaskTPCcalibResidualPID.C:117
 AddTaskTPCcalibResidualPID.C:118
 AddTaskTPCcalibResidualPID.C:119
 AddTaskTPCcalibResidualPID.C:120
 AddTaskTPCcalibResidualPID.C:121
 AddTaskTPCcalibResidualPID.C:122
 AddTaskTPCcalibResidualPID.C:123
 AddTaskTPCcalibResidualPID.C:124
 AddTaskTPCcalibResidualPID.C:125
 AddTaskTPCcalibResidualPID.C:126