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.Length() == 9 && auxString.IsDigit() ) {
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, Bool_t runTrig = 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 libOADB libANALYSISalice libCORRFW libPWGHFbase libPWGmuon libPWGPPMUONlite";
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);
136 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskMTRchamberEfficiency.C");
137 AliAnalysisTaskTrigChEff* trigChEffTask = AddTaskMTRchamberEfficiency(kFALSE);
138 trigChEffTask->SetTerminateOptions("PhysSelPass","ANY","-5_105","FORCEBATCH trigChEff_ANY_Apt_allTrig.root?PhysSelPass?ANY?-5_105?NoSelMatchAptFromTrg");
141 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskMuonQA.C");
142 AliAnalysisTaskMuonQA* muonQATask = AddTaskMuonQA();
147 // Check if terminate was already performed
149 TObject* paramContainer = mgr->GetParamOutputs()->At(0);
150 if ( paramContainer ) {
151 TFile* file = TFile::Open(outfilename);
152 if ( file->FindObjectAny(paramContainer->GetName() ) ) {
153 printf("\nTerminate was already executed!\n");
154 printf("Nothing to be done\n");
163 if ( ! mgr->InitAnalysis()) {
164 printf("Fatal: Cannot initialize analysis\n");
168 mgr->StartAnalysis("grid terminate");