1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 // author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
19 AliAnalysisTaskB2* AddTaskB2( const TString& species
20 , const TString& containername
21 , const TString& trksel
23 , const TString& periodname
24 , Bool_t simulation = kFALSE
25 , Bool_t heavyIons = kFALSE
26 , Double_t maxDCAxy = 1
27 , Double_t maxDCAz = 2
28 , Double_t maxEta = 0.8
30 , Bool_t ntrkMultTrigger = 0
31 , Double_t minKNOmult = -10
32 , Double_t maxKNOmult = 10000
33 , Bool_t V0AND = kFALSE
34 , const TString& ztag = ""
36 , Bool_t momentumCorr = kFALSE
37 , const TString& binSize = ""
39 , Int_t minTPCnClsOrXRows = 70
40 , Double_t minCentrality = 0
41 , Double_t maxCentrality = 20
43 , Double_t maxM2 = 6.)
46 // Create, configure and add the analysis task to the analysis manager
52 const Double_t kMaxVx = 1.;
53 const Double_t kMaxVy = 1.;
55 const Double_t kMaxNSigma = 3.;
57 const Int_t kMaxNSigmaITS = 3;
58 const Int_t kMaxNSigmaTPC = 3;
59 const Int_t kMaxNSigmaTOF = 3;
61 TString period = periodname;
64 // Get pointer to the existing analysis manager
66 AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
69 cerr << "AddTaskB2: no analysis manager to connect to" << endl;
73 if (!mgr->GetInputEventHandler())
75 cerr << "AddTaskB2: this task requires an input event handler" << endl;
79 // Create and configure the task
81 AliAnalysisTaskB2* task = new AliAnalysisTaskB2(Form("B2.%s",containername.Data()));
83 task->SetParticleSpecies(species);
84 task->SetSimulation(simulation);
85 task->SetHeavyIons(heavyIons);
86 task->SetV0ANDtrigger(V0AND);
88 task->SetMaxNSigmaITS(kMaxNSigmaITS);
89 task->SetMaxNSigmaTPC(kMaxNSigmaTPC);
90 task->SetMaxNSigmaTOF(kMaxNSigmaTOF);
92 task->SetNtrkMultTrigger(ntrkMultTrigger);
94 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/MeanNtrk.C");
95 Double_t meanNtrk = MeanNtrk(period, maxEta, V0AND);
97 task->SetMeanNtrk(meanNtrk);
98 task->SetKNOmultInterval(minKNOmult, maxKNOmult);
99 task->SetVertexXInterval(-kMaxVx, kMaxVx);
100 task->SetVertexYInterval(-kMaxVy, kMaxVy);
101 task->SetVertexZInterval(-maxVz, maxVz);
103 task->SetEtaInterval(-maxEta, maxEta);
104 task->SetRapidityInterval(-maxY, maxY);
105 task->SetM2Interval(minM2, maxM2);
107 task->SetCentralityInterval(minCentrality, maxCentrality);
109 if(period=="lhc11a_wsdd" || period=="lhc11a_wosdd")
111 task->SetNoFastOnlyTrigger();
114 // momentum correction
116 if(momentumCorr && species=="Deuteron")
118 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/MomentumCorrection.C");
120 TProfile* pfx = MomentumCorrection(species);
121 task->SetMomentumCorrectionProfile(pfx);
122 if(pfx != 0) task->SetMomentumCorrection();
127 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/CreateHistograms.C");
129 AliLnHistoMap* hMap = CreateHistograms(species, binSize, simulation, maxDCAxy, maxEta, maxY, heavyIons);
131 task->SetHistogramMap(hMap);
133 // track selection criteria
135 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/TrackCuts.C");
137 AliESDtrackCuts* trkCuts = TrackCuts(task, trksel, maxDCAxy, maxDCAz, kMaxNSigma, xRowsTPC, minTPCnClsOrXRows, maxEta);
138 task->SetESDtrackCuts(trkCuts);
142 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/BetheBlochParams.C");
145 BetheBlochParams(bethe, period);
147 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/PriorProbabilities.C");
150 PriorProbabilities(prob, period, trksel, ztag);
152 AliLnID* lnID = new AliLnID();
154 lnID->SetTPCBetheBlochParams(bethe);
155 lnID->SetPriorProbabilities(prob);
156 lnID->SetPidProcedure(pidProc);
158 if(!simulation) lnID->SetTPCChargeCorrection(2.3);
162 // Add task to the manager
166 // input and output containers
168 AliAnalysisDataContainer* output = mgr->CreateContainer(containername.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:AliAnalysisTaskB2", AliAnalysisManager::GetCommonFileName()));
170 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
171 mgr->ConnectOutput(task, 1, output);