ROOT logo
// $Id$

AliEmcalEsdTrackFilterTask* AddTaskEmcalEsdTrackFilter(
  const char *name              = "TrackFilter",
  const char *trackCuts         = "Hybrid_LHC11h",
  const char *taskName          = "AliEmcalEsdTrackFilterTask"
)
{ 
  enum CutsType {
    kHybrid  = 0,
    kTpcOnly = 1
  };

  enum DataSet {
    kLHC10h  = 0,
    kLHC11a  = 1,
    kLHC11c  = 3,
    kLHC11d  = 3,
    kLHC11h  = 3
  };

  CutsType cutsType = kHybrid;
  DataSet  dataSet  = kLHC11h;

  TString cutsLabel("hybrid tracks");
  TString dataSetLabel("LHC11h");

  TString strTrackCuts(trackCuts);
  strTrackCuts.ToLower();

  if (strTrackCuts.Contains("hybrid")) {
    cutsType = kHybrid;
  } else if (strTrackCuts.Contains("tpconly")) {
    cutsType = kTpcOnly;
    cutsLabel = "TPC only constrained tracks";
  } else {
    ::Warning("AddTaskEmcalEsdTpcTrack", "Cuts type not recognized, will assume Hybrid");
  }

  if (strTrackCuts.Contains("lhc10h")) {
    dataSet = kLHC10h;
  } else if (strTrackCuts.Contains("lhc11a") || strTrackCuts.Contains("lhc12a15a")) {
    dataSet = kLHC11a;
    dataSetLabel = "LHC11a";
  } else if (strTrackCuts.Contains("lhc10e")   ||  strTrackCuts.Contains("lhc10d")   ||
	     strTrackCuts.Contains("lhc10e20") ||  strTrackCuts.Contains("lhc10f6a") ||
	     strTrackCuts.Contains("lhc11a1a") ||  strTrackCuts.Contains("lhc11a1b") ||
	     strTrackCuts.Contains("lhc11a1c") ||  strTrackCuts.Contains("lhc11a1d") ||
	     strTrackCuts.Contains("lhc11a1e") ||  strTrackCuts.Contains("lhc11a1f") ||
	     strTrackCuts.Contains("lhc11a1g") ||  strTrackCuts.Contains("lhc11a1h") ||
	     strTrackCuts.Contains("lhc11a1i") ||  strTrackCuts.Contains("lhc11a1j")) {
    dataSet = kLHC11a;
    dataSetLabel = "LHC10e";
  } else if (strTrackCuts.Contains("lhc11c")) {
    dataSet = kLHC11c;
    dataSetLabel = "LHC11c";
  } else if (strTrackCuts.Contains("lhc11d")) {
    dataSet = kLHC11d;
    dataSetLabel = "LHC11d";
  } else if (strTrackCuts.Contains("lhc11h") || strTrackCuts.Contains("lhc12a15e")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC11h";
  } else if (strTrackCuts.Contains("lhc12g")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC12g";
  } else if (strTrackCuts.Contains("lhc12")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC12";
  } else if (strTrackCuts.Contains("lhc13b")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13b";
  } else if (strTrackCuts.Contains("lhc13c")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13c";
  } else if (strTrackCuts.Contains("lhc13d")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13d";
  } else if (strTrackCuts.Contains("lhc13e")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13e";
  } else if (strTrackCuts.Contains("lhc13f")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13f";
  } else if (strTrackCuts.Contains("lhc13g")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13g";
  } else if (strTrackCuts.Contains("lhc12a15f")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC12a15f";
  } else if (strTrackCuts.Contains("lhc13b4")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC13b4";
  } else if (strTrackCuts.Contains("lhc12a15g")) {
    dataSet = kLHC11d;
    dataSetLabel = "LHC12a15g";
  } else if (strTrackCuts.Contains("lhc12f2a")) {
    dataSet = kLHC11d;
    dataSetLabel = "LHC12f2a";
  } else if (strTrackCuts.Contains("lhc12a17")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC12a17";
  } else if (strTrackCuts.Contains("lhc14a1")) {
    dataSet = kLHC11h;
    dataSetLabel = "LHC14a1";
  } else {
    ::Warning("AddTaskEmcalEsdTpcTrack", "Dataset not recognized, will assume LHC11h");
  }

  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskEmcalEsdTpcTrack", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  AliVEventHandler *evhand = mgr->GetInputEventHandler();
  if (!evhand) {
    ::Error("AddTaskEmcalEsdTpcTrack", "This task requires an input event handler");
    return NULL;
  }
  
  if (!evhand->InheritsFrom("AliESDInputHandler")) {
    ::Info("AddTaskEmcalEsdTpcTrack", "This task is only needed for ESD analysis. No task added.");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
  AliEmcalEsdTrackFilterTask *eTask = new AliEmcalEsdTrackFilterTask(taskName); // default is no cut
  if ((dataSet == kLHC11c && cutsType == kHybrid) ||
      (dataSet == kLHC11d && cutsType == kHybrid) ||
      (dataSet == kLHC11h && cutsType == kHybrid)) {
    /* hybrid track cuts*/
    AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001008);       //1000 adds SPD any requirement
    eTask->SetTrackCuts(cutsp);
    AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041008);       //1004 removes ITSrefit requirement from standard set   
    hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
    eTask->SetHybridTrackCuts(hybsp);
    eTask->SetIncludeNoITS(kFALSE);
  } else if ((dataSet == kLHC10h && cutsType == kHybrid) ||
	     (dataSet == kLHC11a && cutsType == kHybrid)) {
    /* hybrid track cuts*/
    AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001006);       //1000 adds SPD any requirement
    eTask->SetTrackCuts(cutsp);
    AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041006);       //1004 removes ITSrefit requirement from standard set    
    hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
    eTask->SetHybridTrackCuts(hybsp);
    eTask->SetIncludeNoITS(kTRUE);
  }
  else if (dataSet == kLHC11h && cutsType == kTpcOnly) {
    /* TPC-only constrained track cuts*/
    AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(2001);       //TPC-only loose track cuts
    eTask->SetTrackCuts(cutsp);
    eTask->SetHybridTrackCuts(0);
  }
  else {
    ::Error("AddTaskEmcalEsdTrackFilter","Track cuts type / period not recognized! Undefined beahviour will follow!");
  }
  eTask->SetTracksName(name);

  cout << " *** Track selector task configured to select " << cutsLabel  << " in dataset "<< dataSetLabel << " *** " << endl;

  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------
  mgr->AddTask(eTask);
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
  mgr->ConnectInput(eTask, 0, cinput1);
  
  return eTask;
}
 AddTaskEmcalEsdTrackFilter.C:1
 AddTaskEmcalEsdTrackFilter.C:2
 AddTaskEmcalEsdTrackFilter.C:3
 AddTaskEmcalEsdTrackFilter.C:4
 AddTaskEmcalEsdTrackFilter.C:5
 AddTaskEmcalEsdTrackFilter.C:6
 AddTaskEmcalEsdTrackFilter.C:7
 AddTaskEmcalEsdTrackFilter.C:8
 AddTaskEmcalEsdTrackFilter.C:9
 AddTaskEmcalEsdTrackFilter.C:10
 AddTaskEmcalEsdTrackFilter.C:11
 AddTaskEmcalEsdTrackFilter.C:12
 AddTaskEmcalEsdTrackFilter.C:13
 AddTaskEmcalEsdTrackFilter.C:14
 AddTaskEmcalEsdTrackFilter.C:15
 AddTaskEmcalEsdTrackFilter.C:16
 AddTaskEmcalEsdTrackFilter.C:17
 AddTaskEmcalEsdTrackFilter.C:18
 AddTaskEmcalEsdTrackFilter.C:19
 AddTaskEmcalEsdTrackFilter.C:20
 AddTaskEmcalEsdTrackFilter.C:21
 AddTaskEmcalEsdTrackFilter.C:22
 AddTaskEmcalEsdTrackFilter.C:23
 AddTaskEmcalEsdTrackFilter.C:24
 AddTaskEmcalEsdTrackFilter.C:25
 AddTaskEmcalEsdTrackFilter.C:26
 AddTaskEmcalEsdTrackFilter.C:27
 AddTaskEmcalEsdTrackFilter.C:28
 AddTaskEmcalEsdTrackFilter.C:29
 AddTaskEmcalEsdTrackFilter.C:30
 AddTaskEmcalEsdTrackFilter.C:31
 AddTaskEmcalEsdTrackFilter.C:32
 AddTaskEmcalEsdTrackFilter.C:33
 AddTaskEmcalEsdTrackFilter.C:34
 AddTaskEmcalEsdTrackFilter.C:35
 AddTaskEmcalEsdTrackFilter.C:36
 AddTaskEmcalEsdTrackFilter.C:37
 AddTaskEmcalEsdTrackFilter.C:38
 AddTaskEmcalEsdTrackFilter.C:39
 AddTaskEmcalEsdTrackFilter.C:40
 AddTaskEmcalEsdTrackFilter.C:41
 AddTaskEmcalEsdTrackFilter.C:42
 AddTaskEmcalEsdTrackFilter.C:43
 AddTaskEmcalEsdTrackFilter.C:44
 AddTaskEmcalEsdTrackFilter.C:45
 AddTaskEmcalEsdTrackFilter.C:46
 AddTaskEmcalEsdTrackFilter.C:47
 AddTaskEmcalEsdTrackFilter.C:48
 AddTaskEmcalEsdTrackFilter.C:49
 AddTaskEmcalEsdTrackFilter.C:50
 AddTaskEmcalEsdTrackFilter.C:51
 AddTaskEmcalEsdTrackFilter.C:52
 AddTaskEmcalEsdTrackFilter.C:53
 AddTaskEmcalEsdTrackFilter.C:54
 AddTaskEmcalEsdTrackFilter.C:55
 AddTaskEmcalEsdTrackFilter.C:56
 AddTaskEmcalEsdTrackFilter.C:57
 AddTaskEmcalEsdTrackFilter.C:58
 AddTaskEmcalEsdTrackFilter.C:59
 AddTaskEmcalEsdTrackFilter.C:60
 AddTaskEmcalEsdTrackFilter.C:61
 AddTaskEmcalEsdTrackFilter.C:62
 AddTaskEmcalEsdTrackFilter.C:63
 AddTaskEmcalEsdTrackFilter.C:64
 AddTaskEmcalEsdTrackFilter.C:65
 AddTaskEmcalEsdTrackFilter.C:66
 AddTaskEmcalEsdTrackFilter.C:67
 AddTaskEmcalEsdTrackFilter.C:68
 AddTaskEmcalEsdTrackFilter.C:69
 AddTaskEmcalEsdTrackFilter.C:70
 AddTaskEmcalEsdTrackFilter.C:71
 AddTaskEmcalEsdTrackFilter.C:72
 AddTaskEmcalEsdTrackFilter.C:73
 AddTaskEmcalEsdTrackFilter.C:74
 AddTaskEmcalEsdTrackFilter.C:75
 AddTaskEmcalEsdTrackFilter.C:76
 AddTaskEmcalEsdTrackFilter.C:77
 AddTaskEmcalEsdTrackFilter.C:78
 AddTaskEmcalEsdTrackFilter.C:79
 AddTaskEmcalEsdTrackFilter.C:80
 AddTaskEmcalEsdTrackFilter.C:81
 AddTaskEmcalEsdTrackFilter.C:82
 AddTaskEmcalEsdTrackFilter.C:83
 AddTaskEmcalEsdTrackFilter.C:84
 AddTaskEmcalEsdTrackFilter.C:85
 AddTaskEmcalEsdTrackFilter.C:86
 AddTaskEmcalEsdTrackFilter.C:87
 AddTaskEmcalEsdTrackFilter.C:88
 AddTaskEmcalEsdTrackFilter.C:89
 AddTaskEmcalEsdTrackFilter.C:90
 AddTaskEmcalEsdTrackFilter.C:91
 AddTaskEmcalEsdTrackFilter.C:92
 AddTaskEmcalEsdTrackFilter.C:93
 AddTaskEmcalEsdTrackFilter.C:94
 AddTaskEmcalEsdTrackFilter.C:95
 AddTaskEmcalEsdTrackFilter.C:96
 AddTaskEmcalEsdTrackFilter.C:97
 AddTaskEmcalEsdTrackFilter.C:98
 AddTaskEmcalEsdTrackFilter.C:99
 AddTaskEmcalEsdTrackFilter.C:100
 AddTaskEmcalEsdTrackFilter.C:101
 AddTaskEmcalEsdTrackFilter.C:102
 AddTaskEmcalEsdTrackFilter.C:103
 AddTaskEmcalEsdTrackFilter.C:104
 AddTaskEmcalEsdTrackFilter.C:105
 AddTaskEmcalEsdTrackFilter.C:106
 AddTaskEmcalEsdTrackFilter.C:107
 AddTaskEmcalEsdTrackFilter.C:108
 AddTaskEmcalEsdTrackFilter.C:109
 AddTaskEmcalEsdTrackFilter.C:110
 AddTaskEmcalEsdTrackFilter.C:111
 AddTaskEmcalEsdTrackFilter.C:112
 AddTaskEmcalEsdTrackFilter.C:113
 AddTaskEmcalEsdTrackFilter.C:114
 AddTaskEmcalEsdTrackFilter.C:115
 AddTaskEmcalEsdTrackFilter.C:116
 AddTaskEmcalEsdTrackFilter.C:117
 AddTaskEmcalEsdTrackFilter.C:118
 AddTaskEmcalEsdTrackFilter.C:119
 AddTaskEmcalEsdTrackFilter.C:120
 AddTaskEmcalEsdTrackFilter.C:121
 AddTaskEmcalEsdTrackFilter.C:122
 AddTaskEmcalEsdTrackFilter.C:123
 AddTaskEmcalEsdTrackFilter.C:124
 AddTaskEmcalEsdTrackFilter.C:125
 AddTaskEmcalEsdTrackFilter.C:126
 AddTaskEmcalEsdTrackFilter.C:127
 AddTaskEmcalEsdTrackFilter.C:128
 AddTaskEmcalEsdTrackFilter.C:129
 AddTaskEmcalEsdTrackFilter.C:130
 AddTaskEmcalEsdTrackFilter.C:131
 AddTaskEmcalEsdTrackFilter.C:132
 AddTaskEmcalEsdTrackFilter.C:133
 AddTaskEmcalEsdTrackFilter.C:134
 AddTaskEmcalEsdTrackFilter.C:135
 AddTaskEmcalEsdTrackFilter.C:136
 AddTaskEmcalEsdTrackFilter.C:137
 AddTaskEmcalEsdTrackFilter.C:138
 AddTaskEmcalEsdTrackFilter.C:139
 AddTaskEmcalEsdTrackFilter.C:140
 AddTaskEmcalEsdTrackFilter.C:141
 AddTaskEmcalEsdTrackFilter.C:142
 AddTaskEmcalEsdTrackFilter.C:143
 AddTaskEmcalEsdTrackFilter.C:144
 AddTaskEmcalEsdTrackFilter.C:145
 AddTaskEmcalEsdTrackFilter.C:146
 AddTaskEmcalEsdTrackFilter.C:147
 AddTaskEmcalEsdTrackFilter.C:148
 AddTaskEmcalEsdTrackFilter.C:149
 AddTaskEmcalEsdTrackFilter.C:150
 AddTaskEmcalEsdTrackFilter.C:151
 AddTaskEmcalEsdTrackFilter.C:152
 AddTaskEmcalEsdTrackFilter.C:153
 AddTaskEmcalEsdTrackFilter.C:154
 AddTaskEmcalEsdTrackFilter.C:155
 AddTaskEmcalEsdTrackFilter.C:156
 AddTaskEmcalEsdTrackFilter.C:157
 AddTaskEmcalEsdTrackFilter.C:158
 AddTaskEmcalEsdTrackFilter.C:159
 AddTaskEmcalEsdTrackFilter.C:160
 AddTaskEmcalEsdTrackFilter.C:161
 AddTaskEmcalEsdTrackFilter.C:162
 AddTaskEmcalEsdTrackFilter.C:163
 AddTaskEmcalEsdTrackFilter.C:164
 AddTaskEmcalEsdTrackFilter.C:165
 AddTaskEmcalEsdTrackFilter.C:166
 AddTaskEmcalEsdTrackFilter.C:167
 AddTaskEmcalEsdTrackFilter.C:168
 AddTaskEmcalEsdTrackFilter.C:169
 AddTaskEmcalEsdTrackFilter.C:170
 AddTaskEmcalEsdTrackFilter.C:171
 AddTaskEmcalEsdTrackFilter.C:172
 AddTaskEmcalEsdTrackFilter.C:173
 AddTaskEmcalEsdTrackFilter.C:174
 AddTaskEmcalEsdTrackFilter.C:175
 AddTaskEmcalEsdTrackFilter.C:176
 AddTaskEmcalEsdTrackFilter.C:177
 AddTaskEmcalEsdTrackFilter.C:178
 AddTaskEmcalEsdTrackFilter.C:179
 AddTaskEmcalEsdTrackFilter.C:180