1 /* *********************************************************************************
2 * File : AddTaskNetParticle.C
3 * Author : Jochen Thaeder <jochen@thaeder.de>
4 * *********************************************************************************
5 * Configuring NetParticle Task:
7 * name -> Name of the task, containing partcile type :
8 * Currently : Proton, Pion, Kaon
9 * isModeDist -> Fill Distributions
10 * isModeEff -> Fill Efficiency/Contamination ThnSparse
11 * isModeDCA -> Fill DCA ThnSparse
12 * useQAThnSparse -> Fill QA ThnSparse
13 * isCreateCSC -> Prepare for CrossSectionCorrection
14 * - requires isModeEff to be set
17 * - OUTPUT CONTAINER : #N = 5
18 * (1) - Standard Output, Distributions
19 * (2) - Efficiency ThnSparse
20 * (3) - Contamination ThnSparse
24 ********************************************************************************* */
26 AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton",
27 Bool_t isModeDist, Bool_t isModeEff, Bool_t isModeDCA, Bool_t useQAThnSparse = kFALSE,
28 Bool_t isCreateCSC = kFALSE, Bool_t isModeAOD = kFALSE) {
32 if (isCreateCSC && !isModeEff) {
33 Error("AddTaskNetParticle", "Creating CrossSectionCorrection needs 'isModeEff' to be set.");
37 // ----------------------------------------------
38 // -- Get the current analysis manager
39 // ----------------------------------------------
40 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
42 Error("AddTaskNetParticle", "No analysis manager found.");
46 // ----------------------------------------------
48 // ----------------------------------------------
49 Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL);
51 Info("AddTaskNetParticle", "This task has MC.");
53 // ----------------------------------------------
54 // -- Create task configure it
55 // ----------------------------------------------
56 AliAnalysisTaskNetParticle *task = new AliAnalysisTaskNetParticle("AliAnalysisTaskNetParticle");
58 Error("AddTaskNetParticle", "Task could not be created.");
65 // -- Set particle type
66 // ----------------------------------------------
67 Float_t minPt, maxPt, minPtEff, maxPtEff, minPtForTOF;
69 if (sName.Contains("Proton")) {
70 task->SetParticleSpecies(AliPID::kProton);
71 task->SetControlParticleSpecies(3122, kTRUE, "Lambda");
72 minPt = 0.4; maxPt = 2.2;
73 minPtEff = 0.2; maxPtEff = 2.6;
76 minPtForTOF = maxPtEff;
79 else if (sName.Contains("Pion")) {
80 task->SetParticleSpecies(AliPID::kPion);
81 task->SetControlParticleSpecies(3122, kTRUE, "Lambda"); /// maybe something else ...
82 minPt = 0.3; maxPt = 0.9;
83 minPtEff = 0.2; maxPtEff = 1.2;
86 else if (sName.Contains("Kaon")) {
87 task->SetParticleSpecies(AliPID::kKaon);
88 task->SetControlParticleSpecies(3122, kTRUE, "Lambda"); /// maybe something else ...
89 minPt = 0.4; maxPt = 0.8;
90 minPtEff = 0.1; maxPtEff = 2.5;
94 Error("AddTaskNetParticle", "Unknown Particle type.");
99 // ----------------------------------------------
101 task->SetModeEffCreation(1); // => 1 = on | 0 = off (default)
103 task->SetModeDCACreation(1); // => 1 = on | 0 = off (default)
105 task->SetModeDistCreation(1); // => 1 = on | 0 = off (default)
107 task->SetIsAOD(1); // => 1 = AODs | 0 = ESDs
108 task->SetTrackFilterBit(1024); // 1024 = RAA cuts
110 // -- Enable QA plots
112 task->SetUseQATHnSparse(kTRUE);
115 // ----------------------------------------------
117 // -- Set cut flags ...
118 task->SetESDTrackCutMode(0); // => 0 = clean | 1 = dirty
120 // -- Set standard event cuts
121 task->SetVertexZMax(10.);
122 task->SetCentralityBinMax(7);
124 // -- Set track event cuts
125 task->SetRapidityMax(0.5);
126 task->SetMinTrackLengthMC(70.);
127 task->SetNSigmaMaxCdd(3.);
128 task->SetNSigmaMaxCzz(3.);
130 task->SetNSigmaMaxTPC(3);
131 task->SetNSigmaMaxTOF(3);
132 task->SetMinPtForTOFRequired(minPtForTOF);
134 // -- Set analysis ranges
135 task->SetEtaMax(0.9);
136 task->SetPtRange(minPt, maxPt); // pt cut range for the analysis
137 task->SetPtRangeEff(minPtEff, maxPtEff); // pt cut range for the correction / efficiency / contamination creation
139 // ----------------------------------------------
140 // -- Initialize and add task to the ANALYSIS manager
141 // ----------------------------------------------
142 if (!task->Initialize())
145 Error("Initialize failed, not adding AliAnalysistaskNetParticle !!!");
150 // ----------------------------------------------
151 // -- data containers - input
152 // ----------------------------------------------
153 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
155 // ----------------------------------------------
156 // -- data containers - output
157 // ----------------------------------------------
158 AliAnalysisDataContainer *coutput = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name));
159 AliAnalysisDataContainer *coutputEff = mgr->CreateContainer(Form("%s_eff", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name));
160 AliAnalysisDataContainer *coutputCont = mgr->CreateContainer(Form("%s_cont", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name));
161 AliAnalysisDataContainer *coutputDca = mgr->CreateContainer(Form("%s_dca", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name));
163 AliAnalysisDataContainer *coutputQA = mgr->CreateContainer(Form("%sQA", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%sQA.root", name));
165 mgr->ConnectInput (task, 0, cinput );
166 mgr->ConnectOutput (task, 1, coutput);
167 mgr->ConnectOutput (task, 2, coutputEff);
168 mgr->ConnectOutput (task, 3, coutputCont);
169 mgr->ConnectOutput (task, 4, coutputDca);
170 mgr->ConnectOutput (task, 5, coutputQA);