1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
2 /* See cxx source for full Copyright notice */
5 // AliFlowTrackESDCuts:
6 // A cut class for ESD, AOD and MC particles for the flow framework
7 // author: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
9 #ifndef ALIFLOWTRACKCUTS_H
10 #define ALIFLOWTRACKCUTS_H
12 #include "AliFlowTrackSimpleCuts.h"
13 #include "AliESDtrackCuts.h"
14 #include "TMCProcess.h"
22 class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
26 AliFlowTrackCuts(const AliFlowTrackCuts& someCuts);
27 AliFlowTrackCuts& operator=(const AliFlowTrackCuts& someCuts);
28 virtual ~AliFlowTrackCuts();
30 static AliFlowTrackCuts* GetStandardTPCOnlyTrackCuts();
31 static AliFlowTrackCuts* GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE);
33 enum trackParameterType { kMC, kESD_Global, kESD_TPConly };
34 enum trackParameterMix { kPure, kTrackWithMCkine, kTrackWithMCPID };
36 //setters (interface to AliESDtrackCuts)
37 void SetMinNClustersTPC( Int_t a ) {fAliESDtrackCuts->SetMinNClustersTPC(a);}
38 void SetMinNClustersITS( Int_t a ) {fAliESDtrackCuts->SetMinNClustersITS(a);}
39 void SetClusterRequirementITS( AliESDtrackCuts::Detector det,
40 AliESDtrackCuts::ITSClusterRequirement req = AliESDtrackCuts::kOff )
41 { fAliESDtrackCuts->SetClusterRequirementITS(det,req); }
42 void SetMaxChi2PerClusterTPC( Float_t a ) {fAliESDtrackCuts->SetMaxChi2PerClusterTPC(a);}
43 void SetMaxChi2PerClusterITS( Float_t a ) {fAliESDtrackCuts->SetMaxChi2PerClusterITS(a);}
44 void SetRequireTPCRefit( Bool_t a ) {fAliESDtrackCuts->SetRequireTPCRefit(a);}
45 void SetRequireTPCStandAlone( Bool_t a) {fAliESDtrackCuts->SetRequireTPCStandAlone(a);}
46 void SetRequireITSRefit( Bool_t a ) {fAliESDtrackCuts->SetRequireITSRefit(a);}
47 void SetRequireITSStandAlone( Bool_t a) {fAliESDtrackCuts->SetRequireITSStandAlone(a);}
48 void SetAcceptKinkDaughters( Bool_t a ) {fAliESDtrackCuts->SetAcceptKinkDaughters(a);}
49 void SetMaxDCAToVertexZ( Float_t a ) {fAliESDtrackCuts->SetMaxDCAToVertexZ(a);}
50 void SetMaxDCAToVertexXY( Float_t a ) {fAliESDtrackCuts->SetMaxDCAToVertexXY(a);}
51 void SetMaxDCAToVertexXYPtDep( const char* a ) {fAliESDtrackCuts->SetMaxDCAToVertexXYPtDep(a);}
52 void SetRequireSigmaToVertex(Bool_t a) {fAliESDtrackCuts->SetRequireSigmaToVertex(a);}
53 void SetMaxNsigmaToVertex(Float_t sigma=1e10) { fAliESDtrackCuts->SetMaxNsigmaToVertex(sigma); }
54 void SetDCAToVertex2D( Bool_t a ) {fAliESDtrackCuts->SetDCAToVertex2D(a);}
55 void SetEtaRange( Float_t r1, Float_t r2 ) { SetEtaMin(r1); SetEtaMax(r2); }
56 void SetPtRange( Float_t r1, Float_t r2 ) { SetPtMin(r1); SetPtMax(r2); }
58 Int_t GetMinNClustersTPC() const {return fAliESDtrackCuts->GetMinNClusterTPC();}
59 Int_t GetMinNClustersITS() const {return fAliESDtrackCuts->GetMinNClustersITS();}
60 AliESDtrackCuts::ITSClusterRequirement GetClusterRequirementITS( AliESDtrackCuts::Detector det ) const
61 { return fAliESDtrackCuts->GetClusterRequirementITS(det); }
62 Float_t GetMaxChi2PerClusterTPC() const {return fAliESDtrackCuts->GetMaxChi2PerClusterTPC();}
63 Float_t GetMaxChi2PerClusterITS() const {return fAliESDtrackCuts->GetMaxChi2PerClusterITS();}
64 Bool_t GetRequireTPCRefit() const {return fAliESDtrackCuts->GetRequireTPCRefit();}
65 Bool_t GetRequireTPCStandAlone() const {return fAliESDtrackCuts->GetRequireTPCStandAlone();}
66 Bool_t GetRequireITSRefit() const {return fAliESDtrackCuts->GetRequireITSRefit();}
67 Bool_t GetRequireITSStandAlone() const {return fAliESDtrackCuts->GetRequireITSStandAlone();}
68 Bool_t GetAcceptKinkDaughters() const {return fAliESDtrackCuts->GetAcceptKinkDaughters();}
69 Float_t GetMaxDCAToVertexZ() const {return fAliESDtrackCuts->GetMaxDCAToVertexZ();}
70 Float_t GetMaxDCAToVertexXY() const {return fAliESDtrackCuts->GetMaxDCAToVertexXY();}
71 const char* GetMaxDCAToVertexXYPtDep() const {return fAliESDtrackCuts->GetMaxDCAToVertexXYPtDep();}
72 Bool_t GetRequireSigmaToVertex() const {return fAliESDtrackCuts->GetRequireSigmaToVertex();}
73 Float_t GetMaxNsigmaToVertex() const {return fAliESDtrackCuts->GetMaxNsigmaToVertex(); }
74 Bool_t GetDCAToVertex2D() const {return fAliESDtrackCuts->GetDCAToVertex2D();}
75 void GetEtaRange( Float_t& r1, Float_t& r2 ) const { r1=GetEtaMin(); r2=GetEtaMax(); }
76 void GetPtRange( Float_t& r1, Float_t& r2 ) const { r1=GetPtMin(); r2=GetPtMax(); }
79 void SetMCprocessType( TMCProcess t ) { fMCprocessType = t; fCutMCprocessType=kTRUE; }
80 TMCProcess GetMCprocessType() const { return fMCprocessType; }
81 void SetMCisPrimary( Bool_t b ) { fMCisPrimary=b; fCutMCisPrimary=kTRUE; }
82 Bool_t GetMCisPrimary() const {return fMCisPrimary;}
84 void SetParamType(trackParameterType paramType) {fParamType=paramType;}
85 trackParameterType GetParamType() const {return fParamType;}
86 void SetParamMix(trackParameterMix paramMix) {fParamMix=paramMix;}
87 trackParameterMix GetParamMix() const {return fParamMix;}
89 virtual Bool_t IsSelected(TObject* obj);
90 const AliVParticle* GetTrack() const {return fTrack;}
91 AliFlowTrack* MakeFlowTrack() const;
93 void SetMCevent(AliMCEvent* mcEvent) {fMCevent=mcEvent;}
94 AliMCEvent* GetMCevent() const {return fMCevent;}
97 Bool_t PassesCuts(AliVParticle* track);
98 Bool_t PassesCuts(AliFlowTrackSimple* track);
99 void HandleESDtrack(AliESDtrack* track);
100 void HandleVParticle(AliVParticle* track);
102 AliESDtrackCuts* fAliESDtrackCuts; //alianalysis cuts
103 Bool_t fCutMCprocessType; //do we cut on mc process type?
104 TMCProcess fMCprocessType; //mc process type
105 Bool_t fCutMCPID; //cut on MC pid?
106 Int_t fMCPID; //MC PID
107 Bool_t fCutMCisPrimary; //do we cut on primaryness?
108 Bool_t fMCisPrimary; //is MC primary
110 trackParameterType fParamType; //parameter type tu cut on
111 trackParameterMix fParamMix; //parameter mixing
112 AliMCEvent* fMCevent; //!mc event
113 Bool_t fCleanupTrack; //check if we need to delete
114 AliVParticle* fTrack; //!the track to apply cuts on
115 AliMCParticle* fMCparticle; //!mc particle
117 ClassDef(AliFlowTrackCuts,1)