]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C
update to the runGrid Macro
[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_newTask/AOD048Filter6") 
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,100};
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     }else{       
101     AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
102     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
103                                                                 Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
104     AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::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 *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::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   }
109   mgr->ConnectInput(task, 0, cinput);
110   mgr->ConnectOutput(task, 1, coutputpt1);
111   mgr->ConnectOutput(task, 2, coutputpt2);
112   mgr->ConnectOutput(task, 3, coutputpt3);
113   
114   mgr->SetDebugLevel(2);
115   
116   //mgr->Init();
117   if (!mgr->InitAnalysis())return;
118   mgr->PrintStatus();
119   // Start analysis in grid.
120   mgr->StartAnalysis("grid");
121 }
122
123
124 AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=0,Int_t sub=0,TString fname){
125   AliAnalysisAlien *plugin = new AliAnalysisAlien();
126   plugin->SetOverwriteMode();
127   plugin->SetExecutableCommand("aliroot -q -b");  
128   plugin->SetRunMode(mode.Data());
129   plugin->SetNtestFiles(1);
130   //Set versions of used packages
131   plugin->SetAPIVersion("V1.1x");
132   plugin->SetROOTVersion("v5-33-02b");
133   plugin->SetAliROOTVersion("v5-03-18-AN");
134   // Declare input data to be processed.
135   if(sub==0){
136   if(mc)
137     {
138       plugin->SetGridDataDir("/alice/sim/LHC11a10a");
139       plugin->SetDataPattern("AOD048/*AliAOD.root");
140       plugin->SetRunPrefix(""); 
141       plugin->SetAnalysisMacro(Form("TaskAOD046PbPbMC%d.C",sub));
142       plugin->SetExecutable(Form("TaskAOD046PbPbMC%d.sh",sub));
143       plugin->SetJDLName(Form("TaskAOD046PbPbMC%d.jdl",sub));
144       //plugin->SetSplitMaxInputFileNumber(500);
145       plugin->SetGridWorkingDir(Form("%s/mc%d/",fname.Data(),sub));
146     }  
147   else
148     {
149       plugin->SetGridDataDir("/alice/data/2010/LHC10h");
150       plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root");
151       plugin->SetRunPrefix("000"); 
152       plugin->SetAnalysisMacro(Form("TaskAOD046PbPbdata%d.C",sub));
153       plugin->SetExecutable(Form("TaskAOD046PbPbdata%d.sh",sub));
154       plugin->SetJDLName(Form("TaskAOD046PbPbdata%d.jdl",sub));
155       //plugin->SetSplitMaxInputFileNumber(500);
156       plugin->SetGridWorkingDir(Form("%s/data%d/",fname.Data(),sub));
157     }  
158   FILE* listruns=fopen("RunListGrid-AOD046.txt","r");
159   }
160   if(sub==1){
161     if(mc)
162       {
163         plugin->SetGridDataDir("/alice/sim/LHC11a10a_bis");
164         plugin->SetDataPattern("AOD090/*AliAOD.root");
165         plugin->SetRunPrefix(""); 
166         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbMC%d.C",sub));
167         plugin->SetExecutable(Form("TaskAOD086PbPbMC%d.sh",sub));
168         plugin->SetJDLName(Form("TaskAOD086PbPbMC%d.jdl",sub));
169         //plugin->SetSplitMaxInputFileNumber(500);
170         plugin->SetGridWorkingDir(Form("%s/mc%d/",fname.Data(),sub));
171       }  
172     else
173       {
174         plugin->SetGridDataDir("/alice/data/2010/LHC10h");
175         plugin->SetDataPattern("ESDs/pass2/AOD086/*AliAOD.root");
176         plugin->SetRunPrefix("000"); 
177         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbdata%d.C",sub));
178         plugin->SetExecutable(Form("TaskAOD086PbPbdata%d.sh",sub));
179         plugin->SetJDLName(Form("TaskAOD086PbPbdata%d.jdl",sub));
180         //plugin->SetSplitMaxInputFileNumber(500);
181         plugin->SetGridWorkingDir(Form("%s/data%d/",fname.Data(),sub));
182       }  
183     FILE* listruns=fopen("RunListGrid-AOD086.txt","r");
184   }
185   Int_t irun;
186   while(!feof(listruns)){
187     fscanf(listruns,"%d\n",&irun);
188     plugin->AddRunNumber(irun);
189   }
190   // Declare alien output directory. Relative to working directory.
191   plugin->SetGridOutputDir("/alice/cern.ch/user/l/lmilano/AODAnalysis/AOD086TrackBit10/mc1/output/000/Stage_1"); // In this case will be $HOME/work/output
192   plugin->SetNrunsPerMaster(60); // 
193   plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF");
194   plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx+ AliSpectraAODTrackCuts.cxx+ AliSpectraAODEventCuts.cxx+ AliSpectraAODPID.cxx+ AliAnalysisTaskSpectraAOD.cxx+");
195   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");
196   // Declare the output file names separated by blancs.
197   // (can be like: file.root or file.root@ALICE::Niham::File)
198   //plugin->SetDefaultOutputs(0);
199   //plugin->SetOutputFiles("AnalysisResults.root.root");
200   plugin->SetMergeViaJDL(kTRUE);
201   plugin->SetOneStageMerging(kFALSE);
202   plugin->SetMaxMergeStages(2);
203   
204   plugin->SetTTL(100000);
205   // Optionally set input format (default xml-single)
206   plugin->SetInputFormat("xml-single");
207   // Optionally modify job price (default 1)
208   plugin->SetPrice(1);      
209   // Optionally modify split mode (default 'se')    
210   //plugin->SetSplitMaxInputFileNumber();
211   plugin->SetSplitMode("se");
212   return plugin;
213   delete runs;
214 }