1 #if !defined(__CINT__) || defined(__MAKECINT__)
7 #include "TObjString.h"
12 #include "AliAnalysisManager.h"
13 #include "AliAnalysisAlien.h"
14 #include "AliESDInputHandler.h"
21 //_____________________________________________________________________________
22 Int_t GetRunNumber(TString filePath)
24 TObjArray* array = filePath.Tokenize("/");
26 TString auxString = "";
28 for ( Int_t ientry=0; ientry<array->GetEntries(); ientry++ ) {
29 auxString = array->At(ientry)->GetName();
30 if ( auxString.Contains("000") ) {
31 runNum = auxString.Atoi();
38 array = auxString.Tokenize("_");
40 auxString = array->Last()->GetName();
41 auxString.ReplaceAll(".root","");
42 if ( auxString.IsDigit() )
43 runNum = auxString.Atoi();
50 //_____________________________________________________________________________
51 void CopyFile(TString inFilename, TString baseOutDir=".", Bool_t makeRunDir=kTRUE, TString changeFilename="")
53 if ( inFilename.Contains("alien://") && ! gGrid )
54 TGrid::Connect("alien://");
56 TObjArray* array = inFilename.Tokenize("/");
58 TString outFilename = changeFilename.IsNull() ? array->Last()->GetName() : changeFilename.Data();
62 Int_t runNumber = GetRunNumber(inFilename);
63 if ( runNumber >= 0 ) {
64 baseOutDir = Form("%s/%i", baseOutDir.Data(), runNumber);
65 if ( gSystem->AccessPathName(baseOutDir.Data()) )
66 gSystem->mkdir(baseOutDir.Data());
68 else printf("Warning: run number not found!\n");
70 //outFilename.ReplaceAll(".root", Form("_%i.root", runNumber));
71 outFilename.Prepend(Form("%s/", baseOutDir.Data()));
72 Bool_t showProgressBar = ! gROOT->IsBatch();
73 TFile::Cp(inFilename.Data(), outFilename.Data(), showProgressBar);
74 printf("outDir: %s\n", baseOutDir.Data());
75 printf("outFile: %s\n", outFilename.Data());
80 //_____________________________________________________________________________
81 AliAnalysisAlien* CreateAlienHandler()
83 AliAnalysisAlien *plugin = new AliAnalysisAlien();
86 plugin->SetRunMode("terminate");
88 // Declare all libraries
89 plugin->SetAdditionalLibs("libCORRFW.so libPWGHFbase.so libPWGmuon.so libPWGPPMUONlite.so");
91 plugin->SetAdditionalRootLibs("libXMLParser.so libGui.so libProofPlayer.so");
93 plugin->AddIncludePath("-I.");
94 plugin->AddIncludePath("-I$ALICE_ROOT/PWGPP/MUON/lite");
100 //_____________________________________________________________________________
101 void terminateQA(TString outfilename = "QAresults.root", Bool_t force = kFALSE)
104 // Load common libraries
106 gSystem->Load("libTree");
107 gSystem->Load("libGeom");
108 gSystem->Load("libVMC");
109 gSystem->Load("libPhysics");
110 gSystem->Load("libProof");
112 TString libsList = "libANALYSIS.so libOADB.so libANALYSISalice.so libCORRFW.so libPWGHFbase.so libPWGmuon.so libPWGPPMUONlite.so";
114 TObjArray* libsArray = libsList.Tokenize(" ");
115 libsArray->SetOwner();
116 TString currLib = "";
117 for ( Int_t ilib=0; ilib<libsArray->GetEntries(); ilib++ ) {
118 currLib = libsArray->At(ilib)->GetName();
119 gSystem->Load(currLib.Data());
122 AliAnalysisAlien* alienHandler = CreateAlienHandler();
124 AliAnalysisManager* mgr = new AliAnalysisManager("testAnalysis");
125 mgr->SetCommonFileName(outfilename.Data());
126 mgr->SetGridHandler(alienHandler);
128 // Needed to the manager (but not used in terminate mode)
129 AliESDInputHandler* esdH = new AliESDInputHandler();
130 esdH->SetReadFriends(kFALSE);
131 mgr->SetInputEventHandler(esdH);
135 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskMuonQA.C");
136 AliAnalysisTaskMuonQA* muonQATask = AddTaskMuonQA();
140 // Check if terminate was already performed
142 TObject* paramContainer = mgr->GetParamOutputs()->At(0);
143 if ( paramContainer ) {
144 TFile* file = TFile::Open(outfilename);
145 if ( file->FindObjectAny(paramContainer->GetName() ) ) {
146 printf("\nTerminate was already executed!\n");
147 printf("Nothing to be done\n");
156 if ( ! mgr->InitAnalysis()) {
157 printf("Fatal: Cannot initialize analysis\n");
161 mgr->StartAnalysis("grid terminate");