ROOT logo
//---------------------------------------------------------------------//
// Macro to add the task for jet spectrum and jet shape stduies in pp. //
//---------------------------------------------------------------------// 

AliAnalysisTaskJetProperties *AddTaskJetProperties(Char_t* bJet="clustersAOD",
						   Char_t* jetFinder="ANTIKT",
						   Float_t radius=0.4,
						   UInt_t filterMask=256,
						   Float_t ptTrackCut = 0.15){
  
  //*********************************************************************************************//
  //bJet can take the following name (make sure the same branch is ON for JetCluster task)       //
  //      "clustersAOD"                                                                          //
  //      "clustersAODMC2"                                                                       //
  //      "clustersAODMC"                                                                        //
  //      "clustersMCKINE2"                                                                      //
  //      "clustersMCKINE"                                                                       //
  //                                                                                             //
  //      "jetsAOD"                                                                              //
  //      "jetsAODMC2"                                                                           //
  //      "jetsAODMC"                                                                            //
  //      "jetsMCKINE2"                                                                          //
  //      "jetsMCKINE"                                                                           //
  //---------------------------------------------------------------------------------------------//
  // Example to add this task in AnalysisTrainPWG4Jets.C:                                        //
  //---------------------------------------------------------------------------------------------//
  // AliAnalysisTaskJetProperties *taskJetProp = 0;                                              //
  // taskJetProp = AddTaskJetPropertiesPP("clustersAOD","ANTIKT", 0.4, kHighPtFilterMask, 0.15); //
  //*********************************************************************************************//
  

  Int_t debug = -1; // debug level, -1: not set here
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskJetPropertiesPP", "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("AddTaskJetPropertiesPP", "This task requires an input event handler");
    return NULL;
  }
  
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  Printf("########## AddTaskJetProerties: Data Type: %s", type.Data());
  
  TString JetBranch(bJet);   
  TString Method(jetFinder);
  Method.ToUpper();
  // Create the task and configure it.
  //===========================================================================
  AliAnalysisTaskJetProperties *task = new 
    AliAnalysisTaskJetProperties(Form("JetProperties_%s_%s",JetBranch.Data(), Method.Data()));
  
  
  if(debug>=0) task->SetDebugLevel(debug);
  
  // attach the filter mask and options
  Float_t PtTrackMin = ptTrackCut;
  TString cAdd = "";
  cAdd += Form("_%s",Method.Data());
  cAdd += Form("%02d",(int)((radius+0.01)*10.));
  cAdd += Form("_B0");
  cAdd += Form("_Filter%05d",filterMask);
  cAdd += Form("_Cut%05d",(int)((1000.*PtTrackMin)));
  cAdd += Form("_Skip00");
  if(JetBranch.Length())JetBranch += cAdd;
  Printf("########## AddTaskJetProperties: JetBranch '%s'", JetBranch.Data());
  Printf("########## AddTaskJetProperties: JetFinder '%s'", Method.Data());  
  
  if(JetBranch.Length()) task->SetJetBranch(JetBranch);
  //seting the track type by looking jet branch
  //three type of tracks imlmented: kTrackAOD, kTrackKine, and kTrackAODMC 
  //otherwise undifined track type kTrackUndef 
  
  if(JetBranch.Contains("AODMC"))      task->SetTrackType(AliAnalysisTaskJetProperties::kTrackAODMC);
  else if(JetBranch.Contains("MCKINE"))task->SetTrackType(AliAnalysisTaskJetProperties::kTrackKine);
  else if(JetBranch.Contains("AOD"))   task->SetTrackType(AliAnalysisTaskJetProperties::kTrackAOD);
  else task->SetTrackType(AliAnalysisTaskJetProperties::kTrackUndef);//undefined track type
  
  //setting pileup rejection
  Bool_t IsPileupReject = kTRUE;//=kTRUE if you want to reject pileup, =kFALSE for no pileup rejection
  task->SetPileupRejection(IsPileupReject);
  
  //setting the jet rejection
  //two types implemented:kNoReject and kReject1Trk
  TString contName="";
  Bool_t Is1TrackJetReject = kFALSE;//=kTRUE if you want to reject single track jet
  if(Is1TrackJetReject){//by default no rejection
    task->SetJetRejectType(AliAnalysisTaskJetProperties::kReject1Track);
    contName="_No1TrackJet";
  }
  task->SetJetRadius(radius);
  task->SetEventCuts(10.0,2);//VtxZ=+-8cm, nContributors>2
  task->SetFilterMask(filterMask);
  task->SetTrackCuts();// default : pt > 0.150 GeV, |eta|<0.9, full phi acc
  Float_t minJetPt  = 10.0; 
  Float_t minJetEta = -0.5; 
  Float_t maxJetEta =  0.5;
  Int_t tmpR = (Int_t)10*radius;
  if(tmpR==2){minJetEta=-0.7;maxJetEta=0.7;}
  if(tmpR==6){minJetEta=-0.3;maxJetEta=0.3;}
  task->SetJetCuts(minJetPt,minJetEta,maxJetEta);
  
  mgr->AddTask(task);
  
  // Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================
  
  AliAnalysisDataContainer *coutput_JetProperties = 
    mgr->CreateContainer(Form("jetprop%s_%s", contName.Data(),JetBranch.Data()),
			 TList::Class(),
			 AliAnalysisManager::kOutputContainer,
			 Form("%s:PWG4_JetProp%s_%s", 
			      AliAnalysisManager::GetCommonFileName(), contName.Data(),JetBranch.Data()));
  
  mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
  mgr->ConnectOutput (task, 1, coutput_JetProperties);
  
  return task;
}
 AddTaskJetProperties.C:1
 AddTaskJetProperties.C:2
 AddTaskJetProperties.C:3
 AddTaskJetProperties.C:4
 AddTaskJetProperties.C:5
 AddTaskJetProperties.C:6
 AddTaskJetProperties.C:7
 AddTaskJetProperties.C:8
 AddTaskJetProperties.C:9
 AddTaskJetProperties.C:10
 AddTaskJetProperties.C:11
 AddTaskJetProperties.C:12
 AddTaskJetProperties.C:13
 AddTaskJetProperties.C:14
 AddTaskJetProperties.C:15
 AddTaskJetProperties.C:16
 AddTaskJetProperties.C:17
 AddTaskJetProperties.C:18
 AddTaskJetProperties.C:19
 AddTaskJetProperties.C:20
 AddTaskJetProperties.C:21
 AddTaskJetProperties.C:22
 AddTaskJetProperties.C:23
 AddTaskJetProperties.C:24
 AddTaskJetProperties.C:25
 AddTaskJetProperties.C:26
 AddTaskJetProperties.C:27
 AddTaskJetProperties.C:28
 AddTaskJetProperties.C:29
 AddTaskJetProperties.C:30
 AddTaskJetProperties.C:31
 AddTaskJetProperties.C:32
 AddTaskJetProperties.C:33
 AddTaskJetProperties.C:34
 AddTaskJetProperties.C:35
 AddTaskJetProperties.C:36
 AddTaskJetProperties.C:37
 AddTaskJetProperties.C:38
 AddTaskJetProperties.C:39
 AddTaskJetProperties.C:40
 AddTaskJetProperties.C:41
 AddTaskJetProperties.C:42
 AddTaskJetProperties.C:43
 AddTaskJetProperties.C:44
 AddTaskJetProperties.C:45
 AddTaskJetProperties.C:46
 AddTaskJetProperties.C:47
 AddTaskJetProperties.C:48
 AddTaskJetProperties.C:49
 AddTaskJetProperties.C:50
 AddTaskJetProperties.C:51
 AddTaskJetProperties.C:52
 AddTaskJetProperties.C:53
 AddTaskJetProperties.C:54
 AddTaskJetProperties.C:55
 AddTaskJetProperties.C:56
 AddTaskJetProperties.C:57
 AddTaskJetProperties.C:58
 AddTaskJetProperties.C:59
 AddTaskJetProperties.C:60
 AddTaskJetProperties.C:61
 AddTaskJetProperties.C:62
 AddTaskJetProperties.C:63
 AddTaskJetProperties.C:64
 AddTaskJetProperties.C:65
 AddTaskJetProperties.C:66
 AddTaskJetProperties.C:67
 AddTaskJetProperties.C:68
 AddTaskJetProperties.C:69
 AddTaskJetProperties.C:70
 AddTaskJetProperties.C:71
 AddTaskJetProperties.C:72
 AddTaskJetProperties.C:73
 AddTaskJetProperties.C:74
 AddTaskJetProperties.C:75
 AddTaskJetProperties.C:76
 AddTaskJetProperties.C:77
 AddTaskJetProperties.C:78
 AddTaskJetProperties.C:79
 AddTaskJetProperties.C:80
 AddTaskJetProperties.C:81
 AddTaskJetProperties.C:82
 AddTaskJetProperties.C:83
 AddTaskJetProperties.C:84
 AddTaskJetProperties.C:85
 AddTaskJetProperties.C:86
 AddTaskJetProperties.C:87
 AddTaskJetProperties.C:88
 AddTaskJetProperties.C:89
 AddTaskJetProperties.C:90
 AddTaskJetProperties.C:91
 AddTaskJetProperties.C:92
 AddTaskJetProperties.C:93
 AddTaskJetProperties.C:94
 AddTaskJetProperties.C:95
 AddTaskJetProperties.C:96
 AddTaskJetProperties.C:97
 AddTaskJetProperties.C:98
 AddTaskJetProperties.C:99
 AddTaskJetProperties.C:100
 AddTaskJetProperties.C:101
 AddTaskJetProperties.C:102
 AddTaskJetProperties.C:103
 AddTaskJetProperties.C:104
 AddTaskJetProperties.C:105
 AddTaskJetProperties.C:106
 AddTaskJetProperties.C:107
 AddTaskJetProperties.C:108
 AddTaskJetProperties.C:109
 AddTaskJetProperties.C:110
 AddTaskJetProperties.C:111
 AddTaskJetProperties.C:112
 AddTaskJetProperties.C:113
 AddTaskJetProperties.C:114
 AddTaskJetProperties.C:115
 AddTaskJetProperties.C:116
 AddTaskJetProperties.C:117
 AddTaskJetProperties.C:118
 AddTaskJetProperties.C:119
 AddTaskJetProperties.C:120
 AddTaskJetProperties.C:121
 AddTaskJetProperties.C:122
 AddTaskJetProperties.C:123
 AddTaskJetProperties.C:124
 AddTaskJetProperties.C:125
 AddTaskJetProperties.C:126
 AddTaskJetProperties.C:127