ROOT logo
//=============================================================================
//
// *** AddTaskFemto.C ***
//
// This macro initialize a complete AnalysisTask object for femtoscopy.
//
//=============================================================================

AliAnalysisTaskFemto *AddTaskFemto(TString *configMacroName="ConfigFemtoAnalysis.C", TString containerName="femtolist", const char *configMacroParameters="")
{
// Creates a proton analysis task and adds it to the analysis manager.
  
  // A. Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskFemto", "No analysis manager to connect to.");
    return NULL;
  }  

  // B. Check the analysis type using the event handlers connected to the analysis
  //    manager. The availability of MC handler cann also be checked here.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskFemto", "This task requires an input event handler");
    return NULL;
  }  
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  cout << "Found " <<type << " event handler" << endl;

  // C. Create the task, add it to manager.
  //===========================================================================
//  gSystem->SetIncludePath("-I$ROOTSYS/include  -I./PWG2AOD/AOD -I./PWG2femtoscopy/FEMTOSCOPY/AliFemto -I./PWG2femtoscopyUser/FEMTOSCOPY/AliFemtoUser -I$ALICE_ROOT/include");

  if (TProofMgr::GetListOfManagers()->GetEntries()) {
//     if (dynamic_cast<TProofLite *> gProof) {
//       char *macrocommand[10000];
//       sprintf(macrocommand, ".L %s", configMacroName);
//       gProof->Exec(macrocommand);
//     }
//     else
    gProof->Load(configMacroName);
  }  
  //  gROOT->LoadMacro("ConfigFemtoAnalysis.C++");

  AliAnalysisTaskFemto *taskfemto = new AliAnalysisTaskFemto("TaskFemto",configMacroName,Form("%s",configMacroParameters));
  mgr->AddTask(taskfemto);

  // D. Configure the analysis task. Extra parameters can be used via optional
  // arguments of the AddTaskXXX() function.
  //===========================================================================
  
  // E. Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================
  TString outputfile = AliAnalysisManager::GetCommonFileName();  
  outputfile += ":PWG2FEMTO";
  AliAnalysisDataContainer *cout_femto  = mgr->CreateContainer(containerName,  TList::Class(),
  							       AliAnalysisManager::kOutputContainer,outputfile);


   mgr->ConnectInput(taskfemto, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(taskfemto, 0, cout_femto);

   // Return task pointer at the end
   return taskfemto;
}
 AddTaskFemtoConfigOnGrid.C:1
 AddTaskFemtoConfigOnGrid.C:2
 AddTaskFemtoConfigOnGrid.C:3
 AddTaskFemtoConfigOnGrid.C:4
 AddTaskFemtoConfigOnGrid.C:5
 AddTaskFemtoConfigOnGrid.C:6
 AddTaskFemtoConfigOnGrid.C:7
 AddTaskFemtoConfigOnGrid.C:8
 AddTaskFemtoConfigOnGrid.C:9
 AddTaskFemtoConfigOnGrid.C:10
 AddTaskFemtoConfigOnGrid.C:11
 AddTaskFemtoConfigOnGrid.C:12
 AddTaskFemtoConfigOnGrid.C:13
 AddTaskFemtoConfigOnGrid.C:14
 AddTaskFemtoConfigOnGrid.C:15
 AddTaskFemtoConfigOnGrid.C:16
 AddTaskFemtoConfigOnGrid.C:17
 AddTaskFemtoConfigOnGrid.C:18
 AddTaskFemtoConfigOnGrid.C:19
 AddTaskFemtoConfigOnGrid.C:20
 AddTaskFemtoConfigOnGrid.C:21
 AddTaskFemtoConfigOnGrid.C:22
 AddTaskFemtoConfigOnGrid.C:23
 AddTaskFemtoConfigOnGrid.C:24
 AddTaskFemtoConfigOnGrid.C:25
 AddTaskFemtoConfigOnGrid.C:26
 AddTaskFemtoConfigOnGrid.C:27
 AddTaskFemtoConfigOnGrid.C:28
 AddTaskFemtoConfigOnGrid.C:29
 AddTaskFemtoConfigOnGrid.C:30
 AddTaskFemtoConfigOnGrid.C:31
 AddTaskFemtoConfigOnGrid.C:32
 AddTaskFemtoConfigOnGrid.C:33
 AddTaskFemtoConfigOnGrid.C:34
 AddTaskFemtoConfigOnGrid.C:35
 AddTaskFemtoConfigOnGrid.C:36
 AddTaskFemtoConfigOnGrid.C:37
 AddTaskFemtoConfigOnGrid.C:38
 AddTaskFemtoConfigOnGrid.C:39
 AddTaskFemtoConfigOnGrid.C:40
 AddTaskFemtoConfigOnGrid.C:41
 AddTaskFemtoConfigOnGrid.C:42
 AddTaskFemtoConfigOnGrid.C:43
 AddTaskFemtoConfigOnGrid.C:44
 AddTaskFemtoConfigOnGrid.C:45
 AddTaskFemtoConfigOnGrid.C:46
 AddTaskFemtoConfigOnGrid.C:47
 AddTaskFemtoConfigOnGrid.C:48
 AddTaskFemtoConfigOnGrid.C:49
 AddTaskFemtoConfigOnGrid.C:50
 AddTaskFemtoConfigOnGrid.C:51
 AddTaskFemtoConfigOnGrid.C:52
 AddTaskFemtoConfigOnGrid.C:53
 AddTaskFemtoConfigOnGrid.C:54
 AddTaskFemtoConfigOnGrid.C:55
 AddTaskFemtoConfigOnGrid.C:56
 AddTaskFemtoConfigOnGrid.C:57
 AddTaskFemtoConfigOnGrid.C:58
 AddTaskFemtoConfigOnGrid.C:59
 AddTaskFemtoConfigOnGrid.C:60
 AddTaskFemtoConfigOnGrid.C:61
 AddTaskFemtoConfigOnGrid.C:62
 AddTaskFemtoConfigOnGrid.C:63
 AddTaskFemtoConfigOnGrid.C:64
 AddTaskFemtoConfigOnGrid.C:65
 AddTaskFemtoConfigOnGrid.C:66
 AddTaskFemtoConfigOnGrid.C:67
 AddTaskFemtoConfigOnGrid.C:68