ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * 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$*/

/////////////////////////////////////////////////////////////
//
//   Test task to add an object to the new AliESDfriends file
//
// /////////////////////////////////////////////////////////////

#include <TTree.h>
#include <TChain.h>
#include <TFile.h>
#include <TH1D.h>

#include "AliLog.h"
#include "AliESDInputHandler.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskAddObject.h"


ClassImp(AliAnalysisTaskAddObject)


//________________________________________________________________________
AliAnalysisTaskAddObject::AliAnalysisTaskAddObject():
AliAnalysisTask(),
fESDInput(0x0),
fESDfriendInput(0x0),
fESDhandler(0x0),
fh(0x0)
{
	// Dummy Constructor
	
}

//________________________________________________________________________
AliAnalysisTaskAddObject::AliAnalysisTaskAddObject(const char* name):
AliAnalysisTask(name,"Adding an object"),
fESDInput(0),
fESDfriendInput(0),
fESDhandler(0x0),
fh(0x0)
{
	// Constructor
	
	// Define input and output slots here
	// Input slot #0 works with a TChain
	DefineInput(0, TChain::Class());
	// Output slot #0 writes into a TTree
	//	DefineOutput(0,TTree::Class());  
	// Output slot #1 writes into a TH1D
	DefineOutput(0,TH1D::Class());  
}

//________________________________________________________________________
AliAnalysisTaskAddObject::~AliAnalysisTaskAddObject()
{

	// dtor
	if (fh){
		delete fh;
		fh = 0x0;
	}
}  

//______________________________________________________________________________
void AliAnalysisTaskAddObject::ConnectInputData(Option_t* /*option*/)
{
	//
	// Connect the input data
	//

	printf("AliAnalysisTaskAddObject::ConnectInputData()\n");
	AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
	if (!mgr) AliFatal("No analysis manager available");
	fESDhandler = dynamic_cast<AliESDInputHandler *>(mgr->GetInputEventHandler());
    
	if (fESDhandler) {
		fESDInput = fESDhandler->GetEvent();
	} else {
		AliFatal("No ESD input event handler connected") ; 
	}
}
//________________________________________________________________________
void AliAnalysisTaskAddObject::CreateOutputObjects()
{
	//
	// Create the output container
	//
	//OpenFile(0,"UPDATE");
	fh = new TH1D("fh1","Integrated Length",100,0,1000);
	return;
}

//________________________________________________________________________
void AliAnalysisTaskAddObject::Exec(Option_t */*option*/)
{

	//	if (fDebug > 1) {
	Long64_t entry = fESDhandler->GetReadEntry();
	AliDebug(2,Form("AliAnalysisTaskAddObject::Exec() %s ==> processing event %lld", fESDhandler->GetTree()->GetCurrentFile()->GetName(),entry));
	//}  
	fESDInput = fESDhandler->GetEvent();
	if(!fESDInput) {
		printf("AliAnalysisTaskAddObject::Exec(): no ESD \n");
		return;
	} 
	for (Int_t i = 0; i< fESDInput->GetNumberOfTracks(); i++){
		AliESDtrack* t = fESDInput->GetTrack(i);
		Double_t l = t->GetIntegratedLength();
		fh->Fill(l);
	}
	PostData(0,fh);
	return;
}

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