A modification was recently introduced in ANALYSIS trunk that automatically creates...
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / run.C
1 void Load(const char* taskName, Bool_t debug)
2 {
3   TString compileTaskName;
4   compileTaskName.Form("%s.cxx++", taskName);
5   if (debug)
6     compileTaskName += "g";
7
8   if (gProof) {
9     gProof->Load(compileTaskName);
10   } else
11     gROOT->Macro(compileTaskName);
12
13   // Enable debug printouts
14   if (debug)
15   {
16     AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2);
17   }
18   else
19     AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
20 }
21
22 void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Bool_t mc = kTRUE, const char* option = "")
23 {
24   // runWhat options: 0 = AlidNdEtaTask
25   //                  1 = AlidNdEtaCorrectionTask
26   //                  2 = both
27   //
28   // aProof option: 0 no proof
29   //                1 proof with chain
30   //                2 proof with dataset
31
32   TString taskName;
33   if (runWhat == 0 || runWhat == 2)
34   {
35     Printf("Running AlidNdEtaTask");
36   }
37   if (runWhat == 1 || runWhat == 2)
38   {
39     Printf("Running AlidNdEtaCorrectionTask");
40     if (!mc)
41     {
42       Printf("AlidNdEtaCorrectionTask needs MC. Exiting...");
43       return;
44     }
45   }
46
47   if (nRuns < 0)
48     nRuns = 1234567890;
49
50   if (aProof)
51   {
52     TProof::Open("lxb6046");
53     //gProof->SetParallel(1);
54
55     // Enable the needed package
56     if (1)
57     {
58       gProof->UploadPackage("$ALICE_ROOT/STEERBase");
59       gProof->EnablePackage("$ALICE_ROOT/STEERBase");
60       gProof->UploadPackage("$ALICE_ROOT/ESD");
61       gProof->EnablePackage("$ALICE_ROOT/ESD");
62       gProof->UploadPackage("$ALICE_ROOT/AOD");
63       gProof->EnablePackage("$ALICE_ROOT/AOD");
64       gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
65       gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
66       gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
67       gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
68     }
69     else
70     {
71       gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
72       gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
73     }
74
75     gProof->UploadPackage("$ALICE_ROOT/PWG0base");
76     gProof->EnablePackage("$ALICE_ROOT/PWG0base");
77   }
78   else
79   {
80     gSystem->Load("libVMC");
81     gSystem->Load("libTree");
82     gSystem->Load("libSTEERBase");
83     gSystem->Load("libESD");
84     gSystem->Load("libAOD");
85     gSystem->Load("libANALYSIS");
86     gSystem->Load("libANALYSISalice");
87     gSystem->Load("libPWG0base");
88   }
89
90   // Create the analysis manager
91   mgr = new AliAnalysisManager;
92
93   // Add ESD handler
94   AliESDInputHandler* esdH = new AliESDInputHandler;
95   esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDVZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades AliESDTZERO ALIESDACORDE MuonTracks TrdTracks CaloClusters");
96   mgr->SetInputEventHandler(esdH);
97
98
99   AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD;
100   AliPWG0Helper::Trigger      trigger      = AliPWG0Helper::kMB1;
101
102   AliPWG0Helper::PrintConf(analysisMode, trigger);
103
104   AliESDtrackCuts* esdTrackCuts = 0;
105   if (analysisMode != AliPWG0Helper::kSPD)
106   {
107     // selection of esd tracks
108     gROOT->ProcessLine(".L ../CreateStandardCuts.C");
109     esdTrackCuts = CreateTrackCuts(analysisMode);
110     if (!esdTrackCuts)
111     {
112       printf("ERROR: esdTrackCuts could not be created\n");
113       return;
114     }
115     esdTrackCuts->SetHistogramsOn(kTRUE);
116   }
117
118   cInput  = mgr->GetCommonInputContainer();
119
120   // Create, add task
121   if (runWhat == 0 || runWhat == 2)
122   {
123     Load("AlidNdEtaTask", aDebug);
124     task = new AlidNdEtaTask(option);
125
126     if (mc)
127       task->SetReadMC();
128
129     // syst. error flags
130     //task->SetUseMCVertex();
131     //task->SetUseMCKine();
132     //task->SetOnlyPrimaries();
133
134     task->SetTrigger(trigger);
135     task->SetAnalysisMode(analysisMode);
136     task->SetTrackCuts(esdTrackCuts);
137
138     mgr->AddTask(task);
139
140     // Attach input
141     mgr->ConnectInput(task, 0, cInput);
142
143     // Attach output
144     cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
145     mgr->ConnectOutput(task, 0, cOutput);
146   }
147   if (runWhat == 1 || runWhat == 2)
148   {
149     Load("AlidNdEtaCorrectionTask", aDebug);
150     task2 = new AlidNdEtaCorrectionTask(option);
151
152     // syst. error flags
153     //task2->SetOnlyPrimaries();
154
155     task2->SetTrigger(trigger);
156     task2->SetAnalysisMode(analysisMode);
157     task2->SetTrackCuts(esdTrackCuts);
158
159     mgr->AddTask(task2);
160
161     // Attach input
162     mgr->ConnectInput(task2, 0, cInput);
163
164     // Attach output
165     cOutput = mgr->CreateContainer("cOutput2", TList::Class(), AliAnalysisManager::kOutputContainer);
166     mgr->ConnectOutput(task2, 0, cOutput);
167   }
168
169   if (mc) {
170     // Enable MC event handler
171     AliMCEventHandler* handler = new AliMCEventHandler;
172     handler->SetReadTR(kFALSE);
173     mgr->SetMCtruthEventHandler(handler);
174   }
175
176   // Enable debug printouts
177   if (aDebug)
178     mgr->SetDebugLevel(2);
179
180   // Run analysis
181   mgr->InitAnalysis();
182   mgr->PrintStatus();
183
184   if (aProof == 2)
185   {
186     // process dataset
187
188     mgr->StartAnalysis("proof", data, nRuns, offset);
189   }
190   else if (aProof == 3)
191   {
192     ROOT->ProcessLine(".L CreateChainFromDataSet.C");
193     ds = gProof->GetDataSet(data);
194     chain = CreateChainFromDataSet(ds);
195     mgr->StartAnalysis("local", chain, nRuns, offset);
196   }
197   else
198   {
199     // Create chain of input files
200     gROOT->LoadMacro("../CreateESDChain.C");
201
202     chain = CreateESDChain(data, nRuns, offset);
203     //chain = CreateChain("TE", data, nRuns, offset);
204
205     mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);
206   }
207 }
208