]>
Commit | Line | Data |
---|---|---|
8628b70c | 1 | // $Id$ |
2 | ||
3 | //#define EMCALTRAIN | |
4 | ||
5 | void AddTaskJetPreparation( | |
6 | const char* dataType = "ESD", | |
7 | const char* usedTracks = "PicoTracks", | |
8 | const char* usedMCParticles = "MCParticles", | |
9 | const char* usedClusters = "CaloClusters", | |
10 | const char* outClusName = "CaloClustersCorr", | |
11 | const Double_t hadcorr = 2.0, | |
12 | const Double_t Eexcl = 0.00, | |
13 | const Double_t phiMatch = 0.03, | |
14 | const Double_t etaMatch = 0.015, | |
15 | const Double_t minPtEt = 0.15, | |
16 | const UInt_t pSel = 0, | |
17 | const Bool_t doHistos = kFALSE | |
18 | ) | |
19 | { | |
20 | // TODO: Implement compatability for AODs (cluster names e.g.) | |
21 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
22 | if (!mgr) | |
23 | { | |
24 | Error("AddTaskJetPreparation","No analysis manager found."); | |
25 | return 0; | |
26 | } | |
27 | Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL); | |
28 | ||
29 | // Set trackcuts according to period. Every period used should be definied here | |
30 | TString period(""); | |
31 | TString trackCuts(""); | |
32 | TString eper(gSystem->Getenv("ETRAIN_PERIOD")); | |
33 | if (eper.BeginsWith("lhc12g") || eper.BeginsWith("lhc11h") || eper.BeginsWith("lhc12a15a") || eper.BeginsWith("LHC12g") || eper.BeginsWith("LHC12a15a")) | |
34 | period = "LHC11h"; | |
35 | else if (eper.BeginsWith("lhc11a")) | |
36 | period = "LHC11a"; | |
37 | else | |
38 | { | |
39 | Error("AddTaskJetPreparation","###################################################"); | |
40 | Error("AddTaskJetPreparation","Run period in AddTaskJetPreparation.C not recognized! You have to specify it for the used period, if you need jets!"); | |
41 | return 0; | |
42 | } | |
43 | ||
44 | const char* inputTracks = "HybridTracks"; | |
45 | trackCuts = Form("Hybrid_%s", period.Data()); | |
46 | ||
47 | Bool_t makePicoTracks = kTRUE; | |
48 | if ((eper == "lhc10hs") || (eper == "lhc11hs")) { | |
49 | makePicoTracks = kFALSE; | |
50 | } | |
51 | ||
52 | if( makePicoTracks && ((strcmp(dataType,"ESD") == 0) || (strcmp(dataType,"AOD") == 0)) ) | |
53 | { | |
54 | if(strcmp(dataType,"ESD") == 0) | |
55 | { | |
56 | // Hybrid tracks maker for ESD | |
57 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C"); | |
58 | AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks,trackCuts.Data()); | |
59 | hybTask->SelectCollisionCandidates(pSel); | |
60 | ||
61 | // Track propagator to extend track to the TPC boundaries | |
62 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C"); | |
63 | AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks); | |
64 | propTask->SelectCollisionCandidates(pSel); | |
65 | } | |
66 | // PicoTracks maker to produce pico tracks | |
67 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C"); | |
68 | AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks, period.Data()); | |
69 | pTrackTask->SelectCollisionCandidates(pSel); | |
70 | } | |
71 | ||
72 | // Make particles used for hadronic correction | |
73 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C"); | |
74 | AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,usedClusters,"EmcalTracks","EmcalClusters"); | |
75 | emcalParts->SelectCollisionCandidates(pSel); | |
76 | ||
77 | // Relate tracks and clusters | |
78 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C"); | |
79 | AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher("EmcalTracks","EmcalClusters",0.1); | |
80 | emcalClus->SelectCollisionCandidates(pSel); | |
81 | #ifdef EMCALTRAIN | |
82 | RequestMemory(emcalClus,100*1024); | |
83 | #endif | |
84 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C"); | |
85 | AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,doHistos); | |
86 | hCorr->SelectCollisionCandidates(pSel); | |
87 | #ifdef EMCALTRAIN | |
88 | if (doHistos) | |
89 | RequestMemory(hCorr,250*1024); | |
90 | #endif | |
91 | ||
92 | if (isMC && strlen(usedMCParticles)>0) | |
93 | { | |
94 | // Make MC particles | |
95 | gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C"); | |
96 | AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(usedMCParticles, kFALSE, kFALSE); | |
97 | mcPartTask->SelectCollisionCandidates(AliVEvent::kAny); | |
98 | } | |
99 | } |