]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskChargedJetsPA.C
from ruediger
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskChargedJetsPA.C
1 AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA(
2   Double_t            jetRadius               = 0.4,
3   Int_t               trigger                 = AliVEvent::kINT7,
4   Bool_t              isMC                    = kFALSE,
5   Int_t               ptHardBin               = -1,
6   Double_t            randomConeR             = 0.4,
7   Double_t            trackBgrdConeR          = 0.6,
8   const char*         containerSuffix         = "",
9   const char*         usedTracks              = "PicoTracks",
10   const char*         centralityType          = "V0A",
11   Double_t            trackEtaWindow          = 0.9,
12   Double_t            minJetPt                = 5.0, // signal jet min pt
13   Double_t            minBackgroundJetPt      = 0.15, // background jet min pt
14   Double_t            dijetLeadingMinPt       = 10.0,
15   Double_t            dijetMaxAngleDev        = 10.0,
16   Int_t               numberOfPtHardBins      = 0,
17   const char*         externalMacro           = NULL,
18   Bool_t              useVertexCut            = kTRUE,
19   Bool_t              usePileUpCut            = kTRUE,
20   Bool_t              isEMCalTrain            = kFALSE,
21   Bool_t              calculateExternalRho    = kFALSE,
22   Bool_t              analyzeDeprecatedBackgrounds = kTRUE
23 )
24 {
25   // #### Detect the demanded trigger with its readable name
26   TString triggerName(Form("Trigger_%i", trigger));
27   if (trigger == AliVEvent::kAnyINT)
28     triggerName = "kAnyINT";
29   else if (trigger == AliVEvent::kAny)
30     triggerName = "kAny";
31   else if(trigger == AliVEvent::kINT7)
32     triggerName = "kINT7";
33   else if(trigger == AliVEvent::kMB)
34     triggerName = "kMB";
35   else if(trigger == AliVEvent::kEMC7)
36     triggerName = "kEMC7";
37   else if(trigger == AliVEvent::kEMCEJE)
38     triggerName = "kEMCEJE";
39   else if(trigger == AliVEvent::kEMCEGA)
40     triggerName = "kEMCEGA";
41
42   // #### Define manager and data container names
43   AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
44   if (!manager) {
45     ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to.");
46     return NULL;
47   }
48
49   TString stringPtHard("");
50   TString containerNameSuffix("");
51
52   if (ptHardBin!=-1)
53     stringPtHard = Form("_PtHard_%d",ptHardBin);
54   if (strcmp(containerSuffix,""))
55     containerNameSuffix = Form("_%s", containerSuffix);
56
57   TString myContName("");
58   if(isMC)
59     myContName = Form("AnalysisR0%2.0f_%s_MC%s%s", jetRadius*100, triggerName.Data(), stringPtHard.Data(), containerNameSuffix.Data());
60   else
61     myContName = Form("AnalysisR0%2.0f_%s%s%s", jetRadius*100, triggerName.Data(), stringPtHard.Data(), containerNameSuffix.Data());
62
63   // #### Add necessary jet finder tasks
64   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
65   AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,"",1,jetRadius,1,0.150,0.300); // anti-kt
66   AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(usedTracks,"",0,jetRadius,1,0.150,0.300); // kt
67   
68   if(jetRadius < 0.1)
69   {
70     jetFinderTask->SetMinJetArea(0.0);
71     jetFinderTaskKT->SetMinJetArea(0.0);
72     jetFinderTask->SetMinJetPt(0.15);
73     jetFinderTaskKT->SetMinJetPt(0.15);
74     jetFinderTask->SetGhostArea(0.001);
75     jetFinderTaskKT->SetGhostArea(0.001);
76   }
77
78   if(minBackgroundJetPt == -1.0)
79   {
80     if(analyzeDeprecatedBackgrounds)
81       minBackgroundJetPt = 0.0;
82     else
83       minBackgroundJetPt = 0.15;
84   }
85
86
87   jetFinderTaskKT->SetMinJetPt(minBackgroundJetPt);
88
89   // #### Define extern rho task
90   if(calculateExternalRho)
91   {
92     TString myRhoName("");
93     if(isMC)
94       myRhoName = Form("RhoR0%2.0f_%s_MC%s",jetRadius*100,triggerName.Data(), stringPtHard.Data());
95     else
96       myRhoName = Form("RhoR0%2.0f_%s%s",jetRadius*100,triggerName.Data(), stringPtHard.Data());
97
98     contRhoHistos = manager->CreateContainer(myRhoName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJetsPA", AliAnalysisManager::GetCommonFileName()));
99     AliAnalysisTaskRhoSparse *rhotask = new AliAnalysisTaskRhoSparse(myRhoName.Data(), kTRUE);
100     rhotask->SetAnaType(AliAnalysisTaskEmcal::kTPC);
101     rhotask->SetJetsName(jetFinderTaskKT->GetName());
102     rhotask->SetSigJetsName(jetFinderTask->GetName());
103     rhotask->SetTracksName(usedTracks);
104     rhotask->SetRhoName(myRhoName.Data());
105     rhotask->SetJetAreaCut(0);
106     rhotask->SetJetPtCut(0.150);
107     rhotask->SetJetRadius(jetRadius);
108     rhotask->SetRhoCMS(kTRUE);
109     rhotask->SelectCollisionCandidates(trigger);
110     manager->AddTask(rhotask);
111     manager->ConnectInput(rhotask, 0, manager->GetCommonInputContainer());
112     manager->ConnectOutput(rhotask, 1, contRhoHistos);
113
114   }
115
116   // #### Define analysis task
117   AliAnalysisTaskChargedJetsPA *task = NULL;
118   contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJetsPA", AliAnalysisManager::GetCommonFileName()));
119   task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA_%s_%s", jetFinderTask->GetName(), triggerName.Data()), usedTracks, jetFinderTask->GetName(),jetFinderTaskKT->GetName());
120
121   // #### Task preferences
122   task->SetAcceptanceWindows(trackEtaWindow, jetRadius, jetRadius);
123   task->SetAnalyzeQA(kTRUE);
124   task->SetAnalyzeBackground(kTRUE);
125   task->SetAnalyzeDeprecatedBackgrounds(analyzeDeprecatedBackgrounds);
126   task->SetUsePileUpCut(usePileUpCut);
127   task->SetUseVertexCut(useVertexCut);
128   task->SetSignalJetMinPt(minJetPt);
129   task->SetSignalJetMinArea(0.6*jetRadius*jetRadius*TMath::Pi());
130   task->SetDijetLeadingMinPt(dijetLeadingMinPt);
131   task->SetDijetMaxAngleDeviation(dijetMaxAngleDev);
132   task->SetRandConeRadius(randomConeR);
133   task->SetBackgroundJetMinPt(minBackgroundJetPt);
134   task->SetTRBackgroundConeRadius(trackBgrdConeR);
135   task->SelectCollisionCandidates(trigger);
136   task->SetCentralityType(centralityType);
137   task->SetUsePtHardBin(ptHardBin);
138   if(calculateExternalRho)
139     task->SetExternalRhoTaskName(myRhoName.Data());
140
141   if(numberOfPtHardBins)
142     task->SetNumberOfPtHardBins(numberOfPtHardBins);
143
144   // #### Add analysis task
145   manager->AddTask(task);
146   manager->ConnectInput(task, 0, manager->GetCommonInputContainer());
147   manager->ConnectOutput(task, 1, contHistos);
148
149   if(isEMCalTrain)
150     RequestMemory(task,200*1024);
151
152   // #### Do some nasty piggybacking on demand
153   if (externalMacro)
154     gROOT->Macro(externalMacro);
155
156   return task;
157 }