]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/RunAnalysisAODVertexingHF.C
Updated mass range for Dplus (Renu)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / RunAnalysisAODVertexingHF.C
CommitLineData
8931206f 1class AliAnalysisGrid;
54d54d1a 2class AliAnalysisAlien;
8931206f 3
4void RunAnalysisAODVertexingHF()
5{
6 //
7 // Test macro for AliAnalysisTaskSE's for heavy-flavour candidates
8 // It has the structure of a Analysis Train:
9 // - in this macro, change things related to running mode
10 // and input preparation
11 // - add your task using a AddTaskXXX macro
12 //
13 // A.Dainese, andrea.dainese@lnl.infn.it
14 // "grid" mode added by R.Bala, bala@to.infn.it
15 //
16
17
968144ac 18 gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGHF -I$ALICE_ROOT/PWGHF/base -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWG/FLOW/Base -I$ALICE_ROOT/PWG/FLOW/Tasks -g");
8931206f 19 //
20 TString trainName = "D2H";
21 TString analysisMode = "grid"; // "local", "grid", or "proof"
22 TString inputMode = "list"; // "list", "xml", or "dataset"
23 Long64_t nentries=123567890,firstentry=0;
9124d874 24 Bool_t useParFiles=kFALSE;
8931206f 25 Bool_t useAlienPlugin=kTRUE;
7dc1b6b2 26 TString pluginmode="full";
8931206f 27 Bool_t saveProofToAlien=kFALSE;
28 TString proofOutdir = "";
0694cdc8 29 TString loadMacroPath="$ALICE_ROOT/PWGHF/vertexingHF/macros/";
8931206f 30 //TString loadMacroPath="./"; // this is normally needed for CAF
31 //
32
33 if(analysisMode=="grid") {
34 // Connect to AliEn
35 TGrid::Connect("alien://");
36 } else if(analysisMode=="proof") {
37 // Connect to the PROOF cluster
38 if(inputMode!="dataset") {printf("Input mode must be dataset, for proof analysis\n"); return;}
39 gEnv->SetValue("XSec.GSI.DelegProxy","2");
40 TProof::Open("alicecaf");
41 //TProof::Reset("alicecaf");
42 if(saveProofToAlien) {
43 TGrid::Connect("alien://");
44 if(gGrid) {
45 TString homedir = gGrid->GetHomeDirectory();
46 TString workdir = homedir + trainName;
47 if(!gGrid->Cd(workdir)) {
48 gGrid->Cd(homedir);
49 if(gGrid->Mkdir(workdir)) {
50 gGrid->Cd(trainName);
51 ::Info("VertexingTrain::Connect()", "Directory %s created", gGrid->Pwd());
52 }
53 }
54 gGrid->Mkdir("proof_output");
55 gGrid->Cd("proof_output");
56 proofOutdir = Form("alien://%s", gGrid->Pwd());
57 }
58 }
59 }
60
61
62 // AliRoot libraries
63 if(analysisMode=="local" || analysisMode=="grid") {
64 TString loadLibraries="LoadLibraries.C"; loadLibraries.Prepend(loadMacroPath.Data());
65 gROOT->LoadMacro(loadLibraries.Data());
66 LoadLibraries(useParFiles);
67 } else if (analysisMode=="proof") {
68 gSystem->Load("libTree.so");
69 gSystem->Load("libGeom.so");
70 gSystem->Load("libPhysics.so");
71 gSystem->Load("libVMC.so");
72 gSystem->Load("libMinuit.so");
73 // Enable the needed packages
74 //gProof->ClearPackages();
75 TString parDir="/afs/cern.ch/user/d/dainesea/code/";
76 TString parFile;
77 if(!useParFiles) {
78 gProof->UploadPackage("AF-v4-17");
79 gProof->EnablePackage("AF-v4-17");
0694cdc8 80 // --- Enable the PWGHFvertexingHF Package
81 parFile="PWGHFvertexingHF.par"; parFile.Prepend(parDir.Data());
8931206f 82 gProof->UploadPackage(parFile.Data());
0694cdc8 83 gProof->EnablePackage("PWGHFvertexingHF");
8931206f 84 } else {
85 // --- Enable the STEERBase Package
86 parFile="STEERBase.par"; parFile.Prepend(parDir.Data());
87 gProof->UploadPackage(parFile.Data());
88 gProof->EnablePackage("STEERBase");
89 // --- Enable the ESD Package
90 parFile="ESD.par"; parFile.Prepend(parDir.Data());
91 gProof->UploadPackage(parFile.Data());
92 gProof->EnablePackage("ESD");
93 // --- Enable the AOD Package
94 parFile="AOD.par"; parFile.Prepend(parDir.Data());
95 gProof->UploadPackage(parFile.Data());
96 gProof->EnablePackage("AOD");
97 // --- Enable the ANALYSIS Package
98 parFile="ANALYSIS.par"; parFile.Prepend(parDir.Data());
99 gProof->UploadPackage(parFile.Data());
100 gProof->EnablePackage("ANALYSIS");
101 // --- Enable the ANALYSISalice Package
102 parFile="ANALYSISalice.par"; parFile.Prepend(parDir.Data());
103 gProof->UploadPackage(parFile.Data());
104 gProof->EnablePackage("ANALYSISalice");
105 // --- Enable the CORRFW Package
106 parFile="CORRFW.par"; parFile.Prepend(parDir.Data());
107 gProof->UploadPackage(parFile.Data());
108 gProof->EnablePackage("CORRFW");
0694cdc8 109 // --- Enable the PWGHFbase Package
110 parFile="PWGHFbase.par"; parFile.Prepend(parDir.Data());
8931206f 111 gProof->UploadPackage(parFile.Data());
0694cdc8 112 gProof->EnablePackage("PWGHFbase");
113 // --- Enable the PWGHFvertexingHF Package
114 parFile="PWGHFvertexingHF.par"; parFile.Prepend(parDir.Data());
8931206f 115 gProof->UploadPackage(parFile.Data());
0694cdc8 116 gProof->EnablePackage("PWGHFvertexingHF");
8931206f 117 }
118 gProof->ShowEnabledPackages(); // show a list of enabled packages
119 }
120
121
122 // Create Alien plugin, if requested
123 if(useAlienPlugin) {
124 if(analysisMode!="grid") {printf("Analysis mode must be grid, to use alien plugin\n"); return;}
125 AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode,useParFiles);
126 if(!alienHandler) return;
127 }
128
129
130 //-------------------------------------------------------------------
131 // Prepare input
132 TChain *chainAOD = 0;
133 TString dataset; // for proof
134
135 if(!useAlienPlugin) {
cc3209fb 136 TString makeAODInputChain="../MakeAODInputChain.C"; makeAODInputChain.Prepend(loadMacroPath.Data());
8931206f 137 if(inputMode=="list") {
138 // Local files
139 gROOT->LoadMacro(makeAODInputChain.Data());
140 chainAOD = MakeAODInputChain();// with this it reads ./AliAOD.root and ./AliAOD.VertexingHF.root
141 //chainAOD = MakeAODInputChain("alien:///alice/cern.ch/user/r/rbala/newtrain/out_lhc08x/180100/",1,1);
142 printf("ENTRIES %d\n",chainAOD->GetEntries());
143 } else if(inputMode=="xml") {
144 // xml
145 gROOT->LoadMacro(makeAODInputChain.Data());
146 chainAOD = MakeAODInputChain("collection_aod.xml","collection_aodHF.xml");
147 } else if(inputMode=="dataset") {
148 // CAF dataset
149 //gProof->ShowDataSets();
150 dataset="/ITS/dainesea/AODVertexingHF_LHC08x_180100";
151 }
152 }
153
154 // Create the analysis manager
155 AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
156 mgr->SetDebugLevel(10);
157 // Connect plug-in to the analysis manager
158 if(useAlienPlugin) mgr->SetGridHandler(alienHandler);
159
160 // Input
5b37c6e5 161 AliAODInputHandler *inputHandler = new AliAODInputHandler("handler","handler for D2H");
8931206f 162 if(analysisMode=="proof" ) {
efb0a9e5 163 inputHandler->AddFriend("./AliAOD.VertexingHF.root");
164 //inputHandler->AddFriend("deltas/AliAOD.VertexingHF.root");
8931206f 165 if(saveProofToAlien) mgr->SetSpecialOutputLocation(proofOutdir);
166 }
167 mgr->SetInputEventHandler(inputHandler);
168 //-------------------------------------------------------------------
169
170
171 //-------------------------------------------------------------------
172 // Analysis tasks (wagons of the train)
173 //
b79bfc3e 174 // First add the task for the PID response setting
175 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
176 AliAnalysisTaskSE *setupTask = AddTaskPIDResponse(kFALSE,kTRUE);
177
8931206f 178 TString taskName;
179
180 ////// ADD THE FULL D2H TRAIN
cc3209fb 181 /*taskName="../AddD2HTrain.C"; taskName.Prepend(loadMacroPath.Data());
8931206f 182 gROOT->LoadMacro(taskName.Data());
183 Bool_t readMC=kFALSE;
efb0a9e5 184 AddD2HTrain(readMC);//,1,0,0,0,0,0,0,0,0,0,0);*/
8931206f 185
186 ////// OR ADD INDIVIDUAL TASKS
187
efb0a9e5 188
189 /* taskName="AddTaskCompareHF.C"; taskName.Prepend(loadMacroPath.Data());
8931206f 190 gROOT->LoadMacro(taskName.Data());
191 AliAnalysisTaskSECompareHF *cmpTask = AddTaskCompareHF();
c1179c57 192 */
8931206f 193 taskName="AddTaskD0Mass.C"; taskName.Prepend(loadMacroPath.Data());
194 gROOT->LoadMacro(taskName.Data());
195 AliAnalysisTaskSED0Mass *d0massTask = AddTaskD0Mass();
196 AliAnalysisTaskSED0Mass *d0massLikeSignTask = AddTaskD0Mass(1);
efb0a9e5 197 /*
8931206f 198 taskName="AddTaskDplus.C"; taskName.Prepend(loadMacroPath.Data());
199 gROOT->LoadMacro(taskName.Data());
200 AliAnalysisTaskSEDplus *dplusTask = AddTaskDplus();
c1179c57 201
8931206f 202 taskName="AddTaskDs.C"; taskName.Prepend(loadMacroPath.Data());
203 gROOT->LoadMacro(taskName.Data());
204 AliAnalysisTaskSEDs *dsTask = AddTaskDs();
205
206 //taskName="AddTaskSelectHF.C"; taskName.Prepend(loadMacroPath.Data());
207 //gROOT->LoadMacro(taskName.Data());
208 //AliAnalysisTaskSESelectHF *seleTask = AddTaskSelectHF();
209
210 taskName="AddTaskBkgLikeSignD0.C"; taskName.Prepend(loadMacroPath.Data());
211 gROOT->LoadMacro(taskName.Data());
212 AliAnalysisTaskSEBkgLikeSignD0 *lsD0Task = AddTaskBkgLikeSignD0();
213
8931206f 214 taskName="AddTaskCFMultiVarMultiStep.C"; taskName.Prepend(loadMacroPath.Data());
215 gROOT->LoadMacro(taskName.Data());
216 AliCFHeavyFlavourTaskMultiVarMultiStep *cfmvmsTask = AddTaskCFMultiVarMultiStep();
217
e047b348 218
219 taskName="AddTaskSECharmFraction.C";
220 taskName.Prepend(loadMacroPath.Data());
8931206f 221 gROOT->LoadMacro(taskName.Data());
e047b348 222 Int_t switchMC[5]={0,0,0,0,0};
cc3209fb 223 Int_t ppPbPb=1;// 0 for pp, 1 for PbPb, used to siwtch on/off the removal of daughters from the primary vertex
224 AliAnalysisTaskSECharmFraction *cFractTask = AddTaskSECharmFraction("standard",switchMC,readMC,kTRUE,kFALSE,"D0toKpiCharmFractCuts.root","c",ppPbPb);
e047b348 225 // arguments: filename,switchMC,readmc,usepid,likesign,cutfilename,containerprefix
cc3209fb 226
8931206f 227
228 // attach a private task (not committed)
229 // (the files MyTask.h MyTask.cxx AddMyTask.C have to be declared in plugin
230 // configuration, see below)
231
232 if(analysisMode.Data()=="proof") {
233 gProof->LoadMacro("MyTask.cxx++g");
234 } else {
235 gROOT->LoadMacro("MyTask.cxx++g");
236 }
237 gROOT->LoadMacro("AddMyTask.C");
238 MyTask *myTask = AddMyTask();
239
240
241 if(analysisMode.Data()=="proof") {
242 gProof->LoadMacro("AliDStarJets.cxx++g");
243 } else {
244 gROOT->LoadMacro("AliDStarJets.cxx++g");
245 }
246 gROOT->LoadMacro("AddTaskDStarJets.C");
247 AliDStarJets *myTask = AddTaskDStarJets();
248 */
249 //-------------------------------------------------------------------
250
251 //
252 // Run the analysis
253 //
254 if(chainAOD) printf("CHAIN HAS %d ENTRIES\n",(Int_t)chainAOD->GetEntries());
255
256 if(!mgr->InitAnalysis()) return;
257 mgr->PrintStatus();
258 if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";
259 if(analysisMode!="proof") {
260 mgr->StartAnalysis(analysisMode.Data(),chainAOD,nentries,firstentry);
261 } else {
262 // proof
263 mgr->StartAnalysis(analysisMode.Data(),dataset.Data(),nentries,firstentry);
264 }
265
266 return;
267}
268//_____________________________________________________________________________
269//
270AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles=kFALSE)
271{
272 // Check if user has a valid token, otherwise make one. This has limitations.
273 // One can always follow the standard procedure of calling alien-token-init then
274 // source /tmp/gclient_env_$UID in the current shell.
8931206f 275 AliAnalysisAlien *plugin = new AliAnalysisAlien();
276 // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
277 plugin->SetRunMode(pluginmode.Data());
a9e59aee 278 plugin->SetUser();
8931206f 279 // Set versions of used packages
280 plugin->SetAPIVersion("V1.1x");
a9e59aee 281 plugin->SetROOTVersion();
282 plugin->SetAliROOTVersion();
c1179c57 283 plugin->SetNtestFiles(1);
0694cdc8 284 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/AddGoodRuns.C");
9be57b17 285
8931206f 286 // Declare input data to be processed.
b9015c51 287 //************************************************
288 // Set data search pattern for DATA
c1179c57 289 //************************************************
290 //Method 1: To create automatically xml through plugin
9124d874 291 plugin->SetGridDataDir("/alice/data/2010/LHC10d"); // specify LHC period
292 plugin->SetDataPattern("pass2/AOD018/*AliAOD.root"); // specify reco pass and AOD set
b2b62321 293 plugin->SetFriendChainName("./AliAOD.VertexingHF.root");
b9015c51 294 // OR plugin->SetFriendChainName("deltas/AliAOD.VertexingHF.root");
46627015 295 // Adds only the good runs from the Monalisa Run Condition Table
b9015c51 296 // More than one period can be added but the period name has to be removed from GridDataDir (to be tested)
b2b62321 297 Int_t totruns=0;
9124d874 298 //totruns += AddGoodRuns(plugin,"LHC10b"); // specify LHC period
b9015c51 299 //totruns += AddGoodRuns(plugin,"LHC10c"); // specify LHC period
9124d874 300 totruns += AddGoodRuns(plugin,"LHC10d"); // specify LHC period
b2b62321 301 plugin->SetNrunsPerMaster(totruns);
c1179c57 302
303 // Method 2: Declare existing data files (e.g xml collections)
304
305 //plugin->AddDataFile("/alice/cern.ch/user/r/rbala/000168068_000170593.xml");
306 // plugin->SetDataPattern("*AliAOD.root");
307 // plugin->SetFriendChainName("./AliAOD.VertexingHF.root");
308
b9015c51 309 //************************************************
310 // Set data search pattern for MONTECARLO
311 //************************************************
9124d874 312 /*
b2b62321 313 plugin->SetGridDataDir("/alice/sim/LHC10d3"); // specify MC sample
314 plugin->SetDataPattern("AOD005/*AliAOD.root"); // specify AOD set
b9015c51 315 plugin->SetFriendChainName("./AliAOD.VertexingHF.root");
316 // OR plugin->SetFriendChainName("deltas/AliAOD.VertexingHF.root");
317 // Adds only the good runs from the Monalisa Run Condition Table
318 // More than one period can be added!
319 Int_t totruns=0;
b2b62321 320 totruns += AddGoodRuns(plugin,"LHC10b","LHC10d3"); // specify LHC period for anchor runs; and the name of the MC production
321 //totruns += AddGoodRuns(plugin,"LHC10c","LHC10f7"); // specify LHC period for anchor runs; and the name of the MC production
322 //totruns += AddGoodRuns(plugin,"LHC10d","LHC10f7"); // specify LHC period for anchor runs; and the name of the MC production
b9015c51 323 plugin->SetNrunsPerMaster(totruns);
9124d874 324 */
b9015c51 325 //
8931206f 326 // Define alien work directory where all files will be copied. Relative to alien $HOME.
327 plugin->SetGridWorkingDir("myHFanalysis");
c1179c57 328 // Name of executable
efc42c41 329 plugin->SetExecutable("myHFanalysis.sh");
8931206f 330 // Declare alien output directory. Relative to working directory.
331 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
332 // Declare the analysis source files names separated by blancs. To be compiled runtime
333 // using ACLiC on the worker nodes.
334 //plugin->SetAnalysisSource("AliDStarJets.cxx");
335 // Declare all libraries (other than the default ones for the framework. These will be
336 // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
be47521d 337 plugin->SetAdditionalLibs("libPWGflowBase.so libPWGflowTasks.so libPWGHFbase.so libPWGHFvertexingHF.so");
8931206f 338 // use par files
339 if(useParFiles) {
340 plugin->EnablePackage("STEERBase.par");
341 plugin->EnablePackage("ESD.par");
342 plugin->EnablePackage("AOD.par");
343 plugin->EnablePackage("ANALYSIS.par");
1b575730 344 plugin->EnablePackage("OADB.par");
8931206f 345 plugin->EnablePackage("ANALYSISalice.par");
346 plugin->EnablePackage("CORRFW.par");
0694cdc8 347 plugin->EnablePackage("PWGHFbase.par");
348 plugin->EnablePackage("PWGHFvertexingHF.par");
8931206f 349 }
be47521d 350 plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGHF -I$ALICE_ROOT/PWGHF/base -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWG/FLOW/Base -I$ALICE_ROOT/PWG/FLOW/Tasks -g");
a9e59aee 351
8931206f 352 plugin->SetDefaultOutputs(kTRUE);
9a36a6cc 353 // merging via jdl
354 plugin->SetMergeViaJDL(kTRUE);
355 plugin->SetOneStageMerging(kFALSE);
356 plugin->SetMaxMergeStages(2);
357
8931206f 358 // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
359 plugin->SetAnalysisMacro("AnalysisHF.C");
360 // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
8931206f 361 // Optionally modify the name of the generated JDL (default analysis.jdl)
362 plugin->SetJDLName("TaskHF.jdl");
8931206f 363
364 return plugin;
365}