1 /********************************************
2 Macro to launch TOF QA task on ESDs data
4 Author: fbellini@cern.ch
5 Last update: 18 october 2012
6 *********************************************/
8 TString analysisMode = "grid"; // "local" or "grid" - needs to be "grid" for plugin test mode
9 Bool_t useAlienPlugin=kTRUE; //use kFALSE for local analysis
12 Int_t runList[2]={186084,186162};
16 TString prod = "LHC12d";
17 TString myRecPass="cpass1";
18 TString myQAfileSuffix="_Barrel";
20 TString gridUser="fbellini";
21 Int_t gridNtestFiles = 1;
25 //do not change! to be set by SetupIO()
26 TString myGridDataDir="";
27 TString myDataPattern="";
31 TString myExecutableName;
34 //----------------------------------------------------------------------
35 void SetupIO(TString filesPrefix = "")
37 //Setup I/O paths and file names
38 myGridDataDir = "/alice";
40 myWorkDir = "QA_pp2012";
41 myOutDir = Form("%s", prod.Data()) ;
42 myJDLname = Form("job_Run%s", myWorkDir.Data());
43 myExecutableName = Form("Run%s", myWorkDir.Data());
44 myMacroName = Form("Run%s", myWorkDir.Data());
46 if (isMC) myDataPattern="*AliESDs.root";
47 else myDataPattern=Form("%s/*AliESDs%s.root",myRecPass.Data(),myQAfileSuffix.Data());
48 myOutDir.Append(Form("_%s",myRecPass.Data()));
49 myJDLname.Append(Form("_%s",myRecPass.Data()));
50 myExecutableName.Append(Form("_%s",myRecPass.Data()));
51 myMacroName.Append(Form("_%s",myRecPass.Data()));
54 myGridDataDir.Append("/sim");
55 myWorkDir.Append("_MC");
56 myJDLname.Append("_MC");
57 myExecutableName.Append("_MC");
58 myMacroName.Append("_MC");
60 myGridDataDir.Append(Form("/data/%i",year));
62 myGridDataDir.Append(Form("/%s",prod.Data()));
63 myOutDir.Append(filesPrefix.Data());
64 myExecutableName.Append(Form("%s.sh",filesPrefix.Data()));
65 myMacroName.Append(Form("%s.C",filesPrefix.Data()));
66 myJDLname.Append(Form("_run%i-%i%s.jdl",runNmin,runNmax,filesPrefix.Data()));
68 Printf("========================================= Setup I/O:");
69 Printf("myGridDataDir = %s", myGridDataDir.Data());
70 Printf("myDataPattern = %s", myDataPattern.Data());
71 Printf("myWorkDir = %s", myWorkDir.Data());
72 Printf("myOutDir = %s", myOutDir.Data());
73 Printf("myJDLname = %s", myJDLname.Data());
74 Printf("myExecutableName = %s", myExecutableName.Data());
75 Printf("myMacroName = %s", myMacroName.Data());
76 Printf("=======================================================\n");
78 //----------------------------------------------------------------------
79 void SetGridUser(TString username){
81 gridUser = username.Data();
84 //----------------------------------------------------------------------
85 void SetGridNtestFiles(Int_t nfiles = 1){
86 if (nfiles<1) gridNtestFiles=1;
87 else gridNtestFiles = nfiles;
90 //----------------------------------------------------------------------
93 gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
94 gSystem->Load("libANALYSIS");
95 gSystem->Load("libANALYSISalice");
96 gSystem->Load("libCORRFW");
97 gSystem->Load("libTENDER");
98 gSystem->Load("libPWGPP.so");
100 //----------------------------------------------------------------------
101 void RunAnalysisTOFqaGrid(TString pluginmode="test", Int_t ntestfiles = 10, TString filesPrefix = "", TString gridUser="fbellini")
104 SetGridUser(gridUser.Data());
105 SetGridNtestFiles(ntestfiles);
106 SetupIO(filesPrefix.Data());
107 if(analysisMode=="grid") {
108 TGrid::Connect("alien://");
111 Long64_t nentries=100000, firstentry=0;
112 Bool_t readMC = kFALSE;
115 AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode);
116 if(!alienHandler) return;
119 // Prepare input chain
120 TChain *chainESD = 0;
121 if(!useAlienPlugin) {
122 chainESD=new TChain("esdTree");
123 chainESD->Add("AliESDs.root"); //used to test locally - modify with local path files
126 AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
127 mgr->SetDebugLevel(1);
128 if(useAlienPlugin) mgr->SetGridHandler(alienHandler);
129 AliInputEventHandler *esdH = new AliESDInputHandler();
130 mgr->SetInputEventHandler(esdH);
132 //-------------------------------------------------------------------
133 //-------------------------------------------------------------------
134 // Analysis tasks (wagons of the train)
138 //Wagon for physics event selection
139 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
140 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
141 AliPhysicsSelection* physSel = physSelTask->GetPhysicsSelection();
142 if (isMC)physSelTask->GetPhysicsSelection()->SetAnalyzeMC();
143 //physSel->AddBackgroundIdentification(new AliBackgroundSelection());
145 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TOF/AddTaskTOFQA.C");
146 AliAnalysisTaskTOFqa *TOFqa = (AliAnalysisTaskTOFqa*) AddTaskTOFQA(kTRUE);
149 AliMCEventHandler *mcH = new AliMCEventHandler();
150 mgr->SetMCtruthEventHandler(mcH);
155 if(chainESD) printf("CHAIN HAS %d ENTRIES\n",(Int_t)chainESD->GetEntries());
157 if(!mgr->InitAnalysis()) return;
159 if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";
160 mgr->StartAnalysis(analysisMode.Data(),chainESD,nentries,firstentry);
165 //_____________________________________________________________________________
166 AliAnalysisGrid* CreateAlienHandler(TString pluginmode="full")
169 AliAnalysisAlien *plugin = new AliAnalysisAlien();
170 // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
171 plugin->SetRunMode(pluginmode.Data());
172 plugin->SetUser(gridUser.Data()); //MODIFICA
173 plugin->SetNtestFiles(gridNtestFiles);
174 // Set versions of used packages
175 plugin->SetAPIVersion("V1.1x");
176 plugin->SetROOTVersion("v5-34-02"); //MODIFICA
177 plugin->SetAliROOTVersion("v5-03-70-AN"); //MODIFICA
178 //Set user grid output dir
179 plugin->SetGridWorkingDir(myWorkDir.Data());
180 plugin->SetGridOutputDir(myOutDir.Data());
181 plugin->SetCheckCopy(kTRUE);
182 plugin->SetGridDataDir(myGridDataDir.Data());
183 plugin->SetDataPattern(myDataPattern.Data());
184 if (!isMC) plugin->SetRunPrefix("000");
185 for (Int_t irun=runNmin;irun<runNmax;irun++){
186 plugin->AddRunNumber((Int_t )runList[irun]);
188 plugin->SetOutputToRunNo(1);
189 plugin->SetNrunsPerMaster(1);
190 plugin->SetExecutableCommand("aliroot -b -q");
191 plugin->SetOutputToRunNo(1);
192 plugin->SetNrunsPerMaster(1);
194 plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
195 plugin->SetAdditionalLibs("libANALYSIS.so libANALYSISalice.so libCORRFW.so libTENDER.so libPWGPP.so ");//libTRDbase.so libTRDrec.so
196 plugin->SetDefaultOutputs(kTRUE);
197 plugin->SetAnalysisMacro("AnalysisTOFqaSigned.C"); //MODIFICA se vuoi
198 plugin->SetExecutable("analysisTOFqaSigned.sh"); //MODIFICA se vuoi
199 plugin->SetSplitMaxInputFileNumber(50);
200 plugin->SetMaxInitFailed(15);
201 plugin->SetTTL(80000);
202 plugin->SetInputFormat("xml-single");
203 plugin->SetJDLName("TaskAnalysisTOFqaSigned.jdl"); //MODIFICA se vuoi
204 plugin->SetSplitMode("se");
208 //-----------------------------------------------------------------------------
209 TChain *CreateESDChain(TString esdpath=".",Int_t ifirst=-1,Int_t ilast=-1)
211 TChain *chainESD = new TChain("esdTree");
213 chainESD->Add("AliESDs.root");
215 for(Int_t i=ifirst; i<=ilast; i++) {
216 TString esdfile=esdpath; esdfile+=i; esdfile.Append("/AliESDs.root");
217 chainESD->Add(esdfile.Data());