ROOT logo
AliEmcalJetTask* AddTaskEmcalJet(
  const UInt_t type           = AliEmcalJetTask::kAKT | AliEmcalJetTask::kFullJet | AliEmcalJetTask::kR040Jet,
  const char *nTracks         = "Tracks",
  const char *nClusters       = "CaloClusters",
  const Double_t minTrPt      = 0.15,
  const Double_t minClPt      = 0.30,
  const Double_t ghostArea    = 0.005,
  const Double_t radius       = 0.4,
  const Int_t recombScheme    = 1,
  const char *tag             = "Jet",
  const Double_t minJetPt     = 0.,
  const Bool_t selectPhysPrim = kFALSE,
  const Bool_t lockTask       = kTRUE
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskAliEmcalJet", "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("AddTaskAliEmcalJet", "This task requires an input event handler");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  char *algoString;
  if ((type & AliEmcalJetTask::kKT) != 0) {
    algoString = "KT";
    //    minJetPt = 0.1;
  } else if ((type & AliEmcalJetTask::kAKT) != 0) {
    algoString = "AKT";
    //    minJetPt = 1.0;
  }

  char *typeString;
  if ((type & AliEmcalJetTask::kFullJet) != 0)
    typeString = "Full";
  else if ((type & AliEmcalJetTask::kChargedJet) != 0)
    typeString = "Charged";
  else if ((type & AliEmcalJetTask::kNeutralJet) != 0)
    typeString = "Neutral";

  char radiusString[200];
  if ((type & AliEmcalJetTask::kR020Jet) != 0)
    sprintf(radiusString,"R020");
  else if ((type & AliEmcalJetTask::kR030Jet) != 0)
    sprintf(radiusString,"R030");
  else if ((type & AliEmcalJetTask::kR040Jet) != 0)
    sprintf(radiusString,"R040");
  else
    sprintf(radiusString,"R0%2.0f",radius*100.0);

  char pTString[200];
  if (minTrPt==0)
    sprintf(pTString,"pT0000");
  else if (minTrPt<1.0)
    sprintf(pTString,"pT0%3.0f",minTrPt*1000.0);
  else if (minTrPt>=1.0)
    sprintf(pTString,"pT%4.0f",minTrPt*1000.0);

  char ETString[200];
  if (minClPt==0)
    sprintf(ETString,"ET0000");
  else if (minClPt<1.0)
    sprintf(ETString,"ET0%3.0f",minClPt*1000.0);
  else if (minClPt>=1.0)
    sprintf(ETString,"ET%4.0f",minClPt*1000.0);  

  char recombSchemeString[200];
  if(recombScheme==0)
    sprintf(recombSchemeString,"%s","E_scheme");
  else if(recombScheme==1)
    sprintf(recombSchemeString,"%s","pt_scheme");
  else if(recombScheme==2)
    sprintf(recombSchemeString,"%s","pt2_scheme");
  else if(recombScheme==3)
    sprintf(recombSchemeString,"%s","Et_scheme");
  else if(recombScheme==4)
    sprintf(recombSchemeString,"%s","Et2_scheme");
  else if(recombScheme==5)
    sprintf(recombSchemeString,"%s","BIpt_scheme");
  else if(recombScheme==6)
    sprintf(recombSchemeString,"%s","BIpt2_scheme");
  else if(recombScheme==99)
    sprintf(recombSchemeString,"%s","ext_scheme");
  else {
    ::Error("AddTaskAliEmcalJet", "Recombination scheme not recognized.");
    return NULL;
  }

  TString name;
  if (*nTracks && *nClusters)
    name = TString(Form("%s_%s%s%s_%s_%s_%s_%s_%s",
                        tag,algoString,typeString,radiusString,nTracks,pTString,nClusters,ETString,recombSchemeString));
  else if (!*nClusters)
    name = TString(Form("%s_%s%s%s_%s_%s_%s",
                        tag,algoString,typeString,radiusString,nTracks,pTString,recombSchemeString));
  else if (!*nTracks)
    name = TString(Form("%s_%s%s%s_%s_%s_%s",
                        tag,algoString,typeString,radiusString,nClusters,ETString,recombSchemeString));

  std::cout << "Jet task name: " << name.Data() << std::endl;
 
  AliEmcalJetTask* mgrTask = mgr->GetTask(name.Data());
  if (mgrTask)
    return mgrTask;  

  AliEmcalJetTask* jetTask = new AliEmcalJetTask(name);
  jetTask->SetTracksName(nTracks);
  jetTask->SetClusName(nClusters);
  jetTask->SetJetsName(name);
  jetTask->SetJetType(type);
  jetTask->SetMinJetTrackPt(minTrPt);
  jetTask->SetMinJetClusPt(minClPt);
  jetTask->SetMinJetPt(minJetPt);
  if ((type & (AliEmcalJetTask::kRX1Jet|AliEmcalJetTask::kRX2Jet|AliEmcalJetTask::kRX3Jet)) != 0)
    jetTask->SetRadius(radius);
  jetTask->SetGhostArea(ghostArea);
  jetTask->SetRecombScheme(recombScheme);
  jetTask->SelectPhysicalPrimaries(selectPhysPrim);
  if (lockTask) jetTask->SetLocked();

  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------

  mgr->AddTask(jetTask);
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer()  ;
  mgr->ConnectInput  (jetTask, 0, cinput);

  return jetTask;
}


AliEmcalJetTask* AddTaskEmcalJet(
  const char *nTracks        = "Tracks",
  const char *nClusters      = "CaloClusters",
  const Int_t algo           = 1,
  const Double_t radius      = 0.4,
  const Int_t type           = 0,
  const Double_t minTrPt     = 0.15,
  const Double_t minClPt     = 0.30,
  const Double_t ghostArea   = 0.005,
  const Int_t recombScheme   = 1,
  const char *tag            = "Jet",
  const Double_t minJetPt    = 0.,
  const Bool_t selectPhysPrim = kFALSE,
  const Bool_t lockTask       = kTRUE
)
{  
  UInt_t jetType = 0;

  if (algo == 0) 
    jetType |= AliEmcalJetTask::kKT; 
  else 
    jetType |= AliEmcalJetTask::kAKT;

  if (type==0)
    jetType |= AliEmcalJetTask::kFullJet; 
  else if (type==1) 
    jetType |= AliEmcalJetTask::kChargedJet; 
  else if (type==2) 
    jetType |= AliEmcalJetTask::kNeutralJet;

  if (radius==0.2) 
    jetType |= AliEmcalJetTask::kR020Jet; 
  else if (radius==0.3) 
    jetType |= AliEmcalJetTask::kR030Jet;
  else if (radius==0.4) 
    jetType |= AliEmcalJetTask::kR040Jet;
  else
    jetType |= AliEmcalJetTask::kRX1Jet;

  if (ghostArea<=0) {
    ::Error("AddTaskEmcalJet","Ghost area set to 0, check your settings (try 0.005)");
    return NULL;
  }

  return AddTaskEmcalJet(jetType, nTracks, nClusters, minTrPt, minClPt, ghostArea, radius, recombScheme, tag, minJetPt, selectPhysPrim, lockTask);
}
 AddTaskEmcalJet.C:1
 AddTaskEmcalJet.C:2
 AddTaskEmcalJet.C:3
 AddTaskEmcalJet.C:4
 AddTaskEmcalJet.C:5
 AddTaskEmcalJet.C:6
 AddTaskEmcalJet.C:7
 AddTaskEmcalJet.C:8
 AddTaskEmcalJet.C:9
 AddTaskEmcalJet.C:10
 AddTaskEmcalJet.C:11
 AddTaskEmcalJet.C:12
 AddTaskEmcalJet.C:13
 AddTaskEmcalJet.C:14
 AddTaskEmcalJet.C:15
 AddTaskEmcalJet.C:16
 AddTaskEmcalJet.C:17
 AddTaskEmcalJet.C:18
 AddTaskEmcalJet.C:19
 AddTaskEmcalJet.C:20
 AddTaskEmcalJet.C:21
 AddTaskEmcalJet.C:22
 AddTaskEmcalJet.C:23
 AddTaskEmcalJet.C:24
 AddTaskEmcalJet.C:25
 AddTaskEmcalJet.C:26
 AddTaskEmcalJet.C:27
 AddTaskEmcalJet.C:28
 AddTaskEmcalJet.C:29
 AddTaskEmcalJet.C:30
 AddTaskEmcalJet.C:31
 AddTaskEmcalJet.C:32
 AddTaskEmcalJet.C:33
 AddTaskEmcalJet.C:34
 AddTaskEmcalJet.C:35
 AddTaskEmcalJet.C:36
 AddTaskEmcalJet.C:37
 AddTaskEmcalJet.C:38
 AddTaskEmcalJet.C:39
 AddTaskEmcalJet.C:40
 AddTaskEmcalJet.C:41
 AddTaskEmcalJet.C:42
 AddTaskEmcalJet.C:43
 AddTaskEmcalJet.C:44
 AddTaskEmcalJet.C:45
 AddTaskEmcalJet.C:46
 AddTaskEmcalJet.C:47
 AddTaskEmcalJet.C:48
 AddTaskEmcalJet.C:49
 AddTaskEmcalJet.C:50
 AddTaskEmcalJet.C:51
 AddTaskEmcalJet.C:52
 AddTaskEmcalJet.C:53
 AddTaskEmcalJet.C:54
 AddTaskEmcalJet.C:55
 AddTaskEmcalJet.C:56
 AddTaskEmcalJet.C:57
 AddTaskEmcalJet.C:58
 AddTaskEmcalJet.C:59
 AddTaskEmcalJet.C:60
 AddTaskEmcalJet.C:61
 AddTaskEmcalJet.C:62
 AddTaskEmcalJet.C:63
 AddTaskEmcalJet.C:64
 AddTaskEmcalJet.C:65
 AddTaskEmcalJet.C:66
 AddTaskEmcalJet.C:67
 AddTaskEmcalJet.C:68
 AddTaskEmcalJet.C:69
 AddTaskEmcalJet.C:70
 AddTaskEmcalJet.C:71
 AddTaskEmcalJet.C:72
 AddTaskEmcalJet.C:73
 AddTaskEmcalJet.C:74
 AddTaskEmcalJet.C:75
 AddTaskEmcalJet.C:76
 AddTaskEmcalJet.C:77
 AddTaskEmcalJet.C:78
 AddTaskEmcalJet.C:79
 AddTaskEmcalJet.C:80
 AddTaskEmcalJet.C:81
 AddTaskEmcalJet.C:82
 AddTaskEmcalJet.C:83
 AddTaskEmcalJet.C:84
 AddTaskEmcalJet.C:85
 AddTaskEmcalJet.C:86
 AddTaskEmcalJet.C:87
 AddTaskEmcalJet.C:88
 AddTaskEmcalJet.C:89
 AddTaskEmcalJet.C:90
 AddTaskEmcalJet.C:91
 AddTaskEmcalJet.C:92
 AddTaskEmcalJet.C:93
 AddTaskEmcalJet.C:94
 AddTaskEmcalJet.C:95
 AddTaskEmcalJet.C:96
 AddTaskEmcalJet.C:97
 AddTaskEmcalJet.C:98
 AddTaskEmcalJet.C:99
 AddTaskEmcalJet.C:100
 AddTaskEmcalJet.C:101
 AddTaskEmcalJet.C:102
 AddTaskEmcalJet.C:103
 AddTaskEmcalJet.C:104
 AddTaskEmcalJet.C:105
 AddTaskEmcalJet.C:106
 AddTaskEmcalJet.C:107
 AddTaskEmcalJet.C:108
 AddTaskEmcalJet.C:109
 AddTaskEmcalJet.C:110
 AddTaskEmcalJet.C:111
 AddTaskEmcalJet.C:112
 AddTaskEmcalJet.C:113
 AddTaskEmcalJet.C:114
 AddTaskEmcalJet.C:115
 AddTaskEmcalJet.C:116
 AddTaskEmcalJet.C:117
 AddTaskEmcalJet.C:118
 AddTaskEmcalJet.C:119
 AddTaskEmcalJet.C:120
 AddTaskEmcalJet.C:121
 AddTaskEmcalJet.C:122
 AddTaskEmcalJet.C:123
 AddTaskEmcalJet.C:124
 AddTaskEmcalJet.C:125
 AddTaskEmcalJet.C:126
 AddTaskEmcalJet.C:127
 AddTaskEmcalJet.C:128
 AddTaskEmcalJet.C:129
 AddTaskEmcalJet.C:130
 AddTaskEmcalJet.C:131
 AddTaskEmcalJet.C:132
 AddTaskEmcalJet.C:133
 AddTaskEmcalJet.C:134
 AddTaskEmcalJet.C:135
 AddTaskEmcalJet.C:136
 AddTaskEmcalJet.C:137
 AddTaskEmcalJet.C:138
 AddTaskEmcalJet.C:139
 AddTaskEmcalJet.C:140
 AddTaskEmcalJet.C:141
 AddTaskEmcalJet.C:142
 AddTaskEmcalJet.C:143
 AddTaskEmcalJet.C:144
 AddTaskEmcalJet.C:145
 AddTaskEmcalJet.C:146
 AddTaskEmcalJet.C:147
 AddTaskEmcalJet.C:148
 AddTaskEmcalJet.C:149
 AddTaskEmcalJet.C:150
 AddTaskEmcalJet.C:151
 AddTaskEmcalJet.C:152
 AddTaskEmcalJet.C:153
 AddTaskEmcalJet.C:154
 AddTaskEmcalJet.C:155
 AddTaskEmcalJet.C:156
 AddTaskEmcalJet.C:157
 AddTaskEmcalJet.C:158
 AddTaskEmcalJet.C:159
 AddTaskEmcalJet.C:160
 AddTaskEmcalJet.C:161
 AddTaskEmcalJet.C:162
 AddTaskEmcalJet.C:163
 AddTaskEmcalJet.C:164
 AddTaskEmcalJet.C:165
 AddTaskEmcalJet.C:166
 AddTaskEmcalJet.C:167
 AddTaskEmcalJet.C:168
 AddTaskEmcalJet.C:169
 AddTaskEmcalJet.C:170
 AddTaskEmcalJet.C:171
 AddTaskEmcalJet.C:172
 AddTaskEmcalJet.C:173
 AddTaskEmcalJet.C:174
 AddTaskEmcalJet.C:175
 AddTaskEmcalJet.C:176
 AddTaskEmcalJet.C:177
 AddTaskEmcalJet.C:178
 AddTaskEmcalJet.C:179
 AddTaskEmcalJet.C:180
 AddTaskEmcalJet.C:181
 AddTaskEmcalJet.C:182
 AddTaskEmcalJet.C:183
 AddTaskEmcalJet.C:184
 AddTaskEmcalJet.C:185
 AddTaskEmcalJet.C:186
 AddTaskEmcalJet.C:187
 AddTaskEmcalJet.C:188
 AddTaskEmcalJet.C:189
 AddTaskEmcalJet.C:190
 AddTaskEmcalJet.C:191
 AddTaskEmcalJet.C:192
 AddTaskEmcalJet.C:193
 AddTaskEmcalJet.C:194