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

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

#include "AliLog.h"
#include "AliESDInputHandler.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliAnalysisTaskFilter.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskFilterFriendSecond.h"


ClassImp(AliAnalysisTaskFilterFriendSecond)


//________________________________________________________________________
AliAnalysisTaskFilterFriendSecond::AliAnalysisTaskFilterFriendSecond():
AliAnalysisTaskFilter(),
fESDInput(0),
fESDfriendInput(0)
{
	// 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());  
}

//________________________________________________________________________
AliAnalysisTaskFilterFriendSecond::AliAnalysisTaskFilterFriendSecond(const char* name):
AliAnalysisTaskFilter(name),
fESDInput(0),
fESDfriendInput(0)
{
	// 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());  
}

//________________________________________________________________________
AliAnalysisTaskFilterFriendSecond::~AliAnalysisTaskFilterFriendSecond()
{

	// dtor

}  

//________________________________________________________________________
void AliAnalysisTaskFilterFriendSecond::Init()
{
	// Initialization
	
	return;
}

//________________________________________________________________________
void AliAnalysisTaskFilterFriendSecond::UserCreateOutputObjects()
{
	//
	// Create the output container
	//
	
	return;
}

//________________________________________________________________________
void AliAnalysisTaskFilterFriendSecond::UserExec(Option_t */*option*/)
{

	//
	// Filtering Friends
	//

	fESDInput = dynamic_cast<AliESDEvent*>(InputEvent()); // get the input ESD
	fESDfriendInput = InputFriend();  // get the input friend
	if(!fESDInput) {
		printf("AliAnalysisTaskFilterFriendSecond::Exec(): no ESD \n");
		return;
	} 
	if(!fESDfriendInput) {
		printf("AliAnalysisTaskFilterFriendSecond::Exec(): no ESDfriend \n");
		return;
	} 
	// attach ESDfriend
	
	AliESDfriend* esdFriendOutput = (AliESDfriend*)ESDfriend();  
	AliDebug(3,Form("Number of ESD tracks in input = %d ",fESDInput->GetNumberOfTracks()));
	AliDebug(3,Form("Number of tracks in input friends = %d ",fESDfriendInput->GetNumberOfTracks()));
	AliDebug(3,Form("Number of tracks in output friendsNew before filtering = %d ",esdFriendOutput->GetNumberOfTracks()));
	
	for (Int_t i = 0; i< fESDInput->GetNumberOfTracks(); i++){
		if (i%3 == 0){
			// keep friend
			AliDebug(2,Form("Keeping %d-th track",i));
			AliESDfriendTrack* tOld = (AliESDfriendTrack*)fESDfriendInput->GetTrack(i);
			// debugging printouts
			AliDebug(3,Form("1P of the %d-th track = %f",i,tOld->Get1P()));
			AddFriendTrackAt(tOld,i);
			//	tOld->Dump();
		}
		else {
			//discard friend 
			SkipFriendTrackAt(i);
		}
	} 
	AliDebug(2,Form("Number of tracks in output friendsNew after filtering with GetEntries() = %d ",esdFriendOutput->GetEntriesInTracks()));
	return;
}

//________________________________________________________________________
void AliAnalysisTaskFilterFriendSecond::Terminate(Option_t */*option*/)
{
	// Terminate analysis
	//
	AliDebug(2,"AliAnalysisTaskFilterFriendSecond: Terminate() \n");
	
	return;
}
//________________________________________________________________________
Bool_t AliAnalysisTaskFilterFriendSecond::UserSelectESDfriendForCurrentEvent()
{
	// 
	// Selecting or discarding current event
	//

	/*		
	fESDInput = dynamic_cast<AliESDEvent*>(InputEvent()); // get the input ESD
	if ((fESDInput->GetNumberOfTracks())%2 == 1){
		AliDebug(2,"****************Selecting event");
		return kTRUE;
	}
	
	AliDebug(2,"****************Discarding event");	
	return kFALSE;
	*/
		AliDebug(2,"****************Selecting event");
	return kTRUE;
}
 AliAnalysisTaskFilterFriendSecond.cxx:1
 AliAnalysisTaskFilterFriendSecond.cxx:2
 AliAnalysisTaskFilterFriendSecond.cxx:3
 AliAnalysisTaskFilterFriendSecond.cxx:4
 AliAnalysisTaskFilterFriendSecond.cxx:5
 AliAnalysisTaskFilterFriendSecond.cxx:6
 AliAnalysisTaskFilterFriendSecond.cxx:7
 AliAnalysisTaskFilterFriendSecond.cxx:8
 AliAnalysisTaskFilterFriendSecond.cxx:9
 AliAnalysisTaskFilterFriendSecond.cxx:10
 AliAnalysisTaskFilterFriendSecond.cxx:11
 AliAnalysisTaskFilterFriendSecond.cxx:12
 AliAnalysisTaskFilterFriendSecond.cxx:13
 AliAnalysisTaskFilterFriendSecond.cxx:14
 AliAnalysisTaskFilterFriendSecond.cxx:15
 AliAnalysisTaskFilterFriendSecond.cxx:16
 AliAnalysisTaskFilterFriendSecond.cxx:17
 AliAnalysisTaskFilterFriendSecond.cxx:18
 AliAnalysisTaskFilterFriendSecond.cxx:19
 AliAnalysisTaskFilterFriendSecond.cxx:20
 AliAnalysisTaskFilterFriendSecond.cxx:21
 AliAnalysisTaskFilterFriendSecond.cxx:22
 AliAnalysisTaskFilterFriendSecond.cxx:23
 AliAnalysisTaskFilterFriendSecond.cxx:24
 AliAnalysisTaskFilterFriendSecond.cxx:25
 AliAnalysisTaskFilterFriendSecond.cxx:26
 AliAnalysisTaskFilterFriendSecond.cxx:27
 AliAnalysisTaskFilterFriendSecond.cxx:28
 AliAnalysisTaskFilterFriendSecond.cxx:29
 AliAnalysisTaskFilterFriendSecond.cxx:30
 AliAnalysisTaskFilterFriendSecond.cxx:31
 AliAnalysisTaskFilterFriendSecond.cxx:32
 AliAnalysisTaskFilterFriendSecond.cxx:33
 AliAnalysisTaskFilterFriendSecond.cxx:34
 AliAnalysisTaskFilterFriendSecond.cxx:35
 AliAnalysisTaskFilterFriendSecond.cxx:36
 AliAnalysisTaskFilterFriendSecond.cxx:37
 AliAnalysisTaskFilterFriendSecond.cxx:38
 AliAnalysisTaskFilterFriendSecond.cxx:39
 AliAnalysisTaskFilterFriendSecond.cxx:40
 AliAnalysisTaskFilterFriendSecond.cxx:41
 AliAnalysisTaskFilterFriendSecond.cxx:42
 AliAnalysisTaskFilterFriendSecond.cxx:43
 AliAnalysisTaskFilterFriendSecond.cxx:44
 AliAnalysisTaskFilterFriendSecond.cxx:45
 AliAnalysisTaskFilterFriendSecond.cxx:46
 AliAnalysisTaskFilterFriendSecond.cxx:47
 AliAnalysisTaskFilterFriendSecond.cxx:48
 AliAnalysisTaskFilterFriendSecond.cxx:49
 AliAnalysisTaskFilterFriendSecond.cxx:50
 AliAnalysisTaskFilterFriendSecond.cxx:51
 AliAnalysisTaskFilterFriendSecond.cxx:52
 AliAnalysisTaskFilterFriendSecond.cxx:53
 AliAnalysisTaskFilterFriendSecond.cxx:54
 AliAnalysisTaskFilterFriendSecond.cxx:55
 AliAnalysisTaskFilterFriendSecond.cxx:56
 AliAnalysisTaskFilterFriendSecond.cxx:57
 AliAnalysisTaskFilterFriendSecond.cxx:58
 AliAnalysisTaskFilterFriendSecond.cxx:59
 AliAnalysisTaskFilterFriendSecond.cxx:60
 AliAnalysisTaskFilterFriendSecond.cxx:61
 AliAnalysisTaskFilterFriendSecond.cxx:62
 AliAnalysisTaskFilterFriendSecond.cxx:63
 AliAnalysisTaskFilterFriendSecond.cxx:64
 AliAnalysisTaskFilterFriendSecond.cxx:65
 AliAnalysisTaskFilterFriendSecond.cxx:66
 AliAnalysisTaskFilterFriendSecond.cxx:67
 AliAnalysisTaskFilterFriendSecond.cxx:68
 AliAnalysisTaskFilterFriendSecond.cxx:69
 AliAnalysisTaskFilterFriendSecond.cxx:70
 AliAnalysisTaskFilterFriendSecond.cxx:71
 AliAnalysisTaskFilterFriendSecond.cxx:72
 AliAnalysisTaskFilterFriendSecond.cxx:73
 AliAnalysisTaskFilterFriendSecond.cxx:74
 AliAnalysisTaskFilterFriendSecond.cxx:75
 AliAnalysisTaskFilterFriendSecond.cxx:76
 AliAnalysisTaskFilterFriendSecond.cxx:77
 AliAnalysisTaskFilterFriendSecond.cxx:78
 AliAnalysisTaskFilterFriendSecond.cxx:79
 AliAnalysisTaskFilterFriendSecond.cxx:80
 AliAnalysisTaskFilterFriendSecond.cxx:81
 AliAnalysisTaskFilterFriendSecond.cxx:82
 AliAnalysisTaskFilterFriendSecond.cxx:83
 AliAnalysisTaskFilterFriendSecond.cxx:84
 AliAnalysisTaskFilterFriendSecond.cxx:85
 AliAnalysisTaskFilterFriendSecond.cxx:86
 AliAnalysisTaskFilterFriendSecond.cxx:87
 AliAnalysisTaskFilterFriendSecond.cxx:88
 AliAnalysisTaskFilterFriendSecond.cxx:89
 AliAnalysisTaskFilterFriendSecond.cxx:90
 AliAnalysisTaskFilterFriendSecond.cxx:91
 AliAnalysisTaskFilterFriendSecond.cxx:92
 AliAnalysisTaskFilterFriendSecond.cxx:93
 AliAnalysisTaskFilterFriendSecond.cxx:94
 AliAnalysisTaskFilterFriendSecond.cxx:95
 AliAnalysisTaskFilterFriendSecond.cxx:96
 AliAnalysisTaskFilterFriendSecond.cxx:97
 AliAnalysisTaskFilterFriendSecond.cxx:98
 AliAnalysisTaskFilterFriendSecond.cxx:99
 AliAnalysisTaskFilterFriendSecond.cxx:100
 AliAnalysisTaskFilterFriendSecond.cxx:101
 AliAnalysisTaskFilterFriendSecond.cxx:102
 AliAnalysisTaskFilterFriendSecond.cxx:103
 AliAnalysisTaskFilterFriendSecond.cxx:104
 AliAnalysisTaskFilterFriendSecond.cxx:105
 AliAnalysisTaskFilterFriendSecond.cxx:106
 AliAnalysisTaskFilterFriendSecond.cxx:107
 AliAnalysisTaskFilterFriendSecond.cxx:108
 AliAnalysisTaskFilterFriendSecond.cxx:109
 AliAnalysisTaskFilterFriendSecond.cxx:110
 AliAnalysisTaskFilterFriendSecond.cxx:111
 AliAnalysisTaskFilterFriendSecond.cxx:112
 AliAnalysisTaskFilterFriendSecond.cxx:113
 AliAnalysisTaskFilterFriendSecond.cxx:114
 AliAnalysisTaskFilterFriendSecond.cxx:115
 AliAnalysisTaskFilterFriendSecond.cxx:116
 AliAnalysisTaskFilterFriendSecond.cxx:117
 AliAnalysisTaskFilterFriendSecond.cxx:118
 AliAnalysisTaskFilterFriendSecond.cxx:119
 AliAnalysisTaskFilterFriendSecond.cxx:120
 AliAnalysisTaskFilterFriendSecond.cxx:121
 AliAnalysisTaskFilterFriendSecond.cxx:122
 AliAnalysisTaskFilterFriendSecond.cxx:123
 AliAnalysisTaskFilterFriendSecond.cxx:124
 AliAnalysisTaskFilterFriendSecond.cxx:125
 AliAnalysisTaskFilterFriendSecond.cxx:126
 AliAnalysisTaskFilterFriendSecond.cxx:127
 AliAnalysisTaskFilterFriendSecond.cxx:128
 AliAnalysisTaskFilterFriendSecond.cxx:129
 AliAnalysisTaskFilterFriendSecond.cxx:130
 AliAnalysisTaskFilterFriendSecond.cxx:131
 AliAnalysisTaskFilterFriendSecond.cxx:132
 AliAnalysisTaskFilterFriendSecond.cxx:133
 AliAnalysisTaskFilterFriendSecond.cxx:134
 AliAnalysisTaskFilterFriendSecond.cxx:135
 AliAnalysisTaskFilterFriendSecond.cxx:136
 AliAnalysisTaskFilterFriendSecond.cxx:137
 AliAnalysisTaskFilterFriendSecond.cxx:138
 AliAnalysisTaskFilterFriendSecond.cxx:139
 AliAnalysisTaskFilterFriendSecond.cxx:140
 AliAnalysisTaskFilterFriendSecond.cxx:141
 AliAnalysisTaskFilterFriendSecond.cxx:142
 AliAnalysisTaskFilterFriendSecond.cxx:143
 AliAnalysisTaskFilterFriendSecond.cxx:144
 AliAnalysisTaskFilterFriendSecond.cxx:145
 AliAnalysisTaskFilterFriendSecond.cxx:146
 AliAnalysisTaskFilterFriendSecond.cxx:147
 AliAnalysisTaskFilterFriendSecond.cxx:148
 AliAnalysisTaskFilterFriendSecond.cxx:149
 AliAnalysisTaskFilterFriendSecond.cxx:150
 AliAnalysisTaskFilterFriendSecond.cxx:151
 AliAnalysisTaskFilterFriendSecond.cxx:152
 AliAnalysisTaskFilterFriendSecond.cxx:153
 AliAnalysisTaskFilterFriendSecond.cxx:154
 AliAnalysisTaskFilterFriendSecond.cxx:155
 AliAnalysisTaskFilterFriendSecond.cxx:156
 AliAnalysisTaskFilterFriendSecond.cxx:157
 AliAnalysisTaskFilterFriendSecond.cxx:158
 AliAnalysisTaskFilterFriendSecond.cxx:159
 AliAnalysisTaskFilterFriendSecond.cxx:160
 AliAnalysisTaskFilterFriendSecond.cxx:161
 AliAnalysisTaskFilterFriendSecond.cxx:162
 AliAnalysisTaskFilterFriendSecond.cxx:163
 AliAnalysisTaskFilterFriendSecond.cxx:164
 AliAnalysisTaskFilterFriendSecond.cxx:165
 AliAnalysisTaskFilterFriendSecond.cxx:166
 AliAnalysisTaskFilterFriendSecond.cxx:167
 AliAnalysisTaskFilterFriendSecond.cxx:168