ROOT logo
// $Id$

AliAnalysisTaskDeltaPt* AddTaskDeltaPt(
  const char *ntracks            = "Tracks",
  const char *nclusters          = "CaloClusters",
  const char *njets              = "Jets",
  const char *nembtracks         = "TracksEmbedded",
  const char *nembclusters       = "CaloClustersEmbedded",
  const char *nembjets           = "EmbJets",
  const char *nrandtracks        = "TracksRandomized",
  const char *nrandclusters      = "CaloClustersRandomized",
  const char *nrho               = "Rho",
  Double_t    jetradius          = 0.2,
  Double_t    jetareacut         = 0.557,
  Double_t    trackptcut         = 0.15,
  Double_t    clusptcut          = 0.30,
  const char *type               = "TPC",
  const char *taskname           = "AliAnalysisTaskDeltaPt"
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskDeltaPt", "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("AddTaskDeltaPt", "This task requires an input event handler");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------
  TString name;
  if (strcmp(ntracks, "") == 0 && strcmp(nclusters, "") == 0) 
    name = Form("%s_%s_R0%d_%s",taskname,nrho,(Int_t)floor(jetradius*100+0.5),type);
  else if (strcmp(ntracks, "") == 0) 
    name = Form("%s_%s_%s_R0%d_%s",taskname,nclusters,nrho,(Int_t)floor(jetradius*100+0.5),type);
  else if (strcmp(nclusters, "") == 0) 
    name = Form("%s_%s_%s_R0%d_%s",taskname,ntracks,nrho,(Int_t)floor(jetradius*100+0.5),type);
  else
    name = Form("%s_%s_%s_%s_R0%d_%s",taskname,ntracks,nclusters,nrho,(Int_t)floor(jetradius*100+0.5),type);

  AliAnalysisTaskDeltaPt* jetTask = new AliAnalysisTaskDeltaPt(name);
  jetTask->SetConeRadius(jetradius);
  jetTask->SetRhoName(nrho,-1);
  if (strcmp(type,"TPC")==0) 
    jetTask->SetConeEtaPhiTPC();
  else if (strcmp(type,"EMCAL")==0) 
    jetTask->SetConeEtaPhiEMCAL();

  AliParticleContainer *partCont = jetTask->AddParticleContainer(ntracks);
  if (partCont) {
    partCont->SetName("Tracks");
    partCont->SetParticlePtCut(trackptcut);
  }

  AliClusterContainer *clusCont = jetTask->AddClusterContainer(nclusters);
  if (clusCont) {
    clusCont->SetName("CaloClusters");
    clusCont->SetClusPtCut(clusptcut);
  }

  AliJetContainer *jetCont = jetTask->AddJetContainer(njets,type,jetradius);
  if (jetCont) {
    jetCont->SetName("Jets");
    jetCont->SetPercAreaCut(jetareacut);
    jetCont->SetRhoName(nrho);
    jetCont->ConnectParticleContainer(partCont);
    jetCont->ConnectClusterContainer(clusCont);
  }

  AliParticleContainer *embPartCont = jetTask->AddParticleContainer(nembtracks);
  if (embPartCont) {
    embPartCont->SetName("EmbTracks");
    embPartCont->SetParticlePtCut(trackptcut);
  }

  AliClusterContainer *embClusCont = jetTask->AddClusterContainer(nembclusters);
  if (embClusCont) {
    embClusCont->SetName("EmbClusters");
    embClusCont->SetClusPtCut(clusptcut);
  }

  AliJetContainer *embJetCont = jetTask->AddJetContainer(nembjets,type,jetradius);
  if (embJetCont) {
    embJetCont->SetName("EmbJets");
    embJetCont->SetPercAreaCut(jetareacut);
    embJetCont->SetRhoName(nrho);
    embJetCont->ConnectParticleContainer(embPartCont);
    embJetCont->ConnectClusterContainer(embClusCont);
  }

  AliParticleContainer *randPartCont = jetTask->AddParticleContainer(nrandtracks);
  if (randPartCont) {
    randPartCont->SetName("RandTracks");
    randPartCont->SetParticlePtCut(trackptcut);
  }

  AliClusterContainer *randClusCont = jetTask->AddClusterContainer(nrandclusters);    
  if (randClusCont) {
    randClusCont->SetName("RandClusters");
    randClusCont->SetClusPtCut(clusptcut);
  }
  
  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------
  
  mgr->AddTask(jetTask);
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  TString contname(name);
  contname += "_histos";
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
							    TList::Class(),AliAnalysisManager::kOutputContainer,
							    Form("%s", AliAnalysisManager::GetCommonFileName()));
  mgr->ConnectInput(jetTask, 0, cinput1);
  mgr->ConnectOutput(jetTask, 1, coutput1);
  
  return jetTask;
}
 AddTaskDeltaPt.C:1
 AddTaskDeltaPt.C:2
 AddTaskDeltaPt.C:3
 AddTaskDeltaPt.C:4
 AddTaskDeltaPt.C:5
 AddTaskDeltaPt.C:6
 AddTaskDeltaPt.C:7
 AddTaskDeltaPt.C:8
 AddTaskDeltaPt.C:9
 AddTaskDeltaPt.C:10
 AddTaskDeltaPt.C:11
 AddTaskDeltaPt.C:12
 AddTaskDeltaPt.C:13
 AddTaskDeltaPt.C:14
 AddTaskDeltaPt.C:15
 AddTaskDeltaPt.C:16
 AddTaskDeltaPt.C:17
 AddTaskDeltaPt.C:18
 AddTaskDeltaPt.C:19
 AddTaskDeltaPt.C:20
 AddTaskDeltaPt.C:21
 AddTaskDeltaPt.C:22
 AddTaskDeltaPt.C:23
 AddTaskDeltaPt.C:24
 AddTaskDeltaPt.C:25
 AddTaskDeltaPt.C:26
 AddTaskDeltaPt.C:27
 AddTaskDeltaPt.C:28
 AddTaskDeltaPt.C:29
 AddTaskDeltaPt.C:30
 AddTaskDeltaPt.C:31
 AddTaskDeltaPt.C:32
 AddTaskDeltaPt.C:33
 AddTaskDeltaPt.C:34
 AddTaskDeltaPt.C:35
 AddTaskDeltaPt.C:36
 AddTaskDeltaPt.C:37
 AddTaskDeltaPt.C:38
 AddTaskDeltaPt.C:39
 AddTaskDeltaPt.C:40
 AddTaskDeltaPt.C:41
 AddTaskDeltaPt.C:42
 AddTaskDeltaPt.C:43
 AddTaskDeltaPt.C:44
 AddTaskDeltaPt.C:45
 AddTaskDeltaPt.C:46
 AddTaskDeltaPt.C:47
 AddTaskDeltaPt.C:48
 AddTaskDeltaPt.C:49
 AddTaskDeltaPt.C:50
 AddTaskDeltaPt.C:51
 AddTaskDeltaPt.C:52
 AddTaskDeltaPt.C:53
 AddTaskDeltaPt.C:54
 AddTaskDeltaPt.C:55
 AddTaskDeltaPt.C:56
 AddTaskDeltaPt.C:57
 AddTaskDeltaPt.C:58
 AddTaskDeltaPt.C:59
 AddTaskDeltaPt.C:60
 AddTaskDeltaPt.C:61
 AddTaskDeltaPt.C:62
 AddTaskDeltaPt.C:63
 AddTaskDeltaPt.C:64
 AddTaskDeltaPt.C:65
 AddTaskDeltaPt.C:66
 AddTaskDeltaPt.C:67
 AddTaskDeltaPt.C:68
 AddTaskDeltaPt.C:69
 AddTaskDeltaPt.C:70
 AddTaskDeltaPt.C:71
 AddTaskDeltaPt.C:72
 AddTaskDeltaPt.C:73
 AddTaskDeltaPt.C:74
 AddTaskDeltaPt.C:75
 AddTaskDeltaPt.C:76
 AddTaskDeltaPt.C:77
 AddTaskDeltaPt.C:78
 AddTaskDeltaPt.C:79
 AddTaskDeltaPt.C:80
 AddTaskDeltaPt.C:81
 AddTaskDeltaPt.C:82
 AddTaskDeltaPt.C:83
 AddTaskDeltaPt.C:84
 AddTaskDeltaPt.C:85
 AddTaskDeltaPt.C:86
 AddTaskDeltaPt.C:87
 AddTaskDeltaPt.C:88
 AddTaskDeltaPt.C:89
 AddTaskDeltaPt.C:90
 AddTaskDeltaPt.C:91
 AddTaskDeltaPt.C:92
 AddTaskDeltaPt.C:93
 AddTaskDeltaPt.C:94
 AddTaskDeltaPt.C:95
 AddTaskDeltaPt.C:96
 AddTaskDeltaPt.C:97
 AddTaskDeltaPt.C:98
 AddTaskDeltaPt.C:99
 AddTaskDeltaPt.C:100
 AddTaskDeltaPt.C:101
 AddTaskDeltaPt.C:102
 AddTaskDeltaPt.C:103
 AddTaskDeltaPt.C:104
 AddTaskDeltaPt.C:105
 AddTaskDeltaPt.C:106
 AddTaskDeltaPt.C:107
 AddTaskDeltaPt.C:108
 AddTaskDeltaPt.C:109
 AddTaskDeltaPt.C:110
 AddTaskDeltaPt.C:111
 AddTaskDeltaPt.C:112
 AddTaskDeltaPt.C:113
 AddTaskDeltaPt.C:114
 AddTaskDeltaPt.C:115
 AddTaskDeltaPt.C:116
 AddTaskDeltaPt.C:117
 AddTaskDeltaPt.C:118
 AddTaskDeltaPt.C:119
 AddTaskDeltaPt.C:120
 AddTaskDeltaPt.C:121
 AddTaskDeltaPt.C:122
 AddTaskDeltaPt.C:123
 AddTaskDeltaPt.C:124
 AddTaskDeltaPt.C:125
 AddTaskDeltaPt.C:126
 AddTaskDeltaPt.C:127
 AddTaskDeltaPt.C:128
 AddTaskDeltaPt.C:129
 AddTaskDeltaPt.C:130
 AddTaskDeltaPt.C:131