]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C
- update on AOD analysis
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / runGrid.C
1 class  AliAnalysisManager;
2 class  AliAnalysisAlien;
3
4 void runGrid(TString mode="test",Int_t mc=1,Int_t sub=0,Int_t hi=1,TString fname="AODAnalysis_1June2012") 
5 {
6   //0 is AOD048-049 in this case you can choos FilterBit5 (loose DCA) or 6 (tight DCA)!!!!!!!!!
7   //1 is AOD086-090
8   AliLog::SetGlobalDebugLevel(100);
9   // Load common libraries
10   gEnv->SetValue("XSec.GSI.DelegProxy", "2");
11   
12   gSystem->Load("libTree.so");
13   //gSystem->Load("libGeom.so");
14   //gSystem->Load("libVMC.so");
15   gSystem->Load("libPhysics.so");
16   gSystem->Load("libSTEERBase.so");
17   gSystem->Load("libESD.so");
18   gSystem->Load("libAOD.so");
19   gSystem->Load("libANALYSIS.so");
20   gSystem->Load("libOADB.so");
21   gSystem->Load("libANALYSISalice.so");
22   gSystem->AddIncludePath("-I$ALICE_ROOT/include");
23
24   // gROOT->LoadMacro("$ALICE_ROOT/SPECTRA/PiKaPr/TestAOD/AliSpectraAODTrackCuts.cxx+g");
25   // gROOT->LoadMacro("$ALICE_ROOT/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.cxx+g");
26   // gROOT->LoadMacro("$ALICE_ROOT/SPECTRA/PiKaPr/TestAOD/AliSpectraAODHistoManager.cxx+g");
27   // gROOT->LoadMacro("$ALICE_ROOT/SPECTRA/PiKaPr/TestAOD/AliSpectraAODPID.cxx+g");
28   // gROOT->LoadMacro("$ALICE_ROOT/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAOD.cxx+g");
29   gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g");
30   gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g");
31   gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g");
32   gROOT->LoadMacro("AliSpectraAODPID.cxx+g");
33   gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g");
34   // Use AliRoot includes to compile our task
35   // Create and configure the alien handler plugin
36   
37   AliAnalysisGrid *alienHandler = CreateAlienHandler(mode,mc,sub,fname);  
38   if (!alienHandler) return;
39   // Create the analysis manager
40   AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");
41   // Connect plug-in to the analysis manager
42   mgr->SetGridHandler(alienHandler);
43   AliAODInputHandler* aodH = new AliAODInputHandler();
44   mgr->SetInputEventHandler(aodH);
45   
46   // Physics selection
47   gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
48   AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(mc,kTRUE,0);
49   if(!physicsSelectionTask ) { Printf("no physSelTask"); return; }
50   
51   // Add PID task
52   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
53   Bool_t isMC = kFALSE;
54   AliAnalysisTask * taskPID = AddTaskPIDResponse(mc);
55   mgr->AddTask(taskPID);
56   
57   //setting the analysis
58   Int_t iCut=0;
59   //Double_t CentCut[2]={0,100};
60   Double_t CentCut[2]={0,100};
61   Double_t qVecCut[2]={0,100};
62    
63   //PID object
64   using namespace AliSpectraNameSpace;
65   AliSpectraAODPID *pid = new AliSpectraAODPID(kNSigmaTPCTOF); 
66   pid->SetNSigmaCut(3.);
67   
68   AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD("TaskAODExercise");
69   mgr->AddTask(task);
70   //physics selection
71   task->SelectCollisionCandidates();     
72   
73   // Set the cuts
74   AliSpectraAODEventCuts * vcuts = new AliSpectraAODEventCuts("Event Cuts");
75   AliSpectraAODTrackCuts  * tcuts = new AliSpectraAODTrackCuts("Track Cuts");
76   if(sub==0){
77     tcuts->SetTrackType(5); //AOD 046 & 047. Standard Cuts with loose DCA
78     //tcuts->SetTrackType(6); //AOD 046 & 047. Standard Cuts with tight DCA
79   }
80   if(sub==1)tcuts->SetTrackType(10); //AOD 086 & 090. Standard Raa cuts
81   
82   // set pid object
83   task->SetPID(pid);
84   tcuts->SetEta(.8);
85   tcuts->SetPt(5);
86   tcuts->SetY(.5);
87   tcuts->SetPtTOFMatching(0.6);   
88   tcuts->SetQvecMin(qVecCut[0]);   
89   tcuts->SetQvecMax(qVecCut[1]);    
90   vcuts->SetCentralityCutMin(CentCut[0]);
91   vcuts->SetCentralityCutMax(CentCut[1]);  
92   task->SetEventCuts(vcuts);
93   task->SetTrackCuts(tcuts);
94   vcuts->PrintCuts();
95   tcuts->PrintCuts();
96   
97   if (mc)
98     {
99       task->SetIsMC(kTRUE);
100       AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
101       AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
102                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
103       AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
104                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
105       AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
106                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
107       AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut), AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
108                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
109     }else{       
110     AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
111     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
112                                                                 Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
113     AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
114                                                                 Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
115     AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
116                                                                 Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
117     AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut), AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
118                                                                 Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
119   }
120   mgr->ConnectInput(task, 0, cinput);
121   mgr->ConnectOutput(task, 1, coutputpt1);
122   mgr->ConnectOutput(task, 2, coutputpt2);
123   mgr->ConnectOutput(task, 3, coutputpt3);
124   mgr->ConnectOutput(task, 4, coutputpt4);
125   
126   mgr->SetDebugLevel(2);
127   
128   //mgr->Init();
129   if (!mgr->InitAnalysis())return;
130   mgr->PrintStatus();
131   // Start analysis in grid.
132   mgr->StartAnalysis("grid");
133 }
134
135
136 AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=0,Int_t sub=0,TString fname){
137   
138   
139   
140   AliAnalysisAlien *plugin = new AliAnalysisAlien();
141   plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF");
142   plugin->SetAdditionalLibs("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODHistoManager.h AliSpectraAODTrackCuts.cxx AliSpectraAODTrackCuts.h AliSpectraAODEventCuts.cxx AliSpectraAODEventCuts.h AliSpectraAODPID.cxx AliSpectraAODPID.h AliAnalysisTaskSpectraAOD.cxx AliAnalysisTaskSpectraAOD.h");
143   plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODTrackCuts.cxx AliSpectraAODEventCuts.cxx AliSpectraAODPID.cxx AliAnalysisTaskSpectraAOD.cxx");
144   plugin->SetOverwriteMode();
145   plugin->SetExecutableCommand("aliroot -q -b");  
146   plugin->SetRunMode(mode.Data());
147   plugin->SetNtestFiles(1);
148   //Set versions of used packages
149   plugin->SetAPIVersion("V1.1x");
150   plugin->SetROOTVersion("v5-33-02b");
151   plugin->SetAliROOTVersion("v5-04-25-AN");
152   // Declare input data to be processed.
153   if(sub==0){
154   if(mc)
155     {
156       plugin->SetGridDataDir("/alice/sim/LHC11a10a");
157       plugin->SetDataPattern("AOD048/*AliAOD.root");
158       plugin->SetRunPrefix(""); 
159       plugin->SetAnalysisMacro(Form("TaskAOD046PbPbMC%d.C",sub));
160       plugin->SetExecutable(Form("TaskAOD046PbPbMC%d.sh",sub));
161       plugin->SetJDLName(Form("TaskAOD046PbPbMC%d.jdl",sub));
162       //plugin->SetSplitMaxInputFileNumber(500);
163       plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/mc%d/",fname.Data(),sub));
164     }  
165   else
166     {
167       plugin->SetGridDataDir("/alice/data/2010/LHC10h");
168       plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root");
169       plugin->SetRunPrefix("000"); 
170       plugin->SetAnalysisMacro(Form("TaskAOD046PbPbdata%d.C",sub));
171       plugin->SetExecutable(Form("TaskAOD046PbPbdata%d.sh",sub));
172       plugin->SetJDLName(Form("TaskAOD046PbPbdata%d.jdl",sub));
173       //plugin->SetSplitMaxInputFileNumber(500);
174       plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/data%d/",fname.Data(),sub));
175     }  
176   FILE* listruns=fopen("RunListGrid-AOD046.txt","r");
177   }
178   if(sub==1){
179     if(mc)
180       {
181         plugin->SetGridDataDir("/alice/sim/LHC11a10a_bis");
182         plugin->SetDataPattern("AOD090/*AliAOD.root");
183         plugin->SetRunPrefix(""); 
184         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbMC%d.C",sub));
185         plugin->SetExecutable(Form("TaskAOD086PbPbMC%d.sh",sub));
186         plugin->SetJDLName(Form("TaskAOD086PbPbMC%d.jdl",sub));
187         //plugin->SetSplitMaxInputFileNumber(500);
188         plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/mc%d/",fname.Data(),sub));
189       }  
190     else
191       {
192         plugin->SetGridDataDir("/alice/data/2010/LHC10h");
193         plugin->SetDataPattern("ESDs/pass2/AOD086/*AliAOD.root");
194         plugin->SetRunPrefix("000"); 
195         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbdata%d.C",sub));
196         plugin->SetExecutable(Form("TaskAOD086PbPbdata%d.sh",sub));
197         plugin->SetJDLName(Form("TaskAOD086PbPbdata%d.jdl",sub));
198         //plugin->SetSplitMaxInputFileNumber(500);
199         plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/data%d/",fname.Data(),sub));
200           }  
201     FILE* listruns=fopen("RunListGrid-AOD086.txt","r");
202   }
203   Int_t irun;
204   while(!feof(listruns)){
205     fscanf(listruns,"%d\n",&irun);
206     plugin->AddRunNumber(irun);
207   }
208   // Declare alien output directory. Relative to working directory.
209   //plugin->SetGridOutputDir("/alice/cern.ch/user/l/lmilano/AODAnalysis/AOD086TrackBit10/mc1/output/000/Stage_1"); // In this case will be $HOME/work/output
210   plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
211   plugin->SetNrunsPerMaster(60); // 
212   
213
214   // Declare the output file names separated by blancs.
215   // (can be like: file.root or file.root@ALICE::Niham::File)
216   //plugin->SetDefaultOutputs(0);
217   //plugin->SetOutputFiles("AnalysisResults.root.root");
218   plugin->SetMergeViaJDL(kTRUE);
219   plugin->SetOneStageMerging(kFALSE);
220   plugin->SetMaxMergeStages(2);
221   
222   plugin->SetTTL(100000);
223   // Optionally set input format (default xml-single)
224   plugin->SetInputFormat("xml-single");
225   // Optionally modify job price (default 1)
226   plugin->SetPrice(1);      
227   // Optionally modify split mode (default 'se')    
228   //plugin->SetSplitMaxInputFileNumber();
229   plugin->SetSplitMode("se");
230   return plugin;
231   delete runs;
232 }