]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
Merge branch 'TPCdev' of https://git.cern.ch/reps/AliRoot into TPCdev
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetPreparation.C
1 // $Id$
2
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
23 )
24 {
25   // Add task macros for all jet related helper tasks.
26
27   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
28   if (!mgr)
29   {
30     Error("AddTaskJetPreparation","No analysis manager found.");
31     return 0;
32   }
33
34   AliVEventHandler *evhand = mgr->GetInputEventHandler();
35   if (!evhand) {
36     Error("AddTaskJetPreparation", "This task requires an input event handler");
37     return NULL;
38   }
39
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);
44
45   TString dType("ESD");
46   if (!evhand->InheritsFrom("AliESDInputHandler")) 
47     dType = "AOD";
48   if ((dType == "AOD") && (clusterColName == "CaloClusters"))
49     clusterColName = "caloClusters";
50   if ((dType == "ESD") && (clusterColName == "caloClusters"))
51     clusterColName = "CaloClusters";
52
53   if (0) {
54     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
55     AliEmcalTrackPropagatorTask *proptask = AddTaskEmcalTrackPropagator();
56     proptask->SelectCollisionCandidates(pSel);
57   }
58
59   if (makePicoTracks && (dType == "ESD" || dType == "AOD")) {
60     // Filter tracks
61     TString inputTracks = "AODFilterTracks";
62     const Double_t edist = 440;
63     if (dType == "ESD") {
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);
74       if (doAODTrackProp) {
75         aodfilter->SetDist(edist);
76         aodfilter->SetDoPropagation(kTRUE);
77       }
78       aodfilter->SelectCollisionCandidates(pSel);
79     }
80     // Produce PicoTracks 
81     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
82     AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks);
83     pTrackTask->SetTrackEfficiency(trackeff);
84     pTrackTask->SelectCollisionCandidates(pSel);
85   }
86
87   // Trigger maker
88   if (makeTrigger) {
89     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
90     AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers");
91     emcalTriggers->SelectCollisionCandidates(pSel);
92   }
93
94   TString emctracks(Form("EmcalTracks_%s",usedTracks));
95   TString emcclusters(Form("EmcalClusters_%s",clusterColName.Data()));
96
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);
101
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);
106   if (isEmcalTrain)
107     RequestMemory(emcalClus,100*1024);
108
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);
113   if (isEmcalTrain) {
114     if (doHistos)
115       RequestMemory(hCorr,500*1024);
116   }
117
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);
123   }
124
125   // Return one task that represents the jet preparation on LEGO trains
126   return emcalParts;
127 }