]>
Commit | Line | Data |
---|---|---|
8e49a788 | 1 | enum AlgoType {kKT, kANTIKT}; |
2 | enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; | |
3 | ||
609c7a0d | 4 | AliAnalysisTaskEmcalJetTriggerQA* AddTaskEmcalJetTriggerQA(TString kTracksName = "PicoTracks", |
8e49a788 | 5 | TString kClusName = "caloClustersCorr", |
609c7a0d | 6 | Double_t R = 0.4, |
7 | Double_t ptminTrack = 0.15, | |
8 | Double_t etminClus = 0.3, | |
9 | Int_t rhoType = 0, | |
609c7a0d | 10 | TString trigClass = "", |
11 | TString kEmcalCellsName = "", | |
12 | const char *CentEst = "V0A", | |
e50460de | 13 | Int_t pSel = AliVEvent::kINT7, |
8e49a788 | 14 | Float_t nefCut = 10., |
15 | TString kEmcalTriggers = "", | |
86daa855 | 16 | TString kPeriod = "LHC13b", |
17 | TString kBeamType = "pp" //or pPb or PbPb | |
609c7a0d | 18 | ) { |
86daa855 | 19 | // The following three lines are added for backwards compatibility |
20 | kPeriod.ToLower(); | |
21 | if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h")) kBeamType = "PbPb"; | |
22 | if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) kBeamType = "pPb"; | |
609c7a0d | 23 | |
0531c107 | 24 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); |
25 | if (!mgr) | |
26 | { | |
27 | Error("AddTaskEmcalJetTriggerQA","No analysis manager found."); | |
28 | return 0; | |
29 | } | |
30 | Bool_t ismc=kFALSE; | |
31 | ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE; | |
32 | ||
33 | // Check the analysis type using the event handlers connected to the analysis manager. | |
34 | //============================================================================== | |
35 | if (!mgr->GetInputEventHandler()) | |
36 | { | |
37 | ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler"); | |
38 | return NULL; | |
39 | } | |
40 | ||
609c7a0d | 41 | // #### Add necessary jet finder tasks |
42 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); | |
43 | ||
44 | AliEmcalJetTask* jetFinderTask1; | |
45 | AliEmcalJetTask* jetFinderTask2; | |
46 | if(kClusName.IsNull()) { //particle level jets | |
47 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
48 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
49 | } | |
50 | else if(kTracksName.IsNull()) { //neutral/calo jets | |
51 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus); | |
52 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
53 | } | |
54 | else { //full jets | |
55 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
56 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
57 | } | |
5381c5a1 | 58 | jetFinderTask1->SelectCollisionCandidates(AliVEvent::kAny); |
59 | jetFinderTask2->SelectCollisionCandidates(AliVEvent::kAny); | |
254370e1 | 60 | |
609c7a0d | 61 | TString strJets1 = jetFinderTask1->GetName(); |
62 | TString strJets2 = jetFinderTask2->GetName(); | |
0531c107 | 63 | |
8e49a788 | 64 | AliAnalysisTaskRhoBase *rhoTask; |
609c7a0d | 65 | if(rhoType==1) { |
86daa855 | 66 | rhoTask = AttachRhoTask(kBeamType,kTracksName,kClusName,R,ptminTrack,etminClus); |
49df7018 | 67 | if(rhoTask) { |
68 | rhoTask->SetCentralityEstimator(CentEst); | |
69 | rhoTask->SelectCollisionCandidates(AliVEvent::kAny); | |
70 | } | |
71 | else { | |
72 | Warning("AddTaskEmcalJetTriggerQA","Asked for rho task but configuration unknown. Continuing configuration without rho task."); | |
73 | rhoType = 0; | |
74 | } | |
609c7a0d | 75 | } |
76 | ||
77 | TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data()); | |
0531c107 | 78 | |
609c7a0d | 79 | //Configure TriggerQA task |
0531c107 | 80 | AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName); |
9e5eee5d | 81 | AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data()); |
82 | AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data()); | |
83 | ||
84 | task->SetContainerFull(0); | |
85 | task->SetContainerCharged(1); | |
86 | AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R); | |
8e49a788 | 87 | if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0); |
9e5eee5d | 88 | AliJetContainer *jetCont1 = NULL; |
8e49a788 | 89 | if(strJets2.Contains("Charged")) { |
90 | jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R); | |
91 | if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1); | |
92 | } | |
9e5eee5d | 93 | else { |
94 | jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R); | |
95 | task->SetZLeadingCut(0.98,0.98,1); | |
e50460de | 96 | task->SetNEFCut(0.,nefCut,1); |
609c7a0d | 97 | } |
98 | ||
9e5eee5d | 99 | task->SetZLeadingCut(0.98,0.98,0); |
e50460de | 100 | task->SetNEFCut(0.,nefCut,0); |
9e5eee5d | 101 | |
102 | for(Int_t i=0; i<2; i++) { | |
103 | task->SetPercAreaCut(0.6, i); | |
0531c107 | 104 | } |
9e5eee5d | 105 | |
106 | task->SetTriggerClass(trigClass.Data()); | |
107 | task->SetCaloCellsName(kEmcalCellsName.Data()); | |
8e49a788 | 108 | task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data()); |
9e5eee5d | 109 | |
609c7a0d | 110 | task->SetCentralityEstimator(CentEst); |
609c7a0d | 111 | task->SelectCollisionCandidates(pSel); |
0531c107 | 112 | |
0714a353 | 113 | task->SetUseAliAnaUtils(kTRUE); |
6cc60022 | 114 | task->SetVzRange(-10.,10.); |
0714a353 | 115 | |
677e90b9 | 116 | if(kPeriod.Contains("LHC13b4")) |
86daa855 | 117 | task->SetIsPythia(kTRUE); |
677e90b9 | 118 | |
0531c107 | 119 | mgr->AddTask(task); |
120 | ||
121 | //Connnect input | |
122 | mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() ); | |
123 | ||
124 | //Connect output | |
125 | AliAnalysisDataContainer *coutput1 = 0x0; | |
0531c107 | 126 | TString containerName1 = Form("%s",wagonName.Data()); |
0531c107 | 127 | TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data()); |
0531c107 | 128 | coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); |
129 | mgr->ConnectOutput(task,1,coutput1); | |
130 | ||
131 | return task; | |
0531c107 | 132 | } |
8e49a788 | 133 | |
86daa855 | 134 | AliAnalysisTaskRhoBase *AttachRhoTask(TString kBeamType = "pp", |
8e49a788 | 135 | TString kTracksName = "PicoTracks", |
136 | TString kClusName = "caloClustersCorr", | |
137 | Double_t R = 0.4, | |
138 | Double_t ptminTrack = 0.15, | |
139 | Double_t etminClus = 0.3 | |
140 | ) { | |
141 | ||
142 | AliAnalysisTaskRhoBase *rhoTaskBase; | |
143 | ||
8e49a788 | 144 | // Add kt jet finder and rho task in case we want background subtraction |
145 | AliEmcalJetTask *jetFinderKt; | |
146 | AliEmcalJetTask *jetFinderAKt; | |
147 | jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
148 | jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
f4d574d2 | 149 | jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny); |
150 | jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny); | |
8e49a788 | 151 | |
86daa855 | 152 | if(kBeamType == "pPb") { |
8e49a788 | 153 | jetFinderKt->SetMinJetPt(0.); |
154 | ||
155 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C"); | |
156 | TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb | |
157 | AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse( | |
158 | jetFinderKt->GetName(), | |
159 | jetFinderAKt->GetName(), | |
160 | kTracksName, | |
161 | kClusName, | |
162 | Form("RhoSparseR%03d",(int)(100*R)), | |
163 | R, | |
164 | "TPC", | |
165 | 0.01, | |
166 | 0.15, | |
167 | 0, | |
168 | fScale, | |
169 | 0, | |
170 | kTRUE, | |
171 | Form("RhoSparseR%03d",(int)(100*R)), | |
172 | kTRUE | |
173 | ); | |
174 | rhoTaskSparse->SetUseAliAnaUtils(kTRUE); | |
8e49a788 | 175 | rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse; |
176 | } | |
86daa855 | 177 | else if(kBeamType=="PbPb") { |
8e49a788 | 178 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C"); |
179 | ||
180 | TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100); | |
181 | sfunc->SetParameter(2,1.76458); | |
182 | sfunc->SetParameter(1,-0.0111656); | |
183 | sfunc->SetParameter(0,0.000107296); | |
184 | AliAnalysisTaskRho *rhoTask = AddTaskRho( | |
185 | jetFinderKt->GetName(), | |
186 | kTracksName, | |
187 | kClusName, | |
188 | Form("RhoR%03d",(int)(100*R)), | |
189 | R, | |
190 | "TPC", | |
191 | 0.01, | |
192 | 0, | |
193 | sfunc, | |
194 | 2, | |
195 | kTRUE); | |
196 | rhoTask->SetHistoBins(100,0,250); | |
197 | ||
198 | rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask; | |
8e49a788 | 199 | } |
200 | ||
201 | return rhoTaskBase; | |
8e49a788 | 202 | } |