2fce0714954fdfe3b98e92c126fa1f4ea8895e9e
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / runCorrection.C
1 void runCorrection(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, const char* option = ""){
2   if (aProof)
3   {
4     TProof::Open("lxb6046");
5
6     // Enable the needed package
7     gProof->UploadPackage("STEERBase");
8     gProof->EnablePackage("STEERBase");
9     gProof->UploadPackage("ESD");
10     gProof->EnablePackage("ESD");
11     gProof->UploadPackage("AOD");
12     gProof->EnablePackage("AOD");
13     gProof->UploadPackage("ANALYSIS");
14     gProof->EnablePackage("ANALYSIS");
15     gProof->UploadPackage("PWG0base");
16     gProof->EnablePackage("PWG0base");
17   }
18   else
19   {
20     gSystem->Load("libVMC");
21     gSystem->Load("libTree");
22     gSystem->Load("libSTEERBase");
23     gSystem->Load("libESD");
24     gSystem->Load("libAOD");
25     gSystem->Load("libANALYSIS");
26     gSystem->Load("libPWG0base");
27   }
28
29   // Create chain of input files
30   gROOT->LoadMacro("../CreateESDChain.C");
31   chain = CreateESDChain(data, nRuns, offset);
32
33   // Create the analysis manager
34   mgr = new AliAnalysisManager;
35
36   // selection of esd tracks
37   gROOT->ProcessLine(".L CreateCuts.C");
38   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
39   if (!esdTrackCuts)
40   {
41     printf("ERROR: esdTrackCuts could not be created\n");
42     return;
43   }
44
45   TString taskName("AlidNdEtaCorrectionTask.cxx+");
46   if (aDebug)
47     taskName += "+g";
48
49   // Create, add task
50   if (aProof) {
51     gProof->Load(taskName);
52   } else
53     gROOT->Macro(taskName);
54
55   task = new AlidNdEtaCorrectionTask(option);
56   task->SetTrackCuts(esdTrackCuts);
57   task->SetAnalysisMode(AlidNdEtaCorrectionTask::kSPD);
58
59   mgr->AddTask(task);
60
61   // Enable MC event handler
62   AliMCEventHandler* handler = new AliMCEventHandler;
63   handler->SetReadTR(kFALSE);
64   mgr->SetMCtruthEventHandler(handler);
65
66   // Add ESD handler
67   AliESDInputHandler* esdH = new AliESDInputHandler;
68   mgr->SetInputEventHandler(esdH);
69
70   // Attach input
71   cInput  = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
72   mgr->ConnectInput(task, 0, cInput);
73
74   // Attach output
75   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
76   mgr->ConnectOutput(task, 0, cOutput);
77
78   // Enable debug printouts
79   if (aDebug)
80     mgr->SetDebugLevel(2);
81
82   // Run analysis
83   mgr->InitAnalysis();
84   mgr->PrintStatus();
85
86   //aProof = kFALSE;
87
88   mgr->StartAnalysis((aProof) ? "proof" : "local", chain);
89 }