ROOT logo
void AddTaskPWG4HighPtQAMCAll(char *prodType = "LHC10e14") {

  AliPWG4HighPtQAMC *taskQAMC00 = AddTaskPWG4HighPtQAMC(prodType,0,0);
  AliPWG4HighPtQAMC *taskQAMC01 = AddTaskPWG4HighPtQAMC(prodType,0,1);
  //  AliPWG4HighPtQAMC *taskQAMC02 = AddTaskPWG4HighPtQAMC(prodType,0,2);
  //  AliPWG4HighPtQAMC *taskQAMC10 = AddTaskPWG4HighPtQAMC(prodType,1,0);
  //  AliPWG4HighPtQAMC *taskQAMC20 = AddTaskPWG4HighPtQAMC(prodType,2,0);
  AliPWG4HighPtQAMC *taskQAMC70 = AddTaskPWG4HighPtQAMC(prodType,7,0);
  AliPWG4HighPtQAMC *taskQAMC71 = AddTaskPWG4HighPtQAMC(prodType,7,1);
  AliPWG4HighPtQAMC *taskQAMC72 = AddTaskPWG4HighPtQAMC(prodType,7,2);
}

AliPWG4HighPtQAMC* AddTaskPWG4HighPtQAMC(char *prodType = "LHC10e14", Int_t trackType = 0, Int_t cuts =0)
{
  // Creates HighPtQAMC analysis task and adds it to the analysis manager.

  //Track types:
  //trackType
  //           0: global tracks
  //           1: TPConly tracks
  //           2: TPConly constrained tracks

  //Load common track cut class
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
  
  // A. Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskPWG4HighPtQMC", "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("AddPWG4TaskHighPtQAMC", "This task requires an input event handler");
    return NULL;
  }  
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  const char *analysisType = "ESD";

  // C. Create the task, add it to manager.
  //===========================================================================
 
  //CREATE THE  CUTS -----------------------------------------------
  //Use AliESDtrackCuts
  AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
  AliESDtrackCuts *trackCutsReject = 0x0;
  //Standard Cuts
  //Set track cuts for global tracks
  if(trackType==0 && cuts==0) {
    // tight global tracks - RAA analysis
    trackCuts = CreateTrackCutsPWGJE(1000);
  }
  if(trackType==0 && cuts==1) {
    //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
    trackCuts = CreateTrackCutsPWGJE(10001006);
   }
  if(trackType==0 && cuts==2) {
    //Cuts global tracks with ITSrefit requirement but without SPD
    trackCuts = CreateTrackCutsPWGJE(10011006);
  }
  if(trackType==7 && cuts==0) {
    // tight global tracks
    trackCuts = CreateTrackCutsPWGJE(10041006);
    trackCutsReject = CreateTrackCutsPWGJE(1006);
    trackCutsReject->SetEtaRange(-0.9,0.9);
    trackCutsReject->SetPtRange(0.15, 1e10);
  }
  if(trackType==7 && cuts==1) {
    // tight global tracks
    trackCuts = CreateTrackCutsPWGJE(10011006);
  }
  if(trackType==7 && cuts==2) {
    // no requirements on SPD and ITSrefit failed
    trackCuts = CreateTrackCutsPWGJE(10041006);       //no ITSrefit requirement filter 256
    trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16
    trackCutsReject->SetEtaRange(-0.9,0.9);
    trackCutsReject->SetPtRange(0.15, 1e10);
  }

  //Set track cuts for TPConly tracks
  if(trackType==1 || trackType==2) { 
    //Set track cuts for TPConly tracks
    trackCuts = CreateTrackCutsPWGJE(2001);
  }
  trackCuts->SetEtaRange(-0.9,0.9);
  trackCuts->SetPtRange(0.15, 1e10);
  
  //Create the task
  AliPWG4HighPtQAMC *taskPWG4QAMC = new AliPWG4HighPtQAMC(Form("AliPWG4HighPtQAMC%d%d",trackType,cuts));
  taskPWG4QAMC->SetCuts(trackCuts);
  taskPWG4QAMC->SetCutsReject(trackCutsReject);
  taskPWG4QAMC->SetTrackType(trackType);
  
  if(!strcmp(prodType, "LHC10e14")) taskPWG4QAMC->SetPtMax(500.);
  else taskPWG4QAMC->SetPtMax(100.);

  //taskPWG4QAMC->SetSigmaConstrainedMax(5.);

  // 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 ------
  //  AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
  printf("Create output containers \n");
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += Form(":PWG4_HighPtQAMC%d%d",trackType,cuts);
  
  AliAnalysisDataContainer *cout_hist1 = mgr->CreateContainer(Form("qa_histsMC%d%d",trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);

  mgr->AddTask(taskPWG4QAMC);
  mgr->ConnectInput(taskPWG4QAMC,0,mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskPWG4QAMC,0,cout_hist1);

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