3 AliAnalysisTaskSE* AddTaskJetPreparation(
4 const char* dataType = "ESD",
5 const char* periodstr = "LHC11h",
6 const char* usedTracks = "PicoTracks",
7 const char* usedMCParticles = "MCParticles",
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 isEmcalTrain = kFALSE
22 // Add task macros for all jet related helper tasks.
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
27 Error("AddTaskJetPreparation","No analysis manager found.");
30 Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL);
32 // Set trackcuts according to period. Every period used should be definied here
33 TString period(periodstr);
34 TString clusterColName(usedClusters);
35 TString particleColName(usedMCParticles);
36 TString hybridperiod("");
38 if (period.BeginsWith("lhc13") || period.BeginsWith("lhc12g") ||
39 period.BeginsWith("lhc11h") || period.BeginsWith("lhc12a15a") || period.BeginsWith("lhc12a15f"))
40 hybridperiod = "LHC11h";
41 else if (period.BeginsWith("lhc11a"))
42 hybridperiod = "LHC11a";
44 ::Error("AddTaskEmcalJetPreparation","###################################################");
45 ::Error("AddTaskEmcalJetPreparation","Run period in AddTaskJetPreparation.C not recognized! You have to specify it for the used period, if you need jets!");
46 ::Error("AddTaskEmcalJetPreparation","###################################################");
50 TString dType(dataType);
52 if ((dType == "AOD") && (clusterColName == "CaloClusters"))
53 clusterColName = "caloClusters";
54 if ((dType == "AOD") && (particleColName == "MCParticles"))
55 particleColName = "mcparticles";
57 if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
59 TString inputTracks = "tracks";
63 inputTracks = "HybridTracks";
64 TString trackCuts(Form("Hybrid_%s", hybridperiod.Data()));
65 // Hybrid tracks maker for ESD
66 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C");
67 AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks.Data(),trackCuts.Data());
68 hybTask->SelectCollisionCandidates(pSel);
70 // Track propagator to extend track to the TPC boundaries
71 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
72 AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks.Data());
73 propTask->SelectCollisionCandidates(pSel);
76 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
77 AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks.Data(), period.Data());
78 pTrackTask->SelectCollisionCandidates(pSel);
81 // Produce particles used for hadronic correction
82 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
83 AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName.Data(),"EmcalTracks","EmcalClusters");
84 emcalParts->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);
92 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C");
93 AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
94 hCorr->SelectCollisionCandidates(pSel);
97 RequestMemory(hCorr,250*1024);
100 // Produce MC particles
101 if (isMC && (particleColName != ""))
103 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
104 AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
105 mcPartTask->SelectCollisionCandidates(pSel);
108 // Return one task that represents the jet preparation on LEGO trains