#include <TObject.h>
#include <TMath.h>
#include <TParticle.h>
#include "AliKineTrackCuts.h"
ClassImp(AliKineTrackCuts)
AliKineTrackCuts::AliKineTrackCuts(const Char_t* name, const Char_t* title) :
AliAnalysisCuts(name,title),
fOnlyFinalParticles(kFALSE),
fOnlyPrimary(kFALSE),
fPMin(0),
fPMax(0),
fPtMin(0),
fPtMax(0),
fPxMin(0),
fPxMax(0),
fPyMin(0),
fPyMax(0),
fPzMin(0),
fPzMax(0),
fEtaMin(0),
fEtaMax(0),
fRapMin(0),
fRapMax(0)
{
SetPRange();
SetPtRange();
SetPxRange();
SetPyRange();
SetPzRange();
SetEtaRange();
SetRapRange();
}
Bool_t AliKineTrackCuts::IsSelected(TObject* obj)
{
TParticle * part = (TParticle *)obj;
if( fOnlyFinalParticles && part->GetStatusCode() !=1 ) return kFALSE;
if( fOnlyPrimary && part->IsPrimary() !=1 ) return kFALSE;
Float_t momentum = part->P();
Float_t pt = part->Pt();
Float_t energy = part->Energy();
Float_t eta = part->Eta();
Float_t y = -100.;
if((energy != TMath::Abs(part->Pz()))&&(momentum != 0))
y = 0.5*TMath::Log((energy + part->Pz())/(energy - part->Pz()));
if((momentum < fPMin) || (momentum > fPMax)) return kFALSE;
if((pt < fPtMin) || (pt > fPtMax)) return kFALSE;
if((part->Px() < fPxMin) || (part->Px() > fPxMax)) return kFALSE;
if((part->Py() < fPyMin) || (part->Py() > fPyMax)) return kFALSE;
if((part->Pz() < fPzMin) || (part->Pz() > fPzMax)) return kFALSE;
if((eta < fEtaMin) || (eta > fEtaMax)) return kFALSE;
if((y < fRapMin) || (y > fRapMax)) return kFALSE;
return kTRUE;
}