]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AddTaskForwardMult.C
flat friend update
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AddTaskForwardMult.C
1 /**
2  * @defgroup pwglf_forward_scripts Scripts used in the analysis
3  *
4  * These scripts add tasks to the analysis train
5  *
6  * @ingroup pwglf_forward
7  */
8 /**
9  * @defgroup pwglf_forward_scripts_tasks Add tasks to manager
10  *
11  * Scripts to add tasks to the analysis manager
12  *
13  * @ingroup pwglf_forward_scripts
14  */
15 /**
16  * @file   AddTaskForwardMult.C
17  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
18  * @date   Wed Mar 23 12:13:54 2011
19  *
20  * @brief
21  *
22  *
23  * @ingroup pwglf_forward_scripts_tasks
24  */
25 /**
26  * This is the script to include the Forward multiplicity in a train.
27  *
28  * @param mc      Define as true for MC input.
29  * @param runNo   Pre-set run number
30  * @param sys     Collision system (0: deduce, 1: pp, 2: pbpb, 3:pA)
31  * @param sNN     Collision energy
32  * @param field   L3 field setting.
33  * @param config  Configuration file to use
34  * @param corrs   Corrections to use
35  *
36  * @return newly allocated analysis task
37  *
38  * @ingroup pwglf_forward_aod
39  */
40 AliAnalysisTask*
41 AddTaskForwardMult(Bool_t   mc,
42                    ULong_t  runNo=0,
43                    UShort_t sys=0,
44                    UShort_t sNN=0,
45                    Short_t  field=0,
46                    const char* config="ForwardAODConfig.C",
47                    const char* corrs=0)
48 {
49   // --- Load libraries ----------------------------------------------
50   gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
51
52   // --- Get analysis manager ----------------------------------------
53   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
54   if (!mgr) {
55     Error("AddTaskForwardMult", "No analysis manager to connect to.");
56     return 0;
57   }
58
59   // --- Make the task and add it to the manager ---------------------
60   AliForwardMultiplicityBase* task = 0;
61   if (mc) task = new AliForwardMCMultiplicityTask("Forward");
62   else    task = new AliForwardMultiplicityTask("Forward");
63   task->Configure(config);
64
65   // --- Set alternative corrections path ----------------------------
66   AliForwardCorrectionManager& cm = AliForwardCorrectionManager::Instance();
67   if (corrs && corrs[0] != '\0') cm.SetPrefix(corrs);
68
69   // --- Do a local initialisation with assumed values ---------------
70   if (sys > 0 && sNN > 0) {
71     UInt_t what = AliForwardCorrectionManager::kAll;
72     what ^= AliForwardCorrectionManager::kDoubleHit;
73     what ^= AliForwardCorrectionManager::kVertexBias;
74     what ^= AliForwardCorrectionManager::kMergingEfficiency;
75   //  what ^= AliForwardCorrectionManager::kAcceptance;
76     if (!cm.Init(runNo, sys,sNN,field,mc,false,what))
77       Fatal("AddTaskForwardMult", "Failed to initialize corrections");
78   }
79
80   // --- Make the output container and connect it --------------------
81   task->Connect(0,0);
82
83   return task;
84 }
85
86 /**
87  * This is the script to include the Forward multiplicity in a train.
88  *
89  * @param type   Data type (if it contains MC, assume MC input):
90  *               - ppb, p-pb, pa, p-a:  proton-lead
91  *               - pp, p-p:             proton-proton
92  *               - pbpb, pb-pb, a-a:    lead-lead
93  *
94  * @param energy Collision energy in GeV
95  * @param bfield L3 field setting in kG (-5, 0, 5)
96  *
97  * @return newly allocated analysis task
98  *
99  * @ingroup pwglf_forward_aod
100  */
101 AliAnalysisTask*
102 AddTaskForwardMult(const Char_t* type,
103                    Float_t       energy=0,
104                    Float_t       bfield=0)
105 {
106   // --- Load libraries ----------------------------------------------
107   gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
108
109   // --- Deduce parameters -------------------------------------------
110   TString  t(type);
111   Bool_t   mc    = t.Contains("MC", TString::kIgnoreCase);
112   UShort_t sys   = AliForwardUtil::ParseCollisionSystem(type);
113   UShort_t sNN   = AliForwardUtil::ParseCenterOfMassEnergy(sys, energy);
114   Short_t  field = AliForwardUtil::ParseMagneticField(field);
115
116   return AddTaskForwardMult(mc, sys, sNN, field);
117 }
118 //
119 // EOF
120 //