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$

*/

/////////////////////////////////////////////////////////////
//
//   Filtering task:  
//   Selection of only 1% of the events for which to keep  
//   the ESD friend
//
// /////////////////////////////////////////////////////////////

#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 "AliAnalysisTaskFilterSteer.h"
#include "TRandom.h"


ClassImp(AliAnalysisTaskFilterSteer)


//________________________________________________________________________
AliAnalysisTaskFilterSteer::AliAnalysisTaskFilterSteer():
AliAnalysisTaskFilter(),
fFraction(0.01),
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());  
}

//________________________________________________________________________
AliAnalysisTaskFilterSteer::AliAnalysisTaskFilterSteer(const char* name):
AliAnalysisTaskFilter(name),
fFraction(0.01),
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());  
}

//________________________________________________________________________
AliAnalysisTaskFilterSteer::~AliAnalysisTaskFilterSteer()
{

	// dtor

}  

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

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

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

	// 
	// Applying random selection of the events

	fESDInput = dynamic_cast<AliESDEvent*>(InputEvent()); // get the input ESD
	fESDfriendInput = InputFriend();  // get the input friend
	if(!fESDInput) {
		printf("AliAnalysisTaskFilterSteer::Exec(): no ESD \n");
		return;
	} 
	if(!fESDfriendInput) {
		printf("AliAnalysisTaskFilterSteer::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()));
	
	//
	//  keeping all the tracks for the randomly "fFraction" of the total number of events
	//

	for (Int_t i = 0; i< fESDInput->GetNumberOfTracks(); i++){
		AliESDfriendTrack* tOld = (AliESDfriendTrack*)fESDfriendInput->GetTrack(i);
		AddFriendTrackAt(tOld,i);
	}			 
	AliDebug(2,Form("Number of tracks in output friendsNew after filtering = %d ",esdFriendOutput->GetNumberOfTracks()));
	AliDebug(2,Form("Number of tracks in output friendsNew after filtering with GetEntries() = %d ",esdFriendOutput->GetEntriesInTracks()));

	return;
}

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