ROOT logo
AliEmcalAodTrackFilterTask* AddTaskEmcalAodTrackFilter(
  const char *name         = "FilterTracks",
  const char *inname       = "tracks",
  const char *runperiod    = "",
  const char *taskName     = "AliEmcalAodTrackFilterTask"
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskAodTrackFilter", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  if (!mgr->GetInputEventHandler())
  {
    ::Error("AddTaskAodTrackFilter", "This task requires an input event handler");
    return NULL;
  }

  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  if (inputDataType != "AOD") {
    ::Info("AddTaskEmcalAodTpcTrack", "This task is only needed for AOD analysis. No task added.");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  AliEmcalAodTrackFilterTask *aodTask = new AliEmcalAodTrackFilterTask(taskName);
  aodTask->SetTracksOutName(name);
  aodTask->SetTracksInName(inname);
  aodTask->SetMC(kFALSE);

  Bool_t includeNoITS  = kFALSE;
  Bool_t doProp        = kFALSE; //force propagation of all tracks to EMCal
  Bool_t doAttemptProp = kTRUE;  //only propagate the tracks which were not propagated during AOD filtering
  Bool_t isMC          = kFALSE;

  TString runPeriod(runperiod);
  runPeriod.ToLower();
  if (runPeriod == "lhc10d" || runPeriod == "lhc10e" || runPeriod == "lhc10h" || 
      runPeriod == "lhc11h" || runPeriod == "lhc12a" || runPeriod == "lhc12b" ||
      runPeriod == "lhc12c" || runPeriod == "lhc12d" || runPeriod == "lhc12e" ||
      runPeriod == "lhc12f" || runPeriod == "lhc12g" || runPeriod == "lhc12h" ||
      runPeriod == "lhc12i" || runPeriod == "lhc13b" || runPeriod == "lhc13c" ||
      runPeriod == "lhc13d" || runPeriod == "lhc13e" || runPeriod == "lhc13f" ||
      runPeriod == "lhc13g"
      ) {
    aodTask->SetAODfilterBits(256,512); // hybrid tracks
    if (runPeriod == "lhc10d" || runPeriod == "lhc10e" || runPeriod == "lhc10h")
      includeNoITS = kTRUE;
  } else if (runPeriod == "lhc12a15e"   || runPeriod.Contains("lhc12a17") || runPeriod == "lhc13b4" ||
	     runPeriod == "lhc13b4_fix" || runPeriod == "lhc13b4_plus"    || runPeriod.Contains("lhc14a1") || runPeriod.Contains("lhc13b2_efix")
	     ) {
    aodTask->SetAODfilterBits(256,512); // hybrid tracks
    isMC = kTRUE;
  } else if (runPeriod == "lhc11a" || runPeriod == "lhc10hold") {
    aodTask->SetAODfilterBits(256,16); // hybrid tracks
    includeNoITS = kTRUE;
  } else if(runPeriod == "lhc11d") {
    aodTask->SetAODfilterBits(256,16); // hybrid tracks (MV: not 100% sure)
    includeNoITS = kFALSE;
  } else if (runPeriod.Contains("lhc12a15a") || runPeriod == "lhc12a15f" || runPeriod == "lhc12a15g") {
    aodTask->SetAODfilterBits(256,16); // hybrid tracks
    isMC = kTRUE;
    includeNoITS = kTRUE;
  } else if (runPeriod.Contains(":")) {
    TObjArray *arr = runPeriod.Tokenize(":");
    TString arg1(arr->At(0)->GetName());
    TString arg2("-1");
    if (arr->GetEntries()>1)
      arg2 = arr->At(1)->GetName();
    if (arr->GetEntries()>2) {
      TString arg3 = arr->At(2)->GetName();
      if (arg3.Contains("includeNoITS=kTRUE"))
	includeNoITS=kTRUE;
      if (arg3.Contains("doProp=kTRUE"))
	doProp=kTRUE;
      if (arg3.Contains("doAttemptProp=kFALSE"))
	doAttemptProp=kFALSE;
      if (arg3.Contains("isMC=kTRUE"))
	isMC = kTRUE;
    }
    aodTask->SetAODfilterBits(arg1.Atoi(),arg2.Atoi());
    delete arr;
  } else {
    if (!runPeriod.IsNull())
      ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
  }
  aodTask->SetIncludeNoITS(includeNoITS);
  aodTask->SetDoPropagation(doProp);
  aodTask->SetAttemptProp(doAttemptProp);
  aodTask->SetMC(isMC);

  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------
  mgr->AddTask(aodTask);
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
  mgr->ConnectInput(aodTask, 0,  cinput1 );
  
  return aodTask;
}
 AddTaskEmcalAodTrackFilter.C:1
 AddTaskEmcalAodTrackFilter.C:2
 AddTaskEmcalAodTrackFilter.C:3
 AddTaskEmcalAodTrackFilter.C:4
 AddTaskEmcalAodTrackFilter.C:5
 AddTaskEmcalAodTrackFilter.C:6
 AddTaskEmcalAodTrackFilter.C:7
 AddTaskEmcalAodTrackFilter.C:8
 AddTaskEmcalAodTrackFilter.C:9
 AddTaskEmcalAodTrackFilter.C:10
 AddTaskEmcalAodTrackFilter.C:11
 AddTaskEmcalAodTrackFilter.C:12
 AddTaskEmcalAodTrackFilter.C:13
 AddTaskEmcalAodTrackFilter.C:14
 AddTaskEmcalAodTrackFilter.C:15
 AddTaskEmcalAodTrackFilter.C:16
 AddTaskEmcalAodTrackFilter.C:17
 AddTaskEmcalAodTrackFilter.C:18
 AddTaskEmcalAodTrackFilter.C:19
 AddTaskEmcalAodTrackFilter.C:20
 AddTaskEmcalAodTrackFilter.C:21
 AddTaskEmcalAodTrackFilter.C:22
 AddTaskEmcalAodTrackFilter.C:23
 AddTaskEmcalAodTrackFilter.C:24
 AddTaskEmcalAodTrackFilter.C:25
 AddTaskEmcalAodTrackFilter.C:26
 AddTaskEmcalAodTrackFilter.C:27
 AddTaskEmcalAodTrackFilter.C:28
 AddTaskEmcalAodTrackFilter.C:29
 AddTaskEmcalAodTrackFilter.C:30
 AddTaskEmcalAodTrackFilter.C:31
 AddTaskEmcalAodTrackFilter.C:32
 AddTaskEmcalAodTrackFilter.C:33
 AddTaskEmcalAodTrackFilter.C:34
 AddTaskEmcalAodTrackFilter.C:35
 AddTaskEmcalAodTrackFilter.C:36
 AddTaskEmcalAodTrackFilter.C:37
 AddTaskEmcalAodTrackFilter.C:38
 AddTaskEmcalAodTrackFilter.C:39
 AddTaskEmcalAodTrackFilter.C:40
 AddTaskEmcalAodTrackFilter.C:41
 AddTaskEmcalAodTrackFilter.C:42
 AddTaskEmcalAodTrackFilter.C:43
 AddTaskEmcalAodTrackFilter.C:44
 AddTaskEmcalAodTrackFilter.C:45
 AddTaskEmcalAodTrackFilter.C:46
 AddTaskEmcalAodTrackFilter.C:47
 AddTaskEmcalAodTrackFilter.C:48
 AddTaskEmcalAodTrackFilter.C:49
 AddTaskEmcalAodTrackFilter.C:50
 AddTaskEmcalAodTrackFilter.C:51
 AddTaskEmcalAodTrackFilter.C:52
 AddTaskEmcalAodTrackFilter.C:53
 AddTaskEmcalAodTrackFilter.C:54
 AddTaskEmcalAodTrackFilter.C:55
 AddTaskEmcalAodTrackFilter.C:56
 AddTaskEmcalAodTrackFilter.C:57
 AddTaskEmcalAodTrackFilter.C:58
 AddTaskEmcalAodTrackFilter.C:59
 AddTaskEmcalAodTrackFilter.C:60
 AddTaskEmcalAodTrackFilter.C:61
 AddTaskEmcalAodTrackFilter.C:62
 AddTaskEmcalAodTrackFilter.C:63
 AddTaskEmcalAodTrackFilter.C:64
 AddTaskEmcalAodTrackFilter.C:65
 AddTaskEmcalAodTrackFilter.C:66
 AddTaskEmcalAodTrackFilter.C:67
 AddTaskEmcalAodTrackFilter.C:68
 AddTaskEmcalAodTrackFilter.C:69
 AddTaskEmcalAodTrackFilter.C:70
 AddTaskEmcalAodTrackFilter.C:71
 AddTaskEmcalAodTrackFilter.C:72
 AddTaskEmcalAodTrackFilter.C:73
 AddTaskEmcalAodTrackFilter.C:74
 AddTaskEmcalAodTrackFilter.C:75
 AddTaskEmcalAodTrackFilter.C:76
 AddTaskEmcalAodTrackFilter.C:77
 AddTaskEmcalAodTrackFilter.C:78
 AddTaskEmcalAodTrackFilter.C:79
 AddTaskEmcalAodTrackFilter.C:80
 AddTaskEmcalAodTrackFilter.C:81
 AddTaskEmcalAodTrackFilter.C:82
 AddTaskEmcalAodTrackFilter.C:83
 AddTaskEmcalAodTrackFilter.C:84
 AddTaskEmcalAodTrackFilter.C:85
 AddTaskEmcalAodTrackFilter.C:86
 AddTaskEmcalAodTrackFilter.C:87
 AddTaskEmcalAodTrackFilter.C:88
 AddTaskEmcalAodTrackFilter.C:89
 AddTaskEmcalAodTrackFilter.C:90
 AddTaskEmcalAodTrackFilter.C:91
 AddTaskEmcalAodTrackFilter.C:92
 AddTaskEmcalAodTrackFilter.C:93
 AddTaskEmcalAodTrackFilter.C:94
 AddTaskEmcalAodTrackFilter.C:95
 AddTaskEmcalAodTrackFilter.C:96
 AddTaskEmcalAodTrackFilter.C:97
 AddTaskEmcalAodTrackFilter.C:98
 AddTaskEmcalAodTrackFilter.C:99
 AddTaskEmcalAodTrackFilter.C:100
 AddTaskEmcalAodTrackFilter.C:101
 AddTaskEmcalAodTrackFilter.C:102
 AddTaskEmcalAodTrackFilter.C:103
 AddTaskEmcalAodTrackFilter.C:104
 AddTaskEmcalAodTrackFilter.C:105
 AddTaskEmcalAodTrackFilter.C:106
 AddTaskEmcalAodTrackFilter.C:107
 AddTaskEmcalAodTrackFilter.C:108
 AddTaskEmcalAodTrackFilter.C:109
 AddTaskEmcalAodTrackFilter.C:110
 AddTaskEmcalAodTrackFilter.C:111
 AddTaskEmcalAodTrackFilter.C:112