1 AliAnalysisTask *AddTaskPID(TString nameSuffix, Bool_t writeOutputToSeparateFiles = kTRUE,
2 Bool_t useConvolutedGauss = kTRUE, TString centralityEstimator = "V0A",
3 Bool_t considerJets = kTRUE, Bool_t overrideStoreCentralityPercentile = kFALSE,
4 Bool_t overrideStoreCentralityPercentileValue = kFALSE,
5 TString listOfFiles = "")
7 // Macro to set up and add PID task with default settings.
9 // Typical parameters to run on 11a1* (MC_pp@7TeV):
10 // "PWGJE_taskPID_Jets", kTRUE, kTRUE, "V0A", kTRUE
11 // and as a second task
12 // "PWGJE_taskPID_Jets_Inclusive", kTRUE, kTRUE, "V0A", kTRUE
14 TString taskName = Form("PWGJE_taskPID%s", nameSuffix.Data());
17 // Get the current analysis manager
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 ::Error("AddTaskPID", "No analysis manager found.");
24 //========= Add task to the ANALYSIS manager =====
25 AliAnalysisTaskPID *task = new AliAnalysisTaskPID(taskName.Data());
26 task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);
30 printf("\nSetting up task %s:\n", taskName.Data());
37 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
38 AliESDtrackCuts* esdTrackCutsL = 0x0;
40 if (listOfFiles.Contains("LHC11") || listOfFiles.Contains("LHC12") || listOfFiles.Contains("LHC13")) {
41 esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
42 printf("Using standard ITS-TPC track cuts 2011\n");
43 trackFilter->SetTitle("Standard ITS-TPC track cuts 2011");
45 else if (listOfFiles.Contains("LHC10")) {
46 esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
47 printf("Using standard ITS-TPC track cuts 2010\n");
48 trackFilter->SetTitle("Standard ITS-TPC track cuts 2010");
51 esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
52 printf("WARNING: Cuts not configured for this period!!! Using standard ITS-TPC track cuts 2011\n");
53 trackFilter->SetTitle("Standard ITS-TPC track cuts 2011");
56 esdTrackCutsL->SetMinNCrossedRowsTPC(120);
57 esdTrackCutsL->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
58 esdTrackCutsL->SetMaxChi2PerClusterITS(36);
59 esdTrackCutsL->SetMaxFractionSharedTPCClusters(0.4);
60 esdTrackCutsL->SetMaxChi2TPCConstrainedGlobal(36);
63 trackFilter->AddCuts(esdTrackCutsL);
64 task->SetTrackFilter(trackFilter);
67 // Test whether we have pPb or Pbp
68 if (listOfFiles.Contains("pPb") || listOfFiles.Contains("Pbp")) {
69 task->SetIsPbpOrpPb(kTRUE);
70 printf("pPb/Pbp detected -> Adapting vertex cuts!\n");
71 task->SetCentralityEstimator("V0A");
74 task->SetIsPbpOrpPb(kFALSE);
75 printf("Collision type different from pPb/Pbp detected -> Using standard vertex cuts!\n");
78 // Do not store centrality percentile for pp (will be set to -1 for all events) - or use special centrality estimator and store
79 if (listOfFiles.Contains("pp")) {
80 //task->SetStoreCentralityPercentile(kFALSE);
82 task->SetStoreCentralityPercentile(kTRUE);
83 task->SetCentralityEstimator("ITSTPCtracklets");
86 task->SetStoreCentralityPercentile(kTRUE);
88 if (overrideStoreCentralityPercentile)
89 task->SetStoreCentralityPercentile(overrideStoreCentralityPercentileValue);
91 task->SetEtaAbsCutRange(0.0, 0.9);
92 task->SetUsePhiCut(kFALSE);
94 // Do not set the covolution parameters if they are not used (saves some cpu time for the initialisation)
95 if (useConvolutedGauss) {
96 if ((listOfFiles.Contains("pPb") || listOfFiles.Contains("Pbp")) && listOfFiles.Contains("LHC13")) {
97 printf("\n13* pPb @ 5.023 ATeV data detected -> Setting corresponding convolution parameters...\n");
98 task->SetConvolutedGaussLambdaParameter(3.0);
101 if (listOfFiles.Contains("LHC11a_without_SDD")) {
102 printf("\n11a (pp 2.76 TeV) detected -> Setting corresponding convolution parameters...\n");
103 task->SetConvolutedGaussLambdaParameter(3.0);
106 printf("\nUsing default convolution parameters...\n");
107 task->SetConvolutedGaussLambdaParameter(2.0);
111 task->SetCentralityEstimator(centralityEstimator.Data());
113 task->SetUseMCidForGeneration(kTRUE);
114 task->SetUseITS(kTRUE);
115 task->SetUseTOF(kTRUE);
116 task->SetUsePriors(kTRUE);
117 task->SetUseTPCDefaultPriors(kTRUE);
118 task->SetUseConvolutedGaus(useConvolutedGauss);
119 task->SetTakeIntoAccountMuons(kTRUE);
121 task->SetInputFromOtherTask(considerJets);
122 task->SetStoreAdditionalJetInformation(considerJets);
124 task->PrintSettings();
129 //================================================
131 //================================================
133 //define output containers
134 AliAnalysisDataContainer *coutput1 =
135 mgr->CreateContainer(Form("%s", taskName.Data()),
137 AliAnalysisManager::kOutputContainer,
138 writeOutputToSeparateFiles
139 ? Form("%s.root", taskName.Data())
140 : Form("%s:%s", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
142 if (task->GetDoEfficiency()) {
143 AliAnalysisDataContainer *coutput2 =
144 mgr->CreateContainer(Form("%s_efficiency", taskName.Data()),
145 AliCFContainer::Class(),
146 AliAnalysisManager::kOutputContainer,
147 writeOutputToSeparateFiles
148 ? Form("%s_efficiency.root", taskName.Data())
149 : Form("%s:%s_efficiency", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
150 mgr->ConnectOutput (task, 2, coutput2);
153 if (task->GetDoDeDxCheck() || task->GetDoPtResolution()) {
154 AliAnalysisDataContainer *coutput3 =
155 mgr->CreateContainer(Form("%s_PtResolution", taskName.Data()),
157 AliAnalysisManager::kOutputContainer,
158 writeOutputToSeparateFiles
159 ? Form("%s_PtResolution.root", taskName.Data())
160 : Form("%s:%s_PtResolution", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
161 mgr->ConnectOutput (task, 3, coutput3);
164 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
165 mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer()); // comment to run local
166 mgr->ConnectOutput (task, 1, coutput1);