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