#include <limits.h>
#include <float.h>
#include "TNamed.h"
#include "AliStarEvent.h"
#include "AliStarEventCuts.h"
ClassImp(AliStarEventCuts)
AliStarEventCuts::AliStarEventCuts():
TNamed(),
fCutRunID(kFALSE),
fRunIDMax(INT_MAX),
fRunIDMin(INT_MIN),
fCutEventNumber(kFALSE),
fEventNumberMax(INT_MAX),
fEventNumberMin(INT_MIN),
fCutVtxX(kFALSE),
fVtxXMax(FLT_MAX),
fVtxXMin(-FLT_MAX),
fCutVtxY(kFALSE),
fVtxYMax(FLT_MAX),
fVtxYMin(-FLT_MAX),
fCutVtxZ(kFALSE),
fVtxZMax(FLT_MAX),
fVtxZMin(-FLT_MAX),
fCutBField(kFALSE),
fBFieldMax(FLT_MAX),
fBFieldMin(-FLT_MAX),
fCutRefMult(kFALSE),
fRefMultMax(INT_MAX),
fRefMultMin(INT_MIN),
fCutCentralityID(kFALSE),
fCentralityIDMax(INT_MAX),
fCentralityIDMin(INT_MIN),
fCutNumberOfPrimaryTracks(kFALSE),
fNumberOfPrimaryTracksMax(INT_MAX),
fNumberOfPrimaryTracksMin(INT_MIN),
fCutNumberOfTracks(kFALSE),
fNumberOfTracksMax(INT_MAX),
fNumberOfTracksMin(INT_MIN)
{
}
Bool_t AliStarEventCuts::PassesCuts(const AliStarEvent *event) const
{
if(fCutRunID) {if (event->GetRunID() < fRunIDMin || event->GetRunID() > fRunIDMax ) return kFALSE;}
if(fCutEventNumber) {if (event->GetEventNumber() < fEventNumberMin || event->GetEventNumber() > fEventNumberMax ) return kFALSE;}
if(fCutVtxX) {if (event->GetVtxX() < fVtxXMin || event->GetVtxX() >= fVtxXMax ) return kFALSE;}
if(fCutVtxY) {if (event->GetVtxY() < fVtxYMin || event->GetVtxY() >= fVtxYMax ) return kFALSE;}
if(fCutVtxZ) {if (event->GetVtxZ() < fVtxZMin || event->GetVtxZ() >= fVtxZMax ) return kFALSE;}
if(fCutBField) {if (event->GetBField() < fBFieldMin || event->GetBField() >= fBFieldMax ) return kFALSE;}
if(fCutRefMult) {if (event->GetRefMult() < fRefMultMin || event->GetRefMult() > fRefMultMax ) return kFALSE;}
if(fCutCentralityID) {if (event->GetCentralityID() < fCentralityIDMin || event->GetCentralityID() > fCentralityIDMax ) return kFALSE;}
if(fCutNumberOfPrimaryTracks) {if (event->GetNumberOfPrimaryTracks() < fNumberOfPrimaryTracksMin || event->GetNumberOfPrimaryTracks() > fNumberOfPrimaryTracksMax ) return kFALSE;}
if(fCutNumberOfTracks) {if (event->GetNumberOfTracks() < fNumberOfTracksMin || event->GetNumberOfTracks() > fNumberOfTracksMax ) return kFALSE;}
return kTRUE;
}
AliStarEventCuts* AliStarEventCuts::StandardCuts()
{
AliStarEventCuts* cuts = new AliStarEventCuts();
cuts->SetVtxXMin(-1.0);
cuts->SetVtxXMax(1.0);
cuts->SetVtxYMin(-1.0);
cuts->SetVtxYMax(1.0);
cuts->SetVtxZMin(-30.0);
cuts->SetVtxZMax(30.0);
cuts->SetRefMultMin(10);
cuts->SetRefMultMax(1000);
cuts->SetNumberOfPrimaryTracksMin(0);
cuts->SetNumberOfPrimaryTracksMax(3000);
return cuts;
}