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