]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
fix from megan
[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   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 }