ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
/* See cxx source for full Copyright notice */
/* $Id$ */

// AliFlowTrackESDCuts:
// A cut class for ESD, AOD and MC particles for the flow framework
// author: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
// mods:   Redmer A. Bertens (rbertens@cern.ch)

#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"  // XZhang 20120604
#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;  // XZhang 20120615
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);  // XZhang 20120604

  Int_t Count(AliVEvent* event=NULL);

  enum trackParameterType { kMC, 
                            kGlobal, 
                            kTPCstandalone, 
                            kSPDtracklet,
                            kPMD,
                            kV0,    //neutral reconstructed v0 particle
                            kVZERO, //forward VZERO detector
                            kMUON,  // XZhang 20120604
                            kKink,
                            kAODFilterBit,
                            kUserA, // reserved for custom cuts
                            kUserB  // reserved for custom cuts
                          };
  enum trackParameterMix  { kPure, 
                            kTrackWithMCkine, 
                            kTrackWithMCPID, 
                            kTrackWithMCpt, 
                            kTrackWithPtFromFirstMother,
                            kTrackWithTPCInnerParams,
                            kTrackWithTPCstandalone
                          };
  enum PIDsource {
                   kTPCpid,      // default TPC pid (via GetTPCpid)
                   kTOFpid,      // default TOF pid (via GetTOFpid)
                   kTOFbayesian, // TOF bayesian pid (F.Noferini)
                   kTOFbeta,     // asymmetric cuts of TOF beta signal
                   kTPCdedx,      // asymmetric cuts of TPC dedx signal
                   kTOFbetaSimple, //simple TOF only cut
                   kTPCbayesian, //bayesian cutTPC
		   kTPCNuclei,   // added by Natasha for Nuclei
                   kTPCTOFNsigma // simple cut on combined tpc tof nsigma
                   };

  //setters (interface to AliESDtrackCuts)
  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); // set my favourite priors for Bayesian PID (requested if Bayesian PID is used)

  AliMuonTrackCuts *GetMuonTrackCuts() { InitMuonCuts(); return fMuonTrackCuts; }                           // XZhang 20121014
  void SetStandardMuonTrackCuts()      { InitMuonCuts(); fMuonTrackCuts->SetDefaultFilterMask(); return; }  // XZhang 20120604
  void SetIsMuonMC(Bool_t isMC)        { InitMuonCuts(); fMuonTrackCuts->SetIsMC(isMC);          return; }  // XZhang 20120604
  void SetMuonPassNumber(Int_t passN)  { InitMuonCuts(); fMuonTrackCuts->SetPassNumber(passN);   return; }  // XZhang 20121013
  void SetRunsMuon(const AliInputEventHandler* eventHandler) { if (fMuonTrackCuts) fMuonTrackCuts->SetRun(eventHandler); }  // XZhang 20120604

  void SetForceTPCstandalone(Bool_t b) {fForceTPCstandalone=b;}

  //Kinks
  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));}  

  //MC stuff
  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;}
  //AliFlowTrack* MakeFlowTrack() const;
  Bool_t FillFlowTrack(AliFlowTrack* track) const;
  //FillFlowTrackV0(TObjArray* trackCollection, Int_t trackIndex) 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);  

  //PID
  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;}

  //these should maybe be protected
  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);  // XZhang 20120615
  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);  // XZhang 20120604
  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);
  
  //gain equalization and recentering
  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;}
  // set the flag for recentering (which is done in AliFlowEvent)
  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;}
  // exclude vzero rings: 0 through 7 can be excluded by calling this setter multiple times
  // 0 corresponds to segment ID 0 through 7, etc
  // disabled vzero rings get weight 0
  void SetUseVZERORing(Int_t i, Bool_t u) {
      fUseVZERORing[i] = u;
      fVZEROgainEqualizationPerRing = kTRUE;       // must be true for this option
  }
  Bool_t GetUseVZERORing(Int_t i) const {return fUseVZERORing[i];}
  void SetChi2A(TArrayD*  Chi2A) {fChi2A = Chi2A;}  // chi vs cent for vzero A ep_2
  void SetChi3A(TArrayD*  Chi3A) {fChi3A = Chi3A;}
  void SetChi2C(TArrayD*  Chi2C) {fChi2C = Chi2C;}
  void SetChi3C(TArrayD*  Chi3C) {fChi3C = Chi3C;}

  TArrayD* GetChi2A() {return fChi2A;}  // chi vs cent for vzero A ep_2
  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:
  //AliFlowTrack* MakeFlowTrackSPDtracklet() const;
  //AliFlowTrack* MakeFlowTrackPMDtrack() const;
  //AliFlowTrack* MakeFlowTrackVZERO() const;
  //AliFlowTrack* MakeFlowTrackVParticle() const;
  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; }  // XZhang 20120604
  // part added by F. Noferini
  Bool_t PassesTOFbayesianCut(const AliESDtrack* track); 
  Bool_t PassesNucleiSelection(const AliESDtrack* track);   // added by Natasha
  Bool_t PassesTPCTOFNsigmaCut(const AliAODTrack* track); 
  Bool_t PassesTPCTOFNsigmaCut(const AliESDtrack* track);
  Bool_t TPCTOFagree(const AliVTrack *track);
  // end part added by F. Noferini

  //the cuts
  AliESDtrackCuts* fAliESDtrackCuts; //alianalysis cuts
  AliMuonTrackCuts* fMuonTrackCuts;  // muon selection cuts // XZhang 20120604
  TList* fQA;                        //qa histograms go here
  Bool_t fCutMC;                     //do we cut on MC?
  Bool_t fCutMChasTrackReferences;   //did we leave a trace in the detector?
  Bool_t fCutMCprocessType;          //do we cut on mc process type?
  TMCProcess fMCprocessType;         //mc process type
  Bool_t fCutMCPID;                  //cut on MC pid?
  Int_t fMCPID;                      //MC PID
  Bool_t fCutMCfirstMotherPID;       //cut on PID of first mother?
  Int_t fMCfirstMotherPID;           //PID of the first mother of track
  Bool_t fIgnoreSignInMCPID;           //when MC PID cut is set, pass also the antiparticle
  Bool_t fCutMCisPrimary;            //do we cut on primaryness?
  Bool_t fRequireTransportBitForPrimaries; //require the transport bit to be set for primaries
  Bool_t fMCisPrimary;               //is MC primary
  Bool_t fRequireCharge;          //is charged?
  Bool_t fFakesAreOK;             //are fakes (negative labels) ok?
  Bool_t fCutSPDtrackletDeltaPhi; //are we cutting on the trcklet deltaphi?
  Double_t fSPDtrackletDeltaPhiMax; //maximal deltaphi for tracklets
  Double_t fSPDtrackletDeltaPhiMin; //minimal deltaphi for tracklets
  Bool_t fIgnoreTPCzRange;   //ignore tracks going close to central membrane
  Double_t fIgnoreTPCzRangeMax; //max z to ignore
  Double_t fIgnoreTPCzRangeMin; //min z to ignore
  Bool_t fCutChi2PerClusterTPC; //cut on tpc chi2
  Float_t fMaxChi2PerClusterTPC; //max chi2 tpc/cluster
  Float_t fMinChi2PerClusterTPC; //min chi2 tpc/cluster
  Bool_t fCutNClustersTPC;       //cut on clusters?
  Int_t fNClustersTPCMax;        //max tpc ncls
  Int_t fNClustersTPCMin;        //min tpc clusters  
  Bool_t fCutNClustersITS;       //cut on clusters?
  Int_t fNClustersITSMax;        //max tpc ncls
  Int_t fNClustersITSMin;        //min tpc clusters  
  Bool_t fUseAODFilterBit;       //use AOD filter bit selection?
  UInt_t fAODFilterBit;          //AOD filter bit to select
  Bool_t fCutDCAToVertexXY;      //dca xy cut
  Bool_t fCutDCAToVertexZ;       //dca z cut
  Bool_t fCutMinimalTPCdedx;    //cut on minimal dedx in TPC to reject noise tracks
  Double_t fMinimalTPCdedx;       //value for minimal TPC dedx
  Bool_t fLinearizeVZEROresponse; //linearize VZERO response using AliESDUtil
  
  Bool_t  fCutPmdDet;   //cut on PMD detector plane 
  Int_t   fPmdDet;      // value of PMD detector plane
  Bool_t  fCutPmdAdc;   //cut on cluster ADC
  Float_t fPmdAdc;      //value of cluster ADC
  Bool_t  fCutPmdNcell; //cut on cluster ncell
  Float_t fPmdNcell;    //value of cluster ncell

  Double_t fMinKinkAngle; //max kink angle
  Double_t fMinKinkRadius; //min kink radius
  Double_t fMaxKinkRadius; //max kink radius
  Double_t fMinKinkQt; //min kink qt
  Double_t fMaxKinkQt; //max kink qt
  Double_t fMinKinkInvMassKmu; //max kink inv mass
  Double_t fMaxKinkInvMassKmu; //max kink inv mass
  Bool_t fForceTPCstandalone; //use TPC parameters when applying cuts on the kink mother
  Bool_t fRequireKinkDaughters; //well, the name says it all
   
  trackParameterType fParamType;     //parameter type tu cut on
  trackParameterMix fParamMix;       //parameter mixing
  
  AliESDkink* fKink;                 //!placeholder for the current kink
  AliESDv0* fV0;                     //!placeholder for the current V0
  AliVParticle* fTrack;              //!the track to apply cuts on
  Double_t fTrackMass;               //!mass of the particle
  Double_t fTrackPt;                 //!track pt
  Double_t fTrackPhi;                //!track phi
  Double_t fTrackEta;                //!track eta
  Double_t fTrackWeight;             //!track weight
  Int_t fTrackLabel;                 //!track label, or its absolute value if FakesAreOK
  AliMCEvent* fMCevent;              //!mc event
  AliMCParticle* fMCparticle;        //!mc particle
  AliVEvent* fEvent;                 //!placeholder for current event
  AliESDtrack fTPCtrack;             //!placeholder for TPC only track to avoid new/delete on every track

  //PID
  AliESDpid fESDpid; //pid obj
  AliFlowBayesianPID *fBayesianResponse; //! Baysian response with all the TOF tuning (using fESDpid)
  PIDsource fPIDsource; //pid source
  TMatrixF* fTPCpidCuts; //tpc pid cuts
  TMatrixF* fTOFpidCuts; //tof pid cuts
  AliPID::EParticleType fParticleID; //alipid
  Double_t fParticleProbability; //desired prob for a particle type
  Bool_t fAllowTOFmismatchFlag; //allow TOFmismatch flag=1 in ESD
  Bool_t fRequireStrictTOFTPCagreement; //require stricter than TOFmismatch flag TOF-TPC agreement
  Bool_t fCutRejectElectronsWithTPCpid; //reject electrons with TPC pid

  // part added by F. Noferini
  static const Int_t fgkPIDptBin = 20; // pT bins for priors
  Float_t fC[fgkPIDptBin][5],fBinLimitPID[fgkPIDptBin]; // pt bin limit and priors
  Float_t fProbBayes; // bayesian probability
  Float_t fCurrCentr; // current centrality used for set the priors
  // end part added by F. Noferini
  
  //gain equalization and recentering for vzero
  TH1* fVZEROgainEqualization;     //! equalization histo
  Bool_t fApplyRecentering;     // apply recentering of q-sub vectors in AliFlowEvent ?
  Bool_t fVZEROgainEqualizationPerRing;    // per ring vzero gain calibration
  Float_t fVZEROApol[4];           //! calibration info per ring
  Float_t fVZEROCpol[4];           //! calibration info per ring
  Bool_t fUseVZERORing[8];      // kTRUE means the ring is included
  static const Int_t fgkNumberOfVZEROtracks=64; //number of VZERO channels
  TArrayD*      fChi2A;                 // chi vs cent for vzero A ep_2
  TArrayD*      fChi2C;                 // chi vs cent for vzero C ep_2
  TArrayD*      fChi3A;                 // chi vs cent for vzero A ep_3
  TArrayD*      fChi3C;                 // chi vs cent for vzero C ep_3

  AliPIDResponse *fPIDResponse;            //! Pid reponse to manage Nsigma cuts
  Float_t fNsigmaCut2;                     // Number of sigma^2 (cut value) for TPC+TOF nsigma cut

  ClassDef(AliFlowTrackCuts,15)
};

#endif



 AliFlowTrackCuts.h:1
 AliFlowTrackCuts.h:2
 AliFlowTrackCuts.h:3
 AliFlowTrackCuts.h:4
 AliFlowTrackCuts.h:5
 AliFlowTrackCuts.h:6
 AliFlowTrackCuts.h:7
 AliFlowTrackCuts.h:8
 AliFlowTrackCuts.h:9
 AliFlowTrackCuts.h:10
 AliFlowTrackCuts.h:11
 AliFlowTrackCuts.h:12
 AliFlowTrackCuts.h:13
 AliFlowTrackCuts.h:14
 AliFlowTrackCuts.h:15
 AliFlowTrackCuts.h:16
 AliFlowTrackCuts.h:17
 AliFlowTrackCuts.h:18
 AliFlowTrackCuts.h:19
 AliFlowTrackCuts.h:20
 AliFlowTrackCuts.h:21
 AliFlowTrackCuts.h:22
 AliFlowTrackCuts.h:23
 AliFlowTrackCuts.h:24
 AliFlowTrackCuts.h:25
 AliFlowTrackCuts.h:26
 AliFlowTrackCuts.h:27
 AliFlowTrackCuts.h:28
 AliFlowTrackCuts.h:29
 AliFlowTrackCuts.h:30
 AliFlowTrackCuts.h:31
 AliFlowTrackCuts.h:32
 AliFlowTrackCuts.h:33
 AliFlowTrackCuts.h:34
 AliFlowTrackCuts.h:35
 AliFlowTrackCuts.h:36
 AliFlowTrackCuts.h:37
 AliFlowTrackCuts.h:38
 AliFlowTrackCuts.h:39
 AliFlowTrackCuts.h:40
 AliFlowTrackCuts.h:41
 AliFlowTrackCuts.h:42
 AliFlowTrackCuts.h:43
 AliFlowTrackCuts.h:44
 AliFlowTrackCuts.h:45
 AliFlowTrackCuts.h:46
 AliFlowTrackCuts.h:47
 AliFlowTrackCuts.h:48
 AliFlowTrackCuts.h:49
 AliFlowTrackCuts.h:50
 AliFlowTrackCuts.h:51
 AliFlowTrackCuts.h:52
 AliFlowTrackCuts.h:53
 AliFlowTrackCuts.h:54
 AliFlowTrackCuts.h:55
 AliFlowTrackCuts.h:56
 AliFlowTrackCuts.h:57
 AliFlowTrackCuts.h:58
 AliFlowTrackCuts.h:59
 AliFlowTrackCuts.h:60
 AliFlowTrackCuts.h:61
 AliFlowTrackCuts.h:62
 AliFlowTrackCuts.h:63
 AliFlowTrackCuts.h:64
 AliFlowTrackCuts.h:65
 AliFlowTrackCuts.h:66
 AliFlowTrackCuts.h:67
 AliFlowTrackCuts.h:68
 AliFlowTrackCuts.h:69
 AliFlowTrackCuts.h:70
 AliFlowTrackCuts.h:71
 AliFlowTrackCuts.h:72
 AliFlowTrackCuts.h:73
 AliFlowTrackCuts.h:74
 AliFlowTrackCuts.h:75
 AliFlowTrackCuts.h:76
 AliFlowTrackCuts.h:77
 AliFlowTrackCuts.h:78
 AliFlowTrackCuts.h:79
 AliFlowTrackCuts.h:80
 AliFlowTrackCuts.h:81
 AliFlowTrackCuts.h:82
 AliFlowTrackCuts.h:83
 AliFlowTrackCuts.h:84
 AliFlowTrackCuts.h:85
 AliFlowTrackCuts.h:86
 AliFlowTrackCuts.h:87
 AliFlowTrackCuts.h:88
 AliFlowTrackCuts.h:89
 AliFlowTrackCuts.h:90
 AliFlowTrackCuts.h:91
 AliFlowTrackCuts.h:92
 AliFlowTrackCuts.h:93
 AliFlowTrackCuts.h:94
 AliFlowTrackCuts.h:95
 AliFlowTrackCuts.h:96
 AliFlowTrackCuts.h:97
 AliFlowTrackCuts.h:98
 AliFlowTrackCuts.h:99
 AliFlowTrackCuts.h:100
 AliFlowTrackCuts.h:101
 AliFlowTrackCuts.h:102
 AliFlowTrackCuts.h:103
 AliFlowTrackCuts.h:104
 AliFlowTrackCuts.h:105
 AliFlowTrackCuts.h:106
 AliFlowTrackCuts.h:107
 AliFlowTrackCuts.h:108
 AliFlowTrackCuts.h:109
 AliFlowTrackCuts.h:110
 AliFlowTrackCuts.h:111
 AliFlowTrackCuts.h:112
 AliFlowTrackCuts.h:113
 AliFlowTrackCuts.h:114
 AliFlowTrackCuts.h:115
 AliFlowTrackCuts.h:116
 AliFlowTrackCuts.h:117
 AliFlowTrackCuts.h:118
 AliFlowTrackCuts.h:119
 AliFlowTrackCuts.h:120
 AliFlowTrackCuts.h:121
 AliFlowTrackCuts.h:122
 AliFlowTrackCuts.h:123
 AliFlowTrackCuts.h:124
 AliFlowTrackCuts.h:125
 AliFlowTrackCuts.h:126
 AliFlowTrackCuts.h:127
 AliFlowTrackCuts.h:128
 AliFlowTrackCuts.h:129
 AliFlowTrackCuts.h:130
 AliFlowTrackCuts.h:131
 AliFlowTrackCuts.h:132
 AliFlowTrackCuts.h:133
 AliFlowTrackCuts.h:134
 AliFlowTrackCuts.h:135
 AliFlowTrackCuts.h:136
 AliFlowTrackCuts.h:137
 AliFlowTrackCuts.h:138
 AliFlowTrackCuts.h:139
 AliFlowTrackCuts.h:140
 AliFlowTrackCuts.h:141
 AliFlowTrackCuts.h:142
 AliFlowTrackCuts.h:143
 AliFlowTrackCuts.h:144
 AliFlowTrackCuts.h:145
 AliFlowTrackCuts.h:146
 AliFlowTrackCuts.h:147
 AliFlowTrackCuts.h:148
 AliFlowTrackCuts.h:149
 AliFlowTrackCuts.h:150
 AliFlowTrackCuts.h:151
 AliFlowTrackCuts.h:152
 AliFlowTrackCuts.h:153
 AliFlowTrackCuts.h:154
 AliFlowTrackCuts.h:155
 AliFlowTrackCuts.h:156
 AliFlowTrackCuts.h:157
 AliFlowTrackCuts.h:158
 AliFlowTrackCuts.h:159
 AliFlowTrackCuts.h:160
 AliFlowTrackCuts.h:161
 AliFlowTrackCuts.h:162
 AliFlowTrackCuts.h:163
 AliFlowTrackCuts.h:164
 AliFlowTrackCuts.h:165
 AliFlowTrackCuts.h:166
 AliFlowTrackCuts.h:167
 AliFlowTrackCuts.h:168
 AliFlowTrackCuts.h:169
 AliFlowTrackCuts.h:170
 AliFlowTrackCuts.h:171
 AliFlowTrackCuts.h:172
 AliFlowTrackCuts.h:173
 AliFlowTrackCuts.h:174
 AliFlowTrackCuts.h:175
 AliFlowTrackCuts.h:176
 AliFlowTrackCuts.h:177
 AliFlowTrackCuts.h:178
 AliFlowTrackCuts.h:179
 AliFlowTrackCuts.h:180
 AliFlowTrackCuts.h:181
 AliFlowTrackCuts.h:182
 AliFlowTrackCuts.h:183
 AliFlowTrackCuts.h:184
 AliFlowTrackCuts.h:185
 AliFlowTrackCuts.h:186
 AliFlowTrackCuts.h:187
 AliFlowTrackCuts.h:188
 AliFlowTrackCuts.h:189
 AliFlowTrackCuts.h:190
 AliFlowTrackCuts.h:191
 AliFlowTrackCuts.h:192
 AliFlowTrackCuts.h:193
 AliFlowTrackCuts.h:194
 AliFlowTrackCuts.h:195
 AliFlowTrackCuts.h:196
 AliFlowTrackCuts.h:197
 AliFlowTrackCuts.h:198
 AliFlowTrackCuts.h:199
 AliFlowTrackCuts.h:200
 AliFlowTrackCuts.h:201
 AliFlowTrackCuts.h:202
 AliFlowTrackCuts.h:203
 AliFlowTrackCuts.h:204
 AliFlowTrackCuts.h:205
 AliFlowTrackCuts.h:206
 AliFlowTrackCuts.h:207
 AliFlowTrackCuts.h:208
 AliFlowTrackCuts.h:209
 AliFlowTrackCuts.h:210
 AliFlowTrackCuts.h:211
 AliFlowTrackCuts.h:212
 AliFlowTrackCuts.h:213
 AliFlowTrackCuts.h:214
 AliFlowTrackCuts.h:215
 AliFlowTrackCuts.h:216
 AliFlowTrackCuts.h:217
 AliFlowTrackCuts.h:218
 AliFlowTrackCuts.h:219
 AliFlowTrackCuts.h:220
 AliFlowTrackCuts.h:221
 AliFlowTrackCuts.h:222
 AliFlowTrackCuts.h:223
 AliFlowTrackCuts.h:224
 AliFlowTrackCuts.h:225
 AliFlowTrackCuts.h:226
 AliFlowTrackCuts.h:227
 AliFlowTrackCuts.h:228
 AliFlowTrackCuts.h:229
 AliFlowTrackCuts.h:230
 AliFlowTrackCuts.h:231
 AliFlowTrackCuts.h:232
 AliFlowTrackCuts.h:233
 AliFlowTrackCuts.h:234
 AliFlowTrackCuts.h:235
 AliFlowTrackCuts.h:236
 AliFlowTrackCuts.h:237
 AliFlowTrackCuts.h:238
 AliFlowTrackCuts.h:239
 AliFlowTrackCuts.h:240
 AliFlowTrackCuts.h:241
 AliFlowTrackCuts.h:242
 AliFlowTrackCuts.h:243
 AliFlowTrackCuts.h:244
 AliFlowTrackCuts.h:245
 AliFlowTrackCuts.h:246
 AliFlowTrackCuts.h:247
 AliFlowTrackCuts.h:248
 AliFlowTrackCuts.h:249
 AliFlowTrackCuts.h:250
 AliFlowTrackCuts.h:251
 AliFlowTrackCuts.h:252
 AliFlowTrackCuts.h:253
 AliFlowTrackCuts.h:254
 AliFlowTrackCuts.h:255
 AliFlowTrackCuts.h:256
 AliFlowTrackCuts.h:257
 AliFlowTrackCuts.h:258
 AliFlowTrackCuts.h:259
 AliFlowTrackCuts.h:260
 AliFlowTrackCuts.h:261
 AliFlowTrackCuts.h:262
 AliFlowTrackCuts.h:263
 AliFlowTrackCuts.h:264
 AliFlowTrackCuts.h:265
 AliFlowTrackCuts.h:266
 AliFlowTrackCuts.h:267
 AliFlowTrackCuts.h:268
 AliFlowTrackCuts.h:269
 AliFlowTrackCuts.h:270
 AliFlowTrackCuts.h:271
 AliFlowTrackCuts.h:272
 AliFlowTrackCuts.h:273
 AliFlowTrackCuts.h:274
 AliFlowTrackCuts.h:275
 AliFlowTrackCuts.h:276
 AliFlowTrackCuts.h:277
 AliFlowTrackCuts.h:278
 AliFlowTrackCuts.h:279
 AliFlowTrackCuts.h:280
 AliFlowTrackCuts.h:281
 AliFlowTrackCuts.h:282
 AliFlowTrackCuts.h:283
 AliFlowTrackCuts.h:284
 AliFlowTrackCuts.h:285
 AliFlowTrackCuts.h:286
 AliFlowTrackCuts.h:287
 AliFlowTrackCuts.h:288
 AliFlowTrackCuts.h:289
 AliFlowTrackCuts.h:290
 AliFlowTrackCuts.h:291
 AliFlowTrackCuts.h:292
 AliFlowTrackCuts.h:293
 AliFlowTrackCuts.h:294
 AliFlowTrackCuts.h:295
 AliFlowTrackCuts.h:296
 AliFlowTrackCuts.h:297
 AliFlowTrackCuts.h:298
 AliFlowTrackCuts.h:299
 AliFlowTrackCuts.h:300
 AliFlowTrackCuts.h:301
 AliFlowTrackCuts.h:302
 AliFlowTrackCuts.h:303
 AliFlowTrackCuts.h:304
 AliFlowTrackCuts.h:305
 AliFlowTrackCuts.h:306
 AliFlowTrackCuts.h:307
 AliFlowTrackCuts.h:308
 AliFlowTrackCuts.h:309
 AliFlowTrackCuts.h:310
 AliFlowTrackCuts.h:311
 AliFlowTrackCuts.h:312
 AliFlowTrackCuts.h:313
 AliFlowTrackCuts.h:314
 AliFlowTrackCuts.h:315
 AliFlowTrackCuts.h:316
 AliFlowTrackCuts.h:317
 AliFlowTrackCuts.h:318
 AliFlowTrackCuts.h:319
 AliFlowTrackCuts.h:320
 AliFlowTrackCuts.h:321
 AliFlowTrackCuts.h:322
 AliFlowTrackCuts.h:323
 AliFlowTrackCuts.h:324
 AliFlowTrackCuts.h:325
 AliFlowTrackCuts.h:326
 AliFlowTrackCuts.h:327
 AliFlowTrackCuts.h:328
 AliFlowTrackCuts.h:329
 AliFlowTrackCuts.h:330
 AliFlowTrackCuts.h:331
 AliFlowTrackCuts.h:332
 AliFlowTrackCuts.h:333
 AliFlowTrackCuts.h:334
 AliFlowTrackCuts.h:335
 AliFlowTrackCuts.h:336
 AliFlowTrackCuts.h:337
 AliFlowTrackCuts.h:338
 AliFlowTrackCuts.h:339
 AliFlowTrackCuts.h:340
 AliFlowTrackCuts.h:341
 AliFlowTrackCuts.h:342
 AliFlowTrackCuts.h:343
 AliFlowTrackCuts.h:344
 AliFlowTrackCuts.h:345
 AliFlowTrackCuts.h:346
 AliFlowTrackCuts.h:347
 AliFlowTrackCuts.h:348
 AliFlowTrackCuts.h:349
 AliFlowTrackCuts.h:350
 AliFlowTrackCuts.h:351
 AliFlowTrackCuts.h:352
 AliFlowTrackCuts.h:353
 AliFlowTrackCuts.h:354
 AliFlowTrackCuts.h:355
 AliFlowTrackCuts.h:356
 AliFlowTrackCuts.h:357
 AliFlowTrackCuts.h:358
 AliFlowTrackCuts.h:359
 AliFlowTrackCuts.h:360
 AliFlowTrackCuts.h:361
 AliFlowTrackCuts.h:362
 AliFlowTrackCuts.h:363
 AliFlowTrackCuts.h:364
 AliFlowTrackCuts.h:365
 AliFlowTrackCuts.h:366
 AliFlowTrackCuts.h:367
 AliFlowTrackCuts.h:368
 AliFlowTrackCuts.h:369
 AliFlowTrackCuts.h:370
 AliFlowTrackCuts.h:371
 AliFlowTrackCuts.h:372
 AliFlowTrackCuts.h:373
 AliFlowTrackCuts.h:374
 AliFlowTrackCuts.h:375
 AliFlowTrackCuts.h:376
 AliFlowTrackCuts.h:377
 AliFlowTrackCuts.h:378
 AliFlowTrackCuts.h:379
 AliFlowTrackCuts.h:380
 AliFlowTrackCuts.h:381
 AliFlowTrackCuts.h:382
 AliFlowTrackCuts.h:383
 AliFlowTrackCuts.h:384
 AliFlowTrackCuts.h:385
 AliFlowTrackCuts.h:386
 AliFlowTrackCuts.h:387
 AliFlowTrackCuts.h:388
 AliFlowTrackCuts.h:389
 AliFlowTrackCuts.h:390
 AliFlowTrackCuts.h:391
 AliFlowTrackCuts.h:392
 AliFlowTrackCuts.h:393
 AliFlowTrackCuts.h:394
 AliFlowTrackCuts.h:395
 AliFlowTrackCuts.h:396
 AliFlowTrackCuts.h:397
 AliFlowTrackCuts.h:398
 AliFlowTrackCuts.h:399
 AliFlowTrackCuts.h:400
 AliFlowTrackCuts.h:401
 AliFlowTrackCuts.h:402
 AliFlowTrackCuts.h:403
 AliFlowTrackCuts.h:404
 AliFlowTrackCuts.h:405
 AliFlowTrackCuts.h:406
 AliFlowTrackCuts.h:407
 AliFlowTrackCuts.h:408
 AliFlowTrackCuts.h:409
 AliFlowTrackCuts.h:410
 AliFlowTrackCuts.h:411
 AliFlowTrackCuts.h:412
 AliFlowTrackCuts.h:413
 AliFlowTrackCuts.h:414
 AliFlowTrackCuts.h:415
 AliFlowTrackCuts.h:416
 AliFlowTrackCuts.h:417
 AliFlowTrackCuts.h:418
 AliFlowTrackCuts.h:419
 AliFlowTrackCuts.h:420
 AliFlowTrackCuts.h:421
 AliFlowTrackCuts.h:422
 AliFlowTrackCuts.h:423
 AliFlowTrackCuts.h:424
 AliFlowTrackCuts.h:425
 AliFlowTrackCuts.h:426
 AliFlowTrackCuts.h:427
 AliFlowTrackCuts.h:428
 AliFlowTrackCuts.h:429
 AliFlowTrackCuts.h:430
 AliFlowTrackCuts.h:431
 AliFlowTrackCuts.h:432
 AliFlowTrackCuts.h:433
 AliFlowTrackCuts.h:434
 AliFlowTrackCuts.h:435
 AliFlowTrackCuts.h:436
 AliFlowTrackCuts.h:437
 AliFlowTrackCuts.h:438
 AliFlowTrackCuts.h:439
 AliFlowTrackCuts.h:440
 AliFlowTrackCuts.h:441
 AliFlowTrackCuts.h:442
 AliFlowTrackCuts.h:443
 AliFlowTrackCuts.h:444
 AliFlowTrackCuts.h:445
 AliFlowTrackCuts.h:446
 AliFlowTrackCuts.h:447
 AliFlowTrackCuts.h:448
 AliFlowTrackCuts.h:449
 AliFlowTrackCuts.h:450
 AliFlowTrackCuts.h:451
 AliFlowTrackCuts.h:452
 AliFlowTrackCuts.h:453
 AliFlowTrackCuts.h:454
 AliFlowTrackCuts.h:455