1 //--------------------------------------------------------------------------
2 // Base macro for submitting single muon analysis.
4 // In case it is not run with full aliroot, it needs to have in the working directory:
12 // The inputPath is either:
13 // - The directory containing the AOD file in local mode
14 // - The xml file with the list AODs in the alien catalogue in grid mode
15 // - The proof dataset in proof mode
17 // The macro reads AODs and outputs file:
18 // - outputDir/singleMuAnalysis.root
19 //--------------------------------------------------------------------------
21 enum analysisMode {kMlocal, kMgridInteractive, kMgridBatch, kMproof};
22 TString modeName[4] = {"local", "local", "grid", "proof"};
24 void RunSingleMuonAnalysisFromAOD(Int_t mode=kMlocal, Char_t *inputPath=".", Char_t *outputDir=".", Char_t *aodFilename = "AliAODs.root", Long64_t nRuns = -1, Long64_t offset = 0) {
28 // Check if user is running root or aliroot
29 TString foundLib = gSystem->GetLibraries( "libSTEERBase", "", kFALSE );
30 Bool_t isFullAliroot = (foundLib.Length()==0) ? kFALSE : kTRUE;
33 gSystem->Load("libTree");
34 gSystem->Load("libGeom");
35 gSystem->Load("libVMC");
38 TProof::Open("alicecaf.cern.ch");
41 gSystem->Load("libANALYSIS");
42 gSystem->Load("libANALYSISalice");
43 gSystem->Load("libSTEERBase");
44 gSystem->Load("libAOD");
45 gSystem->Load("libESD");
46 gSystem->Load("${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libPWGmuon");
49 const Int_t nNeededPar = 6;
50 TString parList[nNeededPar] = {"STEERBase", "ESD", "AOD", "ANALYSIS", "ANALYSISalice", "PWG3muon"};
52 gProof->UploadPackage("AF-v4-15");
53 gProof->EnablePackage("AF-v4-15");
54 if(!SetupPar("PWG3muon")) return;
57 for(Int_t ipar=0; ipar<nNeededPar; ipar++){
58 if(!SetupPar(parList[ipar].Data())) return;
65 if(mode==kMgridInteractive || mode==kMgridBatch)
66 TGrid::Connect("alien://");
69 TString outFileName("singleMuAnalysis.root");
70 outFileName.Prepend(Form("%s/",outputDir));
74 if(mode!=kMproof) chain = CreateChain(mode, inputPath, aodFilename);
76 //____________________________________________//
77 // Make the analysis manager
78 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
79 AliVEventHandler* aodH = new AliAODInputHandler;
80 mgr->SetInputEventHandler(aodH);
81 //____________________________________________//
83 AliAnalysisTaskSingleMu *task1 = new AliAnalysisTaskSingleMu("SingleMu");
85 // Create containers for input/output
86 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
87 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree1", TTree::Class(),AliAnalysisManager::kOutputContainer,outFileName.Data());
89 //____________________________________________//
90 mgr->ConnectInput(task1,0,cinput1);
91 mgr->ConnectOutput(task1,0,coutput1);
92 if (!mgr->InitAnalysis()) return;
96 mgr->StartAnalysis(modeName[mode].Data(), inputPath, nRuns, offset);
98 mgr->StartAnalysis(modeName[mode].Data(),chain);
105 //______________________________________________________________________________
106 Bool_t SetupPar(char* pararchivename)
108 if (pararchivename) {
110 char pararchivenameFull[1024];
111 sprintf(pararchivenameFull, "%s.par", pararchivename);
112 if(gSystem->GetPathInfo(pararchivenameFull, fs)){
113 Error("SetupPar", "PAR Archive %s not found!\nPlease either copy it in the current directory\nor run full aliroot", pararchivenameFull);
116 char processline[1024];
117 sprintf(processline,".! tar xvzf %s.par",pararchivename);
118 gROOT->ProcessLine(processline);
119 const char* ocwd = gSystem->WorkingDirectory();
120 gSystem->ChangeDirectory(pararchivename);
121 printf("Current directory = %s\n",gSystem->pwd());
123 // check for BUILD.sh and execute
124 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
125 printf("*******************************\n");
126 printf("*** Building PAR archive ***\n");
127 printf("*******************************\n");
129 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
130 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
134 // check for SETUP.C and execute
135 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
136 printf("*******************************\n");
137 printf("*** Setup PAR archive ***\n");
138 printf("*******************************\n");
139 gROOT->Macro("PROOF-INF/SETUP.C");
142 gSystem->ChangeDirectory("../");
149 //______________________________________________________________________________
150 TChain* CreateChain(Int_t mode, Char_t* inputPath, Char_t* aodFilename = "AliAOD.root")
152 printf("*******************************\n");
153 printf("*** Getting the Chain ***\n");
154 printf("*******************************\n");
156 if(mode==kMgridInteractive || mode==kMgridBatch){
157 AliTagAnalysis *analysis = new AliTagAnalysis();
158 chain = analysis->GetChainFromCollection(inputPath,"aodTree");
161 chain = new TChain("aodTree");
162 TString inFileName(aodFilename);
163 inFileName.Prepend(Form("%s/",inputPath));
164 chain->Add(inFileName);
166 //if (chain) chain->ls();