ROOT logo
AliAnalysisTask *AddTaskTPCPIDEtaTree(TString period = "", Bool_t isPbpOrpPb = kFALSE, Bool_t storeMultiplicity = kTRUE,
                                      Bool_t correctdEdxEtaDependence = kFALSE, Bool_t correctdEdxMultiplicityDependence = kFALSE,
                                      Bool_t setDoAdditionalQA = kFALSE,
                                      Int_t tpcCutType = AliTPCPIDBase::kTPCCutMIGeo /*AliTPCPIDBase::kTPCnclCut*/,
                                      Bool_t usePhiCut = kFALSE){
  //get the current analysis manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTask_bhess_PIDetaTree", "No analysis manager found.");
    return 0;
  }
  
  //========= Add task to the ANALYSIS manager =====
  AliTPCPIDEtaTree *task = new AliTPCPIDEtaTree("TPCPIDEtaTree");
  task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);
  
  //
  // Add track filters
  //
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  AliESDtrackCuts* esdTrackCutsL = 0x0;
  
  printf("\nSettings:\n");
  if (period.Contains("LHC11") || period.Contains("LHC12") || period.Contains("LHC13")) {
    esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
    printf("Using standard ITS-TPC track cuts 2011.\n");
  }
  else if (period.Contains("LHC10")) {
    esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
    printf("Using standard ITS-TPC track cuts 2010.\n");
  }
  else  {
    esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
    printf("WARNING: Cuts not configured for this period!!! Using standard ITS-TPC track cuts 2011\n");
  }
  
  task->SetStoreMultiplicity(storeMultiplicity);
  if (task->GetStoreMultiplicity()) {
    printf("Storing multiplicity in tree!\n");
  }
  else  {
    printf("NOT storing multiplicity in tree!\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");
  }
  
  
  trackFilter->AddCuts(esdTrackCutsL);
  task->SetTrackFilter(trackFilter);
  task->SetUsePhiCut(usePhiCut);
  task->SetTPCcutType(tpcCutType);
  
  printf("UsePhiCut: %d\n", task->GetUsePhiCut());
  printf("UseTPCCutMIGeo: %d\n", task->GetUseTPCCutMIGeo());
  printf("UseTPCnclCut: %d\n", task->GetUseTPCnclCut());
  
  
  task->SetDoAdditionalQA(setDoAdditionalQA);
  
  if (task->GetDoAdditionalQA())
    printf("Storing histos for additional QA!\n");
  else
    printf("NOT storing histos for additional QA!\n");
  
  task->SetZvtxCutEvent(10.0);
  printf("Cut on z position of vertex: %.2f cm\n", task->GetZvtxCutEvent());
  
  task->SetEtaCut(0.9);
  printf("EtaCut: %.2f\n", task->GetEtaCut());
  
  task->SetPtpcPionCut(0.6);
  printf("P_TPC_Pion cut: %.2f\n", task->GetPtpcPionCut());
  
  task->SetStoreNumOfSubthresholdclusters(kTRUE);
  printf("Store num subthreshold clusters: %d\n", task->GetStoreNumOfSubthresholdclusters());
  
  task->SetStoreNumClustersInActiveVolume(kTRUE);
  printf("Store num clusters in active volume: %d\n", task->GetStoreNumClustersInActiveVolume());
  
  task->SetCorrectdEdxEtaDependence(correctdEdxEtaDependence);  
  task->SetCorrectdEdxMultiplicityDependence(correctdEdxMultiplicityDependence);
  
  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\n", 
         task->GetCorrectdEdxMultiplicityDependence() ? "enabled (only works if enabled in PIDresponse!)" : "explicitly disabled");
  
  mgr->AddTask(task);


  //================================================
  //              data containers
  //================================================
  //            find input container
  //below the trunk version
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();

  //dumm output container
  AliAnalysisDataContainer *coutput0 =
      mgr->CreateContainer("TPCPIDEtaTree_tree",
                           TTree::Class(),
                           AliAnalysisManager::kExchangeContainer,
                           "TPCPIDEtaTree_default");

  //define output containers, please use 'username'_'somename'
  AliAnalysisDataContainer *coutput1 = 
      mgr->CreateContainer("TPCPIDEtaTree", TTree::Class(),
                           AliAnalysisManager::kOutputContainer,"TPCPIDEtaTree.root");
  AliAnalysisDataContainer *coutput2 = 
      mgr->CreateContainer("TPCPIDEtaTreePions", TTree::Class(),
                           AliAnalysisManager::kOutputContainer,"TPCPIDEtaTreePions.root");
  AliAnalysisDataContainer *coutput3 = 
      mgr->CreateContainer("TPCPIDEtaTreeAdditionalQA", TObjArray::Class(),
                           AliAnalysisManager::kOutputContainer,"TPCPIDEtaTreeAddionalQA.root");

  //connect containers
  mgr->ConnectInput(task,  0, cinput );
  mgr->ConnectOutput(task,  0, coutput0);
  mgr->ConnectOutput(task,  1, coutput1);
  mgr->ConnectOutput(task, 2, coutput2); 
  mgr->ConnectOutput(task, 3, coutput3); 

  return task;
}
 AddTaskTPCPIDEtaTree.C:1
 AddTaskTPCPIDEtaTree.C:2
 AddTaskTPCPIDEtaTree.C:3
 AddTaskTPCPIDEtaTree.C:4
 AddTaskTPCPIDEtaTree.C:5
 AddTaskTPCPIDEtaTree.C:6
 AddTaskTPCPIDEtaTree.C:7
 AddTaskTPCPIDEtaTree.C:8
 AddTaskTPCPIDEtaTree.C:9
 AddTaskTPCPIDEtaTree.C:10
 AddTaskTPCPIDEtaTree.C:11
 AddTaskTPCPIDEtaTree.C:12
 AddTaskTPCPIDEtaTree.C:13
 AddTaskTPCPIDEtaTree.C:14
 AddTaskTPCPIDEtaTree.C:15
 AddTaskTPCPIDEtaTree.C:16
 AddTaskTPCPIDEtaTree.C:17
 AddTaskTPCPIDEtaTree.C:18
 AddTaskTPCPIDEtaTree.C:19
 AddTaskTPCPIDEtaTree.C:20
 AddTaskTPCPIDEtaTree.C:21
 AddTaskTPCPIDEtaTree.C:22
 AddTaskTPCPIDEtaTree.C:23
 AddTaskTPCPIDEtaTree.C:24
 AddTaskTPCPIDEtaTree.C:25
 AddTaskTPCPIDEtaTree.C:26
 AddTaskTPCPIDEtaTree.C:27
 AddTaskTPCPIDEtaTree.C:28
 AddTaskTPCPIDEtaTree.C:29
 AddTaskTPCPIDEtaTree.C:30
 AddTaskTPCPIDEtaTree.C:31
 AddTaskTPCPIDEtaTree.C:32
 AddTaskTPCPIDEtaTree.C:33
 AddTaskTPCPIDEtaTree.C:34
 AddTaskTPCPIDEtaTree.C:35
 AddTaskTPCPIDEtaTree.C:36
 AddTaskTPCPIDEtaTree.C:37
 AddTaskTPCPIDEtaTree.C:38
 AddTaskTPCPIDEtaTree.C:39
 AddTaskTPCPIDEtaTree.C:40
 AddTaskTPCPIDEtaTree.C:41
 AddTaskTPCPIDEtaTree.C:42
 AddTaskTPCPIDEtaTree.C:43
 AddTaskTPCPIDEtaTree.C:44
 AddTaskTPCPIDEtaTree.C:45
 AddTaskTPCPIDEtaTree.C:46
 AddTaskTPCPIDEtaTree.C:47
 AddTaskTPCPIDEtaTree.C:48
 AddTaskTPCPIDEtaTree.C:49
 AddTaskTPCPIDEtaTree.C:50
 AddTaskTPCPIDEtaTree.C:51
 AddTaskTPCPIDEtaTree.C:52
 AddTaskTPCPIDEtaTree.C:53
 AddTaskTPCPIDEtaTree.C:54
 AddTaskTPCPIDEtaTree.C:55
 AddTaskTPCPIDEtaTree.C:56
 AddTaskTPCPIDEtaTree.C:57
 AddTaskTPCPIDEtaTree.C:58
 AddTaskTPCPIDEtaTree.C:59
 AddTaskTPCPIDEtaTree.C:60
 AddTaskTPCPIDEtaTree.C:61
 AddTaskTPCPIDEtaTree.C:62
 AddTaskTPCPIDEtaTree.C:63
 AddTaskTPCPIDEtaTree.C:64
 AddTaskTPCPIDEtaTree.C:65
 AddTaskTPCPIDEtaTree.C:66
 AddTaskTPCPIDEtaTree.C:67
 AddTaskTPCPIDEtaTree.C:68
 AddTaskTPCPIDEtaTree.C:69
 AddTaskTPCPIDEtaTree.C:70
 AddTaskTPCPIDEtaTree.C:71
 AddTaskTPCPIDEtaTree.C:72
 AddTaskTPCPIDEtaTree.C:73
 AddTaskTPCPIDEtaTree.C:74
 AddTaskTPCPIDEtaTree.C:75
 AddTaskTPCPIDEtaTree.C:76
 AddTaskTPCPIDEtaTree.C:77
 AddTaskTPCPIDEtaTree.C:78
 AddTaskTPCPIDEtaTree.C:79
 AddTaskTPCPIDEtaTree.C:80
 AddTaskTPCPIDEtaTree.C:81
 AddTaskTPCPIDEtaTree.C:82
 AddTaskTPCPIDEtaTree.C:83
 AddTaskTPCPIDEtaTree.C:84
 AddTaskTPCPIDEtaTree.C:85
 AddTaskTPCPIDEtaTree.C:86
 AddTaskTPCPIDEtaTree.C:87
 AddTaskTPCPIDEtaTree.C:88
 AddTaskTPCPIDEtaTree.C:89
 AddTaskTPCPIDEtaTree.C:90
 AddTaskTPCPIDEtaTree.C:91
 AddTaskTPCPIDEtaTree.C:92
 AddTaskTPCPIDEtaTree.C:93
 AddTaskTPCPIDEtaTree.C:94
 AddTaskTPCPIDEtaTree.C:95
 AddTaskTPCPIDEtaTree.C:96
 AddTaskTPCPIDEtaTree.C:97
 AddTaskTPCPIDEtaTree.C:98
 AddTaskTPCPIDEtaTree.C:99
 AddTaskTPCPIDEtaTree.C:100
 AddTaskTPCPIDEtaTree.C:101
 AddTaskTPCPIDEtaTree.C:102
 AddTaskTPCPIDEtaTree.C:103
 AddTaskTPCPIDEtaTree.C:104
 AddTaskTPCPIDEtaTree.C:105
 AddTaskTPCPIDEtaTree.C:106
 AddTaskTPCPIDEtaTree.C:107
 AddTaskTPCPIDEtaTree.C:108
 AddTaskTPCPIDEtaTree.C:109
 AddTaskTPCPIDEtaTree.C:110
 AddTaskTPCPIDEtaTree.C:111
 AddTaskTPCPIDEtaTree.C:112
 AddTaskTPCPIDEtaTree.C:113
 AddTaskTPCPIDEtaTree.C:114
 AddTaskTPCPIDEtaTree.C:115
 AddTaskTPCPIDEtaTree.C:116
 AddTaskTPCPIDEtaTree.C:117
 AddTaskTPCPIDEtaTree.C:118
 AddTaskTPCPIDEtaTree.C:119
 AddTaskTPCPIDEtaTree.C:120
 AddTaskTPCPIDEtaTree.C:121
 AddTaskTPCPIDEtaTree.C:122
 AddTaskTPCPIDEtaTree.C:123
 AddTaskTPCPIDEtaTree.C:124
 AddTaskTPCPIDEtaTree.C:125
 AddTaskTPCPIDEtaTree.C:126
 AddTaskTPCPIDEtaTree.C:127
 AddTaskTPCPIDEtaTree.C:128
 AddTaskTPCPIDEtaTree.C:129
 AddTaskTPCPIDEtaTree.C:130
 AddTaskTPCPIDEtaTree.C:131
 AddTaskTPCPIDEtaTree.C:132