1 AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA(
2 const char* containerSuffix = "",
3 Double_t jetRadius = 0.4,
4 const char* centralityType = "V0A",
5 Int_t trigger = AliVEvent::kINT7,
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
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)
32 else if(trigger == AliVEvent::kINT7)
33 triggerName = "kINT7";
34 else if(trigger == AliVEvent::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";
43 // #### Define manager and data container names
44 AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
46 ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to.");
50 TString containerNameSuffix("");
52 if (strcmp(containerSuffix,""))
53 containerNameSuffix = Form("_%s", containerSuffix);
55 TString bgrdName("Background");
56 TString myContName("");
57 TString myContJPName("");
58 TString myContTCName("");
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());
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());
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);
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;
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()));
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());
110 task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA%s_%s", containerNameSuffix.Data(), triggerName.Data()), usedTracks, "","", doJetProfileAnalysis, doTrackcutAnalysis);
112 cout << " Main task created: " << task << endl;
115 // #### Task preferences
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
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;
137 cout << " Settings set." << endl;
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;
147 if(doJetProfileAnalysis)
149 manager->ConnectOutput(task, 2, contJetProfile);
151 if(doTrackcutAnalysis && !doJetProfileAnalysis)
153 manager->ConnectOutput(task, 2, contTrackcuts);
155 else if(doTrackcutAnalysis && doJetProfileAnalysis)
157 manager->ConnectOutput(task, 3, contTrackcuts);
161 RequestMemory(task,600*1024);
163 cout << " ############ MACRO EXECUTION SUCCESSFUL, will return " << task << " ############\n";