]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
Change trigger selection logic to include overlaps between J1 and J2 (from Marta)
[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   const Bool_t   useTrackPropTask   = kTRUE
24 )
25 {
26   // Add task macros for all jet related helper tasks.
27
28   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
29   if (!mgr)
30   {
31     Error("AddTaskJetPreparation","No analysis manager found.");
32     return 0;
33   }
34
35   // Set trackcuts according to period. Every period used should be definied here
36   TString period(periodstr);
37   TString clusterColName(usedClusters);
38   TString particleColName(usedMCParticles);
39   TString dType(dataType);
40
41   if ((dType == "AOD") && (clusterColName == "CaloClusters"))
42     clusterColName = "caloClusters";
43   if ((dType == "ESD") && (clusterColName == "caloClusters"))
44     clusterColName = "CaloClusters";
45
46   if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
47   {
48     TString inputTracks = "tracks";
49
50     if (dType == "ESD")
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       if(useTrackPropTask) {
60         // Track propagator to extend track to the TPC boundaries
61         gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
62         AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks.Data(),440.);
63         propTask->SelectCollisionCandidates(pSel);
64       }
65       else
66         hybTask->SetDoPropagation(kTRUE);
67     }
68     if(dType == "AOD" && doAODTrackProp) {
69       // Track propagator to extend track to the EMCal surface
70       gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagatorAOD.C");
71       AliEmcalTrackPropagatorTaskAOD *propTask = AddTaskEmcalTrackPropagatorAOD(inputTracks.Data(),440.);
72       propTask->SelectCollisionCandidates(pSel);
73     }
74
75
76     // Produce PicoTracks 
77     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
78     AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker("PicoTracks", inputTracks.Data(), period.Data());
79     pTrackTask->SelectCollisionCandidates(pSel);
80     pTrackTask->SetTrackEfficiency(trackeff);
81   }
82
83   // Produce particles used for hadronic correction
84   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
85   AliEmcalParticleMaker *emcalParts = AddTaskEmcalParticleMaker(usedTracks,clusterColName.Data(),"EmcalTracks","EmcalClusters");
86   emcalParts->SelectCollisionCandidates(pSel);
87
88   // Trigger maker
89   if (makeTrigger) {
90     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
91     AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers");
92     emcalTriggers->SelectCollisionCandidates(pSel);
93   }
94
95   // Relate tracks and clusters
96   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C");
97   AliEmcalClusTrackMatcherTask *emcalClus =  AddTaskEmcalClusTrackMatcher("EmcalTracks","EmcalClusters",0.1);
98   emcalClus->SelectCollisionCandidates(pSel);
99   if (isEmcalTrain)
100     RequestMemory(emcalClus,100*1024);
101
102   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskHadCorr.C"); 
103   AliHadCorrTask *hCorr = AddTaskHadCorr("EmcalTracks","EmcalClusters",outClusName,hadcorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
104   hCorr->SelectCollisionCandidates(pSel);
105
106   if (isEmcalTrain) {
107     if (doHistos)
108       RequestMemory(hCorr,500*1024);
109   }
110
111   // Produce MC particles
112   if(particleColName != "")
113   {
114     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
115     AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
116     mcPartTask->SelectCollisionCandidates(pSel);
117   }
118
119   // Return one task that represents the jet preparation on LEGO trains
120   return emcalParts;
121 }