]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalQGTagging.C
7f0fd6f9d829b4eb85eeab2e9487fa2b579043ae
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalQGTagging.C
1 AliAnalysisTaskEmcalQGTagging* AddTaskEmcalQGTagging(const char * njetsBase,
2                                                      const char * njetsTrue,
3                                                      const Double_t R,
4                                                      const char * nrhoBase, 
5                                                      const char * ntracks, 
6                                                      const char * nclusters,
7                                                      const char * ntracksTrue,
8                                                      const char *type,                                
9                                                      const char *CentEst,
10                                                      Int_t       pSel,
11                                                      TString     trigClass      = "",
12                                                      TString     kEmcalTriggers = "",
13                                                      TString     tag            = "",
14                                                      AliAnalysisTaskEmcalQGTagging::JetShapeType jetShapeType, AliAnalysisTaskEmcalQGTagging::JetShapeSub jetShapeSub ) {
15   
16   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
17   if (!mgr)
18     {
19       Error("AddTaskEmcalQGTagging","No analysis manager found.");
20       return 0;
21     }
22   Bool_t ismc=kFALSE;
23   ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
24
25   // Check the analysis type using the event handlers connected to the analysis manager.
26   //==============================================================================
27   if (!mgr->GetInputEventHandler())
28     {
29       ::Error("AddTaskEmcalQGTagging", "This task requires an input event handler");
30       return NULL;
31     }
32
33   TString wagonName = Form("JetQGTaggings_%s_TC%s%s",njetsBase,trigClass.Data(),tag.Data());
34
35   //Configure jet tagger task
36   AliAnalysisTaskEmcalQGTagging *task = new AliAnalysisTaskEmcalQGTagging(wagonName.Data());
37
38   //task->SetNCentBins(4);
39   task->SetJetShapeType(jetShapeType);
40   task->SetJetShapeSub(jetShapeSub);
41   
42   TString thename(njetsBase);
43   //if(thename.Contains("Sub")) task->SetIsConstSub(kTRUE);
44   //task->SetVzRange(-10.,10.);
45
46   AliParticleContainer *trackCont  = task->AddParticleContainer(ntracks);
47   AliParticleContainer *trackContTrue  = task->AddParticleContainer(ntracksTrue);
48   AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
49
50   AliJetContainer *jetContBase=0x0;
51   AliJetContainer *jetContTrue=0x0;
52
53   TString strType(type);
54
55   if (jetShapeType==AliAnalysisTaskEmcalQGTagging::kTrue) {
56     jetContBase = task->AddJetContainer(njetsBase,strType,R);
57     if(jetContBase) {
58       jetContBase->SetRhoName(nrhoBase);
59       jetContBase->ConnectParticleContainer(trackCont);
60       jetContBase->ConnectClusterContainer(clusterCont);
61       jetContBase->SetPercAreaCut(0.6);
62       jetContBase->SetPythiaInfoName("PythiaInfo");
63     }
64   }
65   
66   if (jetShapeType==AliAnalysisTaskEmcalQGTagging::kTrueDet){
67     
68     jetContBase = task->AddJetContainer(njetsBase,strType,R);
69     if(jetContBase) {
70       jetContBase->SetRhoName(nrhoBase);
71       jetContBase->ConnectParticleContainer(trackCont);
72       jetContBase->ConnectClusterContainer(clusterCont);
73       jetContBase->SetPercAreaCut(0.6);
74       jetContBase->SetPythiaInfoName("PythiaInfo");
75     }
76
77     jetContTrue = task->AddJetContainer(njetsTrue,strType,R);
78     if(jetContTrue) {
79       jetContTrue->SetRhoName(nrhoBase);
80       jetContTrue->ConnectParticleContainer(trackContTrue);
81       jetContTrue->SetPercAreaCut(0.6); 
82       jetContTrue->SetPythiaInfoName("PythiaInfo");
83     }
84   }  
85
86   if (jetShapeType==AliAnalysisTaskEmcalQGTagging::kData){
87     jetContBase = task->AddJetContainer(njetsBase,strType,R);
88     if(jetContBase) {
89       jetContBase->SetRhoName(nrhoBase);
90       jetContBase->ConnectParticleContainer(trackCont);
91       jetContBase->ConnectClusterContainer(clusterCont);
92       jetContBase->SetPercAreaCut(0.6);
93     }    
94   }
95   
96   if (jetShapeType==AliAnalysisTaskEmcalQGTagging::kDetEmb){
97     jetContBase = task->AddJetContainer(njetsBase,strType,R);
98     if(jetContBase) {
99       jetContBase->SetRhoName(nrhoBase);
100       jetContBase->ConnectParticleContainer(trackCont);
101       jetContBase->ConnectClusterContainer(clusterCont);
102       jetContBase->SetPercAreaCut(0.6);
103       jetContBase->SetPythiaInfoName("PythiaInfo");
104     }
105
106     jetContTrue = task->AddJetContainer(njetsTrue,strType,R);
107     if(jetContTrue) {
108       jetContTrue->SetRhoName(nrhoBase);
109       jetContTrue->ConnectParticleContainer(trackContTrue);
110       jetContTrue->SetPercAreaCut(0.6); 
111       jetContTrue->SetPythiaInfoName("PythiaInfo");
112     }
113     
114   }
115   
116   task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
117   task->SetCentralityEstimator(CentEst);
118   task->SelectCollisionCandidates(pSel);
119   task->SetUseAliAnaUtils(kFALSE);
120
121   mgr->AddTask(task);
122   
123   //Connnect input
124   mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
125
126   //Connect output
127   TString contName1(wagonName);
128
129   if (jetShapeType == AliAnalysisTaskEmcalQGTagging::kTrue) contName1 += "_True"; 
130   if (jetShapeType == AliAnalysisTaskEmcalQGTagging::kTrueDet) contName1 += "_TrueDet"; 
131   if (jetShapeType == AliAnalysisTaskEmcalQGTagging::kData) contName1 += "_Data"; 
132   if (jetShapeType == AliAnalysisTaskEmcalQGTagging::kDetEmb) contName1 += "_DetEmb"; 
133  
134   if (jetShapeSub == AliAnalysisTaskEmcalQGTagging::kNoSub) contName1 += "_NoSub"; 
135   if (jetShapeSub == AliAnalysisTaskEmcalQGTagging::kConstSub) contName1 += "_ConstSub"; 
136   if (jetShapeSub == AliAnalysisTaskEmcalQGTagging::kDerivSub) contName1 += "_DerivSub"; 
137
138
139   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
140   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName1.Data(), TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
141     
142   mgr->ConnectOutput(task,1,coutput1);
143
144   return task;  
145
146 }
147