#ifndef ALIFLOWTRACKCUTS_H
#define ALIFLOWTRACKCUTS_H
#include <TMatrix.h>
#include <TList.h>
#include "AliFlowTrackSimpleCuts.h"
#include "AliFlowTrackSimple.h"
#include "AliESDtrackCuts.h"
#include "TMCProcess.h"
#include "AliESDtrack.h"
#include "AliMuonTrackCuts.h"
#include "AliPID.h"
#include "AliESDpid.h"
class TBrowser;
class TArrayD;
class AliVParticle;
class AliMCParticle;
class AliFlowTrack;
class AliMCEvent;
class AliInputEventHandler;
class AliVEvent;
class AliMultiplicity;
class AliAODTracklets;
class AliAODTrack;
class AliESDtrack;
class AliESDPmdTrack;
class AliFlowBayesianPID;
class AliESDkink;
class AliESDv0;
class AliESDVZERO;
class AliPIDResponse;
class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
public:
AliFlowTrackCuts();
AliFlowTrackCuts(const char* name);
AliFlowTrackCuts(const AliFlowTrackCuts& someCuts);
AliFlowTrackCuts& operator=(const AliFlowTrackCuts& someCuts);
virtual ~AliFlowTrackCuts();
static AliFlowTrackCuts* GetAODTrackCutsForFilterBit(UInt_t bit = 1, TString suffix = "");
static AliFlowTrackCuts* GetStandardTPCStandaloneTrackCuts();
static AliFlowTrackCuts* GetStandardTPCStandaloneTrackCuts2010();
static AliFlowTrackCuts* GetStandardGlobalTrackCuts2010();
static AliFlowTrackCuts* GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE);
static AliFlowTrackCuts* GetStandardVZEROOnlyTrackCuts();
static AliFlowTrackCuts* GetStandardVZEROOnlyTrackCuts2010();
static AliFlowTrackCuts* GetStandardVZEROOnlyTrackCuts2011();
static AliFlowTrackCuts* GetStandardMuonTrackCuts(Bool_t isMC=kFALSE, Int_t passN=2);
Int_t Count(AliVEvent* event=NULL);
enum trackParameterType { kMC,
kGlobal,
kTPCstandalone,
kSPDtracklet,
kPMD,
kV0,
kVZERO,
kMUON,
kKink,
kAODFilterBit,
kUserA,
kUserB
};
enum trackParameterMix { kPure,
kTrackWithMCkine,
kTrackWithMCPID,
kTrackWithMCpt,
kTrackWithPtFromFirstMother,
kTrackWithTPCInnerParams,
kTrackWithTPCstandalone
};
enum PIDsource {
kTPCpid,
kTOFpid,
kTOFbayesian,
kTOFbeta,
kTPCdedx,
kTOFbetaSimple,
kTPCbayesian,
kTPCNuclei,
kTPCTOFNsigma
};
void SetMinNClustersTPC( Int_t a ) {fCutNClustersTPC=kTRUE; fNClustersTPCMin=a;}
void SetMinNClustersITS( Int_t a ) {fCutNClustersITS=kTRUE; fNClustersITSMin=a;}
void SetClusterRequirementITS( AliESDtrackCuts::Detector det,
AliESDtrackCuts::ITSClusterRequirement req = AliESDtrackCuts::kOff )
{ InitESDcuts(); fAliESDtrackCuts->SetClusterRequirementITS(det,req); }
void SetMaxChi2PerClusterTPC( Float_t a ) {fMaxChi2PerClusterTPC=a;fCutChi2PerClusterTPC=kTRUE;}
void SetMinChi2PerClusterTPC( Float_t a ) {fMinChi2PerClusterTPC=a;fCutChi2PerClusterTPC=kTRUE;}
void SetMaxChi2PerClusterITS( Float_t a ) {InitESDcuts(); fAliESDtrackCuts->SetMaxChi2PerClusterITS(a);}
void SetRequireTPCRefit( Bool_t a ) {InitESDcuts(); fAliESDtrackCuts->SetRequireTPCRefit(a);}
void SetRequireTPCStandAlone( Bool_t a) {InitESDcuts(); fAliESDtrackCuts->SetRequireTPCStandAlone(a);}
void SetRequireITSRefit( Bool_t a ) {InitESDcuts(); fAliESDtrackCuts->SetRequireITSRefit(a);}
void SetRequireITSStandAlone( Bool_t a) {InitESDcuts(); fAliESDtrackCuts->SetRequireITSStandAlone(a);}
void SetAcceptKinkDaughters( Bool_t a ) {InitESDcuts(); fAliESDtrackCuts->SetAcceptKinkDaughters(a);}
void SetMaxDCAToVertexZ( Float_t a ) {InitESDcuts(); fAliESDtrackCuts->SetMaxDCAToVertexZ(a);fCutDCAToVertexZ=kTRUE;}
void SetMaxDCAToVertexXY( Float_t a ) {InitESDcuts(); fAliESDtrackCuts->SetMaxDCAToVertexXY(a);fCutDCAToVertexXY=kTRUE;}
void SetMaxDCAToVertexXYPtDep( const char* a ) {InitESDcuts(); fAliESDtrackCuts->SetMaxDCAToVertexXYPtDep(a);}
void SetRequireSigmaToVertex(Bool_t a) {InitESDcuts(); fAliESDtrackCuts->SetRequireSigmaToVertex(a);}
void SetMaxNsigmaToVertex(Float_t sigma=1e10) {InitESDcuts(); fAliESDtrackCuts->SetMaxNsigmaToVertex(sigma); }
void SetDCAToVertex2D( Bool_t a ) {InitESDcuts(); fAliESDtrackCuts->SetDCAToVertex2D(a);}
void SetEtaRange( Float_t r1, Float_t r2 ) { SetEtaMin(r1); SetEtaMax(r2); }
void SetPtRange( Float_t r1, Float_t r2 ) { SetPtMin(r1); SetPtMax(r2); }
void SetRequireCharge( Bool_t r ) {fRequireCharge=r;}
void SetFakesAreOK( Bool_t b ) {fFakesAreOK=b;}
void SetSPDtrackletDeltaPhiMax( Double_t m ) {fSPDtrackletDeltaPhiMax=m; fCutSPDtrackletDeltaPhi=kTRUE;}
void SetSPDtrackletDeltaPhiMin( Double_t m ) {fSPDtrackletDeltaPhiMin=m; fCutSPDtrackletDeltaPhi=kTRUE;}
void SetIgnoreTPCzRange( Double_t min, Double_t max )
{ fIgnoreTPCzRange=kTRUE; fIgnoreTPCzRangeMin=min; fIgnoreTPCzRangeMax=max; }
void SetAODfilterBit( UInt_t a ) {fAODFilterBit = a; fUseAODFilterBit = kTRUE;}
void SetMinimalTPCdedx(Double_t d=10.) {fMinimalTPCdedx=d; fCutMinimalTPCdedx=kTRUE;}
void SetPmdDetPlane(Int_t pmdDet){fCutPmdDet=kTRUE; fPmdDet = pmdDet; }
void SetPmdAdc(Float_t pmdAdc){fCutPmdAdc=kTRUE; fPmdAdc = pmdAdc; }
void SetPmdNcell(Float_t pmdNcell) {fCutPmdNcell=kTRUE; fPmdNcell = pmdNcell; }
void SetPriors(Float_t centr = 0);
AliMuonTrackCuts *GetMuonTrackCuts() { InitMuonCuts(); return fMuonTrackCuts; }
void SetStandardMuonTrackCuts() { InitMuonCuts(); fMuonTrackCuts->SetDefaultFilterMask(); return; }
void SetIsMuonMC(Bool_t isMC) { InitMuonCuts(); fMuonTrackCuts->SetIsMC(isMC); return; }
void SetMuonPassNumber(Int_t passN) { InitMuonCuts(); fMuonTrackCuts->SetPassNumber(passN); return; }
void SetRunsMuon(const AliInputEventHandler* eventHandler) { if (fMuonTrackCuts) fMuonTrackCuts->SetRun(eventHandler); }
void SetForceTPCstandalone(Bool_t b) {fForceTPCstandalone=b;}
void SetMinKinkAngle(Double_t a) {fMinKinkAngle=a;}
void SetMinKinkRadius(Double_t r) {fMinKinkRadius=r;}
void SetMaxKinkRAdius(Double_t r) {fMaxKinkRadius=r;}
void SetMinKinkQt(Double_t m) {fMinKinkQt=m;}
void SetMaxKinkQt(Double_t m) {fMaxKinkQt=m;}
void SetMaxKinkInvMassKmu(Double_t m) {fMaxKinkInvMassKmu=m;}
void SetMinKinkInvMassKmu(Double_t m) {fMinKinkInvMassKmu=m;}
Double_t GetMinKinkAngle() const {return fMinKinkAngle;}
Double_t GetMinKinkRadius() const {return fMinKinkRadius;}
Double_t GetMaxKinkRadius() const {return fMaxKinkRadius;}
Double_t GetMinKinkQt() const {return fMinKinkQt;}
Double_t GetMaxKinkQt() const {return fMaxKinkQt;}
Double_t GetMaxKinkInvMassKmu() const {return fMaxKinkInvMassKmu;}
Double_t GetMinKinkInvMassKmu() const {return fMinKinkInvMassKmu;}
Int_t GetMinNClustersTPC() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMinNClusterTPC();}
Int_t GetMinNClustersITS() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMinNClustersITS();}
AliESDtrackCuts::ITSClusterRequirement GetClusterRequirementITS( AliESDtrackCuts::Detector det ) const
{if (!fAliESDtrackCuts) return AliESDtrackCuts::kOff; return fAliESDtrackCuts->GetClusterRequirementITS(det); }
Float_t GetMaxChi2PerClusterTPC() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxChi2PerClusterTPC();}
Float_t GetMaxChi2PerClusterITS() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxChi2PerClusterITS();}
Bool_t GetRequireTPCRefit() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetRequireTPCRefit();}
Bool_t GetRequireTPCStandAlone() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetRequireTPCStandAlone();}
Bool_t GetRequireITSRefit() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetRequireITSRefit();}
Bool_t GetRequireITSStandAlone() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetRequireITSStandAlone();}
Bool_t GetAcceptKinkDaughters() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetAcceptKinkDaughters();}
Float_t GetMaxDCAToVertexZ() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxDCAToVertexZ();}
Float_t GetMaxDCAToVertexXY() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxDCAToVertexXY();}
const char* GetMaxDCAToVertexXYPtDep() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxDCAToVertexXYPtDep();}
Bool_t GetRequireSigmaToVertex() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetRequireSigmaToVertex();}
Float_t GetMaxNsigmaToVertex() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetMaxNsigmaToVertex(); }
Bool_t GetDCAToVertex2D() const {if (!fAliESDtrackCuts) return 0; return fAliESDtrackCuts->GetDCAToVertex2D();}
void GetEtaRange( Float_t& r1, Float_t& r2 ) const { r1=GetEtaMin(); r2=GetEtaMax(); }
void GetPtRange( Float_t& r1, Float_t& r2 ) const { r1=GetPtMin(); r2=GetPtMax(); }
Bool_t GetRequireCharge() const {return fRequireCharge;}
Bool_t GetFakesAreOK() const {return fFakesAreOK;}
Double_t GetSPDtrackletDeltaPhiMax() const {return fSPDtrackletDeltaPhiMax;}
Double_t GetSPDtrackletDeltaPhiMin() const {return fSPDtrackletDeltaPhiMin;}
UInt_t GetAODFilterBit() const {if (!fUseAODFilterBit) return 0; return fAODFilterBit;}
Double_t GetMinimalTPCdedx() const {return fMinimalTPCdedx;}
Int_t GetPmdDetPlane()const {return fPmdDet; }
Float_t GetPmdAdc()const {return fPmdAdc;}
Float_t GetPmdNcell() const {return fPmdNcell; }
Float_t GetBeta(const AliVTrack* t, Bool_t QAmode = kFALSE);
Float_t Getdedx(const AliESDtrack* t) const;
Float_t GetBayesianProb() const {return fProbBayes;};
AliFlowBayesianPID* GetBayesianResponse() const {return fBayesianResponse;}
Bool_t GetForceTPCstandalone() const {return fForceTPCstandalone;}
void SetQA(Bool_t b=kTRUE) {if (b) DefineHistograms();}
TList* GetQA() const {return fQA;}
TH1* QAbefore(Int_t i) {return static_cast<TH1*>(static_cast<TList*>(fQA->At(0))->At(i));}
TH1* QAafter(Int_t i) {return static_cast<TH1*>(static_cast<TList*>(fQA->At(1))->At(i));}
void SetIgnoreSignInMCPID( Bool_t b=kTRUE ) {fIgnoreSignInMCPID=b;}
void SetCutMC( Bool_t b=kTRUE );
void SetCutMChasTrackReferences(Bool_t b=kTRUE) {fCutMChasTrackReferences=b;}
void SetMCprocessType( TMCProcess t ) { fMCprocessType = t; fCutMCprocessType=kTRUE; SetCutMC();}
void SetMCisPrimary( Bool_t b=kTRUE ) { fMCisPrimary=b; fCutMCisPrimary=kTRUE; SetCutMC();}
void SetMCPID( Int_t pid ) { fMCPID=pid; fCutMCPID=kTRUE; SetCutMC(); }
void SetMCfirstMotherPID( Int_t pid ) { fMCfirstMotherPID=pid; fCutMCfirstMotherPID=kTRUE; SetCutMC(); }
TMCProcess GetMCprocessType() const { return fMCprocessType; }
Bool_t GetMCisPrimary() const {return fMCisPrimary;}
Int_t GetMCPID() const {return fMCPID;}
void SetRequireTransportBitForPrimaries(Bool_t b) {fRequireTransportBitForPrimaries=b; SetCutMC();}
void SetParamType(trackParameterType paramType) {fParamType=paramType;}
trackParameterType GetParamType() const {return fParamType;}
static const char* GetParamTypeName(trackParameterType type);
void SetParamMix(trackParameterMix paramMix) {fParamMix=paramMix;}
trackParameterMix GetParamMix() const {return fParamMix;}
virtual Bool_t IsSelected(TObject* obj, Int_t id=-666);
virtual Bool_t IsSelectedMCtruth(TObject* obj, Int_t id=-666);
AliVParticle* GetTrack() const {return fTrack;}
AliMCParticle* GetMCparticle() const {return fMCparticle;}
Bool_t FillFlowTrack(AliFlowTrack* track) const;
AliFlowTrack* FillFlowTrack(TObjArray* trackCollection, Int_t trackIndex) const;
Bool_t IsPhysicalPrimary() const;
static Bool_t IsPhysicalPrimary(AliMCEvent* p, Int_t label, Bool_t requiretransported=kTRUE);
void SetMCevent(AliMCEvent* mcEvent) {fMCevent=mcEvent;}
AliMCEvent* GetMCevent() const {return fMCevent;}
void SetEvent(AliVEvent* event, AliMCEvent* mcEvent=NULL);
AliVEvent* GetEvent() const {return fEvent;}
Int_t GetNumberOfInputObjects() const;
TObject* GetInputObject(Int_t i);
void Clear(Option_t* option="");
void ClearTrack(Option_t* option="");
Double_t GetPmdEta(Float_t xPos, Float_t yPos, Float_t zPos);
Double_t GetPmdPhi(Float_t xPos, Float_t yPos);
void SetPID(AliPID::EParticleType pid, PIDsource s=kTOFpid, Double_t prob=0.9)
{fParticleID=pid; fPIDsource=s; fParticleProbability=prob; fCutPID=kTRUE; InitPIDcuts();}
AliPID::EParticleType GetParticleID() const {return fParticleID;}
Bool_t GetCutPID() const {return fCutPID;}
void SetTPCpidCuts(const TMatrixF* mat) {fTPCpidCuts=new TMatrixF(*mat);}
void SetTOFpidCuts(const TMatrixF* mat) {fTOFpidCuts=new TMatrixF(*mat);}
static const char* PIDsourceName(PIDsource s);
AliESDpid& GetESDpid() {return fESDpid;}
void SetAllowTOFmismatchFlag(Bool_t b=kTRUE) {fAllowTOFmismatchFlag=b;}
Bool_t GetAllowTOFmismatchFlag() const {return fAllowTOFmismatchFlag;}
void SetRequireStrictTOFTPCagreement(Bool_t b=kTRUE) {fRequireStrictTOFTPCagreement=b;}
Bool_t GetRequireStrictTOFTPCagreement() const {return fRequireStrictTOFTPCagreement;}
void SetRejectElectronsWithTPCpid(Bool_t b=kTRUE) {fCutRejectElectronsWithTPCpid=b;}
void SetLinearizeVZEROresponse( Bool_t b=kTRUE ) {fLinearizeVZEROresponse=b;}
Bool_t PassesCuts(AliVParticle* track);
Bool_t PassesESDcuts(AliESDtrack* track);
Bool_t PassesAODcuts(const AliAODTrack* track, Bool_t passFid=kTRUE);
Bool_t PassesPMDcuts(const AliESDPmdTrack* track);
Bool_t PassesVZEROcuts(Int_t id);
Bool_t PassesCuts(const AliFlowTrackSimple* track);
Bool_t PassesCuts(const AliMultiplicity* track, Int_t id);
Bool_t PassesCuts(const AliAODTracklets* track, Int_t id);
Bool_t PassesCuts(const AliESDkink* kink);
Bool_t PassesCuts(const AliESDv0* v0);
Bool_t PassesMCcuts();
Bool_t PassesMCcuts(AliMCEvent* mcevent, Int_t label);
Bool_t PassesTPCdedxCut(const AliESDtrack* track);
Bool_t PassesTPCbayesianCut(const AliESDtrack* track);
Bool_t PassesTPCpidCut(const AliESDtrack* track) const;
Bool_t PassesTOFbetaCut(const AliESDtrack* track);
Bool_t PassesTOFbetaSimpleCut(const AliESDtrack* track);
Bool_t PassesTOFpidCut(const AliESDtrack* track) const;
Bool_t PassesESDpidCut(const AliESDtrack* track);
Bool_t PassesAODpidCut(const AliAODTrack* track);
Bool_t PassesMuonCuts(AliVParticle* track);
Bool_t PassesTPCbayesianCut(const AliAODTrack* track);
Bool_t PassesTOFbayesianCut(const AliAODTrack* track);
Bool_t PassesTOFbetaCut(const AliAODTrack* track);
void Browse(TBrowser* b);
Long64_t Merge(TCollection* list);
void SetVZEROgainEqualisation(TH1* g) {fVZEROgainEqualization=g;}
void SetVZEROApol(Int_t ring, Float_t f) {fVZEROApol[ring]=f;}
void SetVZEROCpol(Int_t ring, Float_t f) {fVZEROCpol[ring]=f;}
void SetApplyRecentering(Bool_t r) { fApplyRecentering = r; }
Bool_t GetApplyRecentering() const { return fApplyRecentering;}
void SetVZEROgainEqualizationPerRing(Bool_t s) {fVZEROgainEqualizationPerRing = s;}
Bool_t GetVZEROgainEqualizationPerRing() const {return fVZEROgainEqualizationPerRing;}
void SetUseVZERORing(Int_t i, Bool_t u) {
fUseVZERORing[i] = u;
fVZEROgainEqualizationPerRing = kTRUE;
}
Bool_t GetUseVZERORing(Int_t i) const {return fUseVZERORing[i];}
void SetChi2A(TArrayD* Chi2A) {fChi2A = Chi2A;}
void SetChi3A(TArrayD* Chi3A) {fChi3A = Chi3A;}
void SetChi2C(TArrayD* Chi2C) {fChi2C = Chi2C;}
void SetChi3C(TArrayD* Chi3C) {fChi3C = Chi3C;}
TArrayD* GetChi2A() {return fChi2A;}
TArrayD* GetChi3A() {return fChi3A;}
TArrayD* GetChi2C() {return fChi2C;}
TArrayD* GetChi3C() {return fChi3C;}
void SetNumberOfSigmas(Float_t val) {fNsigmaCut2 = val*val;};
Float_t GetNumberOfSigmas() const {return TMath::Sqrt(fNsigmaCut2);};
protected:
Bool_t FillFlowTrackVParticle(AliFlowTrack* t) const;
Bool_t FillFlowTrackGeneric(AliFlowTrack* t) const;
AliFlowTrack* FillFlowTrackKink(TObjArray* trackCollection, Int_t trackIndex) const;
AliFlowTrack* FillFlowTrackVZERO(TObjArray* trackCollection, Int_t trackIndex) const;
AliFlowTrack* FillFlowTrackGeneric(TObjArray* trackCollection, Int_t trackIndex) const;
AliFlowTrack* FillFlowTrackVParticle(TObjArray* trackCollection, Int_t trackIndex) const;
void HandleESDtrack(AliESDtrack* track);
void HandleVParticle(AliVParticle* track);
void DefineHistograms();
void InitPIDcuts();
void InitESDcuts() {if (!fAliESDtrackCuts) {fAliESDtrackCuts=new AliESDtrackCuts();}}
void InitMuonCuts() { if (!fMuonTrackCuts) fMuonTrackCuts =new AliMuonTrackCuts("StdMuCuts","StdMuCuts"); return; }
Bool_t PassesTOFbayesianCut(const AliESDtrack* track);
Bool_t PassesNucleiSelection(const AliESDtrack* track);
Bool_t PassesTPCTOFNsigmaCut(const AliAODTrack* track);
Bool_t PassesTPCTOFNsigmaCut(const AliESDtrack* track);
Bool_t TPCTOFagree(const AliVTrack *track);
AliESDtrackCuts* fAliESDtrackCuts;
AliMuonTrackCuts* fMuonTrackCuts;
TList* fQA;
Bool_t fCutMC;
Bool_t fCutMChasTrackReferences;
Bool_t fCutMCprocessType;
TMCProcess fMCprocessType;
Bool_t fCutMCPID;
Int_t fMCPID;
Bool_t fCutMCfirstMotherPID;
Int_t fMCfirstMotherPID;
Bool_t fIgnoreSignInMCPID;
Bool_t fCutMCisPrimary;
Bool_t fRequireTransportBitForPrimaries;
Bool_t fMCisPrimary;
Bool_t fRequireCharge;
Bool_t fFakesAreOK;
Bool_t fCutSPDtrackletDeltaPhi;
Double_t fSPDtrackletDeltaPhiMax;
Double_t fSPDtrackletDeltaPhiMin;
Bool_t fIgnoreTPCzRange;
Double_t fIgnoreTPCzRangeMax;
Double_t fIgnoreTPCzRangeMin;
Bool_t fCutChi2PerClusterTPC;
Float_t fMaxChi2PerClusterTPC;
Float_t fMinChi2PerClusterTPC;
Bool_t fCutNClustersTPC;
Int_t fNClustersTPCMax;
Int_t fNClustersTPCMin;
Bool_t fCutNClustersITS;
Int_t fNClustersITSMax;
Int_t fNClustersITSMin;
Bool_t fUseAODFilterBit;
UInt_t fAODFilterBit;
Bool_t fCutDCAToVertexXY;
Bool_t fCutDCAToVertexZ;
Bool_t fCutMinimalTPCdedx;
Double_t fMinimalTPCdedx;
Bool_t fLinearizeVZEROresponse;
Bool_t fCutPmdDet;
Int_t fPmdDet;
Bool_t fCutPmdAdc;
Float_t fPmdAdc;
Bool_t fCutPmdNcell;
Float_t fPmdNcell;
Double_t fMinKinkAngle;
Double_t fMinKinkRadius;
Double_t fMaxKinkRadius;
Double_t fMinKinkQt;
Double_t fMaxKinkQt;
Double_t fMinKinkInvMassKmu;
Double_t fMaxKinkInvMassKmu;
Bool_t fForceTPCstandalone;
Bool_t fRequireKinkDaughters;
trackParameterType fParamType;
trackParameterMix fParamMix;
AliESDkink* fKink;
AliESDv0* fV0;
AliVParticle* fTrack;
Double_t fTrackMass;
Double_t fTrackPt;
Double_t fTrackPhi;
Double_t fTrackEta;
Double_t fTrackWeight;
Int_t fTrackLabel;
AliMCEvent* fMCevent;
AliMCParticle* fMCparticle;
AliVEvent* fEvent;
AliESDtrack fTPCtrack;
AliESDpid fESDpid;
AliFlowBayesianPID *fBayesianResponse;
PIDsource fPIDsource;
TMatrixF* fTPCpidCuts;
TMatrixF* fTOFpidCuts;
AliPID::EParticleType fParticleID;
Double_t fParticleProbability;
Bool_t fAllowTOFmismatchFlag;
Bool_t fRequireStrictTOFTPCagreement;
Bool_t fCutRejectElectronsWithTPCpid;
static const Int_t fgkPIDptBin = 20;
Float_t fC[fgkPIDptBin][5],fBinLimitPID[fgkPIDptBin];
Float_t fProbBayes;
Float_t fCurrCentr;
TH1* fVZEROgainEqualization;
Bool_t fApplyRecentering;
Bool_t fVZEROgainEqualizationPerRing;
Float_t fVZEROApol[4];
Float_t fVZEROCpol[4];
Bool_t fUseVZERORing[8];
static const Int_t fgkNumberOfVZEROtracks=64;
TArrayD* fChi2A;
TArrayD* fChi2C;
TArrayD* fChi3A;
TArrayD* fChi3C;
AliPIDResponse *fPIDResponse;
Float_t fNsigmaCut2;
ClassDef(AliFlowTrackCuts,15)
};
#endif