]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskPID.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskPID.C
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 = "")
6 {
7   // Macro to set up and add PID task with default settings.
8   //
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
13   
14   TString taskName = Form("PWGJE_taskPID%s", nameSuffix.Data());
15   
16   
17   // Get the current analysis manager
18   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19   if (!mgr) {
20     ::Error("AddTaskPID", "No analysis manager found.");
21     return 0x0;
22   }
23   
24   //========= Add task to the ANALYSIS manager =====
25   AliAnalysisTaskPID *task = new AliAnalysisTaskPID(taskName.Data());
26   task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);
27   
28   
29   
30   printf("\nSetting up task %s:\n", taskName.Data());
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     task->SetCentralityEstimator("V0A");
72   }
73   else  {
74     task->SetIsPbpOrpPb(kFALSE);
75     printf("Collision type different from pPb/Pbp detected -> Using standard vertex cuts!\n");
76   }
77   
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);
81     
82     task->SetStoreCentralityPercentile(kTRUE);
83     task->SetCentralityEstimator("ITSTPCtracklets");
84   }
85   else
86     task->SetStoreCentralityPercentile(kTRUE);
87   
88   if (overrideStoreCentralityPercentile)
89     task->SetStoreCentralityPercentile(overrideStoreCentralityPercentileValue);
90   
91   task->SetEtaAbsCutRange(0.0, 0.9);
92   task->SetUsePhiCut(kFALSE);
93   
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);
99     }
100     
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);
104     }
105     else {
106       printf("\nUsing default convolution parameters...\n");
107       task->SetConvolutedGaussLambdaParameter(2.0);
108     }
109   }
110   
111   task->SetCentralityEstimator(centralityEstimator.Data());
112   
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);
120   
121   task->SetInputFromOtherTask(considerJets);
122   task->SetStoreAdditionalJetInformation(considerJets);
123   
124   task->PrintSettings();
125   
126   mgr->AddTask(task);
127
128
129   //================================================
130   //              data containers
131   //================================================
132
133   //define output containers
134   AliAnalysisDataContainer *coutput1 = 
135     mgr->CreateContainer(Form("%s", taskName.Data()),
136                          TObjArray::Class(),
137                          AliAnalysisManager::kOutputContainer,
138                          writeOutputToSeparateFiles
139                           ? Form("%s.root", taskName.Data())
140                           : Form("%s:%s", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
141   
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);
151   }
152   
153   if (task->GetDoDeDxCheck() || task->GetDoPtResolution()) {
154     AliAnalysisDataContainer *coutput3 = 
155         mgr->CreateContainer(Form("%s_PtResolution", taskName.Data()),
156                             TObjArray::Class(),
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);
162   }
163   //connect containers
164   mgr->ConnectInput  (task,  0, mgr->GetCommonInputContainer());
165   mgr->ConnectOutput (task,  0, mgr->GetCommonOutputContainer()); // comment to run local
166   mgr->ConnectOutput (task,  1, coutput1);
167
168   return task;
169 }