ROOT logo
// $Id$

AliJetResponseMaker* AddTaskJetResponseMaker(
  const char *ntracks1           = "Tracks",
  const char *nclusters1         = "CaloClusters",
  const char *njets1             = "Jets",
  const char *nrho1              = "Rho",
  Double_t    jetradius1         = 0.2,
  const char *ntracks2           = "MCParticles",
  const char *nclusters2         = "",
  const char *njets2             = "MCJets",
  const char *nrho2              = "",
  Double_t    jetradius2         = 0.2,
  Double_t    jetptcut           = 1,
  Double_t    jetareacut         = 0.557,
  Double_t    jetBias            = 5,
  Int_t       biasType           = 0,   //  0 = charged, 1 = neutral, 2 = both
  UInt_t      matching           = AliJetResponseMaker::kGeometrical,
  Double_t    maxDistance1       = 0.25,
  Double_t    maxDistance2       = 0.25,
  const char *cutType            = "TPC",
  Int_t       ptHardBin          = -999,
  Double_t    minCent            = -999,
  Double_t    maxCent            = -999,
  const char *taskname           = "AliJetResponseMaker",
  Bool_t      biggerMatrix       = kFALSE,
  AliJetResponseMaker* address   = 0,
  Double_t    nefmincut          = -10,
  Double_t    nefmaxcut          = 10,
  Int_t       jetTagging         = 0,
  Double_t    maxTrackPt         = 100
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskJetResponseMaker", "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("AddTaskJetResponseMaker", "This task requires an input event handler");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  TString name(Form("%s_%s_%s_Bias%d_BiasType%d_%s",taskname,njets1,njets2,(Int_t)floor(jetBias),biasType,cutType));

  if (minCent != -999 && maxCent != -999) 
    name += Form("_Cent%d_%d", (Int_t)floor(minCent), (Int_t)floor(maxCent));

  if (ptHardBin != -999) 
    name += Form("_PtHard%d", ptHardBin);
  if (nefmaxcut<1.0)
    name += Form("_NEF%d", (Int_t)(100*nefmaxcut));
    
  AliJetResponseMaker* jetTask = address;
  if (jetTask)
    new (jetTask) AliJetResponseMaker(name);
  else
    jetTask = new AliJetResponseMaker(name);

  AliParticleContainer *trackCont1 = jetTask->AddParticleContainer(ntracks1);
  AliClusterContainer *clusCont1 = jetTask->AddClusterContainer(nclusters1);
  AliJetContainer *jetCont1 = jetTask->AddJetContainer(njets1, cutType, jetradius1);
  jetCont1->SetRhoName(nrho1);
  jetCont1->SetLeadingHadronType(biasType);
  jetCont1->SetPtBiasJetTrack(jetBias);
  jetCont1->SetPtBiasJetClus(jetBias);
  jetCont1->SetJetPtCut(jetptcut);
  jetCont1->SetPercAreaCut(jetareacut);
  jetCont1->SetIsParticleLevel(kFALSE);
  jetCont1->ConnectParticleContainer(trackCont1);
  jetCont1->ConnectClusterContainer(clusCont1);
  jetCont1->SetNEFCut(nefmincut,nefmaxcut);
  jetCont1->SetFlavourCut(jetTagging);
  jetCont1->SetMaxTrackPt(maxTrackPt);

    
  AliParticleContainer *trackCont2 = jetTask->AddParticleContainer(ntracks2);
  trackCont2->SelectPhysicalPrimaries(kTRUE);
  trackCont2->SetParticlePtCut(0);
  AliClusterContainer *clusCont2 = jetTask->AddClusterContainer(nclusters2);
  AliJetContainer *jetCont2 = jetTask->AddJetContainer(njets2, cutType, jetradius2);
  jetCont2->SetRhoName(nrho2);
  jetCont2->SetLeadingHadronType(biasType);
  jetCont2->SetPtBiasJetTrack(jetBias);
  jetCont2->SetPtBiasJetClus(jetBias);
  jetCont2->SetJetPtCut(jetptcut);
  jetCont2->SetPercAreaCut(jetareacut);
  jetCont2->SetIsParticleLevel(kTRUE);
  jetCont2->ConnectParticleContainer(trackCont2);
  jetCont2->ConnectClusterContainer(clusCont2);
  jetCont2->SetFlavourCut(jetTagging);
  jetCont2->SetMaxTrackPt(1000); // disable default 100 GeV/c track cut for particle level jets

    
  jetTask->SetMatching(matching, maxDistance1, maxDistance2);
  jetTask->SetVzRange(-10,10);
  jetTask->SetIsPythia(kTRUE);
  jetTask->SetPtHardBin(ptHardBin);
  jetTask->SetCentRange(minCent,maxCent);

  if (biggerMatrix) 
    jetTask->SetHistoBins(1000,0,500);
  
  //-------------------------------------------------------
  // 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;
}
 AddTaskJetResponseMaker.C:1
 AddTaskJetResponseMaker.C:2
 AddTaskJetResponseMaker.C:3
 AddTaskJetResponseMaker.C:4
 AddTaskJetResponseMaker.C:5
 AddTaskJetResponseMaker.C:6
 AddTaskJetResponseMaker.C:7
 AddTaskJetResponseMaker.C:8
 AddTaskJetResponseMaker.C:9
 AddTaskJetResponseMaker.C:10
 AddTaskJetResponseMaker.C:11
 AddTaskJetResponseMaker.C:12
 AddTaskJetResponseMaker.C:13
 AddTaskJetResponseMaker.C:14
 AddTaskJetResponseMaker.C:15
 AddTaskJetResponseMaker.C:16
 AddTaskJetResponseMaker.C:17
 AddTaskJetResponseMaker.C:18
 AddTaskJetResponseMaker.C:19
 AddTaskJetResponseMaker.C:20
 AddTaskJetResponseMaker.C:21
 AddTaskJetResponseMaker.C:22
 AddTaskJetResponseMaker.C:23
 AddTaskJetResponseMaker.C:24
 AddTaskJetResponseMaker.C:25
 AddTaskJetResponseMaker.C:26
 AddTaskJetResponseMaker.C:27
 AddTaskJetResponseMaker.C:28
 AddTaskJetResponseMaker.C:29
 AddTaskJetResponseMaker.C:30
 AddTaskJetResponseMaker.C:31
 AddTaskJetResponseMaker.C:32
 AddTaskJetResponseMaker.C:33
 AddTaskJetResponseMaker.C:34
 AddTaskJetResponseMaker.C:35
 AddTaskJetResponseMaker.C:36
 AddTaskJetResponseMaker.C:37
 AddTaskJetResponseMaker.C:38
 AddTaskJetResponseMaker.C:39
 AddTaskJetResponseMaker.C:40
 AddTaskJetResponseMaker.C:41
 AddTaskJetResponseMaker.C:42
 AddTaskJetResponseMaker.C:43
 AddTaskJetResponseMaker.C:44
 AddTaskJetResponseMaker.C:45
 AddTaskJetResponseMaker.C:46
 AddTaskJetResponseMaker.C:47
 AddTaskJetResponseMaker.C:48
 AddTaskJetResponseMaker.C:49
 AddTaskJetResponseMaker.C:50
 AddTaskJetResponseMaker.C:51
 AddTaskJetResponseMaker.C:52
 AddTaskJetResponseMaker.C:53
 AddTaskJetResponseMaker.C:54
 AddTaskJetResponseMaker.C:55
 AddTaskJetResponseMaker.C:56
 AddTaskJetResponseMaker.C:57
 AddTaskJetResponseMaker.C:58
 AddTaskJetResponseMaker.C:59
 AddTaskJetResponseMaker.C:60
 AddTaskJetResponseMaker.C:61
 AddTaskJetResponseMaker.C:62
 AddTaskJetResponseMaker.C:63
 AddTaskJetResponseMaker.C:64
 AddTaskJetResponseMaker.C:65
 AddTaskJetResponseMaker.C:66
 AddTaskJetResponseMaker.C:67
 AddTaskJetResponseMaker.C:68
 AddTaskJetResponseMaker.C:69
 AddTaskJetResponseMaker.C:70
 AddTaskJetResponseMaker.C:71
 AddTaskJetResponseMaker.C:72
 AddTaskJetResponseMaker.C:73
 AddTaskJetResponseMaker.C:74
 AddTaskJetResponseMaker.C:75
 AddTaskJetResponseMaker.C:76
 AddTaskJetResponseMaker.C:77
 AddTaskJetResponseMaker.C:78
 AddTaskJetResponseMaker.C:79
 AddTaskJetResponseMaker.C:80
 AddTaskJetResponseMaker.C:81
 AddTaskJetResponseMaker.C:82
 AddTaskJetResponseMaker.C:83
 AddTaskJetResponseMaker.C:84
 AddTaskJetResponseMaker.C:85
 AddTaskJetResponseMaker.C:86
 AddTaskJetResponseMaker.C:87
 AddTaskJetResponseMaker.C:88
 AddTaskJetResponseMaker.C:89
 AddTaskJetResponseMaker.C:90
 AddTaskJetResponseMaker.C:91
 AddTaskJetResponseMaker.C:92
 AddTaskJetResponseMaker.C:93
 AddTaskJetResponseMaker.C:94
 AddTaskJetResponseMaker.C:95
 AddTaskJetResponseMaker.C:96
 AddTaskJetResponseMaker.C:97
 AddTaskJetResponseMaker.C:98
 AddTaskJetResponseMaker.C:99
 AddTaskJetResponseMaker.C:100
 AddTaskJetResponseMaker.C:101
 AddTaskJetResponseMaker.C:102
 AddTaskJetResponseMaker.C:103
 AddTaskJetResponseMaker.C:104
 AddTaskJetResponseMaker.C:105
 AddTaskJetResponseMaker.C:106
 AddTaskJetResponseMaker.C:107
 AddTaskJetResponseMaker.C:108
 AddTaskJetResponseMaker.C:109
 AddTaskJetResponseMaker.C:110
 AddTaskJetResponseMaker.C:111
 AddTaskJetResponseMaker.C:112
 AddTaskJetResponseMaker.C:113
 AddTaskJetResponseMaker.C:114
 AddTaskJetResponseMaker.C:115
 AddTaskJetResponseMaker.C:116
 AddTaskJetResponseMaker.C:117
 AddTaskJetResponseMaker.C:118
 AddTaskJetResponseMaker.C:119
 AddTaskJetResponseMaker.C:120
 AddTaskJetResponseMaker.C:121
 AddTaskJetResponseMaker.C:122
 AddTaskJetResponseMaker.C:123
 AddTaskJetResponseMaker.C:124
 AddTaskJetResponseMaker.C:125
 AddTaskJetResponseMaker.C:126
 AddTaskJetResponseMaker.C:127
 AddTaskJetResponseMaker.C:128
 AddTaskJetResponseMaker.C:129
 AddTaskJetResponseMaker.C:130
 AddTaskJetResponseMaker.C:131
 AddTaskJetResponseMaker.C:132
 AddTaskJetResponseMaker.C:133