Update of the flatenning task and macros
[u/mrichter/AliRoot.git] / PWGPP / VZERO / runAnaEPFlatenningProof.C
1 void runAnaEPFlatenningProof(Int_t mode = 0, const char *folder = "/alice/data",
2                              const char *dataset = "LHC10h_000138396_hlt_clustering",
3                              Int_t workers=28,
4                              Bool_t usePS = kFALSE,
5                              const char *minBias = "CPBI",
6                              Int_t firstFile = 0, Int_t lastFile = -1)
7 {
8   gSystem->Load("libANALYSIS");
9   gSystem->Load("libANALYSISalice");
10   gSystem->Load("libOADB");
11   gSystem->AddIncludePath("-I$ALICE_ROOT/include ");
12
13   if (mode==0 || mode==2) {
14     // Connect to Proof
15     gEnv->SetValue("XSec.GSI.DelegProxy","2");
16     Char_t *alienuser = gSystem->Getenv("alien_API_USER");
17     cout<<"==> Your AliEn username is: "<<alienuser<<endl;
18
19     //    TProof::Mgr("alice-caf.cern.ch")->SetROOTVersion("VO_ALICE@ROOT::v5-33-02a");
20
21     TProof *p = TProof::Open(alienuser!=0 ? Form("%s@alice-caf.cern.ch",
22                                                  alienuser) : "alice-caf.cern.ch",
23                              workers>0 ? Form("workers=%d",workers) : "");
24
25     gProof->EnablePackage("VO_ALICE@AliRoot::v5-03-23-AN");
26
27     if (1) {
28       gProof->Exec("TGrid::Connect(\"alien://\")",kTRUE);
29       gSystem->Setenv("OADB_PATH","alien:///alice/cern.ch/user/c/cheshkov/OADB");
30       gProof->Exec("gSystem->Setenv(\"OADB_PATH\",\"alien:///alice/cern.ch/user/c/cheshkov/OADB\")",kTRUE);
31     }
32   }
33
34   // Create the analysis manager
35   AliAnalysisManager *mgr = new AliAnalysisManager("EPFlatenningAnalysis");
36
37   Bool_t esdData = kTRUE;
38   TString tempStr1 = folder;
39   if (tempStr1.Contains("AOD")) esdData = kFALSE;
40   TString tempStr2 = dataset;
41   if (tempStr2.Contains("AOD")) esdData = kFALSE;
42   if (esdData) {
43     AliESDInputHandler* esdH = new AliESDInputHandler();
44     esdH->SetInactiveBranches("FMD AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend.fTracks Kinks MuonTracks TrdTracks");
45     esdH->SetReadFriends(kFALSE);
46     mgr->SetInputEventHandler(esdH);
47   }
48   else {
49     AliAODInputHandler* aodH = new AliAODInputHandler();
50     mgr->SetInputEventHandler(aodH);
51   }
52
53   // physics and centrality selection
54   if (esdData && usePS) {
55     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
56     AliPhysicsSelectionTask *physicsSelectionTask = AddTaskPhysicsSelection(kFALSE);
57   }
58
59   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
60   AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
61
62   // Create task
63   if (mode==0 || mode==2) {
64     if (0) {
65       gProof->Load(Form("%s/STEER/STEERBase/AliEventplane.cxx++g",
66                         gSystem->Getenv("ALICE_ROOT")));
67       gProof->Load(Form("%s/ANALYSIS/AliVZEROEPSelectionTask.cxx++g",
68                         gSystem->Getenv("ALICE_ROOT")));
69     }
70     gProof->Load(Form("%s/AliAnaVZEROEPFlatenning.cxx++g",
71                       gSystem->pwd()));
72   }
73   else {
74     gROOT->LoadMacro(Form("%s/AliAnaVZEROEPFlatenning.cxx++g",
75                           gSystem->pwd()));
76   }
77
78   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C");
79   AliVZEROEPSelectionTask *selTask = AddTaskVZEROEPSelection();
80
81   AliAnaVZEROEPFlatenning *task = new AliAnaVZEROEPFlatenning("AliAnaVZEROEPFlatenning");
82   task->SetMBTrigName(minBias);
83   if (usePS) task->SetUsePhysSel(kTRUE);
84   task->SetInput("/home/cheshkov/alice/AliRoot/PWGPP/VZERO/save/VZERO.EPFlatenning.PS.LHC11h_000170162_p1_muon_.root");
85   
86   // Add task
87   mgr->AddTask(task);
88
89   // Create containers for input/output
90   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
91   AliAnalysisDataContainer *coutput = 
92     mgr->CreateContainer("coutput", TList::Class(), 
93                          AliAnalysisManager::kOutputContainer, (!usePS) ? Form("VZERO.EPFlatenning.%s.root",dataset) : Form("VZERO.EPFlatenning.PS.%s.root",dataset));
94
95   // Connect input/output
96   mgr->ConnectInput(task, 0, cinput);
97   mgr->ConnectOutput(task, 1, coutput);
98
99   // Enable debug printouts
100   mgr->SetDebugLevel(3);
101
102   if (!mgr->InitAnalysis())
103     return;
104
105   mgr->PrintStatus();
106
107   if (mode==0)
108     mgr->StartAnalysis("proof", Form("%s/%s",folder,dataset));
109   else {
110     TGrid::Connect("alien://");
111     TChain *chain = new TChain("esdTree");
112     TGridResult *res = gGrid->Query(folder,"AliESDs.root");
113     Int_t nFiles = res->GetEntries();
114     if (lastFile < 0) lastFile = nFiles - 1;
115     for(Int_t iFile = firstFile; iFile <= lastFile; ++iFile) {
116       TString filename = res->GetKey(iFile, "turl");
117       if(filename == "") continue;
118       chain->AddFile(filename.Data());
119     }
120     if (mode==2) {
121       gProof->Exec("TGrid::Connect(\"alien://\")",kTRUE);
122       mgr->StartAnalysis("proof", chain);
123     }
124     else
125       mgr->StartAnalysis("local", chain);
126   }
127 }
128