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