ROOT logo
AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA(
  const char*         containerSuffix         = "",
  Double_t            jetRadius               = 0.4,
  const char*         centralityType          = "V0A",
  Int_t               trigger                 = AliVEvent::kINT7,
  Bool_t              isPA                    = kTRUE,
  Bool_t              isMC                    = kFALSE,
  Bool_t              doJetProfileAnalysis    = kFALSE,
  Bool_t              doTrackcutAnalysis      = kFALSE,
  Bool_t              doJetAnalysis           = kTRUE,
  const char*         usedTracks              = "PicoTracks",
  Int_t               numberOfCentralityBins  = 20,
  Double_t            areaPercentage          = 0.6,
  Double_t            ktJetRadius             = 0.4,
  Double_t            trackBgrdConeR          = 0.6,
  Double_t            minJetTrackPt           = 0.150,
  Double_t            minEta                  = -0.9,
  Double_t            maxEta                  = +0.9,
  Double_t            minJetEta               = -0.5,
  Double_t            maxJetEta               = +0.5,
  Int_t               recombscheme            = 1,
  Bool_t              isEMCalTrain            = kFALSE
)
{
  cout << " ############ MACRO EXECUTION STARTED ############\n";
  // #### Detect the demanded trigger with its readable name
  TString triggerName(Form("Trigger_%i", trigger));
  if (trigger == AliVEvent::kAnyINT)
    triggerName = "kAnyINT";
  else if (trigger == AliVEvent::kAny)
    triggerName = "kAny";
  else if(trigger == AliVEvent::kINT7)
    triggerName = "kINT7";
  else if(trigger == AliVEvent::kMB)
    triggerName = "kMB";
  else if(trigger == AliVEvent::kEMC7)
    triggerName = "kEMC7";
  else if(trigger == AliVEvent::kEMCEJE)
    triggerName = "kEMCEJE";
  else if(trigger == AliVEvent::kEMCEGA)
    triggerName = "kEMCEGA";

  // #### Define manager and data container names
  AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
  if (!manager) {
    ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to.");
    return NULL;
  }

  TString containerNameSuffix("");

  if (strcmp(containerSuffix,""))
    containerNameSuffix = Form("_%s", containerSuffix);

  TString bgrdName("Background");
  TString myContName("");
  TString myContJPName("");
  TString myContTCName("");
  if(isMC)
  {
    bgrdName = Form("BackgroundR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContName = Form("AnalysisR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContJPName = Form("JetProfileR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContTCName = Form("TrackcutsR0%2.0f_%s_MC%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
  }
  else
  {
    bgrdName = Form("BackgroundR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContName = Form("AnalysisR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContJPName = Form("JetProfileR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
    myContTCName = Form("TrackcutsR0%2.0f_%s%s", jetRadius*100, triggerName.Data(), containerNameSuffix.Data());
  }

  if(doJetAnalysis)
  {
    // #### Add necessary jet finder tasks
    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
    AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,"",1,jetRadius,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // anti-kt
    AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(usedTracks,"",0,ktJetRadius,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // kt
    cout << " Jet finder tasks added: " <<  jetFinderTask << " + " <<  jetFinderTaskKT << endl;
    jetFinderTask->SelectCollisionCandidates(AliVEvent::kAny);
    jetFinderTaskKT->SelectCollisionCandidates(AliVEvent::kAny);

    // #### Define external rho task
    AliEmcalJetTask* jetFinderRho = AddTaskEmcalJet(usedTracks,"",1,0.4,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // anti-kt
    AliEmcalJetTask* jetFinderRhoKT = AddTaskEmcalJet(usedTracks,"",0,0.4,1,minJetTrackPt,0.300,0.005,recombscheme, "Jet", 0.0); // kt
    jetFinderRho->SelectCollisionCandidates(AliVEvent::kAny);
    jetFinderRhoKT->SelectCollisionCandidates(AliVEvent::kAny);
    cout << " Jet finder tasks (used for bgrd) added: " <<  jetFinderRho << " + " <<  jetFinderRhoKT << endl;
    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
    AliAnalysisTaskRhoSparse* rhotask = AddTaskRhoSparse(jetFinderRhoKT->GetName(), NULL, usedTracks, "", bgrdName.Data(), 0.4,"TPC", 0., 5., 0, 0,2,kFALSE,bgrdName.Data(),kTRUE);
    rhotask->SelectCollisionCandidates(AliVEvent::kAny);
    cout << " Background task added: " <<  rhotask << endl;
  }

  // #### Define analysis task
  AliAnalysisTaskChargedJetsPA *task = NULL;
  AliAnalysisDataContainer* contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));
  if(doJetProfileAnalysis)
    AliAnalysisDataContainer* contJetProfile = manager->CreateContainer(myContJPName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));
  if(doTrackcutAnalysis)
    AliAnalysisDataContainer* contTrackcuts = manager->CreateContainer(myContTCName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJets", AliAnalysisManager::GetCommonFileName()));

  if(doJetAnalysis)
  {
    task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA%s_%s_%s", containerNameSuffix.Data(), jetFinderTask->GetName(), triggerName.Data()), usedTracks, jetFinderTask->GetName(),jetFinderTaskKT->GetName(), doJetProfileAnalysis, doTrackcutAnalysis);
    task->SetExternalRhoTaskName(bgrdName.Data());
  }
  else
    task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA%s_%s", containerNameSuffix.Data(), triggerName.Data()), usedTracks, "","", doJetProfileAnalysis, doTrackcutAnalysis);

  cout << " Main task created: " <<  task << endl;


  // #### Task preferences
  task->SetIsPA(isPA);
  task->SetAnalyzeJetProfile(doJetProfileAnalysis);
  task->SetAnalyzeTrackcuts(doTrackcutAnalysis);
  task->SetAcceptanceEta(minEta,maxEta);
  task->SetAcceptanceJetEta(minJetEta,maxJetEta);
  task->SetSignalJetRadius(jetRadius);
  task->SetBackgroundJetRadius(jetRadius);
  task->SetSignalJetMinArea(areaPercentage*jetRadius*jetRadius*TMath::Pi());
  task->SetRandConeRadius(jetRadius);
  task->SelectCollisionCandidates(trigger);
  task->SetCentralityType(centralityType);
  task->SetNumberOfCentralityBins(numberOfCentralityBins);
  task->SetDoJetAnalysis(doJetAnalysis);
  // for the case of pp analysis, set special settings
  if(!isPA)
  {
    task->SetCentralityToOne(1);
    task->SetUsePileUpCut(0);
    task->SetUseDefaultVertexCut(kFALSE);
    cout << " Using pp settings: No pileup correction, simple vertex correction, centrality=1" << endl;
  }
  cout << " Settings set." << endl;

  // #### Add analysis task
  manager->AddTask(task);
  cout << " Task added to manager" << endl;
  manager->ConnectInput(task, 0, manager->GetCommonInputContainer());
  cout << " Input connected, common input container: " << manager->GetCommonInputContainer() << endl;
  manager->ConnectOutput(task, 1, contHistos);
  cout << " Output connected, contHistos: " << contHistos << endl;

  if(doJetProfileAnalysis)
  {
    manager->ConnectOutput(task, 2, contJetProfile);
  }
  if(doTrackcutAnalysis && !doJetProfileAnalysis)
  {
    manager->ConnectOutput(task, 2, contTrackcuts);
  }
  else if(doTrackcutAnalysis && doJetProfileAnalysis)
  {
    manager->ConnectOutput(task, 3, contTrackcuts);
  }

  if(isEMCalTrain)
    RequestMemory(task,600*1024);

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