]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskChargedJetsPA.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskChargedJetsPA.C
1 AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA(
2   const char*         containerSuffix         = "",
3   Double_t            jetRadius               = 0.4,
4   const char*         centralityType          = "V0A",
5   Int_t               trigger                 = AliVEvent::kINT7,
6   Bool_t              isPA                    = kTRUE,
7   Bool_t              isMC                    = kFALSE,
8   Bool_t              doJetProfileAnalysis    = kFALSE,
9   Bool_t              doTrackcutAnalysis      = kFALSE,
10   Bool_t              doJetAnalysis           = kTRUE,
11   const char*         usedTracks              = "PicoTracks",
12   Int_t               numberOfCentralityBins  = 20,
13   Double_t            areaPercentage          = 0.6,
14   Double_t            ktJetRadius             = 0.4,
15   Double_t            trackBgrdConeR          = 0.6,
16   Double_t            minJetTrackPt           = 0.150,
17   Double_t            minEta                  = -0.9,
18   Double_t            maxEta                  = +0.9,
19   Double_t            minJetEta               = -0.5,
20   Double_t            maxJetEta               = +0.5,
21   Int_t               recombscheme            = 1,
22   Bool_t              isEMCalTrain            = kFALSE
23 )
24 {
25   cout << " ############ MACRO EXECUTION STARTED ############\n";
26   // #### Detect the demanded trigger with its readable name
27   TString triggerName(Form("Trigger_%i", trigger));
28   if (trigger == AliVEvent::kAnyINT)
29     triggerName = "kAnyINT";
30   else if (trigger == AliVEvent::kAny)
31     triggerName = "kAny";
32   else if(trigger == AliVEvent::kINT7)
33     triggerName = "kINT7";
34   else if(trigger == AliVEvent::kMB)
35     triggerName = "kMB";
36   else if(trigger == AliVEvent::kEMC7)
37     triggerName = "kEMC7";
38   else if(trigger == AliVEvent::kEMCEJE)
39     triggerName = "kEMCEJE";
40   else if(trigger == AliVEvent::kEMCEGA)
41     triggerName = "kEMCEGA";
42
43   // #### Define manager and data container names
44   AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
45   if (!manager) {
46     ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to.");
47     return NULL;
48   }
49
50   TString containerNameSuffix("");
51
52   if (strcmp(containerSuffix,""))
53     containerNameSuffix = Form("_%s", containerSuffix);
54
55   TString bgrdName("Background");
56   TString myContName("");
57   TString myContJPName("");
58   TString myContTCName("");
59   if(isMC)
60   {
61     bgrdName = Form("BackgroundR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
62     myContName = Form("AnalysisR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
63     myContJPName = Form("JetProfileR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
64     myContTCName = Form("TrackcutsR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
65   }
66   else
67   {
68     bgrdName = Form("BackgroundR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
69     myContName = Form("AnalysisR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
70     myContJPName = Form("JetProfileR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
71     myContTCName = Form("TrackcutsR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
72   }
73
74   if(doJetAnalysis)
75   {
76     // #### Add necessary jet finder tasks
77     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
78     AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,"",1,jetRadius,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // anti-kt
79     AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(usedTracks,"",0,ktJetRadius,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // kt
80     cout << " Jet finder tasks added: " <<  jetFinderTask << " + " <<  jetFinderTaskKT << endl;
81     jetFinderTask->SelectCollisionCandidates(AliVEvent::kAny);
82     jetFinderTaskKT->SelectCollisionCandidates(AliVEvent::kAny);
83
84     // #### Define external rho task
85     AliEmcalJetTask* jetFinderRho = AddTaskEmcalJet(usedTracks,"",1,0.4,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // anti-kt
86     AliEmcalJetTask* jetFinderRhoKT = AddTaskEmcalJet(usedTracks,"",0,0.4,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // kt
87     jetFinderRho->SelectCollisionCandidates(AliVEvent::kAny);
88     jetFinderRhoKT->SelectCollisionCandidates(AliVEvent::kAny);
89     cout << " Jet finder tasks (used for bgrd) added: " <<  jetFinderRho << " + " <<  jetFinderRhoKT << endl;
90     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
91     AliAnalysisTaskRhoSparse* rhotask = AddTaskRhoSparse(jetFinderRhoKT->GetName(), NULL, usedTracks, "", bgrdName.Data(), 0.4,"TPC", 0., 5., 0, 0,2,kFALSE,bgrdName.Data(),kTRUE);
92     rhotask->SelectCollisionCandidates(AliVEvent::kAny);
93     cout << " Background task added: " <<  rhotask << endl;
94   }
95
96   // #### Define analysis task
97   AliAnalysisTaskChargedJetsPA *task = NULL;
98   AliAnalysisDataContainer* contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));
99   if(doJetProfileAnalysis)
100     AliAnalysisDataContainer* contJetProfile = manager->CreateContainer(myContJPName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));
101   if(doTrackcutAnalysis)
102     AliAnalysisDataContainer* contTrackcuts = manager->CreateContainer(myContTCName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));
103
104   if(doJetAnalysis)
105   {
106     task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA%s_%s_%s", containerNameSuffix.Data(), jetFinderTask->GetName(), triggerName.Data()), usedTracks, jetFinderTask->GetName(),jetFinderTaskKT->GetName(), doJetProfileAnalysis, doTrackcutAnalysis);
107     task->SetExternalRhoTaskName(bgrdName.Data());
108   }
109   else
110     task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA%s_%s", containerNameSuffix.Data(), triggerName.Data()), usedTracks, "","", doJetProfileAnalysis, doTrackcutAnalysis);
111
112   cout << " Main task created: " <<  task << endl;
113
114
115   // #### Task preferences
116   task->SetIsPA(isPA);
117   task->SetAnalyzeJetProfile(doJetProfileAnalysis);
118   task->SetAnalyzeTrackcuts(doTrackcutAnalysis);
119   task->SetAcceptanceEta(minEta,maxEta);
120   task->SetAcceptanceJetEta(minJetEta,maxJetEta);
121   task->SetSignalJetRadius(jetRadius);
122   task->SetBackgroundJetRadius(jetRadius);
123   task->SetSignalJetMinArea(areaPercentage*jetRadius*jetRadius*TMath::Pi());
124   task->SetRandConeRadius(jetRadius);
125   task->SelectCollisionCandidates(trigger);
126   task->SetCentralityType(centralityType);
127   task->SetNumberOfCentralityBins(numberOfCentralityBins);
128   task->SetDoJetAnalysis(doJetAnalysis);
129   // for the case of pp analysis, set special settings
130   if(!isPA)
131   {
132     task->SetCentralityToOne(1);
133     task->SetUsePileUpCut(0);
134     task->SetUseDefaultVertexCut(kFALSE);
135     cout << " Using pp settings: No pileup correction, simple vertex correction, centrality=1" << endl;
136   }
137   cout << " Settings set." << endl;
138
139   // #### Add analysis task
140   manager->AddTask(task);
141   cout << " Task added to manager" << endl;
142   manager->ConnectInput(task, 0, manager->GetCommonInputContainer());
143   cout << " Input connected, common input container: " << manager->GetCommonInputContainer() << endl;
144   manager->ConnectOutput(task, 1, contHistos);
145   cout << " Output connected, contHistos: " << contHistos << endl;
146
147   if(doJetProfileAnalysis)
148   {
149     manager->ConnectOutput(task, 2, contJetProfile);
150   }
151   if(doTrackcutAnalysis && !doJetProfileAnalysis)
152   {
153     manager->ConnectOutput(task, 2, contTrackcuts);
154   }
155   else if(doTrackcutAnalysis && doJetProfileAnalysis)
156   {
157     manager->ConnectOutput(task, 3, contTrackcuts);
158   }
159
160   if(isEMCalTrain)
161     RequestMemory(task,600*1024);
162
163   cout << " ############ MACRO EXECUTION SUCCESSFUL, will return " << task << " ############\n";
164   return task;
165 }