2 class AliAnalysisManager;
3 class AliAnalysisAlien;
4 class AliSpectraBothPID;
7 TString griddatadir="";
8 TString datapattern="";
9 TString gridworkingdir="";
14 void runGridBoth(TString mode="test",TString configfile="config.txt",Int_t day=15,Int_t month=6, Int_t year=2012)
18 ifstream infile(configfile);
20 while (infile.eof()==false)
23 while (buffer[0]=='#'&&infile.eof()==false)
24 infile.getline(buffer,256);
25 TString tmpstring(buffer);
27 if(tmpstring.Contains("MC"))
29 tmpstring.Remove(0,3);
30 cout<<tmpstring<<endl;
31 if (!tmpstring.IsDigit())
33 cout<<"Wrong format of MC flag in config file "<<endl;
38 else if(tmpstring.Contains("AOD")&&tmpstring.Length()<6)
40 tmpstring.Remove(0,4);
41 if (!tmpstring.IsDigit())
43 cout<<"Wrong format of AOD flag in config file "<<endl;
48 else if(tmpstring.Contains("GridDataDir"))
50 griddatadir=tmpstring.Remove(0,12);
52 else if(tmpstring.Contains("DataPattern"))
54 datapattern=tmpstring.Remove(0,12);
56 else if (tmpstring.Contains("GridWorkingDir"))
58 gridworkingdir=tmpstring.Remove(0,15);
60 else if(tmpstring.Contains("root")&&!tmpstring.Contains("aliroot"))
62 root=tmpstring.Remove(0,5);
64 else if (tmpstring.Contains("aliroot"))
66 aliroot=tmpstring.Remove(0,8);
74 if(mc<0||aod<0||griddatadir.Length()<1||root.Length()<1||datapattern.Length()<1||gridworkingdir.Length()<1||aliroot.Length()<1)
76 cout<<"lack of config info"<<endl;
79 cout<<mc<<" "<<aod<<" "<<griddatadir.Data()<<" "<<root.Data()<<" "<<datapattern.Data()<<" "<<gridworkingdir.Data()<<" "<<aliroot.Data()<<endl;
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");
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 ");
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");
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);
137 AliAODInputHandler* aodH = new AliAODInputHandler();
138 mgr->SetInputEventHandler(aodH);
142 AliESDInputHandler* esdH = new AliESDInputHandler();
143 mgr->SetInputEventHandler(esdH);
146 AliMCEventHandler *mch = new AliMCEventHandler();
147 mgr->SetMCtruthEventHandler(mch);
152 // Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,
153 // Bool_t tuneOnData=kFALSE, Int_t recoPass=2, Bool_t cachePID=kFALSE, TString detResponse="",
154 //Bool_t useTPCEtaCorrection = kFALSE gROOT->LoadMacro("./AddTaskSpectraBoth.C");
156 Double_t Nsigmapid=3.;
160 Double_t ptTofMatch=.6;
164 UInt_t trkbitQVector=1;
165 Bool_t UseCentPatchAOD049=kFALSE;
167 UInt_t minNclsTPC=70;
168 UInt_t minNclsTPC2=0;
174 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
175 AliAnalysisTaskPIDResponse *taskPID=AddTaskPIDResponse(mcfactor,kTRUE,kFALSE,2,kFALSE,"",kTRUE);
176 taskPID->SetUseTPCEtaCorrection(kTRUE);
179 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
180 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
183 physSelTask->GetPhysicsSelection()->SetAnalyzeMC();
188 AliAnalysisTaskSpectraBoth* task1=0x0;
189 AliAnalysisTaskSpectraBoth* task2=0x0;
190 AliAnalysisTaskSpectraBoth* task3=0x0;
191 AliAnalysisTaskSpectraBoth* task4=0x0;
195 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);
197 task2=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,-0.465,0.035,ptTofMatch,trkbit,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC,rebinfactor,"V0M",2);
199 task3=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,2.0,pt,p,-0.465,0.035,ptTofMatch,trkbit,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC,rebinfactor,"V0M",2);
201 task4=AddTaskSpectraBoth(mcfactor,-1,-1,-1,-1,-0.8,0.8,Nsigmapid,pt,p,-0.465,0.035,ptTofMatch,trkbit2,trkbitQVector,UseCentPatchAOD049,DCA,minNclsTPC2,rebinfactor,"V0M",2);
208 task1->SetdotheMCLoopAfterEventCuts(kTRUE);
209 task2->SetdotheMCLoopAfterEventCuts(kTRUE);
210 task3->SetdotheMCLoopAfterEventCuts(kTRUE);
211 task4->SetdotheMCLoopAfterEventCuts(kTRUE);
217 task1->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
218 task2->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
219 task3->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
220 task4->GetEventCuts()->SetTriggerSettings(AliVEvent::kINT7);
226 AliESDtrackCuts* cuttpc1=AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
227 task1->SetAliESDtrackCuts(cuttpc1);
228 AliESDtrackCuts* cuttpc2=AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
230 task2->SetAliESDtrackCuts(cuttpc2);
233 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
235 if(mode.Contains("test"))
236 mgr->SetDebugLevel(1);
238 if (!mgr->InitAnalysis())return;
241 mgr->StartAnalysis("grid");
245 AliAnalysisGrid* CreateAlienHandler(TString mode="test",TString daystring)
247 TString filename="*AliAOD.root";
252 filename="*AliESDs.root";
258 TString jobsettings=griddatadir;
259 jobsettings+=datapattern;
271 jobsettings.ReplaceAll("/","");
273 jobsettings.ReplaceAll("*","");
277 AliAnalysisAlien *plugin = new AliAnalysisAlien();
278 //plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF -I$ALICE_ROOT/PWGLF/SPECTRA/PiKaPr/TestAOD");
279 //plugin->SetAdditionalLibs("libSTEERBase.so libESD.so libAOD.so libANALYSISalice.so libPWGLFspectra.so libTENDER.so libTENDERSupplies.so");
280 //plugin->SetAnalysisSource("AliSpectraBothHistoManager.cxx AliSpectraBothTrackCuts.cxx AliSpectraBothEventCuts.cxx AliSpectraBothPID.cxx AliAnalysisTaskSpectraBoth.cxx");
281 plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF ");
282 plugin->SetAdditionalLibs("libTENDER.so libTENDERSupplies.so libPWGLFspectra.so");
283 // plugin->SetAnalysisSource("AliSpectraBothHistoManager.cxx AliSpectraBothTrackCuts.cxx AliSpectraBothEventCuts.cxx AliSpectraBothPID.cxx AliAnalysisTaskSpectraBoth.cxx");
284 plugin->SetOverwriteMode();
285 plugin->SetExecutableCommand("aliroot -q -b");
286 plugin->SetRunMode(mode.Data());
287 plugin->SetNtestFiles(1);
288 //Set versions of used packages
289 plugin->SetAPIVersion("V1.1x");
290 plugin->SetROOTVersion(root.Data());
291 plugin->SetAliROOTVersion(aliroot.Data());
292 // Declare input data to be processed
293 plugin->SetGridDataDir(griddatadir.Data());
294 plugin->SetDataPattern(Form("%s/%s",datapattern.Data(),filename.Data()));
295 plugin->SetGridWorkingDir(Form("%s%s",gridworkingdir.Data(),daystring.Data()));
296 plugin->SetAnalysisMacro(Form("%s.C",jobsettings.Data()));
297 plugin->SetExecutable(Form("%s.sh",jobsettings.Data()));
298 plugin->SetJDLName(Form("Task%s.jdl",jobsettings.Data()));
302 plugin->SetRunPrefix("");
306 plugin->SetRunPrefix("000");
308 FILE* listruns=fopen("runs.txt","r");
310 while(!feof(listruns))
312 fscanf(listruns,"%d\n",&irun);
313 plugin->AddRunNumber(irun);
315 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
316 plugin->SetMaxMergeFiles(25);
317 plugin->SetMergeExcludes("EventStat_temp.root"
319 plugin->SetMergeViaJDL(true);
320 plugin->SetTTL(15*3600);
321 // Optionally set input format (default xml-single)
322 plugin->SetInputFormat("xml-single");
323 // Optionally modify job price (default 1)
325 // Optionally modify split mode (default 'se')
326 //plugin->SetSplitMaxInputFileNumber();
327 plugin->SetSplitMode("se");