]>
Commit | Line | Data |
---|---|---|
e131b05f | 1 | AliAnalysisTask *AddTaskPID(TString nameSuffix, Bool_t writeOutputToSeparateFiles = kTRUE, |
2 | Bool_t useConvolutedGauss = kTRUE, TString centralityEstimator = "V0A", | |
cf2ab645 | 3 | Bool_t considerJets = kTRUE, Bool_t overrideStoreCentralityPercentile = kFALSE, |
4 | Bool_t overrideStoreCentralityPercentileValue = kFALSE) | |
e131b05f | 5 | { |
6 | // Macro to set up and add PID task with default settings. | |
7 | // | |
8 | // Typical parameters to run on 11a1* (MC_pp@7TeV): | |
9 | // "PWGJE_taskPID_Jets", kTRUE, kTRUE, "V0A", kTRUE | |
10 | // and as a second task | |
11 | // "PWGJE_taskPID_Jets_Inclusive", kTRUE, kTRUE, "V0A", kTRUE | |
12 | ||
13 | TString taskName = Form("PWGJE_taskPID%s", nameSuffix.Data()); | |
14 | ||
15 | ||
16 | // Get the current analysis manager | |
17 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
18 | if (!mgr) { | |
19 | ::Error("AddTaskPID", "No analysis manager found."); | |
20 | return 0x0; | |
21 | } | |
22 | ||
23 | //========= Add task to the ANALYSIS manager ===== | |
24 | AliAnalysisTaskPID *task = new AliAnalysisTaskPID(taskName.Data()); | |
25 | task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7); | |
26 | ||
27 | ||
28 | ||
29 | printf("\nSetting up task %s:\n", taskName.Data()); | |
30 | TString listOfFiles = gSystem->Getenv("LIST"); | |
31 | ||
32 | if (!considerJets) { | |
33 | // | |
34 | // Add track filters | |
35 | // | |
36 | ||
37 | AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter"); | |
38 | AliESDtrackCuts* esdTrackCutsL = 0x0; | |
39 | ||
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"); | |
44 | } | |
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"); | |
49 | } | |
50 | else { | |
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"); | |
54 | } | |
55 | /* | |
56 | esdTrackCutsL->SetMinNCrossedRowsTPC(120); | |
57 | esdTrackCutsL->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8); | |
58 | esdTrackCutsL->SetMaxChi2PerClusterITS(36); | |
59 | esdTrackCutsL->SetMaxFractionSharedTPCClusters(0.4); | |
60 | esdTrackCutsL->SetMaxChi2TPCConstrainedGlobal(36); | |
61 | */ | |
62 | ||
63 | trackFilter->AddCuts(esdTrackCutsL); | |
64 | task->SetTrackFilter(trackFilter); | |
65 | } | |
66 | ||
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 | } | |
72 | else { | |
73 | task->SetIsPbpOrpPb(kFALSE); | |
74 | printf("Collision type different from pPb/Pbp detected -> Using standard vertex cuts!\n"); | |
75 | } | |
76 | ||
8aa84348 | 77 | // Do not store centrality percentile for pp (will be set to -1 for all events) - or use special centrality estimator and store |
78 | if (listOfFiles.Contains("pp")) { | |
79 | //task->SetStoreCentralityPercentile(kFALSE); | |
80 | ||
81 | task->SetStoreCentralityPercentile(kTRUE); | |
82 | task->SetCentralityEstimator("ITSTPCtracklets"); | |
83 | } | |
e131b05f | 84 | else |
85 | task->SetStoreCentralityPercentile(kTRUE); | |
86 | ||
cf2ab645 | 87 | if (overrideStoreCentralityPercentile) |
88 | task->SetStoreCentralityPercentile(overrideStoreCentralityPercentileValue); | |
89 | ||
e131b05f | 90 | task->SetEtaAbsCutRange(0.0, 0.9); |
91 | task->SetUsePhiCut(kFALSE); | |
92 | ||
93 | // Do not set the covolution parameters if they are not used (saves some cpu time for the initialisation) | |
94 | if (useConvolutedGauss) { | |
95 | if ((listOfFiles.Contains("pPb") || listOfFiles.Contains("Pbp")) && listOfFiles.Contains("LHC13")) { | |
96 | printf("\n13* pPb @ 5.023 ATeV data detected -> Setting corresponding convolution parameters...\n"); | |
97 | task->SetConvolutedGaussLambdaParameter(3.0); | |
98 | } | |
99 | ||
100 | if (listOfFiles.Contains("LHC11a_without_SDD")) { | |
101 | printf("\n11a (pp 2.76 TeV) detected -> Setting corresponding convolution parameters...\n"); | |
102 | task->SetConvolutedGaussLambdaParameter(3.0); | |
103 | } | |
104 | else { | |
105 | printf("\nUsing default convolution parameters...\n"); | |
106 | task->SetConvolutedGaussLambdaParameter(2.0); | |
107 | } | |
108 | } | |
109 | ||
110 | task->SetCentralityEstimator(centralityEstimator.Data()); | |
111 | ||
112 | task->SetUseMCidForGeneration(kTRUE); | |
113 | task->SetUseITS(kTRUE); | |
114 | task->SetUseTOF(kTRUE); | |
115 | task->SetUsePriors(kTRUE); | |
116 | task->SetUseTPCDefaultPriors(kTRUE); | |
117 | task->SetUseConvolutedGaus(useConvolutedGauss); | |
118 | task->SetTakeIntoAccountMuons(kTRUE); | |
119 | ||
120 | task->SetInputFromOtherTask(considerJets); | |
121 | task->SetStoreAdditionalJetInformation(considerJets); | |
122 | ||
123 | task->PrintSettings(); | |
124 | ||
125 | mgr->AddTask(task); | |
126 | ||
127 | ||
128 | //================================================ | |
129 | // data containers | |
130 | //================================================ | |
131 | ||
132 | //define output containers | |
133 | AliAnalysisDataContainer *coutput1 = | |
134 | mgr->CreateContainer(Form("%s", taskName.Data()), | |
135 | TObjArray::Class(), | |
136 | AliAnalysisManager::kOutputContainer, | |
137 | writeOutputToSeparateFiles | |
138 | ? Form("%s.root", taskName.Data()) | |
139 | : Form("%s:%s", AliAnalysisManager::GetCommonFileName(), taskName.Data())); | |
9e95a906 | 140 | |
cf2ab645 | 141 | if (task->GetDoEfficiency()) { |
142 | AliAnalysisDataContainer *coutput2 = | |
143 | mgr->CreateContainer(Form("%s_efficiency", taskName.Data()), | |
144 | AliCFContainer::Class(), | |
145 | AliAnalysisManager::kOutputContainer, | |
146 | writeOutputToSeparateFiles | |
147 | ? Form("%s_efficiency.root", taskName.Data()) | |
148 | : Form("%s:%s_efficiency", AliAnalysisManager::GetCommonFileName(), taskName.Data())); | |
149 | mgr->ConnectOutput (task, 2, coutput2); | |
150 | } | |
151 | ||
152 | if (task->GetDoDeDxCheck() || task->GetDoPtResolution()) { | |
153 | AliAnalysisDataContainer *coutput3 = | |
154 | mgr->CreateContainer(Form("%s_PtResolution", taskName.Data()), | |
155 | TObjArray::Class(), | |
156 | AliAnalysisManager::kOutputContainer, | |
157 | writeOutputToSeparateFiles | |
158 | ? Form("%s_PtResolution.root", taskName.Data()) | |
159 | : Form("%s:%s_PtResolution", AliAnalysisManager::GetCommonFileName(), taskName.Data())); | |
160 | mgr->ConnectOutput (task, 3, coutput3); | |
161 | } | |
e131b05f | 162 | //connect containers |
163 | mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer()); | |
164 | mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer()); // comment to run local | |
165 | mgr->ConnectOutput (task, 1, coutput1); | |
e131b05f | 166 | |
167 | return task; | |
168 | } |