]>
Commit | Line | Data |
---|---|---|
609c7a0d | 1 | AliAnalysisTaskEmcalJetTriggerQA* AddTaskEmcalJetTriggerQA(TString kTracksName = "PicoTracks", |
2 | TString kClusName = "caloClusterCorr", | |
3 | Double_t R = 0.4, | |
4 | Double_t ptminTrack = 0.15, | |
5 | Double_t etminClus = 0.3, | |
6 | Int_t rhoType = 0, | |
7 | UInt_t type = AliAnalysisTaskEmcal::kEMCAL, | |
8 | TString trigClass = "", | |
9 | TString kEmcalCellsName = "", | |
10 | const char *CentEst = "V0A", | |
11 | Int_t pSel = AliVEvent::kINT7 | |
12 | ) { | |
13 | ||
14 | enum AlgoType {kKT, kANTIKT}; | |
15 | enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; | |
16 | ||
0531c107 | 17 | |
18 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
19 | if (!mgr) | |
20 | { | |
21 | Error("AddTaskEmcalJetTriggerQA","No analysis manager found."); | |
22 | return 0; | |
23 | } | |
24 | Bool_t ismc=kFALSE; | |
25 | ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE; | |
26 | ||
27 | // Check the analysis type using the event handlers connected to the analysis manager. | |
28 | //============================================================================== | |
29 | if (!mgr->GetInputEventHandler()) | |
30 | { | |
31 | ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler"); | |
32 | return NULL; | |
33 | } | |
34 | ||
609c7a0d | 35 | // #### Add necessary jet finder tasks |
36 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); | |
37 | ||
38 | AliEmcalJetTask* jetFinderTask1; | |
39 | AliEmcalJetTask* jetFinderTask2; | |
40 | if(kClusName.IsNull()) { //particle level jets | |
41 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
42 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
43 | } | |
44 | else if(kTracksName.IsNull()) { //neutral/calo jets | |
45 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus); | |
46 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
47 | } | |
48 | else { //full jets | |
49 | jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
50 | jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
51 | } | |
52 | ||
53 | TString strJets1 = jetFinderTask1->GetName(); | |
54 | TString strJets2 = jetFinderTask2->GetName(); | |
0531c107 | 55 | |
609c7a0d | 56 | // Add kt jet finder and rho task in case we want background subtraction |
57 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C"); | |
58 | AliEmcalJetTask *jetFinderKt; | |
59 | AliEmcalJetTask *jetFinderAKt; | |
60 | AliAnalysisTaskRhoSparse *rhoTask; | |
61 | if(rhoType==1) { | |
62 | jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
63 | jetFinderKt->SetMinJetPt(0.); | |
64 | jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
65 | TF1 *fScale = new TF1("fScale","1.42",0.,100.); | |
66 | rhoTask = AddTaskRhoSparse( | |
67 | jetFinderKt->GetName(), | |
68 | jetFinderAKt->GetName(), | |
69 | kTracksName, | |
70 | kClusName, | |
71 | Form("RhoSparseR%03d",(int)(100*R)), | |
72 | R, | |
73 | AliAnalysisTaskEmcal::kTPC, | |
74 | 0.01, | |
75 | 0.15, | |
76 | 0, | |
77 | fScale, | |
78 | 0, | |
79 | kTRUE, | |
80 | Form("RhoSparseR%03d",(int)(100*R)), | |
81 | kTRUE | |
82 | ); | |
83 | rhoTask->SetCentralityEstimator(CentEst); | |
84 | ||
85 | } | |
86 | ||
87 | TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data()); | |
0531c107 | 88 | |
609c7a0d | 89 | //Configure TriggerQA task |
0531c107 | 90 | AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName); |
91 | task->SetTracksName(kTracksName.Data()); | |
92 | task->SetClusName(kClusName.Data()); | |
609c7a0d | 93 | task->SetJetsName(strJets1.Data()); |
0531c107 | 94 | task->SetJetRadius(R); |
95 | task->SetJetPtCut(0.15); | |
609c7a0d | 96 | task->SetPercAreaCut(0.6); |
0531c107 | 97 | task->SetTrackPtCut(ptminTrack); |
98 | task->SetClusPtCut(etminClus); | |
99 | task->SetAnaType(type); | |
100 | task->SetTriggerClass(trigClass.Data()); | |
101 | task->SetCaloCellsName(kEmcalCellsName.Data()); | |
102 | ||
609c7a0d | 103 | task->SetJetsName2(strJets2.Data()); |
104 | if(strJets2.Contains("Charged")) { | |
105 | task->SetMinEtaJets2(-0.9+R); | |
106 | task->SetMaxEtaJets2(0.9-R); | |
107 | task->SetMinPhiJets2(-10.); | |
108 | task->SetMaxPhiJets2(10.); | |
109 | } | |
110 | else { | |
111 | task->SetMinEtaJets2(-0.7+R); | |
112 | task->SetMaxEtaJets2(0.7-R); | |
113 | task->SetMinPhiJets2(1.4+R); | |
114 | task->SetMaxPhiJets2(TMath::Pi()-R); | |
115 | } | |
116 | ||
0531c107 | 117 | if(rhoType==1) { |
1103d43d | 118 | task->SetRhoName(rhoTask->GetRhoScaledName()); |
119 | task->SetRhoChName(rhoTask->GetRhoName()); | |
0531c107 | 120 | } |
609c7a0d | 121 | task->SetCentralityEstimator(CentEst); |
0531c107 | 122 | |
609c7a0d | 123 | task->SelectCollisionCandidates(pSel); |
0531c107 | 124 | |
125 | mgr->AddTask(task); | |
126 | ||
127 | //Connnect input | |
128 | mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() ); | |
129 | ||
130 | //Connect output | |
131 | AliAnalysisDataContainer *coutput1 = 0x0; | |
132 | ||
133 | TString containerName1 = Form("%s",wagonName.Data()); | |
134 | ||
135 | TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data()); | |
136 | ||
137 | coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); | |
138 | mgr->ConnectOutput(task,1,coutput1); | |
139 | ||
140 | return task; | |
141 | ||
142 | } |