ROOT logo
// $Id$

AliAnalysisTaskDijetHadron* AddTaskDijetHadron(
  const char *ntracks            = "Tracks",
  const char *nclusters          = "CaloClusters",
  const char *njets              = "Jets",
  const char *nMCtracks          = "TracksMC",
  const char *nMCclusters        = "CaloClustersMC",
  const char *nMCjets            = "JetsMC",
  const char *nembtracks         = "TracksEmbedded",
  const char *nembclusters       = "CaloClustersEmbedded",
  const char *nembjets           = "EmbJets",
  const char *nrandtracks        = "TracksRandomized",
  const char *nrandclusters      = "CaloClustersRandomized",
  const char *nPbPbrho           = "Rho",
  const char *nMCrho             = "RhoMC",
  const char *nEMBrho            = "RhoEMB",
  Double_t    jetradius          = 0.2,
  Double_t    leadinghadron1     = 0.0,
  Double_t    leadinghadron2     = 3.0,
  Double_t    leadinghadron3     = 5.0,
  Double_t    jet1pt1            = 10.0,
  Double_t    jet1pt2            = 20.0,
  Double_t    jet1pt3            = 30.0,
  Double_t    jet2pt1            = 10.0,
  Double_t    jet2pt2            = 20.0,
  Double_t    jet2pt3            = 30.0,
  Double_t    jetareacut         = 0.557,
  Double_t    trackptcut         = 0.15,
  Double_t    clusptcut          = 0.30,
  const char *type               = "TPC",
  const char *taskname           = "AliAnalysisTaskDijetHadron"
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskDijetHadron", "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("AddTaskDijetHadron", "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,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
  else if (strcmp(ntracks, "") == 0) 
    name = Form("%s_%s_%s_R0%d_%s",taskname,nclusters,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
  else if (strcmp(nclusters, "") == 0) 
    name = Form("%s_%s_%s_R0%d_%s",taskname,ntracks,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
  else
    name = Form("%s_%s_%s_%s_R0%d_%s",taskname,ntracks,nclusters,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);

  AliAnalysisTaskDijetHadron* jetTask = new AliAnalysisTaskDijetHadron(name);
  jetTask->SetConeRadius(jetradius);
  jetTask->SetLeadingHadronPtThreshold1(leadinghadron1);
  jetTask->SetLeadingHadronPtThreshold2(leadinghadron2);
  jetTask->SetLeadingHadronPtThreshold3(leadinghadron3);
  jetTask->SetJet1PtThreshold1(jet1pt1);
  jetTask->SetJet1PtThreshold2(jet1pt2);
  jetTask->SetJet1PtThreshold3(jet1pt3);
  jetTask->SetJet2PtThreshold1(jet2pt1);
  jetTask->SetJet2PtThreshold2(jet2pt2);
  jetTask->SetJet2PtThreshold3(jet2pt3);
  jetTask->SetRhoName(nPbPbrho,-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(nPbPbrho);
    jetCont->ConnectParticleContainer(partCont);
    jetCont->ConnectClusterContainer(clusCont);
  }

  AliParticleContainer *MCpartCont = jetTask->AddParticleContainer(nMCtracks);
  if (partCont) {
    MCpartCont->SetName("MCTracks");
    MCpartCont->SetParticlePtCut(trackptcut);
  }

  AliClusterContainer *MCclusCont = jetTask->AddClusterContainer(nMCclusters);
  if (clusCont) {
    MCclusCont->SetName("MCCaloClusters");
    MCclusCont->SetClusPtCut(clusptcut);
  }

  AliJetContainer *MCjetCont = jetTask->AddJetContainer(nMCjets,type,jetradius);
  if (jetCont) {
    MCjetCont->SetName("MCJets");
    MCjetCont->SetPercAreaCut(jetareacut);
    MCjetCont->SetRhoName(nMCrho);
    MCjetCont->ConnectParticleContainer(MCpartCont);
    MCjetCont->ConnectClusterContainer(MCclusCont);
  }

  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(nEMBrho);
    embJetCont->ConnectParticleContainer(embPartCont);
    embJetCont->ConnectClusterContainer(embClusCont);
  }

  //-------------------------------------------------------
  // 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;
}
 AddTaskDijetHadron.C:1
 AddTaskDijetHadron.C:2
 AddTaskDijetHadron.C:3
 AddTaskDijetHadron.C:4
 AddTaskDijetHadron.C:5
 AddTaskDijetHadron.C:6
 AddTaskDijetHadron.C:7
 AddTaskDijetHadron.C:8
 AddTaskDijetHadron.C:9
 AddTaskDijetHadron.C:10
 AddTaskDijetHadron.C:11
 AddTaskDijetHadron.C:12
 AddTaskDijetHadron.C:13
 AddTaskDijetHadron.C:14
 AddTaskDijetHadron.C:15
 AddTaskDijetHadron.C:16
 AddTaskDijetHadron.C:17
 AddTaskDijetHadron.C:18
 AddTaskDijetHadron.C:19
 AddTaskDijetHadron.C:20
 AddTaskDijetHadron.C:21
 AddTaskDijetHadron.C:22
 AddTaskDijetHadron.C:23
 AddTaskDijetHadron.C:24
 AddTaskDijetHadron.C:25
 AddTaskDijetHadron.C:26
 AddTaskDijetHadron.C:27
 AddTaskDijetHadron.C:28
 AddTaskDijetHadron.C:29
 AddTaskDijetHadron.C:30
 AddTaskDijetHadron.C:31
 AddTaskDijetHadron.C:32
 AddTaskDijetHadron.C:33
 AddTaskDijetHadron.C:34
 AddTaskDijetHadron.C:35
 AddTaskDijetHadron.C:36
 AddTaskDijetHadron.C:37
 AddTaskDijetHadron.C:38
 AddTaskDijetHadron.C:39
 AddTaskDijetHadron.C:40
 AddTaskDijetHadron.C:41
 AddTaskDijetHadron.C:42
 AddTaskDijetHadron.C:43
 AddTaskDijetHadron.C:44
 AddTaskDijetHadron.C:45
 AddTaskDijetHadron.C:46
 AddTaskDijetHadron.C:47
 AddTaskDijetHadron.C:48
 AddTaskDijetHadron.C:49
 AddTaskDijetHadron.C:50
 AddTaskDijetHadron.C:51
 AddTaskDijetHadron.C:52
 AddTaskDijetHadron.C:53
 AddTaskDijetHadron.C:54
 AddTaskDijetHadron.C:55
 AddTaskDijetHadron.C:56
 AddTaskDijetHadron.C:57
 AddTaskDijetHadron.C:58
 AddTaskDijetHadron.C:59
 AddTaskDijetHadron.C:60
 AddTaskDijetHadron.C:61
 AddTaskDijetHadron.C:62
 AddTaskDijetHadron.C:63
 AddTaskDijetHadron.C:64
 AddTaskDijetHadron.C:65
 AddTaskDijetHadron.C:66
 AddTaskDijetHadron.C:67
 AddTaskDijetHadron.C:68
 AddTaskDijetHadron.C:69
 AddTaskDijetHadron.C:70
 AddTaskDijetHadron.C:71
 AddTaskDijetHadron.C:72
 AddTaskDijetHadron.C:73
 AddTaskDijetHadron.C:74
 AddTaskDijetHadron.C:75
 AddTaskDijetHadron.C:76
 AddTaskDijetHadron.C:77
 AddTaskDijetHadron.C:78
 AddTaskDijetHadron.C:79
 AddTaskDijetHadron.C:80
 AddTaskDijetHadron.C:81
 AddTaskDijetHadron.C:82
 AddTaskDijetHadron.C:83
 AddTaskDijetHadron.C:84
 AddTaskDijetHadron.C:85
 AddTaskDijetHadron.C:86
 AddTaskDijetHadron.C:87
 AddTaskDijetHadron.C:88
 AddTaskDijetHadron.C:89
 AddTaskDijetHadron.C:90
 AddTaskDijetHadron.C:91
 AddTaskDijetHadron.C:92
 AddTaskDijetHadron.C:93
 AddTaskDijetHadron.C:94
 AddTaskDijetHadron.C:95
 AddTaskDijetHadron.C:96
 AddTaskDijetHadron.C:97
 AddTaskDijetHadron.C:98
 AddTaskDijetHadron.C:99
 AddTaskDijetHadron.C:100
 AddTaskDijetHadron.C:101
 AddTaskDijetHadron.C:102
 AddTaskDijetHadron.C:103
 AddTaskDijetHadron.C:104
 AddTaskDijetHadron.C:105
 AddTaskDijetHadron.C:106
 AddTaskDijetHadron.C:107
 AddTaskDijetHadron.C:108
 AddTaskDijetHadron.C:109
 AddTaskDijetHadron.C:110
 AddTaskDijetHadron.C:111
 AddTaskDijetHadron.C:112
 AddTaskDijetHadron.C:113
 AddTaskDijetHadron.C:114
 AddTaskDijetHadron.C:115
 AddTaskDijetHadron.C:116
 AddTaskDijetHadron.C:117
 AddTaskDijetHadron.C:118
 AddTaskDijetHadron.C:119
 AddTaskDijetHadron.C:120
 AddTaskDijetHadron.C:121
 AddTaskDijetHadron.C:122
 AddTaskDijetHadron.C:123
 AddTaskDijetHadron.C:124
 AddTaskDijetHadron.C:125
 AddTaskDijetHadron.C:126
 AddTaskDijetHadron.C:127
 AddTaskDijetHadron.C:128
 AddTaskDijetHadron.C:129
 AddTaskDijetHadron.C:130
 AddTaskDijetHadron.C:131
 AddTaskDijetHadron.C:132
 AddTaskDijetHadron.C:133
 AddTaskDijetHadron.C:134
 AddTaskDijetHadron.C:135
 AddTaskDijetHadron.C:136
 AddTaskDijetHadron.C:137
 AddTaskDijetHadron.C:138
 AddTaskDijetHadron.C:139
 AddTaskDijetHadron.C:140
 AddTaskDijetHadron.C:141
 AddTaskDijetHadron.C:142
 AddTaskDijetHadron.C:143
 AddTaskDijetHadron.C:144
 AddTaskDijetHadron.C:145
 AddTaskDijetHadron.C:146
 AddTaskDijetHadron.C:147
 AddTaskDijetHadron.C:148
 AddTaskDijetHadron.C:149
 AddTaskDijetHadron.C:150
 AddTaskDijetHadron.C:151
 AddTaskDijetHadron.C:152
 AddTaskDijetHadron.C:153
 AddTaskDijetHadron.C:154
 AddTaskDijetHadron.C:155
 AddTaskDijetHadron.C:156
 AddTaskDijetHadron.C:157
 AddTaskDijetHadron.C:158
 AddTaskDijetHadron.C:159
 AddTaskDijetHadron.C:160
 AddTaskDijetHadron.C:161
 AddTaskDijetHadron.C:162
 AddTaskDijetHadron.C:163