ROOT logo
#if !defined (__CINT__) || (defined(__MAKECINT__))
#include <iostream>
#include "AliAnalysisGrid.h"
#include "TSystem.h"
#include "TROOT.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisGrid.h"
#include "AliVEventHandler.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisAlien.h"
#include "AliMCEventHandler.h"
#include "AliPhysicsSelectionTask.h"
#include "TRegexp.h"
#include "AliTriggerAnalysis.h"
#include "TChain.h"
#include "AliAnalysisTaskPIDResponse.h"
#include "AliAODHandler.h"
#include "AliAnalysisTaskNanoAODFilter.h"
#include "AliESEHelpers.h"

#endif
void LoadLibs();

class AliAnalysisGrid;
class AliESETrkCut;
class AliESEEvtCut;

AliESETrkCut * TrkCuts() {

  AliESETrkCut * trk = new AliESETrkCut;

  AliSpectraAODTrackCuts  * trcuts = new AliSpectraAODTrackCuts("TrackCuts");  
  trcuts->SetDCA(100000);
  trcuts->SetTrackBits(1024);
  trcuts->SetPt(15);
  trcuts->SetPtTOFMatching(0.6);   
  trcuts->SetEta(-0.8,0.8);
  trcuts->SetMinTPCcls(70);
  trcuts->PrintCuts();

  trk->SetTrackCuts(trcuts);
  trk->Init();

  return trk;

}

AliESEEvtCut * EvtCuts(Int_t mc) {

  AliESEEvtCut * evt = new AliESEEvtCut;

  AliSpectraAODEventCuts * evcuts = new AliSpectraAODEventCuts("EventCuts");
  evcuts->SetQVectorCut(0,100);
  evcuts->SetCentralityCutMax(100);  
  evcuts->SetCentralityCutMin(0);
  if(mc>0)evcuts->SetIsMC(kTRUE);
  TFile * fCalib = new TFile("./calibV0New.root");
  evcuts->SetCalibFile(fCalib);
  evcuts->SetIsLHC10h(kTRUE);
  evcuts->PrintCuts();
  //  evcuts->SetEventSelectionBit(AliVEvent::kAny);

  evt->SetEventCuts(evcuts);
  evt->Init();

  return evt;

}

//______________________________________________________________________________
void runLocalESE(
		 const int iMCtruth = 0, 
		 const char * addTaskString = ".x AddTaskNanoAODFilter.C(%d,1)" // 
		 )
{
  LoadLibs();
  // analysis manager
  AliAnalysisManager* mgr = new AliAnalysisManager("NanoAOD Filter", "NanoAOD filter for nanoAOD production");
    
  AliAODInputHandler* iH = new AliAODInputHandler();
  mgr->SetInputEventHandler(iH);

  // Define aod output handler
  AliAODHandler* aodOutputHandler = new AliAODHandler();
  aodOutputHandler->SetOutputFileName("AliAOD.NanoAOD.root");
  mgr->SetOutputEventHandler(aodOutputHandler);
  
  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
  AliAnalysisTaskPIDResponse *taskPID=AddTaskPIDResponse(iMCtruth);
  taskPID->SetUseTPCEtaCorrection(kTRUE); 
  taskPID->SetUserDataRecoPass(2);
  // create task
  cout << "Macro: "<< addTaskString << " " << Form(addTaskString, iMCtruth) << endl;

  AliAnalysisTaskNanoAODFilter * task = (AliAnalysisTaskNanoAODFilter*) gROOT->ProcessLine(Form(addTaskString, iMCtruth));

  // Set Track event and vertex cuts here!
  //  task->SetVarList("pt,theta,phi,cstNSigmaTPCPi,cstNSigmaTPCKa,cstNSigmaTPCPr,cstNSigmaTOFPi,cstNSigmaTOFKa,cstNSigmaTOFPr,cstBayesTPCPi,cstBayesTPCKa,cstBayesTPCPr,cstBayesTOFPi,cstBayesTOFKa,cstBayesTOFPr");
  task->SetVarList("pt,theta,phi,cstNSigmaTPCPi,cstNSigmaTPCKa,cstNSigmaTPCPr,cstNSigmaTOFPi,cstNSigmaTOFKa,cstNSigmaTOFPr");
  task->SetVarListHead("cstCentr,cstQVec");
  AliESETrkCut * trkCuts = TrkCuts();
  AliESEEvtCut * evtCuts = EvtCuts(iMCtruth);
  evtCuts->SetTrackCuts(trkCuts->GetTrackCuts());
  AliAnalysisESESetter * setter  = new AliAnalysisESESetter;
  setter->SetEventCuts(evtCuts->GetEventCuts());

  task->SetTrkCuts(trkCuts);
  task->SetEvtCuts(evtCuts);
  task->SetSetter(setter);

  //task->SelectCollisionCandidates(AliVEvent::kMB);// FIXME
  // enable debug printouts
  mgr->SetDebugLevel(10);
  //    mgr->SetNSysInfo(100);
  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  
  // start analysis
  // Always read the same file:
  TChain * chain = new TChain("aodTree");
  
  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0356/AliAOD.root");
  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0407/AliAOD.root");
  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0398/AliAOD.root");

  Printf("Starting Analysis....");
  chain->Print();
  mgr->StartAnalysis("local", chain,123456789);

}

//______________________________________________________________________________

void LoadLibs() {
  gSystem->Load("libCore.so");  
  gSystem->Load("libGeom.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libVMC");
  gSystem->Load("libTree");
  gSystem->Load("libProof");
  gSystem->Load("libMatrix");
  gSystem->Load("libMinuit");
  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD");
  gSystem->Load("libANALYSIS");
  //  return;
  gSystem->Load("libOADB");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libTENDER");
  gSystem->Load("libCORRFW");

  //  gSystem->Load("libNanoAOD.so");
  gSystem->Load("libPWGLFspectra");
  gSystem->Load("libPWGDevNanoAOD");

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