]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskPID.C
190709b1967d4c87771b235ef60b4217e7ed3381
[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)
4 {
5   // Macro to set up and add PID task with default settings.
6   //
7   // Typical parameters to run on 11a1* (MC_pp@7TeV):
8   // "PWGJE_taskPID_Jets", kTRUE, kTRUE, "V0A", kTRUE
9   // and as a second task
10   // "PWGJE_taskPID_Jets_Inclusive", kTRUE, kTRUE, "V0A", kTRUE
11   
12   TString taskName = Form("PWGJE_taskPID%s", nameSuffix.Data());
13   
14   
15   // Get the current analysis manager
16   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
17   if (!mgr) {
18     ::Error("AddTaskPID", "No analysis manager found.");
19     return 0x0;
20   }
21   
22   //========= Add task to the ANALYSIS manager =====
23   AliAnalysisTaskPID *task = new AliAnalysisTaskPID(taskName.Data());
24   task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);
25   
26   
27   
28   printf("\nSetting up task %s:\n", taskName.Data());
29   TString listOfFiles = gSystem->Getenv("LIST");
30   
31   if (!considerJets) {
32     //
33     // Add track filters
34     //
35     
36     AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
37     AliESDtrackCuts* esdTrackCutsL = 0x0;
38     
39     if (listOfFiles.Contains("LHC11") || listOfFiles.Contains("LHC12") || listOfFiles.Contains("LHC13")) {
40       esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
41       printf("Using standard ITS-TPC track cuts 2011\n");
42       trackFilter->SetTitle("Standard ITS-TPC track cuts 2011");
43     }
44     else if (listOfFiles.Contains("LHC10")) {
45       esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
46       printf("Using standard ITS-TPC track cuts 2010\n");
47       trackFilter->SetTitle("Standard ITS-TPC track cuts 2010");
48     }
49     else  {
50       esdTrackCutsL = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
51       printf("WARNING: Cuts not configured for this period!!! Using standard ITS-TPC track cuts 2011\n");
52       trackFilter->SetTitle("Standard ITS-TPC track cuts 2011");
53     }
54     /*
55     esdTrackCutsL->SetMinNCrossedRowsTPC(120);
56     esdTrackCutsL->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
57     esdTrackCutsL->SetMaxChi2PerClusterITS(36);
58     esdTrackCutsL->SetMaxFractionSharedTPCClusters(0.4);
59     esdTrackCutsL->SetMaxChi2TPCConstrainedGlobal(36);
60     */
61     
62     trackFilter->AddCuts(esdTrackCutsL);
63     task->SetTrackFilter(trackFilter);
64   }
65   
66   // Test whether we have pPb or Pbp
67   if (listOfFiles.Contains("pPb") || listOfFiles.Contains("Pbp")) {
68     task->SetIsPbpOrpPb(kTRUE);
69     printf("pPb/Pbp detected -> Adapting vertex cuts!\n");
70   }
71   else  {
72     task->SetIsPbpOrpPb(kFALSE);
73     printf("Collision type different from pPb/Pbp detected -> Using standard vertex cuts!\n");
74   }
75   
76   // Do not store centrality percentile for pp (will be set to -1 for all events)
77   if (listOfFiles.Contains("pp"))
78     task->SetStoreCentralityPercentile(kFALSE);
79   else
80     task->SetStoreCentralityPercentile(kTRUE);
81   
82   task->SetEtaAbsCutRange(0.0, 0.9);
83   task->SetUsePhiCut(kFALSE);
84   
85   // Do not set the covolution parameters if they are not used (saves some cpu time for the initialisation)
86   if (useConvolutedGauss) {
87     if ((listOfFiles.Contains("pPb") || listOfFiles.Contains("Pbp")) && listOfFiles.Contains("LHC13")) {
88       printf("\n13* pPb @ 5.023 ATeV data detected -> Setting corresponding convolution parameters...\n");
89       task->SetConvolutedGaussLambdaParameter(3.0);
90     }
91     
92     if (listOfFiles.Contains("LHC11a_without_SDD")) {
93       printf("\n11a (pp 2.76 TeV) detected -> Setting corresponding convolution parameters...\n");
94       task->SetConvolutedGaussLambdaParameter(3.0);
95     }
96     else {
97       printf("\nUsing default convolution parameters...\n");
98       task->SetConvolutedGaussLambdaParameter(2.0);
99     }
100   }
101   
102   task->SetCentralityEstimator(centralityEstimator.Data());
103   
104   task->SetUseMCidForGeneration(kTRUE);
105   task->SetUseITS(kTRUE);
106   task->SetUseTOF(kTRUE);
107   task->SetUsePriors(kTRUE);
108   task->SetUseTPCDefaultPriors(kTRUE);
109   task->SetUseConvolutedGaus(useConvolutedGauss);
110   task->SetTakeIntoAccountMuons(kTRUE);
111   
112   task->SetInputFromOtherTask(considerJets);
113   task->SetStoreAdditionalJetInformation(considerJets);
114   
115   task->PrintSettings();
116   
117   mgr->AddTask(task);
118
119
120   //================================================
121   //              data containers
122   //================================================
123
124   //define output containers
125   AliAnalysisDataContainer *coutput1 = 
126     mgr->CreateContainer(Form("%s", taskName.Data()),
127                          TObjArray::Class(),
128                          AliAnalysisManager::kOutputContainer,
129                          writeOutputToSeparateFiles
130                           ? Form("%s.root", taskName.Data())
131                           : Form("%s:%s", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
132
133   AliAnalysisDataContainer *coutput2 = 
134       mgr->CreateContainer(Form("%s_efficiency", taskName.Data()),
135                            AliCFContainer::Class(),
136                            AliAnalysisManager::kOutputContainer,
137                            writeOutputToSeparateFiles
138                             ? Form("%s_efficiency.root", taskName.Data())
139                             : Form("%s:%s_efficiency", AliAnalysisManager::GetCommonFileName(), taskName.Data()));
140   //connect containers
141   mgr->ConnectInput  (task,  0, mgr->GetCommonInputContainer());
142   mgr->ConnectOutput (task,  0, mgr->GetCommonOutputContainer()); // comment to run local
143   mgr->ConnectOutput (task,  1, coutput1);
144   mgr->ConnectOutput (task,  2, coutput2);
145
146   return task;
147 }