ROOT logo
// $Id$

AliAnalysisTaskSE* AddTaskJetPreparation(
  const char*    periodstr          = "LHC11h",
  const char*    pTracksName        = "PicoTracks",
  const char*    usedMCParticles    = "MCParticlesSelected",
  const char*    usedClusters       = "CaloClusters",
  const char*    outClusName        = "CaloClustersCorr",
  Double_t hadcorr                  = 2.0,
  Double_t Eexcl                    = 0.00,
  Double_t phiMatch                 = 0.03,
  Double_t etaMatch                 = 0.015,
  Double_t minPtEt                  = 0.15,
  UInt_t   pSel                     = AliVEvent::kAny,
  Bool_t   trackclus                = kTRUE,
  Bool_t   doHistos                 = kFALSE,
  Bool_t   makePicoTracks           = kTRUE,
  Bool_t   makeTrigger              = kTRUE,
  Bool_t   isEmcalTrain             = kFALSE,
  Double_t trackeff                 = 1.0,
  Bool_t   doAODTrackProp           = kTRUE,
  Bool_t   modifyMatchObjs          = kTRUE,
  Bool_t   useOldBitConfig          = kFALSE,
  Bool_t   doTriggerQA              = kFALSE
)
{
  // Add task macros for all jet related helper tasks.

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    Error("AddTaskJetPreparation","No analysis manager found.");
    return NULL;
  }

  AliVEventHandler *evhand = mgr->GetInputEventHandler();
  if (!evhand) {
    Error("AddTaskJetPreparation", "This task requires an input event handler");
    return NULL;
  }

  // Set trackcuts according to period. Every period used should be defined here
  TString period(periodstr);
  TString clusterColName(usedClusters);
  TString particleColName(usedMCParticles);
  TString picoTracksName(pTracksName);

  TString dType("ESD");
  if (!evhand->InheritsFrom("AliESDInputHandler")) 
    dType = "AOD";
  if ((dType == "AOD") && (clusterColName == "CaloClusters"))
    clusterColName = "caloClusters";
  if ((dType == "ESD") && (clusterColName == "caloClusters"))
    clusterColName = "CaloClusters";

  //----------------------- Trigger Maker -----------------------------------------------------
  if (makeTrigger) {
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
    /*
     * Parameters (with default values):
     *   triggersOutName      (const char *)       = "EmcalTriggers",
     *   triggerSetupOutName  (const char *)       = "EmcalTriggerSetup",
     *   cellsName            (const char *)       = 0,
     *   triggersName         (const char *)       = 0,
     *   taskName             (const char *)       = "AliEmcalTriggerMaker",
     *   jetLowA              (int)                = 0,
     *   jetLowB              (int)                = 0,
     *   jetLowC              (int)                = 0,
     *   jetHighA             (int)                = 0,
     *   jetHighB             (int)                = 0,
     *   jetHighC             (int)                = 0,
     *   doQA                 (bool)               = kFALSE
     */
    AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers", "EmcalTriggerSetup", 0, 0, "AliEmcalTriggerMaker", 0, 0, 0, 0, 0, 0, useOldBitConfig, doTriggerQA);
    emcalTriggers->SelectCollisionCandidates(pSel);
  }

  //----------------------- Track Matching tasks -----------------------------------------------------
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMatchingChain.C");
  AliEmcalClusTrackMatcherTask *emcalClus =  AddTaskMatchingChain(periodstr,pSel,
								  clusterColName,
								  trackeff,doAODTrackProp,
								  0.1,modifyMatchObjs,doHistos);
  
  //hard coded names of AliEmcalParticle strings to coincide with AddTaskClusTrackMatching
  TString inputTracks = "AODFilterTracks";
  if (dType == "ESD") inputTracks = "ESDFilterTracks";
  TString emctracks = Form("EmcalTracks_%s",inputTracks.Data());
  TString emcclusters = Form("EmcalClusters_%s",clusterColName.Data());
  Printf("1-- inputTracks: %s, emcclusters: %s, emctracks: %s",inputTracks.Data(),emcclusters.Data(),emctracks.Data());
  if(makePicoTracks) {
    //----------------------- Produce PicoTracks -----------------------------------------------------
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
    AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker(picoTracksName, inputTracks);
    //    pTrackTask->SetTrackEfficiency(trackeff); //now done in Esd/AodFilter
    pTrackTask->SelectCollisionCandidates(pSel);
  }

  //----------------------- Hadronic Correction -----------------------------------------------------
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskHadCorr.C"); 
  AliHadCorrTask *hCorr = AddTaskHadCorr(emctracks,emcclusters,outClusName,hadcorr,
					 minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
  hCorr->SelectCollisionCandidates(pSel);
  if (isEmcalTrain) {
    if (doHistos)
      RequestMemory(hCorr,500*1024);
  }

  // Produce MC particles
  if(particleColName != "") {
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
    AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName, kFALSE, kFALSE);
    mcPartTask->SelectCollisionCandidates(pSel);
  }

  // Return one task that represents the jet preparation on LEGO trains
  return hCorr;
}
 AddTaskJetPreparation.C:1
 AddTaskJetPreparation.C:2
 AddTaskJetPreparation.C:3
 AddTaskJetPreparation.C:4
 AddTaskJetPreparation.C:5
 AddTaskJetPreparation.C:6
 AddTaskJetPreparation.C:7
 AddTaskJetPreparation.C:8
 AddTaskJetPreparation.C:9
 AddTaskJetPreparation.C:10
 AddTaskJetPreparation.C:11
 AddTaskJetPreparation.C:12
 AddTaskJetPreparation.C:13
 AddTaskJetPreparation.C:14
 AddTaskJetPreparation.C:15
 AddTaskJetPreparation.C:16
 AddTaskJetPreparation.C:17
 AddTaskJetPreparation.C:18
 AddTaskJetPreparation.C:19
 AddTaskJetPreparation.C:20
 AddTaskJetPreparation.C:21
 AddTaskJetPreparation.C:22
 AddTaskJetPreparation.C:23
 AddTaskJetPreparation.C:24
 AddTaskJetPreparation.C:25
 AddTaskJetPreparation.C:26
 AddTaskJetPreparation.C:27
 AddTaskJetPreparation.C:28
 AddTaskJetPreparation.C:29
 AddTaskJetPreparation.C:30
 AddTaskJetPreparation.C:31
 AddTaskJetPreparation.C:32
 AddTaskJetPreparation.C:33
 AddTaskJetPreparation.C:34
 AddTaskJetPreparation.C:35
 AddTaskJetPreparation.C:36
 AddTaskJetPreparation.C:37
 AddTaskJetPreparation.C:38
 AddTaskJetPreparation.C:39
 AddTaskJetPreparation.C:40
 AddTaskJetPreparation.C:41
 AddTaskJetPreparation.C:42
 AddTaskJetPreparation.C:43
 AddTaskJetPreparation.C:44
 AddTaskJetPreparation.C:45
 AddTaskJetPreparation.C:46
 AddTaskJetPreparation.C:47
 AddTaskJetPreparation.C:48
 AddTaskJetPreparation.C:49
 AddTaskJetPreparation.C:50
 AddTaskJetPreparation.C:51
 AddTaskJetPreparation.C:52
 AddTaskJetPreparation.C:53
 AddTaskJetPreparation.C:54
 AddTaskJetPreparation.C:55
 AddTaskJetPreparation.C:56
 AddTaskJetPreparation.C:57
 AddTaskJetPreparation.C:58
 AddTaskJetPreparation.C:59
 AddTaskJetPreparation.C:60
 AddTaskJetPreparation.C:61
 AddTaskJetPreparation.C:62
 AddTaskJetPreparation.C:63
 AddTaskJetPreparation.C:64
 AddTaskJetPreparation.C:65
 AddTaskJetPreparation.C:66
 AddTaskJetPreparation.C:67
 AddTaskJetPreparation.C:68
 AddTaskJetPreparation.C:69
 AddTaskJetPreparation.C:70
 AddTaskJetPreparation.C:71
 AddTaskJetPreparation.C:72
 AddTaskJetPreparation.C:73
 AddTaskJetPreparation.C:74
 AddTaskJetPreparation.C:75
 AddTaskJetPreparation.C:76
 AddTaskJetPreparation.C:77
 AddTaskJetPreparation.C:78
 AddTaskJetPreparation.C:79
 AddTaskJetPreparation.C:80
 AddTaskJetPreparation.C:81
 AddTaskJetPreparation.C:82
 AddTaskJetPreparation.C:83
 AddTaskJetPreparation.C:84
 AddTaskJetPreparation.C:85
 AddTaskJetPreparation.C:86
 AddTaskJetPreparation.C:87
 AddTaskJetPreparation.C:88
 AddTaskJetPreparation.C:89
 AddTaskJetPreparation.C:90
 AddTaskJetPreparation.C:91
 AddTaskJetPreparation.C:92
 AddTaskJetPreparation.C:93
 AddTaskJetPreparation.C:94
 AddTaskJetPreparation.C:95
 AddTaskJetPreparation.C:96
 AddTaskJetPreparation.C:97
 AddTaskJetPreparation.C:98
 AddTaskJetPreparation.C:99
 AddTaskJetPreparation.C:100
 AddTaskJetPreparation.C:101
 AddTaskJetPreparation.C:102
 AddTaskJetPreparation.C:103
 AddTaskJetPreparation.C:104
 AddTaskJetPreparation.C:105
 AddTaskJetPreparation.C:106
 AddTaskJetPreparation.C:107
 AddTaskJetPreparation.C:108
 AddTaskJetPreparation.C:109
 AddTaskJetPreparation.C:110
 AddTaskJetPreparation.C:111
 AddTaskJetPreparation.C:112
 AddTaskJetPreparation.C:113
 AddTaskJetPreparation.C:114
 AddTaskJetPreparation.C:115
 AddTaskJetPreparation.C:116
 AddTaskJetPreparation.C:117
 AddTaskJetPreparation.C:118
 AddTaskJetPreparation.C:119