ROOT logo
// $Id$

AliAnalysisTaskEmcalJetSpectraMECpA* AddTaskEmcalJetSpectraMECpA(
   const char *outfilename    = "AnalysisOutput.root",
   const char *nRhosCh        = "rhoCh",
   const char *nRhosChEm      = "rhoChEm",
   const char *nRhosEm        = "rhoEm",
   const Double_t scale       = 1.0,
   const Double_t radius      = 0.2,
   const Double_t minPhi      = 1.8,
   const Double_t maxPhi      = 2.74,
   const Double_t minEta      = -0.3,
   const Double_t maxEta      = 0.3,
   const char* usedTracks     = "PicoTracks",
   const char* outClusName    = "caloClustersCorr",
   const Double_t minTrackPt  = 0.15,
   const Double_t minClusterPt = 0.30,
   const char *CentEst         = "V0A",
   const Int_t type            =1
   )
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTasEmcalJetSpectraMECpA", "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("AddTaskEmcalJetSpectraMECpA", "This task requires an input event handler");
    return NULL;
  }
  
  //Run the jet finder and rho tasks first

  // Some constants for the jet finders
  const Int_t cKT                 = 0;
  const Int_t cANTIKT             = 1;
  const Int_t cFULLJETS           = 0;
  const Int_t cCHARGEDJETS        = 1;
  const Int_t cNEUTRALJETS        = 2;

  UInt_t typeTPC                = AliAnalysisTaskEmcal::kTPC;
  UInt_t typeEMC                = AliAnalysisTaskEmcal::kEMCAL;

    
  float AreaCut = 0.6*radius*radius*TMath::Pi();

  TF1 *sfunc=new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
  sfunc->SetParameter(0,0.0);
  sfunc->SetParameter(1,0.0);
  sfunc->SetParameter(2,scale);


  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");

  //const char *nJets;
  TString nJets("");
  TString nJetsCh("");

  TString scaledname(Form("%s_Scaled", nRhosCh));
  TString newrhoname(Form("%s_All", nRhosCh));
  //TString scaledname(Form("%s_Scaled", newrhoname));

  
  if(!(usedTracks=="")){
    cout << "USEDTRACKS EXISTS" << usedTracks <<endl;
    AliEmcalJetTask* jetFinderTaskChBack = AddTaskEmcalJet(usedTracks,"",cKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt);

    AliEmcalJetTask* jetFinderTaskChBackall = AddTaskEmcalJet(usedTracks,"",cKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt,0.01,"Jets_allpt");
    jetFinderTaskChBackall->SetMinJetPt(0);

    AliEmcalJetTask* jetFinderTaskChSig = AddTaskEmcalJet(usedTracks,"",cANTIKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt);

    AliEmcalJetTask* jetFinderTaskChEmBack = AddTaskEmcalJet(usedTracks,outClusName,cKT,radius,cFULLJETS,minTrackPt, minClusterPt);
    jetFinderTaskChEmBack->SetMinJetPt(0);

  AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,outClusName,cANTIKT,radius, cFULLJETS,minTrackPt,minClusterPt);

  AliAnalysisTaskRhoSparse *rhochtask = AddTaskRhoSparse(jetFinderTaskChBack->GetName(),jetFinderTaskChSig->GetName(),usedTracks,outClusName,nRhosCh,radius,typeTPC,0.01,0,0,sfunc,0,kTRUE,nRhosCh);
  rhochtask->SetCentralityEstimator(CentEst);

  AliAnalysisTaskRhoSparse *rhochalltask = AddTaskRhoSparse(jetFinderTaskChBackall->GetName(),jetFinderTaskChSig->GetName(),usedTracks,outClusName,newrhoname,radius,0,0.0,0,0,sfunc,0,kTRUE,newrhoname);
  rhochtask->SetCentralityEstimator(CentEst);


  AliAnalysisTaskRhoSparse *rhochemtask = AddTaskRhoSparse(jetFinderTaskChEmBack->GetName(),jetFinderTask->GetName(),usedTracks,outClusName,nRhosChEm,radius,typeEMC,0.01,0,0,0,0,kTRUE,nRhosChEm);
  rhochemtask->SetCentralityEstimator(CentEst);

  //nJets=jetFinderTask->GetName();
  nJets+=jetFinderTask->GetName();
  nJetsCh+=jetFinderTaskChSig->GetName();

  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskDeltaPt.C");

  TString deltaname(Form("DeltaPt_%s_Scaled", nRhosCh));
  AliAnalysisTaskDeltaPt* deltapt = AddTaskDeltaPt(usedTracks,outClusName,nJets,"","","","","",scaledname,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kEMCAL,deltaname);
  deltapt->SetCentralityEstimator(CentEst);

  TString chdeltaname(Form("DeltaPt_%s", nRhosCh));
  AliAnalysisTaskDeltaPt* deltaptch = AddTaskDeltaPt(usedTracks,"",nJetsCh,"","","","","",nRhosCh,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kTPC,chdeltaname);
  deltaptch->SetCentralityEstimator(CentEst);

  TString emcdeltaname(Form("DeltaPt_%s", nRhosChEm));
  AliAnalysisTaskDeltaPt* deltaptEMC = AddTaskDeltaPt(usedTracks,outClusName,nJets,"","","","","",nRhosChEm,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kEMCAL,emcdeltaname);
  deltaptEMC->SetCentralityEstimator(CentEst);

  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskScale.C");


  Int_t radlabel=(Int_t)floor(radius*100+0.5);
  Int_t mincluslabel=(Int_t)floor(minClusterPt*1000+0.5);
  Int_t mintracklabel=(Int_t)floor(minTrackPt*1000+0.5);
  TString scalename(Form("Scale_R0%d", radlabel));

  AliAnalysisTaskScale* scaletask = AddTaskScale(usedTracks,outClusName,minTrackPt,minClusterPt,scalename);
  scaletask->SetCentralityEstimator(CentEst);
  scaletask->SetScaleFunction(sfunc);

  
  }

  cout << "Running non charged jet finders..." <<endl;
  AliEmcalJetTask* jetFinderTaskEm = AddTaskEmcalJet("",outClusName,cANTIKT,radius,cNEUTRALJETS,minTrackPt,minClusterPt);

  AliEmcalJetTask* jetFinderTaskEmBack = AddTaskEmcalJet("",outClusName,cKT,radius,cNEUTRALJETS,minTrackPt, minClusterPt);

  cout << "Running non charged rho task..." <<endl;

  AliAnalysisTaskRhoSparse *rhoemtask = AddTaskRhoSparse(jetFinderTaskEmBack->GetName(),jetFinderTaskEm->GetName(),usedTracks,outClusName,nRhosEm,radius,0,0.01,0,0,0,1,kTRUE,nRhosEm);
  rhoemtask->SetCentralityEstimator(CentEst);

  if(usedTracks=="") nJets +=jetFinderTaskEm->GetName();





  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------


  cout << "Ready to run my task..." << nJets <<endl;
  
  TString name(Form("SpectraMECpA_%s", nJets.Data()));
  AliAnalysisTaskEmcalJetSpectraMECpA *spectratask = new AliAnalysisTaskEmcalJetSpectraMECpA(name);
  spectratask->SetJetsName(nJets.Data());
  spectratask->SetCentralityEstimator(CentEst);

  if(type==0){
    spectratask->SetAnaType(typeTPC);
    spectratask->SetRhoName(nRhosCh);
  }else{
    spectratask->SetAnaType(typeEMC);
    if(!(usedTracks=="")) spectratask->SetRhoName(scaledname);
    else spectratask->SetRhoName(nRhosEm);
  }
  spectratask->SetJetPhiLimits(minPhi,maxPhi);
  spectratask->SetJetEtaLimits(minEta,maxEta);
  spectratask->SetJetAreaCut(AreaCut);
  spectratask->SetTracksName(usedTracks);

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


  mgr->AddTask(spectratask);

  // Create containers for input/output
  mgr->ConnectInput (spectratask, 0, mgr->GetCommonInputContainer());
  AliAnalysisDataContainer *cospectra = mgr->CreateContainer(name,
                                                           TList::Class(),
                                                           AliAnalysisManager::kOutputContainer,
                                                           outfilename);
  mgr->ConnectOutput(spectratask,1,cospectra);



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