]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C
Macro to run on grid
[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=0,Int_t hi=1,TString fname="AODAnalysis") 
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   gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g");
22   gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g");
23   gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g");
24   gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g");
25   // Use AliRoot includes to compile our task
26   // Create and configure the alien handler plugin
27   
28   AliAnalysisGrid *alienHandler = CreateAlienHandler(mode,mc,sub,fname);  
29   if (!alienHandler) return;
30   // Create the analysis manager
31   AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");
32   // Connect plug-in to the analysis manager
33   mgr->SetGridHandler(alienHandler);
34   AliAODInputHandler* aodH = new AliAODInputHandler();
35   mgr->SetInputEventHandler(aodH);
36   
37   gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g");
38   gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g");
39   gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g");
40   gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g");
41
42   // Physics selection
43   gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
44   //  AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(isMC,kTRUE,0);
45   AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(mc,kTRUE,0);
46   //  AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(isMC,kFALSE,0);
47   if(!physicsSelectionTask ) { Printf("no physSelTask"); return; }
48   
49   // Add PID task
50   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
51   Bool_t isMC = kFALSE;
52   AliAnalysisTask * taskPID = AddTaskPIDResponse(mc);
53   mgr->AddTask(taskPID);
54   
55   // gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
56   // AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
57   // if(hi)
58   //   {
59   //     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
60   //     AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
61   //   }        
62   // if(mc)
63   //   {
64   //     AliMCEventHandler *mch = new AliMCEventHandler();
65   //     mch->Init("");
66   //     mgr->SetMCtruthEventHandler(mch);
67   //     //     //physSelTask->GetPhysicsSelection()->SetAnalyzeMC(); 
68   //     //     //taskCentrality->SetMCInput(); 
69   //   }
70   // AliAODInputHandler *inputHandler = new AliAODInputHandler("handler","handler for D2H");
71   // inputHandler->AddFriend("./AliAOD.root");
72   // mgr->SetInputEventHandler(inputHandler);
73
74   //setting the analysis
75   Int_t iCut=0;
76   Double_t CentCut[2]={0,5};
77   Double_t qVecCut[2]={0,100};
78   
79   AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD("TaskAODExercise");
80   mgr->AddTask(task);
81   //physics selection
82   task->SelectCollisionCandidates();     
83   // Set the cuts
84   AliSpectraAODEventCuts * vcuts = new AliSpectraAODEventCuts("Event Cuts");
85   AliSpectraAODTrackCuts  * tcuts = new AliSpectraAODTrackCuts("Track Cuts");
86   //tcuts->SetTrackType(5); //AOD 046 & 047. Standard Cut with loose DCA
87   tcuts->SetTrackType(6); //AOD 046 & 047. Standard Cut with tight DCA
88   tcuts->SetEta(.8);
89   tcuts->SetPt(5);
90   tcuts->SetPtTOFMatching(0.6);   
91   tcuts->SetQvecMin(qVecCut[0]);   
92   tcuts->SetQvecMax(qVecCut[1]);    
93   vcuts->SetCentralityCutMax(CentCut[0]);  
94   vcuts->SetCentralityCutMin(CentCut[1]);
95   task->SetEventCuts(vcuts);
96   task->SetTrackCuts(tcuts);
97   task->SetNSigmaForIdentification(5.); // FIXME
98   task->SetYCut(.5);
99   vcuts->PrintCuts();
100   tcuts->PrintCuts();
101   if (mc)
102     {
103       task->SetIsMC(kTRUE);
104       AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
105       AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::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 *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::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       AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
110                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
111     }else{       
112     AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
113     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::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 *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::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 *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::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   
125   mgr->SetDebugLevel(2);
126   
127   
128   
129
130
131   
132
133   //mgr->Init();
134   if (!mgr->InitAnalysis())return;
135   mgr->PrintStatus();
136   // Start analysis in grid.
137   mgr->StartAnalysis("grid");
138 }
139
140
141 AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=0,Int_t sub=0,TString fname){
142   AliAnalysisAlien *plugin = new AliAnalysisAlien();
143   plugin->SetOverwriteMode();
144   plugin->SetExecutableCommand("aliroot -q -b");  
145   plugin->SetRunMode(mode.Data());
146   plugin->SetNtestFiles(1);
147   //Set versions of used packages
148   plugin->SetAPIVersion("V1.1x");
149   plugin->SetROOTVersion("v5-33-02b");
150   plugin->SetAliROOTVersion("v5-03-18-AN");
151   // Declare input data to be processed.
152   if(mc)
153     {
154       plugin->SetGridDataDir("/alice/sim/LHC11a10a");
155       plugin->SetDataPattern("AOD048/*AliAOD.root");
156       plugin->SetFriendChainName("./AliAOD.root");
157       plugin->SetRunPrefix(""); 
158       plugin->SetAnalysisMacro(Form("TaskAODPbPbMC%d.C",sub));
159       plugin->SetExecutable(Form("TaskAODPbPbMC%d.sh",sub));
160       plugin->SetJDLName(Form("TaskAODPbPbMC%d.jdl",sub));
161       //plugin->SetSplitMaxInputFileNumber(500);
162       plugin->SetGridWorkingDir(Form("%s/mc%d/",fname.Data(),sub));
163     }  
164   else
165     {
166       plugin->SetGridDataDir("/alice/data/2010/LHC10h");
167       plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root");
168       plugin->SetFriendChainName("./AliAOD.root");
169       plugin->SetRunPrefix("000"); 
170       plugin->SetAnalysisMacro(Form("TaskAODPbPbMC%d.C",sub));
171       plugin->SetExecutable(Form("TaskAODPbPbMC%d.sh",sub));
172       plugin->SetJDLName(Form("TaskAODPbPb%d.jdl",sub));
173       //plugin->SetSplitMaxInputFileNumber(500);
174       plugin->SetGridWorkingDir(Form("%s/data%d/",fname.Data(),sub));
175     }  
176   
177   Int_t irun;
178   FILE* listruns=fopen("RunListGrid.txt","r");
179   while(!feof(listruns)){
180     fscanf(listruns,"%d\n",&irun);
181     plugin->AddRunNumber(irun);
182   }
183   // Declare alien output directory. Relative to working directory.
184   plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
185   plugin->SetNrunsPerMaster(60); // 
186   plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF");
187   plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx+ AliSpectraAODEventCuts.cxx+ AliSpectraAODTrackCuts.cxx+ AliAnalysisTaskSpectraAOD.cxx+");
188   plugin->SetAdditionalLibs("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODHistoManager.h AliSpectraAODEventCuts.cxx AliSpectraAODEventCuts.h AliSpectraAODTrackCuts.cxx AliSpectraAODTrackCuts.h AliAnalysisTaskSpectraAOD.cxx AliAnalysisTaskSpectraAOD.h");
189   // Declare the output file names separated by blancs.
190   // (can be like: file.root or file.root@ALICE::Niham::File)
191   //plugin->SetDefaultOutputs(0);
192   //plugin->SetOutputFiles("AnalysisResults.root.root");
193   plugin->SetMergeViaJDL(kTRUE);
194   plugin->SetOneStageMerging(kFALSE);
195   plugin->SetMaxMergeStages(2);
196   
197   plugin->SetTTL(100000);
198   // Optionally set input format (default xml-single)
199   plugin->SetInputFormat("xml-single");
200   // Optionally modify job price (default 1)
201   plugin->SetPrice(1);      
202   // Optionally modify split mode (default 'se')    
203   //plugin->SetSplitMaxInputFileNumber();
204   plugin->SetSplitMode("se");
205   return plugin;
206   delete runs;
207 }