]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetTriggerQA.C
Split: fix refs to AddTaskCentrality.C
[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                                                            TString     kBeamType           = "pp" //or pPb or PbPb
18                                                            ) {
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";
23
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
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,0.005,1,"Jet",1.);
48     jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
49   }
50   else if(kTracksName.IsNull()) { //neutral/calo jets
51     jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
52     jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
53   }
54   else { //full jets
55     jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
56     jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
57   }
58   jetFinderTask1->SelectCollisionCandidates(AliVEvent::kAny);
59   jetFinderTask2->SelectCollisionCandidates(AliVEvent::kAny);
60
61   TString strJets1 = jetFinderTask1->GetName();
62   TString strJets2 = jetFinderTask2->GetName();
63
64   AliAnalysisTaskRhoBase *rhoTask;
65   if(rhoType==1) {
66     rhoTask = AttachRhoTask(kBeamType,kTracksName,kClusName,R,ptminTrack,etminClus);
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     }
75   }
76
77   TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data());
78
79   //Configure TriggerQA task
80   AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName);
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);
87   if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
88   AliJetContainer *jetCont1 = NULL;
89   if(strJets2.Contains("Charged")) {
90     jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R);
91     if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1);
92   }
93   else { 
94     jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R);
95     task->SetZLeadingCut(0.98,0.98,1);
96     task->SetNEFCut(0.,nefCut,1);
97   }
98
99   task->SetZLeadingCut(0.98,0.98,0);
100   task->SetNEFCut(0.,nefCut,0);
101
102   for(Int_t i=0; i<2; i++) {
103     task->SetPercAreaCut(0.6, i);
104   }
105
106   task->SetTriggerClass(trigClass.Data());
107   task->SetCaloCellsName(kEmcalCellsName.Data());
108   task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
109
110   task->SetCentralityEstimator(CentEst);
111   task->SelectCollisionCandidates(pSel);
112
113   task->SetUseAliAnaUtils(kTRUE);
114   task->SetVzRange(-10.,10.);
115
116   if(kPeriod.Contains("LHC13b4")) 
117     task->SetIsPythia(kTRUE);
118
119   mgr->AddTask(task);
120
121   //Connnect input
122   mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
123
124   //Connect output
125   AliAnalysisDataContainer *coutput1 = 0x0;
126   TString containerName1 = Form("%s",wagonName.Data());
127   TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
128   coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
129   mgr->ConnectOutput(task,1,coutput1);
130
131   return task;  
132 }
133
134 AliAnalysisTaskRhoBase *AttachRhoTask(TString     kBeamType           = "pp",
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
144   // Add kt jet finder and rho task in case we want background subtraction
145   Double_t minJetPt = 0.1;
146   if(kBeamType == "pPb") minJetPt = 0.;
147   AliEmcalJetTask *jetFinderKt;
148   AliEmcalJetTask *jetFinderAKt;
149   jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",minJetPt);
150   jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
151   jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
152   jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
153
154   if(kBeamType == "pPb") {
155     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");  
156     TF1 *fScale = new TF1("fScale","1.28",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);
175     rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
176   }
177   else if(kBeamType=="PbPb") {
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;
199   }
200
201   return rhoTaskBase;
202 }