From: lmilano Date: Mon, 30 Apr 2012 09:04:14 +0000 (+0000) Subject: Macro to run on grid X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=67c32a0aa4a05265c9802f34a8cea6d5a8732466;p=u%2Fmrichter%2FAliRoot.git Macro to run on grid --- diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C b/PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C new file mode 100644 index 00000000000..88c42520180 --- /dev/null +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C @@ -0,0 +1,207 @@ +class AliAnalysisManager; +class AliAnalysisAlien; + +void runGrid(TString mode="test",Int_t mc=0,Int_t sub=0,Int_t hi=1,TString fname="AODAnalysis") +{ + AliLog::SetGlobalDebugLevel(100); + // Load common libraries + gEnv->SetValue("XSec.GSI.DelegProxy", "2"); + + gSystem->Load("libTree.so"); + gSystem->Load("libGeom.so"); + gSystem->Load("libVMC.so"); + gSystem->Load("libPhysics.so"); + gSystem->Load("libSTEERBase.so"); + gSystem->Load("libESD.so"); + gSystem->Load("libAOD.so"); + gSystem->Load("libANALYSIS.so"); + gSystem->Load("libOADB.so"); + gSystem->Load("libANALYSISalice.so"); + gSystem->AddIncludePath("-I$ALICE_ROOT/include"); + gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g"); + gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g"); + gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g"); + gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g"); + // Use AliRoot includes to compile our task + // Create and configure the alien handler plugin + + AliAnalysisGrid *alienHandler = CreateAlienHandler(mode,mc,sub,fname); + if (!alienHandler) return; + // Create the analysis manager + AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis"); + // Connect plug-in to the analysis manager + mgr->SetGridHandler(alienHandler); + AliAODInputHandler* aodH = new AliAODInputHandler(); + mgr->SetInputEventHandler(aodH); + + gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g"); + gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g"); + gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g"); + gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g"); + + // Physics selection + gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); + // AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(isMC,kTRUE,0); + AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(mc,kTRUE,0); + // AliPhysicsSelectionTask * physicsSelectionTask = AddTaskPhysicsSelection(isMC,kFALSE,0); + if(!physicsSelectionTask ) { Printf("no physSelTask"); return; } + + // Add PID task + gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C"); + Bool_t isMC = kFALSE; + AliAnalysisTask * taskPID = AddTaskPIDResponse(mc); + mgr->AddTask(taskPID); + + // gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); + // AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(); + // if(hi) + // { + // gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C"); + // AliCentralitySelectionTask *taskCentrality = AddTaskCentrality(); + // } + // if(mc) + // { + // AliMCEventHandler *mch = new AliMCEventHandler(); + // mch->Init(""); + // mgr->SetMCtruthEventHandler(mch); + // // //physSelTask->GetPhysicsSelection()->SetAnalyzeMC(); + // // //taskCentrality->SetMCInput(); + // } + // AliAODInputHandler *inputHandler = new AliAODInputHandler("handler","handler for D2H"); + // inputHandler->AddFriend("./AliAOD.root"); + // mgr->SetInputEventHandler(inputHandler); + + //setting the analysis + Int_t iCut=0; + Double_t CentCut[2]={0,5}; + Double_t qVecCut[2]={0,100}; + + AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD("TaskAODExercise"); + mgr->AddTask(task); + //physics selection + task->SelectCollisionCandidates(); + // Set the cuts + AliSpectraAODEventCuts * vcuts = new AliSpectraAODEventCuts("Event Cuts"); + AliSpectraAODTrackCuts * tcuts = new AliSpectraAODTrackCuts("Track Cuts"); + //tcuts->SetTrackType(5); //AOD 046 & 047. Standard Cut with loose DCA + tcuts->SetTrackType(6); //AOD 046 & 047. Standard Cut with tight DCA + tcuts->SetEta(.8); + tcuts->SetPt(5); + tcuts->SetPtTOFMatching(0.6); + tcuts->SetQvecMin(qVecCut[0]); + tcuts->SetQvecMax(qVecCut[1]); + vcuts->SetCentralityCutMax(CentCut[0]); + vcuts->SetCentralityCutMin(CentCut[1]); + task->SetEventCuts(vcuts); + task->SetTrackCuts(tcuts); + task->SetNSigmaForIdentification(5.); // FIXME + task->SetYCut(.5); + vcuts->PrintCuts(); + tcuts->PrintCuts(); + if (mc) + { + task->SetIsMC(kTRUE); + AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); + AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + }else{ + AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); + AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(), AliAnalysisManager::kOutputContainer, + Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1])); + } + mgr->ConnectInput(task, 0, cinput); + mgr->ConnectOutput(task, 1, coutputpt1); + mgr->ConnectOutput(task, 2, coutputpt2); + mgr->ConnectOutput(task, 3, coutputpt3); + + mgr->SetDebugLevel(2); + + + + + + + + //mgr->Init(); + if (!mgr->InitAnalysis())return; + mgr->PrintStatus(); + // Start analysis in grid. + mgr->StartAnalysis("grid"); +} + + +AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=0,Int_t sub=0,TString fname){ + AliAnalysisAlien *plugin = new AliAnalysisAlien(); + plugin->SetOverwriteMode(); + plugin->SetExecutableCommand("aliroot -q -b"); + plugin->SetRunMode(mode.Data()); + plugin->SetNtestFiles(1); + //Set versions of used packages + plugin->SetAPIVersion("V1.1x"); + plugin->SetROOTVersion("v5-33-02b"); + plugin->SetAliROOTVersion("v5-03-18-AN"); + // Declare input data to be processed. + if(mc) + { + plugin->SetGridDataDir("/alice/sim/LHC11a10a"); + plugin->SetDataPattern("AOD048/*AliAOD.root"); + plugin->SetFriendChainName("./AliAOD.root"); + plugin->SetRunPrefix(""); + plugin->SetAnalysisMacro(Form("TaskAODPbPbMC%d.C",sub)); + plugin->SetExecutable(Form("TaskAODPbPbMC%d.sh",sub)); + plugin->SetJDLName(Form("TaskAODPbPbMC%d.jdl",sub)); + //plugin->SetSplitMaxInputFileNumber(500); + plugin->SetGridWorkingDir(Form("%s/mc%d/",fname.Data(),sub)); + } + else + { + plugin->SetGridDataDir("/alice/data/2010/LHC10h"); + plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root"); + plugin->SetFriendChainName("./AliAOD.root"); + plugin->SetRunPrefix("000"); + plugin->SetAnalysisMacro(Form("TaskAODPbPbMC%d.C",sub)); + plugin->SetExecutable(Form("TaskAODPbPbMC%d.sh",sub)); + plugin->SetJDLName(Form("TaskAODPbPb%d.jdl",sub)); + //plugin->SetSplitMaxInputFileNumber(500); + plugin->SetGridWorkingDir(Form("%s/data%d/",fname.Data(),sub)); + } + + Int_t irun; + FILE* listruns=fopen("RunListGrid.txt","r"); + while(!feof(listruns)){ + fscanf(listruns,"%d\n",&irun); + plugin->AddRunNumber(irun); + } + // Declare alien output directory. Relative to working directory. + plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output + plugin->SetNrunsPerMaster(60); // + plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF"); + plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx+ AliSpectraAODEventCuts.cxx+ AliSpectraAODTrackCuts.cxx+ AliAnalysisTaskSpectraAOD.cxx+"); + plugin->SetAdditionalLibs("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODHistoManager.h AliSpectraAODEventCuts.cxx AliSpectraAODEventCuts.h AliSpectraAODTrackCuts.cxx AliSpectraAODTrackCuts.h AliAnalysisTaskSpectraAOD.cxx AliAnalysisTaskSpectraAOD.h"); + // Declare the output file names separated by blancs. + // (can be like: file.root or file.root@ALICE::Niham::File) + //plugin->SetDefaultOutputs(0); + //plugin->SetOutputFiles("AnalysisResults.root.root"); + plugin->SetMergeViaJDL(kTRUE); + plugin->SetOneStageMerging(kFALSE); + plugin->SetMaxMergeStages(2); + + plugin->SetTTL(100000); + // Optionally set input format (default xml-single) + plugin->SetInputFormat("xml-single"); + // Optionally modify job price (default 1) + plugin->SetPrice(1); + // Optionally modify split mode (default 'se') + //plugin->SetSplitMaxInputFileNumber(); + plugin->SetSplitMode("se"); + return plugin; + delete runs; +}