]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/correlationHF/macros/setupDxHFE.C
support for par files, multiple tasks, and collection of local AODs (Matthias)
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / macros / setupDxHFE.C
CommitLineData
9a3d923b 1//-*- Mode: C++ -*-
2// $Id$
3
4/// @file setupDxHFE.C
5/// @author Matthias.Richter@cern.ch
6/// @date 2012-09-12
7/// @brief Setup the environment specifically for running DxHFE analysis
8///
9/// Helper macro to initialize the environment for DxHFE. The macro can just
10/// prepend other macros like run-single-task in the command line.
11/// Usage:
12/// aliroot -b -q -l setupDxHFE.C'("localAodDir")' run-single-task.C'(...)'
13///
14/// Example:
15/// aliroot -b -q -l setupDxHFE.C run-single-task.C'(...)'
16///
17/// The macro has the following tasks:
18/// - load the necessary libraries, in order to have those library names also
19/// available for the alien handler initialization, a specific configuration
20/// object is created
21/// - setting a default analysis name via a configuration object
22/// - the optional parameter 'localAodDir' allows to create an input chain from
685fea75 23/// local AODs; either a single AliAOD.root, or a folder containing directories
24/// named "1, 2, ..."
9a3d923b 25
26///////////////////////////////////////////////////////////////////////////////////////////////////
27//
28// environment specific for DxHFE
29//
685fea75 30const char* includePath="-I$ALICE_ROOT/PWGHF/correlationHF -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWGHF/hfe";
9a3d923b 31const char* libraryDependencies=
32 "libSTEERBase "
33 "libESD "
34 "libAOD "
35 "libANALYSIS "
36 "libANALYSISalice "
37 "libPWGflowBase.so "
38 "libPWGflowTasks.so "
39 "libCORRFW.so "
40 "libPWGHFvertexingHF.so "
41 "libPWGHFhfe.so "
685fea75 42 "libPWGHFcorrelationHF.so "
9a3d923b 43 ;
44
45void setupDxHFE(const char* aodDirectory=NULL)
46{
47 gSystem->AddIncludePath(includePath);
48 TString libraries=libraryDependencies;
49 TObjArray* pTokens=libraries.Tokenize(" ");
50 if (pTokens) {
51 for (int i=0; i<pTokens->GetEntriesFast(); i++) {
52 if (gSystem->Load(pTokens->At(i)->GetName())==0) {
53 cout << "loading " << pTokens->At(i)->GetName() << endl;
54 }
55 }
56 delete pTokens;
57 }
58 libraries="";
59
60 // allow run-single-task to fetch the analysis name and library names
61 if (gDirectory) gDirectory->Add(new TNamed("analysis_name", "DxHFECorrelation"));
62 if (gDirectory) gDirectory->Add(new TNamed("analysis_libraries", libraryDependencies));
63
64 if (aodDirectory) {
65 // create AOD tree from local files
66 // the created object is added automatically to gDirectory and can be fetched
67 // from there later
9a3d923b 68 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/MakeAODInputChain.C");
685fea75 69 TString aodPathName(aodDirectory);
70 if (!aodPathName.EndsWith("/")) aodPathName+="/";
71 aodPathName+="AliAOD.root";
72 if (gSystem->AccessPathName(aodPathName)==0) {
73 // Create a chain with one set of AliAOD.root and AliAOD.VertexingHF.root. The set needs
74 // to be located in the same folder as you run from (physically or linked)
75 ::Info("setupDxHFE.C", Form("make chain from single chunk %s", aodPathName));
76 TChain* chain = MakeAODInputChain(aodDirectory ,1, -1);
77 } else {
78 // Assume several folders containing different AODs.
79 // The AODs need to be in folders named 1, 2,...
80 ::Info("setupDxHFE.C", Form("make chain from directory %s", aodDirectory));
81 chain=MakeAODInputChain(aodDirectory, 1, 10);
82 }
83 ::Info("setupDxHFE.C", Form("local AOD chain: %d entries", chain->GetEntries()));
9a3d923b 84 }
85}