]>
Commit | Line | Data |
---|---|---|
ffca499d | 1 | /** |
2 | * @file MakeFlow.C | |
3 | * @author Alexander Hansen | |
4 | * @date Wed Mar 23 12:11:33 2011 | |
5 | * | |
d226802c | 6 | * @brief |
ffca499d | 7 | * |
2b556440 | 8 | * @ingroup pwg2_forward_scripts_makers |
ffca499d | 9 | * |
10 | */ | |
9d05ffeb | 11 | /** |
58f5fae2 | 12 | * Script to analyse AOD input for flow |
13 | * | |
14 | * Takes either a single (AOD) .root file as input or a .txt | |
15 | * The .txt file is expected to contain the path to the files | |
16 | * from the current directory or the absolute path. | |
9d05ffeb | 17 | * |
d226802c | 18 | * @par Inputs: |
19 | * | |
20 | * | |
21 | * @par Outputs: | |
22 | * - | |
ffca499d | 23 | * |
4b5b52b7 | 24 | * @ingroup pwglf_forward_flow |
9d05ffeb | 25 | */ |
4b5b52b7 | 26 | void MakeFlow(const char* data = "", |
27 | Int_t nEvents = -1, | |
9d05ffeb | 28 | TString type = "", |
d226802c | 29 | Bool_t mc = kFALSE, |
2b556440 | 30 | const char* name = 0, |
31 | Int_t proof = 0, | |
d420e249 | 32 | Bool_t dispVtx = kFALSE, |
58f5fae2 | 33 | TString addFlow = "", |
34 | Int_t addFType = 0, | |
9453b19e | 35 | Int_t addFOrder = 0, |
2b556440 | 36 | Bool_t gdb = kFALSE) |
9d05ffeb | 37 | { |
58f5fae2 | 38 | // --- Load libs --------------------------------------------------- |
bd6f5206 | 39 | gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C"); |
9d05ffeb | 40 | |
d420e249 | 41 | Int_t debug = 0; |
42 | ||
2b556440 | 43 | // --- Possibly use plug-in for this ------------------------------- |
44 | if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) { | |
45 | ||
46 | gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/TrainSetup.C+"); | |
47 | gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/MakeFlowTrain.C+"); | |
48 | ||
4b5b52b7 | 49 | char* tok = strtok(name, " ,:"); |
50 | TString server = "", dataset = "", datadir = "", jobname = ""; | |
51 | if (tok[0] == NULL) Fatal("Input name invalid!"); | |
52 | if (strcmp(tok, "hehi00.nbi.dk") == 0) { | |
53 | server = tok; | |
54 | dataset = data; | |
55 | datadir = ""; | |
56 | tok = strtok(NULL, " ,:"); | |
57 | jobname = tok; | |
58 | } else { | |
59 | server = Form("workers=%d", proof); | |
60 | dataset = ""; | |
61 | datadir = data; | |
62 | jobname = tok; | |
63 | } | |
64 | printf("Making flow train on server: %s\t with datadir: %s\t on dataset: %s\n", | |
65 | server.Data(), datadir.Data(), dataset.Data()); | |
66 | ||
67 | MakeFlowTrain t(jobname.Data(), type.Data(), mc, addFlow.Data(), addFType, addFOrder, false); | |
d420e249 | 68 | t.SetUseDispVtx(dispVtx); |
4b5b52b7 | 69 | t.SetProofServer(server.Data()); |
70 | t.SetDataDir(datadir.Data()); | |
71 | t.SetDataSet(dataset.Data()); | |
d420e249 | 72 | t.SetDebugLevel(debug); |
2b556440 | 73 | t.SetUseGDB(gdb); |
4b5b52b7 | 74 | t.Run("proof", "full", nEvents, proof > 0); |
75 | ||
2b556440 | 76 | return; |
9d05ffeb | 77 | } |
78 | ||
9453b19e | 79 | // --- Set the macro path ------------------------------------------ |
bd6f5206 | 80 | gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:" |
9453b19e | 81 | "$ALICE_ROOT/ANALYSIS/macros", |
82 | gROOT->GetMacroPath())); | |
83 | ||
58f5fae2 | 84 | // --- Add to chain either AOD ------------------------------------ |
4b5b52b7 | 85 | if (data == '\0') { |
d226802c | 86 | AliError("You didn't add a data file"); |
87 | return; | |
88 | } | |
2b556440 | 89 | gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C"); |
4b5b52b7 | 90 | TChain* chain = MakeChain("AOD", data, true); |
2b556440 | 91 | // If 0 or less events is select, choose all |
92 | if (nEvents <= 0) nEvents = chain->GetEntries(); | |
58f5fae2 | 93 | |
94 | // --- Initiate the event handlers -------------------------------- | |
d226802c | 95 | AliAnalysisManager *mgr = new AliAnalysisManager("Forward Flow", |
96 | "Flow in the forward region"); | |
9d05ffeb | 97 | |
98 | // --- AOD input handler ------------------------------------------- | |
99 | AliAODInputHandler *aodInputHandler = new AliAODInputHandler(); | |
d226802c | 100 | mgr->SetInputEventHandler(aodInputHandler); |
9d05ffeb | 101 | |
9d05ffeb | 102 | // --- Add the tasks --------------------------------------------- |
9453b19e | 103 | gROOT->LoadMacro("AddTaskForwardFlow.C"); |
d420e249 | 104 | AddTaskForwardFlow(type, mc, dispVtx, addFlow, addFType, addFOrder); |
105 | mgr->SetDebugLevel(debug); | |
9d05ffeb | 106 | |
107 | // --- Run the analysis -------------------------------------------- | |
108 | TStopwatch t; | |
109 | if (!mgr->InitAnalysis()) { | |
110 | Error("MakeFlow", "Failed to initialize analysis train!"); | |
111 | return; | |
112 | } | |
113 | mgr->PrintStatus(); | |
d226802c | 114 | Printf("****************************************"); |
2b556440 | 115 | Printf("Doing flow analysis on %d Events", nEvents); |
d226802c | 116 | Printf("****************************************"); |
9453b19e | 117 | // |
2b556440 | 118 | if (mgr->GetDebugLevel() < 1) |
119 | mgr->SetUseProgressBar(kTRUE, nEvents < 10000 ? 100 : 1000); | |
d226802c | 120 | |
121 | // mgr->SetSkipTerminate(true); | |
9d05ffeb | 122 | |
123 | t.Start(); | |
2b556440 | 124 | mgr->StartAnalysis("local", chain, nEvents); |
9d05ffeb | 125 | t.Stop(); |
126 | t.Print(); | |
127 | } | |
58f5fae2 | 128 | //---------------------------------------------------------------- |
9d05ffeb | 129 | // |
130 | // EOF | |
131 | // |