]>
Commit | Line | Data |
---|---|---|
1 | // $Id$ | |
2 | ||
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 | |
20 | ) | |
21 | { | |
22 | // Add task macros for all jet related helper tasks. | |
23 | ||
24 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
25 | if (!mgr) | |
26 | { | |
27 | Error("AddTaskJetPreparation","No analysis manager found."); | |
28 | return 0; | |
29 | } | |
30 | Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL); | |
31 | ||
32 | // Set trackcuts according to period. Every period used should be definied here | |
33 | TString period(periodstr); | |
34 | TString clusterColName(usedClusters); | |
35 | if ( (period != "LHC11h") && (period!="LHC11a") ) | |
36 | { | |
37 | Error("AddTaskJetPreparation","###################################################"); | |
38 | Error("AddTaskJetPreparation","Run period in AddTaskJetPreparation.C not recognized! You have to specify it for the used period, if you need jets!"); | |
39 | Error("AddTaskJetPreparation","###################################################"); | |
40 | return 0; | |
41 | } | |
42 | ||
43 | if ((strcmp(dataType,"AOD") == 0) && (clusterColName == "CaloClusters")) | |
44 | clusterColName = "caloClusters"; | |
45 | ||
46 | if (makePicoTracks && ((strcmp(dataType,"ESD") == 0) || (strcmp(dataType,"AOD") == 0)) ) | |
47 | { | |
48 | TString inputTracks = "tracks"; | |
49 | ||
50 | if (strcmp(dataType,"ESD") == 0) | |
51 | { | |
52 | inputTracks = "HybridTracks"; | |
53 | TString trackCuts(Form("Hybrid_%s", period.Data())); | |
54 | // Hybrid tracks maker for ESD | |
55 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C"); | |
56 | AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks.Data(),trackCuts.Data()); | |
57 | hybTask->SelectCollisionCandidates(pSel); | |
58 | ||
59 | // Track propagator to extend track to the TPC boundaries | |
60 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C"); | |
61 | AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks.Data()); | |
62 | propTask->SelectCollisionCandidates(pSel); | |
63 | } | |
64 | // Produce PicoTracks | |
65 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C"); | |
66 | AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks.Data(), period.Data()); | |
67 | pTrackTask->SelectCollisionCandidates(pSel); | |
68 | } | |
69 | ||
70 | // Produce particles used for hadronic correction | |
71 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C"); | |
72 | AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName.Data(),"EmcalTracks","EmcalClusters"); | |
73 | emcalParts->SelectCollisionCandidates(pSel); | |
74 | ||
75 | // Relate tracks and clusters | |
76 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C"); | |
77 | AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher("EmcalTracks","EmcalClusters",0.1); | |
78 | emcalClus->SelectCollisionCandidates(pSel); | |
79 | if (isEmcalTrain) | |
80 | RequestMemory(emcalClus,100*1024); | |
81 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C"); | |
82 | AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos); | |
83 | hCorr->SelectCollisionCandidates(pSel); | |
84 | if (isEmcalTrain) { | |
85 | if (doHistos) | |
86 | RequestMemory(hCorr,250*1024); | |
87 | } | |
88 | ||
89 | // Produce MC particles | |
90 | if (isMC && strlen(usedMCParticles)>0) | |
91 | { | |
92 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C"); | |
93 | AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(usedMCParticles, kFALSE, kFALSE); | |
94 | mcPartTask->SelectCollisionCandidates(pSel); | |
95 | } | |
96 | ||
97 | // Return one task that represents the jet preparation on LEGO trains | |
98 | return emcalParts; | |
99 | } |