ROOT logo
// $Id$

THashTable* GenerateFileTable(const char* list);

AliJetEmbeddingFromPYTHIATask* AddTaskJetEmbeddingFromPYTHIA(
  const char     *tracksName    = "Tracks",
  const char     *clusName      = "",
  const char     *cellsName     = "EMCALCells",
  const char     *MCPartName    = "",
  const char     *simpath       = "alien:///alice/sim/2012/LHC12a15e_fix/%d/%d/AOD149/%04d/AliAOD.root",
  Int_t           nPtHard       = 0,
  Double_t       *ptHardScaling = 0,
  const char     *aodTreeName   = "aodTree",
  const char     *aodTracksName = "tracks",
  const char     *aodClusName   = "",
  const char     *aodCellsName  = "emcalCells",
  const char     *aodMCPartName = "mcparticles",
  const char     *runperiod     = "lhc12a15e",
  Bool_t          includeNoITS  = kFALSE,
  Double_t        minCent       = -1,
  Double_t        maxCent       = -1,
  UInt_t          mask          = 0,
  Double_t        minJetPt      = 0,
  const Bool_t    copyArray     = kFALSE,  
  const Bool_t    makeQA        = kFALSE,
  const char     *fileTable     = "",
  const char     *taskName      = "JetEmbeddingFromPYTHIATask"
)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskJetEmbeddingFromPYTHIA", "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("AddTaskJetEmbeddingFromPYTHIA", "This task requires an input event handler");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  AliJetEmbeddingFromPYTHIATask *jetEmb = new AliJetEmbeddingFromPYTHIATask(taskName,makeQA);
  jetEmb->SetTracksName(tracksName);
  jetEmb->SetClusName(clusName);
  jetEmb->SetCellsName(cellsName);
  jetEmb->SetMCParticlesName(MCPartName);
  jetEmb->SetAODTreeName(aodTreeName);
  jetEmb->SetAODTracksName(aodTracksName);
  jetEmb->SetAODClusName(aodClusName);
  jetEmb->SetAODCellsName(aodCellsName);
  jetEmb->SetAODMCParticlesName(aodMCPartName);
  jetEmb->SetCentralityRange(minCent, maxCent);
  jetEmb->SetTriggerMask(mask);
  jetEmb->SetCopyArray(copyArray);
  jetEmb->SetJetMinPt(minJetPt);
  jetEmb->SetNClusters(1);
  jetEmb->SetMarkMC(0);

  if (strcmp(fileTable, "") != 0)
    jetEmb->SetFileTable(GenerateFileTable(fileTable));

  jetEmb->SetIncludeNoITS(includeNoITS);
  TString runPeriod(runperiod);
  runPeriod.ToLower();
  if (runPeriod == "lhc12a15e") {
    jetEmb->SetAODfilterBits(256,512);
  }
  else if (runPeriod == "lhc12a15a") {
    jetEmb->SetAODfilterBits(256,16);
  }
  else {
    if (!runPeriod.IsNull())
      ::Warning("AddTaskJetEmbeddingFromPYTHIA","Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
  }

  jetEmb->SetPYTHIAPath(simpath);

  if (nPtHard == 0 || ptHardScaling == 0) { // the pt hard bin scaling was not provided, use the default for LHC12a15e_fix AOD149
    ::Warning("AddTaskJetEmbeddingFromPYTHIA","The pT hard bin scaling has not been provided, will use the default for LHC12a15e_fix AOD149!", runPeriod.Data());
    nPtHard = 11;
    ptHardScaling = new Double_t[nPtHard];
    ptHardScaling [0]  = 0;
    ptHardScaling [1]  = 5.135193e-05;
    ptHardScaling [2]  = 5.859497e-06;
    ptHardScaling [3]  = 4.444755e-07;
    ptHardScaling [4]  = 4.293118e-08;
    ptHardScaling [5]  = 5.154750e-09;
    ptHardScaling [6]  = 6.958612e-10;
    ptHardScaling [7]  = 1.149828e-10;
    ptHardScaling [8]  = 2.520137e-11;
    ptHardScaling [9]  = 6.222240e-12;
    ptHardScaling [10] = 2.255832e-12;
  }
  jetEmb->SetPtHardBinScaling(nPtHard, ptHardScaling);

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

  mgr->AddTask(jetEmb);
    
  // Create containers for input/output
  mgr->ConnectInput(jetEmb, 0, mgr->GetCommonInputContainer());

  if (makeQA) {
    TString contName = taskName;
    contName += "_histos";
    AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
							  TList::Class(),
							  AliAnalysisManager::kOutputContainer,
							  "AnalysisResults.root");
    mgr->ConnectOutput(jetEmb, 1, outc);
  }

  return jetEmb;
}

THashTable* GenerateFileTable(const char* list)
{
  THashTable *table = new THashTable();

  TString myList = list;
  if (myList.Contains("alien:///")) {
    TFile::Cp(myList,"file:./list.txt");
    myList = "./list.txt";
  }

  // Open the input stream
  ifstream in;
  in.open(myList.Data());

  // Read the input list of files and add them to the chain
  TString line;
  while (in.good()) {
    in >> line;

    if (line.Length() == 0)
      continue;

    TObjString *aodFile = new TObjString(line);
    table->Add(aodFile);
  }

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