ROOT logo
AliAnalysisTask *AddTaskPtFluc(){
  //get the current analysis manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTask_sheckel_PtFluc", "No analysis manager found.");
    return 0;
  }


  // --- Check for MC ---
  AliMCEventHandler  *mcH = static_cast<AliMCEventHandler*>(mgr->GetMCtruthEventHandler());


  //============= Set Task Name ===================
  TString taskName=("AliAnalysisTaskPtFluc.cxx+");
  //===============================================
  //            Load the task
  gROOT->LoadMacro(taskName.Data());
  if (gProof){
    TString taskSO=gSystem->pwd();
    taskSO+="/";
    taskSO+=taskName(0,taskName.First('.'))+"_cxx.so";
    gProof->Exec(Form("gSystem->Load(\"%s\")",taskSO.Data()),kTRUE);
  }


  //========= Add task to the ANALYSIS manager =====
  AliAnalysisTaskPtFluc *task = new AliAnalysisTaskPtFluc("sheckelTaskPtFluc");


  // --- Set ESD track Cuts ---

  AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("esdTrackCuts"); // My pp track cuts (ITS+TPC)
  AliESDtrackCuts *esdCuts = new AliESDtrackCuts("esdCuts"); // TPC-only track cuts

  // -- My pp track cuts (ITS+TPC)
  // TPC
  esdTrackCuts->SetRequireTPCStandAlone(kFALSE);
  esdTrackCuts->SetMinNClustersTPC(70);
  esdTrackCuts->SetMaxChi2PerClusterTPC(4.0);
  esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
  esdTrackCuts->SetRequireTPCRefit(kTRUE);
  // ITS
  esdTrackCuts->SetRequireITSRefit(kTRUE);
  esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kAny);
  // DCA to vertex
  esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); // 7*(0.0026+0.0050/pt^1.01)
  esdTrackCuts->SetMaxDCAToVertexZ(2.);
  esdTrackCuts->SetDCAToVertex2D(kFALSE);
  esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
  // Pt range and acceptance in eta
  esdTrackCuts->SetPtRange(0.15,2.);
  esdTrackCuts->SetEtaRange(-0.8,0.8);


  // -- TPC-only track cuts
  // TPC
  esdCuts->SetRequireTPCStandAlone(kTRUE);
  esdCuts->SetMinNClustersTPC(70);
  esdCuts->SetMaxChi2PerClusterTPC(4.0);
  esdCuts->SetAcceptKinkDaughters(kFALSE);
  esdCuts->SetRequireTPCRefit(kFALSE);
  // ITS
  esdCuts->SetRequireITSRefit(kFALSE);
  // DCA to vertex
  esdCuts->SetMaxDCAToVertexXY(2.4); // cm
  esdCuts->SetMaxDCAToVertexZ(3.2);  // cm
  esdCuts->SetDCAToVertex2D(kTRUE);
  esdCuts->SetRequireSigmaToVertex(kFALSE);
  // Pt range and acceptance in eta
  esdCuts->SetPtRange(0.15,2.);
  esdCuts->SetEtaRange(-0.8,0.8);

  // --- End track Cuts ---


//   task->SetAliESDtrackCuts(esdTrackCuts);
  task->SetAliESDtrackCuts(esdCuts);

  task->SelectCollisionCandidates(AliVEvent::kMB);
  task->SetMaxVertexZ(10.);    // cm
  task->SetMaxVertexZDiff1(-1.);    // <= 0. -> off,    > 0. -> diff in cm
  task->SetNContributors(1);

  if (mcH) task->SetMC(kTRUE);
  if (mcH) task->SetMCType(0);    // 0 = ESD,  1 = MC truth with ESD,  2 = mod. MC truth with ESD,
				  // 	       3 = MC truth only,      4 = mod. MC truth only


  mgr->AddTask(task);


  //================================================
  //              data containers
  //================================================

  // input container
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();

  // output container
  AliAnalysisDataContainer *coutput =
      mgr->CreateContainer("sheckel_PtFluc", TList::Class(),
                           AliAnalysisManager::kOutputContainer,"sheckel_PtFluc.root");

  // connect containers
  mgr->ConnectInput  (task,  0, cinput );
  mgr->ConnectOutput (task,  1, coutput );

  return task;

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