ROOT logo
AliAnalysisTaskEmcalDiJetResponse* AddTaskEmcalDiJetResponse(TString     kTracksName         = "PicoTracks", 
							     TString     kClusName           = "caloClusterCorr",
							     TString     kMCTracksName       = "MCParticles",
							     Double_t    R                   = 0.4, 
							     Double_t    ptminTrack          = 0.15, 
							     Double_t    etminClus           = 0.3, 
							     Int_t       rhoType             = 0,
							     TString     trigClass           = "",
							     const char *CentEst             = "V0A",
							     Int_t       pSel                = AliVEvent::kINT7,
							     Int_t       matchFullCh         = AliAnalysisTaskEmcalDiJetBase::kNoMatching,
							     Double_t    ptTrackBias         = 0.,
							     Int_t       responseVar         = 0,
							     Int_t       corrType            = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo,
							     Float_t     nefCut              = 10.
							     ) {
  
  enum AlgoType {kKT, kANTIKT};
  enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};

  // #### Define manager and data container names
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskEmcalDiJet", "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("AddTaskEmcalDiJet", "This task requires an input event handler");
      return NULL;
    }

  // #### Add necessary jet finder tasks
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");

  AliEmcalJetTask* jetFinderTaskFull    = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
  AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
  jetFinderTaskFull->SelectCollisionCandidates(AliVEvent::kAny);
  jetFinderTaskCharged->SelectCollisionCandidates(AliVEvent::kAny);

  AliEmcalJetTask* jetFinderTaskFullMC = AddTaskEmcalJet(kMCTracksName ,"", kANTIKT, R, kFULLJETS, kPartLevPtCut, kPartLevPtCut);
  AliEmcalJetTask* jetFinderTaskChargedMC = AddTaskEmcalJet(kMCTracksName ,"", kANTIKT, R, kCHARGEDJETS, kPartLevPtCut, kPartLevPtCut);
  jetFinderTaskFullMC->SelectCollisionCandidates(AliVEvent::kAny);
  jetFinderTaskChargedMC->SelectCollisionCandidates(AliVEvent::kAny);

  TString strJetsFull = jetFinderTaskFull->GetName();
  TString strJetsCh   = jetFinderTaskCharged->GetName();

  TString strJetsFullMC = jetFinderTaskFullMC->GetName();
  TString strJetsChMC   = jetFinderTaskChargedMC->GetName();


  TString wagonName = Form("DiJetResponse_%s_%s_Rho%dTC%sMatch%dHadTrig%dRV%d",strJetsFull.Data(),strJetsFullMC.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias),responseVar);

  //Configure DiJet task
  AliAnalysisTaskEmcalDiJetResponse *taskDiJetResp = new AliAnalysisTaskEmcalDiJetResponse(wagonName.Data());
 
  Printf("strJetsFull: %s",strJetsFull.Data());
  Printf("strJetsCh: %s",strJetsCh.Data());

  taskDiJetResp->SetUseAliAnaUtils(kTRUE);
  taskDiJetResp->SetVzRange(-10.,10.);
  taskDiJetResp->SetIsPythia(kTRUE);

  taskDiJetResp->SetJetCorrelationType(corrType);

  taskDiJetResp->SetContainerFull(0);
  taskDiJetResp->SetContainerCharged(1);
  taskDiJetResp->SetContainerFullMC(2);
  taskDiJetResp->SetContainerChargedMC(3);

  taskDiJetResp->AddParticleContainer(kTracksName.Data());
  taskDiJetResp->AddClusterContainer(kClusName.Data());
   
  taskDiJetResp->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
  taskDiJetResp->AddJetContainer(strJetsCh.Data(),"TPC",R);
  taskDiJetResp->AddJetContainer(strJetsFullMC.Data(),"EMCAL",R);
  taskDiJetResp->AddJetContainer(strJetsChMC.Data(),"TPC",R);

  taskDiJetResp->SetZLeadingCut(0.98,0.98,0);
  taskDiJetResp->SetZLeadingCut(0.98,0.98,2);

  taskDiJetResp->SetNEFCut(0.,nefCut,0);
  taskDiJetResp->SetNEFCut(0.,nefCut,2);

  for(Int_t i=0; i<4; i++) {
    taskDiJetResp->SetPercAreaCut(0.6, i);
    taskDiJetResp->SetPtBiasJetTrack(ptTrackBias,i);
  }

  taskDiJetResp->SetRhoType(rhoType);
  taskDiJetResp->SetCentralityEstimator(CentEst);
  taskDiJetResp->SelectCollisionCandidates(pSel);
  taskDiJetResp->SetFullChargedMatchingType(matchFullCh);
  taskDiJetResp->SetDoChargedCharged(kTRUE);
  taskDiJetResp->SetDoFullCharged(kTRUE);
  taskDiJetResp->SetMatchFullCharged(kTRUE);
  taskDiJetResp->SetResponseVar(responseVar);
  taskDiJetResp->SetPtMinTriggerJet(0.);

  mgr->AddTask(taskDiJetResp);

  //Connnect input
  mgr->ConnectInput (taskDiJetResp, 0, mgr->GetCommonInputContainer() );

  //Connect output
  AliAnalysisDataContainer *coutput1 = 0x0;
  TString contName(wagonName);
  contName += "_histos";
  TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
  coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
  mgr->ConnectOutput(taskDiJetResp,1,coutput1);
  
  return taskDiJetResp;
}
 AddTaskEmcalDiJetResponse.C:1
 AddTaskEmcalDiJetResponse.C:2
 AddTaskEmcalDiJetResponse.C:3
 AddTaskEmcalDiJetResponse.C:4
 AddTaskEmcalDiJetResponse.C:5
 AddTaskEmcalDiJetResponse.C:6
 AddTaskEmcalDiJetResponse.C:7
 AddTaskEmcalDiJetResponse.C:8
 AddTaskEmcalDiJetResponse.C:9
 AddTaskEmcalDiJetResponse.C:10
 AddTaskEmcalDiJetResponse.C:11
 AddTaskEmcalDiJetResponse.C:12
 AddTaskEmcalDiJetResponse.C:13
 AddTaskEmcalDiJetResponse.C:14
 AddTaskEmcalDiJetResponse.C:15
 AddTaskEmcalDiJetResponse.C:16
 AddTaskEmcalDiJetResponse.C:17
 AddTaskEmcalDiJetResponse.C:18
 AddTaskEmcalDiJetResponse.C:19
 AddTaskEmcalDiJetResponse.C:20
 AddTaskEmcalDiJetResponse.C:21
 AddTaskEmcalDiJetResponse.C:22
 AddTaskEmcalDiJetResponse.C:23
 AddTaskEmcalDiJetResponse.C:24
 AddTaskEmcalDiJetResponse.C:25
 AddTaskEmcalDiJetResponse.C:26
 AddTaskEmcalDiJetResponse.C:27
 AddTaskEmcalDiJetResponse.C:28
 AddTaskEmcalDiJetResponse.C:29
 AddTaskEmcalDiJetResponse.C:30
 AddTaskEmcalDiJetResponse.C:31
 AddTaskEmcalDiJetResponse.C:32
 AddTaskEmcalDiJetResponse.C:33
 AddTaskEmcalDiJetResponse.C:34
 AddTaskEmcalDiJetResponse.C:35
 AddTaskEmcalDiJetResponse.C:36
 AddTaskEmcalDiJetResponse.C:37
 AddTaskEmcalDiJetResponse.C:38
 AddTaskEmcalDiJetResponse.C:39
 AddTaskEmcalDiJetResponse.C:40
 AddTaskEmcalDiJetResponse.C:41
 AddTaskEmcalDiJetResponse.C:42
 AddTaskEmcalDiJetResponse.C:43
 AddTaskEmcalDiJetResponse.C:44
 AddTaskEmcalDiJetResponse.C:45
 AddTaskEmcalDiJetResponse.C:46
 AddTaskEmcalDiJetResponse.C:47
 AddTaskEmcalDiJetResponse.C:48
 AddTaskEmcalDiJetResponse.C:49
 AddTaskEmcalDiJetResponse.C:50
 AddTaskEmcalDiJetResponse.C:51
 AddTaskEmcalDiJetResponse.C:52
 AddTaskEmcalDiJetResponse.C:53
 AddTaskEmcalDiJetResponse.C:54
 AddTaskEmcalDiJetResponse.C:55
 AddTaskEmcalDiJetResponse.C:56
 AddTaskEmcalDiJetResponse.C:57
 AddTaskEmcalDiJetResponse.C:58
 AddTaskEmcalDiJetResponse.C:59
 AddTaskEmcalDiJetResponse.C:60
 AddTaskEmcalDiJetResponse.C:61
 AddTaskEmcalDiJetResponse.C:62
 AddTaskEmcalDiJetResponse.C:63
 AddTaskEmcalDiJetResponse.C:64
 AddTaskEmcalDiJetResponse.C:65
 AddTaskEmcalDiJetResponse.C:66
 AddTaskEmcalDiJetResponse.C:67
 AddTaskEmcalDiJetResponse.C:68
 AddTaskEmcalDiJetResponse.C:69
 AddTaskEmcalDiJetResponse.C:70
 AddTaskEmcalDiJetResponse.C:71
 AddTaskEmcalDiJetResponse.C:72
 AddTaskEmcalDiJetResponse.C:73
 AddTaskEmcalDiJetResponse.C:74
 AddTaskEmcalDiJetResponse.C:75
 AddTaskEmcalDiJetResponse.C:76
 AddTaskEmcalDiJetResponse.C:77
 AddTaskEmcalDiJetResponse.C:78
 AddTaskEmcalDiJetResponse.C:79
 AddTaskEmcalDiJetResponse.C:80
 AddTaskEmcalDiJetResponse.C:81
 AddTaskEmcalDiJetResponse.C:82
 AddTaskEmcalDiJetResponse.C:83
 AddTaskEmcalDiJetResponse.C:84
 AddTaskEmcalDiJetResponse.C:85
 AddTaskEmcalDiJetResponse.C:86
 AddTaskEmcalDiJetResponse.C:87
 AddTaskEmcalDiJetResponse.C:88
 AddTaskEmcalDiJetResponse.C:89
 AddTaskEmcalDiJetResponse.C:90
 AddTaskEmcalDiJetResponse.C:91
 AddTaskEmcalDiJetResponse.C:92
 AddTaskEmcalDiJetResponse.C:93
 AddTaskEmcalDiJetResponse.C:94
 AddTaskEmcalDiJetResponse.C:95
 AddTaskEmcalDiJetResponse.C:96
 AddTaskEmcalDiJetResponse.C:97
 AddTaskEmcalDiJetResponse.C:98
 AddTaskEmcalDiJetResponse.C:99
 AddTaskEmcalDiJetResponse.C:100
 AddTaskEmcalDiJetResponse.C:101
 AddTaskEmcalDiJetResponse.C:102
 AddTaskEmcalDiJetResponse.C:103
 AddTaskEmcalDiJetResponse.C:104
 AddTaskEmcalDiJetResponse.C:105
 AddTaskEmcalDiJetResponse.C:106
 AddTaskEmcalDiJetResponse.C:107
 AddTaskEmcalDiJetResponse.C:108
 AddTaskEmcalDiJetResponse.C:109
 AddTaskEmcalDiJetResponse.C:110
 AddTaskEmcalDiJetResponse.C:111
 AddTaskEmcalDiJetResponse.C:112
 AddTaskEmcalDiJetResponse.C:113
 AddTaskEmcalDiJetResponse.C:114
 AddTaskEmcalDiJetResponse.C:115
 AddTaskEmcalDiJetResponse.C:116
 AddTaskEmcalDiJetResponse.C:117
 AddTaskEmcalDiJetResponse.C:118
 AddTaskEmcalDiJetResponse.C:119