ROOT logo
/**************************************************************************
 * This file is property of and copyright by the ALICE HLT Project        *
 * All rights reserved.                                                   *
 *                                                                        *
 * Primary Authors:                                                       *
 *   Artur Szostak <artursz@iafrica.com>                                  *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/// \ingroup macros
/// \file RunLinkToMCAnalysisExample.C
/// \brief Example macro for running the AliAnalysisTaskLinkToMC analysis task.
/// \author Artur Szostak <artursz@iafrica.com>
///
/// This macro shows an example of how to run the AliAnalysisTaskLinkToMC analysis
/// task in local mode. It can be used as a quick check of the analysis task.
/// It will generate AliAOD.root and hists.root files. The hists.root can then
/// be used in the PlotEfficiency.C macro.
/// Run this macro as follows:
///
///  $ aliroot RunLinkToMCAnalysisExample.C\(\"AliESDs.root\"\)
///
/// where AliESDs.root should be the correct path to a root file containing ESD
/// objects created by the offline reconstruction.


#if !defined(__CINT__) || defined(__MAKECINT__)
#error This macro must be run in interpreted mode.
#endif


void RunLinkToMCAnalysisExample(const char* esdFile = "./AliESDs.root")
{
	// Load needed libraries
	gSystem->Load("libTree.so");
	gSystem->Load("libGeom.so");
	gSystem->Load("libVMC.so");
	gSystem->Load("libPhysics.so");
	gSystem->Load("libSTEERBase.so");
	gSystem->Load("libESD.so");
	gSystem->Load("libAOD.so");
	gSystem->Load("libANALYSIS.so");
	gSystem->Load("libANALYSISalice.so");
	gSystem->Load("libPWGHFbase.so");
	gSystem->Load("libPWGmuon.so");
	
	// Create the TChain for esdTrees in the AliESDs.root file.
	TChain* chain = new TChain("esdTree");
	chain->Add(esdFile);
	if (!chain) return;
	
	// Create the analysis manager and event handlers.
	AliAnalysisManager* mgr = new AliAnalysisManager("Analysis Train", "An example analysis train setup for AliAnalysisTaskLinkToMC.");
	AliESDInputHandler* esdHandler = new AliESDInputHandler();
	mgr->SetInputEventHandler(esdHandler);
	AliMCEventHandler* mcHandler = new AliMCEventHandler();
	mgr->SetMCtruthEventHandler(mcHandler);
	mcHandler->SetReadTR(kTRUE); 
	AliAODHandler* aodHandler = new AliAODHandler();
	mgr->SetOutputEventHandler(aodHandler);
	aodHandler->SetOutputFileName("AliAOD.root");
	
	// Create the analysis task and setup the parameters.
	AliAnalysisTaskLinkToMC* linktask = new AliAnalysisTaskLinkToMC("Task to link ESD tracks to corresponding MC tracks.");
	linktask->MinClusters(6);
	linktask->HardCutLimitX(4);
	linktask->HardCutLimitY(4);
	linktask->SigmaCut(5.);
	linktask->MinClustersInSt45(3);
	linktask->StationMustMatch(1, true);  // At least one cluster in station 1 must match.
	linktask->StationMustMatch(2, true);  // At least one cluster in station 2 must match.
	linktask->StationMustMatch(3, true);  // At least one cluster in station 3 must match.
	linktask->GenerateHistograms(true);
	mgr->AddTask(linktask);
	
	// Create the input and output containers and connect them up to the analysis task.
	AliAnalysisDataContainer* cinEsd = mgr->GetCommonInputContainer();
	AliAnalysisDataContainer* coutAod = mgr->GetCommonOutputContainer();
	AliAnalysisDataContainer* coutHists = mgr->CreateContainer("cHists", TList::Class(), AliAnalysisManager::kOutputContainer, "hists.root");
	mgr->ConnectInput(linktask, 0, cinEsd);
	mgr->ConnectOutput(linktask, 0, coutAod);
	mgr->ConnectOutput(linktask, 1, coutHists);
	
	if (mgr->InitAnalysis())
	{
		mgr->PrintStatus();
		mgr->StartAnalysis("local", chain);
	}
}

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