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