]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/runGridBoth.C
Change of runGridBoth.C macro. Now all data set configuration is done using config...
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / runGridBoth.C
1
2 class  AliAnalysisManager;
3 class  AliAnalysisAlien;
4 class AliSpectraBothPID;
5 Int_t mc=-1;
6 Int_t aod=-1;
7 TString griddatadir="";
8 TString datapattern="";
9 TString gridworkingdir="";
10 TString aliroot="";
11 TString root="";
12
13
14 void runGridBoth(TString mode="test",TString configfile="config.txt",Int_t day=15,Int_t month=6, Int_t year=2012) 
15 {
16
17
18         ifstream infile(configfile);
19         char buffer[256];
20         while (infile.eof()==false)
21         {
22                 buffer[0]='#'; 
23                 while (buffer[0]=='#'&&infile.eof()==false)
24                         infile.getline(buffer,256);
25                 TString tmpstring(buffer);
26                 cout<<buffer<<endl;
27                 if(tmpstring.Contains("MC"))
28                 {
29                         tmpstring.Remove(0,3);
30                         cout<<tmpstring<<endl;
31                         if (!tmpstring.IsDigit())
32                         {
33                                 cout<<"Wrong format of MC flag in config file "<<endl;
34                                 return;         
35                         }
36                         mc=tmpstring.Atoi();
37                 }
38                 else if(tmpstring.Contains("AOD")&&tmpstring.Length()<6)
39                 {
40                         tmpstring.Remove(0,4);
41                         if (!tmpstring.IsDigit())
42                         {
43                                 cout<<"Wrong format of AOD flag in config file "<<endl;
44                                 return;         
45                         }
46                         aod=tmpstring.Atoi();
47                 }
48                 else if(tmpstring.Contains("GridDataDir"))
49                 {
50                         griddatadir=tmpstring.Remove(0,12);             
51                 }
52                 else if(tmpstring.Contains("DataPattern"))
53                 {       
54                         datapattern=tmpstring.Remove(0,12);
55                 }
56                 else if (tmpstring.Contains("GridWorkingDir"))
57                 {
58                         gridworkingdir=tmpstring.Remove(0,15);
59                 }
60                 else if(tmpstring.Contains("root")&&!tmpstring.Contains("aliroot"))
61                 {       
62                         root=tmpstring.Remove(0,5);
63                 }
64                 else if (tmpstring.Contains("aliroot"))
65                 {
66                         aliroot=tmpstring.Remove(0,8);
67                 }
68
69                 else
70                         continue;
71
72         }
73          
74         if(mc<0||aod<0||griddatadir.Length()<1||root.Length()<1||datapattern.Length()<1||gridworkingdir.Length()<1||aliroot.Length()<1)
75         {
76                 cout<<"lack of config info"<<endl;
77                 return; 
78         }       
79 cout<<mc<<" "<<aod<<" "<<griddatadir.Data()<<" "<<root.Data()<<" "<<datapattern.Data()<<" "<<gridworkingdir.Data()<<" "<<aliroot.Data()<<endl;
80         
81
82   TString daystring=Form("%d%d%d",year,month,day);      
83   //to be used with Aliroot > v5-03-32-AN
84   AliLog::SetGlobalDebugLevel(100);
85   // Load common libraries
86   gEnv->SetValue("XSec.GSI.DelegProxy", "2");
87   
88   // Load common libraries
89   gSystem->Load("libCore.so");
90   gSystem->Load("libTree.so");
91   gSystem->Load("libGeom.so");
92   gSystem->Load("libVMC.so");
93   gSystem->Load("libPhysics.so");
94   gSystem->Load("libMinuit.so"); 
95   gSystem->Load("libGui.so");
96   gSystem->Load("libXMLParser.so");
97   gSystem->Load("libSTEERBase.so");
98   gSystem->Load("libESD.so");
99   gSystem->Load("libCDB.so");
100   gSystem->Load("libAOD");
101   gSystem->Load("libANALYSIS");
102   gSystem->Load("libANALYSISalice");
103   gSystem->Load("libCORRFW");
104   gSystem->Load("libProof.so");
105   gSystem->Load("libRAWDatabase.so");
106   gSystem->Load("libSTEER.so");
107   gSystem->Load("libTENDER.so");
108     gSystem->Load("libTENDERSupplies.so");
109 gSystem->Load("libPWGLFspectra.so");
110   gROOT->ProcessLine(".include $ALICE_ROOT/include ");
111   gSystem->SetIncludePath("-I.");
112   gROOT->ProcessLine(".include $ALICE_ROOT/TOF ");
113
114   //gSystem->Load("libPWGLFspectra.so");
115  // gROOT->LoadMacro("AliSpectraBothTrackCuts.cxx+g");
116  // gROOT->LoadMacro("AliSpectraBothEventCuts.cxx+g");
117   // gROOT->LoadMacro("HistogramNames.cxx");
118  // gROOT->LoadMacro("AliSpectraBothHistoManager.cxx+g");
119  // gROOT->LoadMacro("AliSpectraBothPID.cxx+g");
120  // gROOT->LoadMacro("AliAnalysisTaskSpectraBoth.cxx+g");
121   //__________________________________________________________________________
122   // Use AliRoot includes to compile our task
123   gROOT->ProcessLine(".include $ALICE_ROOT/include  ");
124   gSystem->SetIncludePath("-I.");
125   gROOT->ProcessLine(".include $ALICE_ROOT/TOF ");
126   gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskSpectraBoth.C");
127         
128   // Create and configure the alien handler plugin
129   AliAnalysisGrid *alienHandler = CreateAlienHandler(mode,daystring);  
130   if (!alienHandler) return;
131   // Create the analysis manager
132   AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");
133   // Connect plug-in to the analysis manager
134   mgr->SetGridHandler(alienHandler);
135   if(aod)
136   {     
137         AliAODInputHandler* aodH = new AliAODInputHandler();
138         mgr->SetInputEventHandler(aodH);
139   }
140   else
141   {
142          AliESDInputHandler* esdH = new AliESDInputHandler();   
143          mgr->SetInputEventHandler(esdH);
144          if(mc)
145         {
146              AliMCEventHandler *mch = new AliMCEventHandler();
147              mgr->SetMCtruthEventHandler(mch);
148         }
149   }             
150   
151   // Add PID task
152  // Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,\r
153    //    Bool_t tuneOnData=kFALSE, Int_t recoPass=2, Bool_t cachePID=kFALSE, TString detResponse="",\r
154 //Bool_t useTPCEtaCorrection = kFALSE  gROOT->LoadMacro("./AddTaskSpectraBoth.C");
155
156   Double_t Nsigmapid=3.;
157   Double_t pt=5.;
158   Double_t p=5.;
159   Double_t y=.2;
160   Double_t ptTofMatch=.6;
161   UInt_t trkbit=1;
162   UInt_t trkbit2=16;
163
164   UInt_t trkbitQVector=1;
165   Bool_t UseCentPatchAOD049=kFALSE;
166   Double_t DCA=100000;
167   UInt_t minNclsTPC=70;
168   UInt_t minNclsTPC2=0; 
169   Int_t rebinfactor=1;          
170  Bool_t mcfactor=0;
171  if(mc)
172         mcfactor=1;     
173
174  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
175   AliAnalysisTaskPIDResponse *taskPID=AddTaskPIDResponse(mcfactor,kTRUE,kFALSE,2,kFALSE,"",kTRUE);
176
177
178  if(!aod)
179   {     
180         gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
181         AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
182         if(mc)
183         {
184              physSelTask->GetPhysicsSelection()->SetAnalyzeMC();
185          } 
186   }
187         
188
189         AliAnalysisTaskSpectraBoth* task1=0x0;  
190         AliAnalysisTaskSpectraBoth* task2=0x0;
191         AliAnalysisTaskSpectraBoth* task3=0x0;
192         AliAnalysisTaskSpectraBoth* task4=0x0;  
193         AliAnalysisTaskSpectraBoth* task5=0x0;
194         AliAnalysisTaskSpectraBoth* task6=0x0;
195
196
197
198         task1=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,-0.5,0.5,ptTofMatch,trkbit,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC,rebinfactor,"V0M",2);
199
200         task2=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,0.465,0.965,ptTofMatch,trkbit,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC,rebinfactor,"V0M",2);
201         
202         task3=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,0.265,0.665,ptTofMatch,trkbit,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC,rebinfactor,"V0M",2);
203
204         task4=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,-0.5,0.5,ptTofMatch,trkbit2,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC2,rebinfactor,"V0M",2);
205
206         task5=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,0.465,0.965,ptTofMatch,trkbit2,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC2,rebinfactor,"V0M",2);
207         
208         task6=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,0.265,0.665,ptTofMatch,trkbit2,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC2,rebinfactor,"V0M",2);
209
210
211   if(mc)
212   {
213         task1->SetdotheMCLoopAfterEventCuts(kTRUE);
214         task2->SetdotheMCLoopAfterEventCuts(kTRUE);
215         task3->SetdotheMCLoopAfterEventCuts(kTRUE);
216         task4->SetdotheMCLoopAfterEventCuts(kTRUE);
217         task5->SetdotheMCLoopAfterEventCuts(kTRUE);
218         task6->SetdotheMCLoopAfterEventCuts(kTRUE);
219
220
221   }
222   else
223  {
224         task1->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
225         task2->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
226         task3->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
227         task4->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
228         task5->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
229         task6->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
230
231
232 }       
233   if(!aod)
234   {
235         AliESDtrackCuts* cuttpc1=AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
236         task1->SetAliESDtrackCuts(cuttpc1);
237         AliESDtrackCuts* cuttpc2=AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
238
239         task2->SetAliESDtrackCuts(cuttpc2);
240   }
241         
242   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
243   AddTaskPIDqa(); 
244    if(mode.Contains("test"))
245         mgr->SetDebugLevel(1);
246   //mgr->Init();
247   if (!mgr->InitAnalysis())return;
248   mgr->PrintStatus();
249
250   mgr->StartAnalysis("grid");
251 }
252
253
254 AliAnalysisGrid* CreateAlienHandler(TString mode="test",TString daystring)
255 {
256   TString filename="*AliAOD.root";
257  
258                 
259   if(!aod)
260   {
261         filename="*AliESDs.root";
262   }
263
264
265
266  
267   TString jobsettings=griddatadir;
268   jobsettings+=datapattern;
269   if(aod)
270         jobsettings+="AOD";
271   else
272         jobsettings+="ESD";
273
274   if(mc)
275         jobsettings+="MC";
276   else
277         jobsettings+="DATA";
278                 
279                 
280   jobsettings.ReplaceAll("/","");       
281
282  jobsettings.ReplaceAll("*","");
283         
284         
285
286   AliAnalysisAlien *plugin = new AliAnalysisAlien();
287   //plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF  -I$ALICE_ROOT/PWGLF/SPECTRA/PiKaPr/TestAOD");
288   //plugin->SetAdditionalLibs("libSTEERBase.so libESD.so libAOD.so libANALYSISalice.so libPWGLFspectra.so libTENDER.so libTENDERSupplies.so");
289   //plugin->SetAnalysisSource("AliSpectraBothHistoManager.cxx AliSpectraBothTrackCuts.cxx AliSpectraBothEventCuts.cxx AliSpectraBothPID.cxx AliAnalysisTaskSpectraBoth.cxx");
290     plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF ");
291   plugin->SetAdditionalLibs("libTENDER.so libTENDERSupplies.so libPWGLFspectra.so");
292  // plugin->SetAnalysisSource("AliSpectraBothHistoManager.cxx AliSpectraBothTrackCuts.cxx AliSpectraBothEventCuts.cxx AliSpectraBothPID.cxx AliAnalysisTaskSpectraBoth.cxx");
293   plugin->SetOverwriteMode();
294   plugin->SetExecutableCommand("aliroot -q -b");  
295   plugin->SetRunMode(mode.Data());
296   plugin->SetNtestFiles(1);
297   //Set versions of used packages
298   plugin->SetAPIVersion("V1.1x");
299   plugin->SetROOTVersion(root.Data());
300   plugin->SetAliROOTVersion(aliroot.Data());
301   // Declare input data to be processed
302   plugin->SetGridDataDir(griddatadir.Data());
303   plugin->SetDataPattern(Form("%s/%s",datapattern.Data(),filename.Data()));
304   plugin->SetGridWorkingDir(Form("%s%s",gridworkingdir.Data(),daystring.Data()));
305   plugin->SetAnalysisMacro(Form("%s.C",jobsettings.Data()));
306   plugin->SetExecutable(Form("%s.sh",jobsettings.Data()));
307   plugin->SetJDLName(Form("Task%s.jdl",jobsettings.Data()));
308
309   if(mc)
310   {
311       plugin->SetRunPrefix(""); 
312     }  
313   else
314     {
315       plugin->SetRunPrefix("000"); 
316     }   
317   FILE* listruns=fopen("runs.txt","r");
318   Int_t irun;
319   while(!feof(listruns))
320   {
321       fscanf(listruns,"%d\n",&irun);
322       plugin->AddRunNumber(irun);
323   }
324   plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output 
325   plugin->SetMaxMergeFiles(25);
326   plugin->SetMergeExcludes("EventStat_temp.root"
327                             "event_stat.root");
328   plugin->SetMergeViaJDL(true);
329   plugin->SetTTL(15*3600);
330   // Optionally set input format (default xml-single)
331   plugin->SetInputFormat("xml-single");
332   // Optionally modify job price (default 1)
333   plugin->SetPrice(1);      
334   // Optionally modify split mode (default 'se')    
335   //plugin->SetSplitMaxInputFileNumber();
336   plugin->SetSplitMode("se");
337   return plugin;
338 }