]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
fix from rosi
[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   TString particleColName(usedMCParticles);
36   TString hybridperiod("");
37
38   if (period.BeginsWith("lhc13") || period.BeginsWith("lhc12g") || 
39       period.BeginsWith("lhc11h") || period.BeginsWith("lhc12a15a") || period.BeginsWith("lhc12a15f"))
40     hybridperiod = "LHC11h";
41   else if (period.BeginsWith("lhc11a"))
42     hybridperiod = "LHC11a";
43   else {
44     ::Error("AddTaskEmcalJetPreparation","###################################################");
45     ::Error("AddTaskEmcalJetPreparation","Run period in AddTaskJetPreparation.C not recognized! You have to specify it for the used period, if you need jets!");
46     ::Error("AddTaskEmcalJetPreparation","###################################################");
47     return 0;
48   }    
49
50   TString dType(dataType);
51
52   if ((dType == "AOD") && (clusterColName == "CaloClusters"))
53     clusterColName = "caloClusters";
54   if ((dType == "AOD") && (particleColName == "MCParticles"))
55     particleColName = "mcparticles";
56
57   if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
58   {
59     TString inputTracks = "tracks";
60
61     if (dType == "ESD")
62     {
63       inputTracks = "HybridTracks";
64       TString trackCuts(Form("Hybrid_%s", hybridperiod.Data()));
65       // Hybrid tracks maker for ESD
66       gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C");
67       AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks.Data(),trackCuts.Data());
68       hybTask->SelectCollisionCandidates(pSel);
69
70       // Track propagator to extend track to the TPC boundaries
71       gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
72       AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks.Data());
73       propTask->SelectCollisionCandidates(pSel);
74     }
75     // Produce PicoTracks 
76     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
77     AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks.Data(), period.Data());
78     pTrackTask->SelectCollisionCandidates(pSel);
79   }
80
81   // Produce particles used for hadronic correction
82   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
83   AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName.Data(),"EmcalTracks","EmcalClusters");
84   emcalParts->SelectCollisionCandidates(pSel);
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   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C"); 
93   AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
94   hCorr->SelectCollisionCandidates(pSel);
95   if (isEmcalTrain) {
96     if (doHistos)
97       RequestMemory(hCorr,250*1024);
98   }
99
100   // Produce MC particles
101   if (isMC && (particleColName != ""))
102   {
103     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
104     AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
105     mcPartTask->SelectCollisionCandidates(pSel);
106   }
107
108   // Return one task that represents the jet preparation on LEGO trains
109   return emcalParts;
110 }