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.                  *
 **************************************************************************/

// $Id: $

#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliHLTPluginBase.h"
#include "AliHLTConfiguration.h"
#include "AliReconstruction.h"
#include <iostream>
using std::cerr;
using std::endl;
#endif

/**
 * @file HLToutputTodHLTRootObjects.C
 * @brief Macro for converting dHLT output in HLTOUT into ROOT objects or dumping to file.
 *
 * This macro converts dHLT output data blocks in HLTOUT to dHLT ROOT
 * objects which can be used for dHLT specific analysis or debugging.
 * Alternatively the dHLT data blocks are dumped to file in raw binary format.
 *
 * @note The macro must be run in the directory with the raw0, raw1 etc
 * directories. Also no reconstructed ROOT files should be in this directory
 * either. Backup any reconstructed AliESDs.root files if you want, and then
 * delete all root files in the directory where you will run this macro.
 *
 * @param dataSource  Indicates where to find the raw data. If this is a path
 *      then the raw data is expected to be in DDL file format stored in directories
 *      called raw0, raw1 and so on.
 *      If a file name is given instead then it is assumed to be a DATE file unless
 *      it ends in ".root", in which case it is assumed to be rootified raw data.
 * @param dumpBinary  Indicates if the data should be dumped in raw binary format
 *      to files with the file name prefix "output-". If set to false then the
 *      output is rootified and written to a ROOT file "output.root".
 *
 * @author Artur Szostak <artursz@iafrica.com>
 * @ingroup alihlt_dimuon_macros
 */
void HLToutputTodHLTRootObjects(const char* dataSource = "./", bool dumpBinary = false)
{
	// setup of the HLT system
	gSystem->Load("libHLTrec.so");
	AliHLTSystem* sys = AliHLTPluginBase::GetInstance();
	if (sys == NULL)
	{
		cerr << "FATAL ERROR: Cannot get HLT system instance." << endl;
		return;
	}

	// Configure the chain.
	AliHLTConfiguration pub("Pub", "AliHLTOUTPublisher" , NULL, "-origin 'MUON'");
	TString sources = "Pub";
	if (dumpBinary)
	{
		AliHLTConfiguration sink("dhlt-output-dump", "FileWriter", sources, "-datafile output.dat -specfmt");
	}
	else
	{
		AliHLTConfiguration convert("convert", "MUONRootifier", sources, "");
		AliHLTConfiguration sink("dhlt-output-dump", "ROOTFileWriter", "convert", "-concatenate-events -datafile output.root -specfmt");
	}
	
	// Setup the reconstruction and run.
	AliReconstruction rec;
	rec.SetInput(dataSource);
	rec.SetLoadAlignData("");
	rec.SetRunLocalReconstruction("HLT");
	rec.SetRunTracking("");
	rec.SetFillESD("");
	rec.SetRunQA(":");
	rec.SetFillTriggerESD(kFALSE);
	rec.SetRunVertexFinder(kFALSE);
	rec.SetOption("HLT", "libAliHLTMUON.so loglevel=0x78 chains=dhlt-output-dump");
	rec.Run();
}
 HLToutputTodHLTRootObjects.C:1
 HLToutputTodHLTRootObjects.C:2
 HLToutputTodHLTRootObjects.C:3
 HLToutputTodHLTRootObjects.C:4
 HLToutputTodHLTRootObjects.C:5
 HLToutputTodHLTRootObjects.C:6
 HLToutputTodHLTRootObjects.C:7
 HLToutputTodHLTRootObjects.C:8
 HLToutputTodHLTRootObjects.C:9
 HLToutputTodHLTRootObjects.C:10
 HLToutputTodHLTRootObjects.C:11
 HLToutputTodHLTRootObjects.C:12
 HLToutputTodHLTRootObjects.C:13
 HLToutputTodHLTRootObjects.C:14
 HLToutputTodHLTRootObjects.C:15
 HLToutputTodHLTRootObjects.C:16
 HLToutputTodHLTRootObjects.C:17
 HLToutputTodHLTRootObjects.C:18
 HLToutputTodHLTRootObjects.C:19
 HLToutputTodHLTRootObjects.C:20
 HLToutputTodHLTRootObjects.C:21
 HLToutputTodHLTRootObjects.C:22
 HLToutputTodHLTRootObjects.C:23
 HLToutputTodHLTRootObjects.C:24
 HLToutputTodHLTRootObjects.C:25
 HLToutputTodHLTRootObjects.C:26
 HLToutputTodHLTRootObjects.C:27
 HLToutputTodHLTRootObjects.C:28
 HLToutputTodHLTRootObjects.C:29
 HLToutputTodHLTRootObjects.C:30
 HLToutputTodHLTRootObjects.C:31
 HLToutputTodHLTRootObjects.C:32
 HLToutputTodHLTRootObjects.C:33
 HLToutputTodHLTRootObjects.C:34
 HLToutputTodHLTRootObjects.C:35
 HLToutputTodHLTRootObjects.C:36
 HLToutputTodHLTRootObjects.C:37
 HLToutputTodHLTRootObjects.C:38
 HLToutputTodHLTRootObjects.C:39
 HLToutputTodHLTRootObjects.C:40
 HLToutputTodHLTRootObjects.C:41
 HLToutputTodHLTRootObjects.C:42
 HLToutputTodHLTRootObjects.C:43
 HLToutputTodHLTRootObjects.C:44
 HLToutputTodHLTRootObjects.C:45
 HLToutputTodHLTRootObjects.C:46
 HLToutputTodHLTRootObjects.C:47
 HLToutputTodHLTRootObjects.C:48
 HLToutputTodHLTRootObjects.C:49
 HLToutputTodHLTRootObjects.C:50
 HLToutputTodHLTRootObjects.C:51
 HLToutputTodHLTRootObjects.C:52
 HLToutputTodHLTRootObjects.C:53
 HLToutputTodHLTRootObjects.C:54
 HLToutputTodHLTRootObjects.C:55
 HLToutputTodHLTRootObjects.C:56
 HLToutputTodHLTRootObjects.C:57
 HLToutputTodHLTRootObjects.C:58
 HLToutputTodHLTRootObjects.C:59
 HLToutputTodHLTRootObjects.C:60
 HLToutputTodHLTRootObjects.C:61
 HLToutputTodHLTRootObjects.C:62
 HLToutputTodHLTRootObjects.C:63
 HLToutputTodHLTRootObjects.C:64
 HLToutputTodHLTRootObjects.C:65
 HLToutputTodHLTRootObjects.C:66
 HLToutputTodHLTRootObjects.C:67
 HLToutputTodHLTRootObjects.C:68
 HLToutputTodHLTRootObjects.C:69
 HLToutputTodHLTRootObjects.C:70
 HLToutputTodHLTRootObjects.C:71
 HLToutputTodHLTRootObjects.C:72
 HLToutputTodHLTRootObjects.C:73
 HLToutputTodHLTRootObjects.C:74
 HLToutputTodHLTRootObjects.C:75
 HLToutputTodHLTRootObjects.C:76
 HLToutputTodHLTRootObjects.C:77
 HLToutputTodHLTRootObjects.C:78
 HLToutputTodHLTRootObjects.C:79
 HLToutputTodHLTRootObjects.C:80
 HLToutputTodHLTRootObjects.C:81
 HLToutputTodHLTRootObjects.C:82
 HLToutputTodHLTRootObjects.C:83
 HLToutputTodHLTRootObjects.C:84
 HLToutputTodHLTRootObjects.C:85
 HLToutputTodHLTRootObjects.C:86
 HLToutputTodHLTRootObjects.C:87
 HLToutputTodHLTRootObjects.C:88
 HLToutputTodHLTRootObjects.C:89
 HLToutputTodHLTRootObjects.C:90