3 AliAnalysisTaskSE* AddTaskJetPreparation(
4 const char* dataType = "ESD",
5 const char* periodstr = "LHC11h",
6 const char* usedTracks = "PicoTracks",
7 const char* usedMCParticles = "MCParticlesSelected",
8 const char* usedClusters = "CaloClusters",
9 const char* outClusName = "CaloClustersCorr",
10 const Double_t hadcorr = 2.0,
11 const Double_t Eexcl = 0.00,
12 const Double_t phiMatch = 0.03,
13 const Double_t etaMatch = 0.015,
14 const Double_t minPtEt = 0.15,
15 const UInt_t pSel = AliVEvent::kAny,
16 const Bool_t trackclus = kTRUE,
17 const Bool_t doHistos = kFALSE,
18 const Bool_t makePicoTracks = kTRUE,
19 const Bool_t makeTrigger = kTRUE,
20 const Bool_t isEmcalTrain = kFALSE,
21 const Double_t trackeff = 1.0,
22 const Bool_t doAODTrackProp = kFALSE
25 // Add task macros for all jet related helper tasks.
27 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
30 Error("AddTaskJetPreparation","No analysis manager found.");
34 // Set trackcuts according to period. Every period used should be definied here
35 TString period(periodstr);
36 TString clusterColName(usedClusters);
37 TString particleColName(usedMCParticles);
38 TString dType(dataType);
40 if ((dType == "AOD") && (clusterColName == "CaloClusters"))
41 clusterColName = "caloClusters";
42 if ((dType == "ESD") && (clusterColName == "caloClusters"))
43 clusterColName = "CaloClusters";
45 if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
47 TString inputTracks = "tracks";
51 inputTracks = "HybridTracks";
52 TString trackCuts(Form("Hybrid_%s", period.Data()));
53 // Hybrid tracks maker for ESD
54 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTrackFilter.C");
55 AliEmcalEsdTrackFilterTask *hybTask = AddTaskEmcalEsdTrackFilter(inputTracks.Data(),trackCuts.Data());
56 hybTask->SelectCollisionCandidates(pSel);
57 hybTask->SetDoPropagation(kTRUE);
59 if(dType == "AOD" && doAODTrackProp) {
60 // Track propagator to extend track to the EMCal surface
61 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagatorAOD.C");
62 AliEmcalTrackPropagatorTaskAOD *propTask = AddTaskEmcalTrackPropagatorAOD(inputTracks.Data(),440.);
63 propTask->SelectCollisionCandidates(pSel);
68 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
69 AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks.Data(), period.Data());
70 pTrackTask->SelectCollisionCandidates(pSel);
71 pTrackTask->SetTrackEfficiency(trackeff);
74 // Produce particles used for hadronic correction
75 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
76 AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName.Data(),"EmcalTracks","EmcalClusters");
77 emcalParts->SelectCollisionCandidates(pSel);
81 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
82 AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers");
83 emcalTriggers->SelectCollisionCandidates(pSel);
86 // Relate tracks and clusters
87 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C");
88 AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher("EmcalTracks","EmcalClusters",0.1);
89 emcalClus->SelectCollisionCandidates(pSel);
91 RequestMemory(emcalClus,100*1024);
93 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C");
94 AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
95 hCorr->SelectCollisionCandidates(pSel);
99 RequestMemory(hCorr,500*1024);
102 // Produce MC particles
103 if(particleColName != "")
105 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
106 AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
107 mcPartTask->SelectCollisionCandidates(pSel);
110 // Return one task that represents the jet preparation on LEGO trains