]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
adjust jet preparation
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetPreparation.C
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    = "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
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   // 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);
39
40   if ((dType == "AOD") && (clusterColName == "CaloClusters"))
41     clusterColName = "caloClusters";
42   if ((dType == "ESD") && (clusterColName == "caloClusters"))
43     clusterColName = "CaloClusters";
44
45   if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
46   {
47     TString inputTracks = "tracks";
48
49     if (dType == "ESD")
50     {
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);
58     }
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);
64     }
65
66
67     // Produce PicoTracks 
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);
72   }
73
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);
78
79   // Trigger maker
80   if (makeTrigger) {
81     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
82     AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers");
83     emcalTriggers->SelectCollisionCandidates(pSel);
84   }
85
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);
90   if (isEmcalTrain)
91     RequestMemory(emcalClus,100*1024);
92
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);
96
97   if (isEmcalTrain) {
98     if (doHistos)
99       RequestMemory(hCorr,500*1024);
100   }
101
102   // Produce MC particles
103   if(particleColName != "")
104   {
105     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
106     AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
107     mcPartTask->SelectCollisionCandidates(pSel);
108   }
109
110   // Return one task that represents the jet preparation on LEGO trains
111   return emcalParts;
112 }