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

AliAnalysisTaskFemto *AddTaskFemtoAzimtuhalHBT(TString configMacroName, const char *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("AddTaskFemtoAzimtuhalHBT", "No analysis manager to connect to.");
    return NULL;
  }  
	TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
	Bool_t useEtaGap=kFALSE;
	Float_t etaGap=0.;
	Bool_t posTPCAOD=kFALSE;
	TString containername = "EPStat_ttd";

  // 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("AddTaskFemtoAzimtuhalHBT", "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;

	//gROOT->LoadMacro("AliEPSelectionTask3.cxx+g");
	//gROOT->LoadMacro("AddTaskEventplane.C");
	//AliEPSelectionTask3* epsel = AddTaskEventplane();
	AliEPSelectionTask *eventplaneTask = new AliEPSelectionTask("EventplaneSelection4");
	eventplaneTask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kSemiCentral | AliVEvent::kCentral);
	if (inputDataType == "AOD"){
		eventplaneTask->SetInput("AOD");
	}
	eventplaneTask->SetTrackType("TPC");
	eventplaneTask->SetUsePtWeight();
	eventplaneTask->SetUsePhiWeight();
	eventplaneTask->SetSaveTrackContribution();
	if(useEtaGap){
		eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask3::kEta); 
		eventplaneTask->SetEtaGap(etaGap); 
	}
	if(posTPCAOD){
		eventplaneTask->SetPersonalAODtrackCuts(128,0.,0.8,0.15,20.);
		eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask3::kRandom);
	}
	
	
	mgr->AddTask(eventplaneTask);
	
	
	
	
  // 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","$ALICE_ROOT/"+configMacroName,configMacroParameters,kFALSE);
  	//taskfemto->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral) ;

	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);
   AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(containername, TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
   
   mgr->ConnectInput(eventplaneTask, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(eventplaneTask,1,coutput1);

   // Return task pointer at the end
   return taskfemto;
}
 AddTaskFemtoAzimtuhalHBT.C:1
 AddTaskFemtoAzimtuhalHBT.C:2
 AddTaskFemtoAzimtuhalHBT.C:3
 AddTaskFemtoAzimtuhalHBT.C:4
 AddTaskFemtoAzimtuhalHBT.C:5
 AddTaskFemtoAzimtuhalHBT.C:6
 AddTaskFemtoAzimtuhalHBT.C:7
 AddTaskFemtoAzimtuhalHBT.C:8
 AddTaskFemtoAzimtuhalHBT.C:9
 AddTaskFemtoAzimtuhalHBT.C:10
 AddTaskFemtoAzimtuhalHBT.C:11
 AddTaskFemtoAzimtuhalHBT.C:12
 AddTaskFemtoAzimtuhalHBT.C:13
 AddTaskFemtoAzimtuhalHBT.C:14
 AddTaskFemtoAzimtuhalHBT.C:15
 AddTaskFemtoAzimtuhalHBT.C:16
 AddTaskFemtoAzimtuhalHBT.C:17
 AddTaskFemtoAzimtuhalHBT.C:18
 AddTaskFemtoAzimtuhalHBT.C:19
 AddTaskFemtoAzimtuhalHBT.C:20
 AddTaskFemtoAzimtuhalHBT.C:21
 AddTaskFemtoAzimtuhalHBT.C:22
 AddTaskFemtoAzimtuhalHBT.C:23
 AddTaskFemtoAzimtuhalHBT.C:24
 AddTaskFemtoAzimtuhalHBT.C:25
 AddTaskFemtoAzimtuhalHBT.C:26
 AddTaskFemtoAzimtuhalHBT.C:27
 AddTaskFemtoAzimtuhalHBT.C:28
 AddTaskFemtoAzimtuhalHBT.C:29
 AddTaskFemtoAzimtuhalHBT.C:30
 AddTaskFemtoAzimtuhalHBT.C:31
 AddTaskFemtoAzimtuhalHBT.C:32
 AddTaskFemtoAzimtuhalHBT.C:33
 AddTaskFemtoAzimtuhalHBT.C:34
 AddTaskFemtoAzimtuhalHBT.C:35
 AddTaskFemtoAzimtuhalHBT.C:36
 AddTaskFemtoAzimtuhalHBT.C:37
 AddTaskFemtoAzimtuhalHBT.C:38
 AddTaskFemtoAzimtuhalHBT.C:39
 AddTaskFemtoAzimtuhalHBT.C:40
 AddTaskFemtoAzimtuhalHBT.C:41
 AddTaskFemtoAzimtuhalHBT.C:42
 AddTaskFemtoAzimtuhalHBT.C:43
 AddTaskFemtoAzimtuhalHBT.C:44
 AddTaskFemtoAzimtuhalHBT.C:45
 AddTaskFemtoAzimtuhalHBT.C:46
 AddTaskFemtoAzimtuhalHBT.C:47
 AddTaskFemtoAzimtuhalHBT.C:48
 AddTaskFemtoAzimtuhalHBT.C:49
 AddTaskFemtoAzimtuhalHBT.C:50
 AddTaskFemtoAzimtuhalHBT.C:51
 AddTaskFemtoAzimtuhalHBT.C:52
 AddTaskFemtoAzimtuhalHBT.C:53
 AddTaskFemtoAzimtuhalHBT.C:54
 AddTaskFemtoAzimtuhalHBT.C:55
 AddTaskFemtoAzimtuhalHBT.C:56
 AddTaskFemtoAzimtuhalHBT.C:57
 AddTaskFemtoAzimtuhalHBT.C:58
 AddTaskFemtoAzimtuhalHBT.C:59
 AddTaskFemtoAzimtuhalHBT.C:60
 AddTaskFemtoAzimtuhalHBT.C:61
 AddTaskFemtoAzimtuhalHBT.C:62
 AddTaskFemtoAzimtuhalHBT.C:63
 AddTaskFemtoAzimtuhalHBT.C:64
 AddTaskFemtoAzimtuhalHBT.C:65
 AddTaskFemtoAzimtuhalHBT.C:66
 AddTaskFemtoAzimtuhalHBT.C:67
 AddTaskFemtoAzimtuhalHBT.C:68
 AddTaskFemtoAzimtuhalHBT.C:69
 AddTaskFemtoAzimtuhalHBT.C:70
 AddTaskFemtoAzimtuhalHBT.C:71
 AddTaskFemtoAzimtuhalHBT.C:72
 AddTaskFemtoAzimtuhalHBT.C:73
 AddTaskFemtoAzimtuhalHBT.C:74
 AddTaskFemtoAzimtuhalHBT.C:75
 AddTaskFemtoAzimtuhalHBT.C:76
 AddTaskFemtoAzimtuhalHBT.C:77
 AddTaskFemtoAzimtuhalHBT.C:78
 AddTaskFemtoAzimtuhalHBT.C:79
 AddTaskFemtoAzimtuhalHBT.C:80
 AddTaskFemtoAzimtuhalHBT.C:81
 AddTaskFemtoAzimtuhalHBT.C:82
 AddTaskFemtoAzimtuhalHBT.C:83
 AddTaskFemtoAzimtuhalHBT.C:84
 AddTaskFemtoAzimtuhalHBT.C:85
 AddTaskFemtoAzimtuhalHBT.C:86
 AddTaskFemtoAzimtuhalHBT.C:87
 AddTaskFemtoAzimtuhalHBT.C:88
 AddTaskFemtoAzimtuhalHBT.C:89
 AddTaskFemtoAzimtuhalHBT.C:90
 AddTaskFemtoAzimtuhalHBT.C:91
 AddTaskFemtoAzimtuhalHBT.C:92
 AddTaskFemtoAzimtuhalHBT.C:93
 AddTaskFemtoAzimtuhalHBT.C:94
 AddTaskFemtoAzimtuhalHBT.C:95
 AddTaskFemtoAzimtuhalHBT.C:96
 AddTaskFemtoAzimtuhalHBT.C:97
 AddTaskFemtoAzimtuhalHBT.C:98
 AddTaskFemtoAzimtuhalHBT.C:99
 AddTaskFemtoAzimtuhalHBT.C:100
 AddTaskFemtoAzimtuhalHBT.C:101
 AddTaskFemtoAzimtuhalHBT.C:102
 AddTaskFemtoAzimtuhalHBT.C:103
 AddTaskFemtoAzimtuhalHBT.C:104
 AddTaskFemtoAzimtuhalHBT.C:105
 AddTaskFemtoAzimtuhalHBT.C:106
 AddTaskFemtoAzimtuhalHBT.C:107