ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *																																				*
 * Authors: Svein Lindal, Daniel Lohner												*
 * Version 1.0																														*
 *																																				*
 * 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.									*
 **************************************************************************/

////////////////////////////////////////////////
//--------------------------------------------- 
// Class reconstructing primary electrons
//---------------------------------------------
////////////////////////////////////////////////


#include "AliDalitzElectronSelector.h"
#include "AliDalitzElectronCuts.h"
#include "AliAODv0.h"
#include "AliESDv0.h"
#include "AliAODEvent.h"
#include "AliESDEvent.h"
#include "TVector.h"
#include "AliESDtrack.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "TChain.h"
#include "AliStack.h"

class iostream;

using namespace std;



ClassImp(AliDalitzElectronSelector)

//________________________________________________________________________
AliDalitzElectronSelector::AliDalitzElectronSelector(const char *name) : AliAnalysisTaskSE(name),
    fElectronCuts(0),
    fPositronsIndex(),
    fElectronsIndex(),
    fEventIsSelected(kFALSE)
{
    // Default constructor
    DefineInput(0, TChain::Class());
}

//________________________________________________________________________
AliDalitzElectronSelector::~AliDalitzElectronSelector()
{
    // default deconstructor

   
}
//________________________________________________________________________
void AliDalitzElectronSelector::Init()
{
    // Initialize function to be called once before analysis

    if(fElectronCuts == 0){
    //  fElectronCuts=AliConversionCuts::GetStandardCuts2010PbPb();
        AliError("No Cut Selection initialized");
    }

}

//________________________________________________________________________
void AliDalitzElectronSelector::UserCreateOutputObjects()
{
    // Create User Output Objects
}

//________________________________________________________________________
void AliDalitzElectronSelector::UserExec(Option_t *){
    // User Exec
	fEventIsSelected=ProcessEvent(fInputEvent,fMCEvent);
}

//________________________________________________________________________
Bool_t AliDalitzElectronSelector::ProcessEvent(AliVEvent *inputEvent,AliMCEvent *mcEvent)
{
	//Reset the index

	fPositronsIndex.clear();
	fElectronsIndex.clear();


	fInputEvent=inputEvent;
	fMCEvent=mcEvent;

	if(!fInputEvent){
		AliError("No Input event");
		return kFALSE;
	}

	if(!fElectronCuts){AliError("No ConversionCuts");return kFALSE;}


	if(fInputEvent->IsA()==AliESDEvent::Class()){
		ProcessESDs();
	}

	//if(fInputEvent->IsA()==AliAODEvent::Class()){
	//GetAODConversionGammas();
	//}


	return kTRUE;
}

///________________________________________________________________________
Bool_t AliDalitzElectronSelector::ProcessESDs(){
	// Process ESD V0s for conversion photon reconstruction
	AliESDEvent *fESDEvent=dynamic_cast<AliESDEvent*>(fInputEvent);
	if(fESDEvent){
		for(Int_t currentTrackIndex=0;currentTrackIndex<fESDEvent->GetNumberOfTracks();currentTrackIndex++){
			AliESDtrack *fCurrentTrack = (AliESDtrack*)(fESDEvent->GetTrack(currentTrackIndex));
			if(!fCurrentTrack){
				printf("Requested Track does not exist");
				continue;
			}
			if (  fElectronCuts->ElectronIsSelected( fCurrentTrack ) ) {
				if( fCurrentTrack->GetSign() > 0.0 ){
					fPositronsIndex.push_back(currentTrackIndex);
				} else {
					fElectronsIndex.push_back(currentTrackIndex);
				}
			}
		}
	}
	return kTRUE;
}


//________________________________________________________________________
void AliDalitzElectronSelector::Terminate(Option_t *)
{

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