ROOT logo
#ifndef ALIANALYSISTASKFILTER_H
#define ALIANALYSISTASKFILTER_H
 
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//////////////////////////////////////////////////////////////////////////
//
//  Base class for filtering friends
//
//////////////////////////////////////////////////////////////////////////

#include "AliAnalysisTask.h"
class AliVEvent;
class AliESDEvent;
class AliESDfriend;
class AliInputEventHandler;
class AliESDfriendTrack;

class TTree;

class AliAnalysisTaskFilter : public AliAnalysisTask
{
 public:
	AliAnalysisTaskFilter();
	AliAnalysisTaskFilter(const char* name);
	AliAnalysisTaskFilter(const AliAnalysisTaskFilter& obj);
	AliAnalysisTaskFilter& operator=(const AliAnalysisTaskFilter& other);
	virtual ~AliAnalysisTaskFilter() {;}

	// Implementation of interface methods
	virtual void ConnectInputData(Option_t *option = "");
	virtual void CreateOutputObjects();
	virtual void Exec(Option_t* option);
	virtual void SetDebugLevel(Int_t level) {fDebug = level;}
	virtual void Init() {;}
	virtual void UserCreateOutputObjects()  {;}
	virtual void UserExec(Option_t* /*option*/) {;}

	// To be implemented by user
	virtual Bool_t UserSelectESDfriendForCurrentEvent(){return kTRUE;}

	// Getters
	virtual Int_t         DebugLevel()  {return fDebug;     }
	virtual AliVEvent*    InputEvent()  {return fInputEvent;}
	virtual AliESDfriend* InputFriend() {return fInputESDfriend;}
	virtual AliESDfriend* ESDfriend()   {return fOutputESDfriend; }
	virtual TTree*        OutputTree()  {return fTreeEF;     }
	virtual Long64_t      Entry()       {return fEntry;     }
	virtual const char*   CurrentFileName();

	// To add/skip a friend track
	void AddFriendTrackAt(AliESDfriendTrack* t, Int_t index);
	void SkipFriendTrackAt(Int_t index);

 protected:
	Int_t                 fDebug;           //  Debug flag
	Int_t                 fEntry;           //  Current entry in the chain
	AliVEvent*            fInputEvent;      //! VEvent Input
	AliInputEventHandler* fInputHandler;    //! Input Handler
	AliESDfriend*         fOutputESDfriend; //! ESD friend out 
	TTree*                fTreeEF;          //  ESD friend output Tree
	AliESDfriend*         fInputESDfriend;  //! ESD friend input
	
	ClassDef(AliAnalysisTaskFilter, 3); // Analysis task for filtering friends
};

#endif
 AliAnalysisTaskFilter.h:1
 AliAnalysisTaskFilter.h:2
 AliAnalysisTaskFilter.h:3
 AliAnalysisTaskFilter.h:4
 AliAnalysisTaskFilter.h:5
 AliAnalysisTaskFilter.h:6
 AliAnalysisTaskFilter.h:7
 AliAnalysisTaskFilter.h:8
 AliAnalysisTaskFilter.h:9
 AliAnalysisTaskFilter.h:10
 AliAnalysisTaskFilter.h:11
 AliAnalysisTaskFilter.h:12
 AliAnalysisTaskFilter.h:13
 AliAnalysisTaskFilter.h:14
 AliAnalysisTaskFilter.h:15
 AliAnalysisTaskFilter.h:16
 AliAnalysisTaskFilter.h:17
 AliAnalysisTaskFilter.h:18
 AliAnalysisTaskFilter.h:19
 AliAnalysisTaskFilter.h:20
 AliAnalysisTaskFilter.h:21
 AliAnalysisTaskFilter.h:22
 AliAnalysisTaskFilter.h:23
 AliAnalysisTaskFilter.h:24
 AliAnalysisTaskFilter.h:25
 AliAnalysisTaskFilter.h:26
 AliAnalysisTaskFilter.h:27
 AliAnalysisTaskFilter.h:28
 AliAnalysisTaskFilter.h:29
 AliAnalysisTaskFilter.h:30
 AliAnalysisTaskFilter.h:31
 AliAnalysisTaskFilter.h:32
 AliAnalysisTaskFilter.h:33
 AliAnalysisTaskFilter.h:34
 AliAnalysisTaskFilter.h:35
 AliAnalysisTaskFilter.h:36
 AliAnalysisTaskFilter.h:37
 AliAnalysisTaskFilter.h:38
 AliAnalysisTaskFilter.h:39
 AliAnalysisTaskFilter.h:40
 AliAnalysisTaskFilter.h:41
 AliAnalysisTaskFilter.h:42
 AliAnalysisTaskFilter.h:43
 AliAnalysisTaskFilter.h:44
 AliAnalysisTaskFilter.h:45
 AliAnalysisTaskFilter.h:46
 AliAnalysisTaskFilter.h:47
 AliAnalysisTaskFilter.h:48
 AliAnalysisTaskFilter.h:49
 AliAnalysisTaskFilter.h:50
 AliAnalysisTaskFilter.h:51
 AliAnalysisTaskFilter.h:52
 AliAnalysisTaskFilter.h:53
 AliAnalysisTaskFilter.h:54
 AliAnalysisTaskFilter.h:55
 AliAnalysisTaskFilter.h:56
 AliAnalysisTaskFilter.h:57
 AliAnalysisTaskFilter.h:58
 AliAnalysisTaskFilter.h:59
 AliAnalysisTaskFilter.h:60
 AliAnalysisTaskFilter.h:61
 AliAnalysisTaskFilter.h:62
 AliAnalysisTaskFilter.h:63
 AliAnalysisTaskFilter.h:64
 AliAnalysisTaskFilter.h:65
 AliAnalysisTaskFilter.h:66
 AliAnalysisTaskFilter.h:67
 AliAnalysisTaskFilter.h:68
 AliAnalysisTaskFilter.h:69
 AliAnalysisTaskFilter.h:70