3 AliAnalysisTaskSE* AddTaskJetPreparation(
4 const char* periodstr = "LHC11h",
5 const char* usedTracks = "PicoTracks",
6 const char* usedMCParticles = "MCParticlesSelected",
7 const char* usedClusters = "CaloClusters",
8 const char* outClusName = "CaloClustersCorr",
9 const Double_t hadcorr = 2.0,
10 const Double_t Eexcl = 0.00,
11 const Double_t phiMatch = 0.03,
12 const Double_t etaMatch = 0.015,
13 const Double_t minPtEt = 0.15,
14 const UInt_t pSel = AliVEvent::kAny,
15 const Bool_t trackclus = kTRUE,
16 const Bool_t doHistos = kFALSE,
17 const Bool_t makePicoTracks = kTRUE,
18 const Bool_t makeTrigger = kTRUE,
19 const Bool_t isEmcalTrain = kFALSE,
20 const Double_t trackeff = 1.0,
21 const Bool_t doAODTrackProp = kFALSE,
22 const Bool_t modifyMatchObjs = kTRUE
25 // Add task macros for all jet related helper tasks.
27 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
30 Error("AddTaskJetPreparation","No analysis manager found.");
34 AliVEventHandler *evhand = mgr->GetInputEventHandler();
36 Error("AddTaskJetPreparation", "This task requires an input event handler");
40 // Set trackcuts according to period. Every period used should be definied here
41 TString period(periodstr);
42 TString clusterColName(usedClusters);
43 TString particleColName(usedMCParticles);
46 if (!evhand->InheritsFrom("AliESDInputHandler"))
48 if ((dType == "AOD") && (clusterColName == "CaloClusters"))
49 clusterColName = "caloClusters";
50 if ((dType == "ESD") && (clusterColName == "caloClusters"))
51 clusterColName = "CaloClusters";
54 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
55 AliEmcalTrackPropagatorTask *proptask = AddTaskEmcalTrackPropagator();
56 proptask->SelectCollisionCandidates(pSel);
59 if (makePicoTracks && (dType == "ESD" || dType == "AOD")) {
61 TString inputTracks = "AODFilterTracks";
62 const Double_t edist = 440;
64 inputTracks = "ESDFilterTracks";
65 TString trackCuts(Form("Hybrid_%s", period.Data()));
66 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTrackFilter.C");
67 AliEmcalEsdTrackFilterTask *esdfilter = AddTaskEmcalEsdTrackFilter(inputTracks,trackCuts);
68 esdfilter->SetDoPropagation(kTRUE);
69 esdfilter->SetDist(edist);
70 esdfilter->SelectCollisionCandidates(pSel);
71 } else if (dType == "AOD") {
72 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalAodTrackFilter.C");
73 AliEmcalAodTrackFilterTask *aodfilter = AddTaskEmcalAodTrackFilter(inputTracks,"tracks",period);
75 aodfilter->SetDist(edist);
76 aodfilter->SetDoPropagation(kTRUE);
78 aodfilter->SelectCollisionCandidates(pSel);
81 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
82 AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks);
83 pTrackTask->SetTrackEfficiency(trackeff);
84 pTrackTask->SelectCollisionCandidates(pSel);
89 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
90 AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers");
91 emcalTriggers->SelectCollisionCandidates(pSel);
94 TString emctracks(Form("EmcalTracks_%s",usedTracks));
95 TString emcclusters(Form("EmcalClusters_%s",clusterColName.Data()));
97 // Produce particles used for hadronic correction
98 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
99 AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName,emctracks,emcclusters);
100 emcalParts->SelectCollisionCandidates(pSel);
102 // Relate tracks and clusters
103 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C");
104 AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher(emctracks,emcclusters,0.1,modifyMatchObjs,doHistos);
105 emcalClus->SelectCollisionCandidates(pSel);
107 RequestMemory(emcalClus,100*1024);
109 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskHadCorr.C");
110 AliHadCorrTask *hCorr = AddTaskHadCorr(emctracks,emcclusters,outClusName,hadcorr,
111 minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
112 hCorr->SelectCollisionCandidates(pSel);
115 RequestMemory(hCorr,500*1024);
118 // Produce MC particles
119 if(particleColName != "") {
120 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
121 AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName, kFALSE, kFALSE);
122 mcPartTask->SelectCollisionCandidates(pSel);
125 // Return one task that represents the jet preparation on LEGO trains