ROOT logo
//DEFINITION OF A FEW CONSTANTS

AliPWG4HighPtQATPConly* AddTaskPWG4HighPtQATPConly(char *prodType = "LHC10e14",int cuts=2)//1: Standard Cuts 2009 2: GetStandardITSTPCTrackCuts2009
{
  // Creates HighPtQATPConly analysis task and adds it to the analysis manager.
  
  // A. Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskPWG4HighPtQATPConly", "No analysis manager to connect to.");
    return NULL;
  }  

  // B. Check the analysis type using the event handlers connected to the analysis
  //    manager. The availability of MC handler can also be checked here.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskPWG4HighPtQATPConly", "This task requires an input event handler");
    return NULL;
  }  
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  const char *analysisType = "ESD";//"TPC"

  // C. Create the task, add it to manager.
  //===========================================================================
 
  //CREATE THE  CUTS -----------------------------------------------
  //Use AliESDtrackCuts
  AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
  if(cuts==1) {
    trackCuts=trackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);//Primary Track Selection
    trackCuts->SetEtaRange(-0.9,0.9);
    trackCuts->SetPtRange(0.15, 1e10);

  }
  else if(cuts==2) {
    trackCuts=trackCuts->GetStandardITSTPCTrackCuts2009(kTRUE);//Primary Track Selection
    trackCuts->SetEtaRange(-0.9,0.9);
    trackCuts->SetPtRange(0.15, 1e10);
  }

  AliESDtrackCuts *trackCutsITS = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts with ITSrefit");
  if(cuts==1) {
    //Cuts SPD || SDD
    // TPC  
    trackCutsITS->SetMinNClustersTPC(70);
    trackCutsITS->SetMaxChi2PerClusterTPC(4);
    trackCutsITS->SetAcceptKinkDaughters(kFALSE);
    trackCutsITS->SetRequireTPCRefit(kTRUE);
    // ITS
    trackCutsITS->SetRequireITSRefit(kTRUE);
    trackCutsITS->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
    trackCutsITS->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
    
    trackCutsITS->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
    trackCutsITS->SetMaxDCAToVertexZ(2);
    trackCutsITS->SetDCAToVertex2D(kFALSE);
    trackCutsITS->SetRequireSigmaToVertex(kFALSE);
    
    trackCutsITS->SetEtaRange(-0.9,0.9);
    trackCutsITS->SetPtRange(0.15, 1e10);
    trackCutsITS->SetRequireITSRefit(kTRUE);

  }
 else if(cuts==2) {
   trackCutsITS=trackCutsITS->GetStandardITSTPCTrackCuts2009(kTRUE);//Primary Track Selection
   trackCutsITS->SetEtaRange(-0.9,0.9);
   trackCutsITS->SetPtRange(0.15, 1e10);
 }

//Create the task
  AliPWG4HighPtQATPConly *taskPWG4QA = new AliPWG4HighPtQATPConly(Form("AliPWG4HighPtQATPConly%d",cuts));
  taskPWG4QA->SetCuts(trackCuts);
  taskPWG4QA->SetCutsITS(trackCutsITS);
  taskPWG4QA->SetCutType(cuts);
  if(!strcmp(prodType, "LHC10e14") || !strcmp(prodType, "PbPb")) taskPWG4QA->SetPtMax(500.);
  else taskPWG4QA->SetPtMax(100.);

  // E. Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================

  //------ input data ------
  TString outputfile = "";
  outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += Form(":PWG4_HighPtQATPConly%d",cuts);
  
  AliAnalysisDataContainer *cout_hist0;
  AliAnalysisDataContainer *cout_hist1;
  AliAnalysisDataContainer *cout_hist2;

  AliAnalysisDataContainer *cout_cuts0;
  AliAnalysisDataContainer *cout_cuts1;

  cout_hist0 = mgr->CreateContainer(Form("qa_histsCuts%d",cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
  cout_hist1 = mgr->CreateContainer(Form("qa_histsTPCCuts%d",cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
  cout_hist2 = mgr->CreateContainer(Form("qa_histsITSCuts%d",cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);  

  cout_cuts0 = mgr->CreateContainer(Form("qa_trackCuts%d",cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
  cout_cuts1 = mgr->CreateContainer(Form("qa_trackCutsITS%d",cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);

  //Add task to manager
  mgr->AddTask(taskPWG4QA);

  //Connect input containter to manager
  mgr->ConnectInput(taskPWG4QA,0,mgr->GetCommonInputContainer());

  //Connect output containers to manager
  mgr->ConnectOutput(taskPWG4QA,0,cout_hist0);
  mgr->ConnectOutput(taskPWG4QA,1,cout_hist1);
  mgr->ConnectOutput(taskPWG4QA,2,cout_hist2);
  mgr->ConnectOutput(taskPWG4QA,3,cout_cuts0);
  mgr->ConnectOutput(taskPWG4QA,4,cout_cuts1);

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