]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.h
fixes to cuts
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliFlowTrackCuts.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
2 /* See cxx source for full Copyright notice */
3 /* $Id$ */
4
5 // AliFlowTrackESDCuts:
6 // A cut class for ESD, AOD and MC particles for the flow framework
7 // author: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
8
9 #ifndef ALIFLOWTRACKCUTS_H
10 #define ALIFLOWTRACKCUTS_H
11
12 #include "AliFlowTrackSimpleCuts.h"
13 #include "AliESDtrackCuts.h"
14 #include "TMCProcess.h"
15
16 class AliVParticle;
17 class AliMCParticle;
18 class AliFlowTrack;
19 class AliMCEvent;
20 class AliVEvent;
21
22 class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
23
24  public:
25   AliFlowTrackCuts();
26   AliFlowTrackCuts(const AliFlowTrackCuts& someCuts);
27   AliFlowTrackCuts& operator=(const AliFlowTrackCuts& someCuts);
28   virtual ~AliFlowTrackCuts();
29
30   static AliFlowTrackCuts* GetStandardTPCOnlyTrackCuts();
31   static AliFlowTrackCuts* GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE);
32
33   enum trackParameterType { kMC, kESD_Global, kESD_TPConly };
34   enum trackParameterMix  { kPure, kTrackWithMCkine, kTrackWithMCPID };
35
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); }
57   void SetRequireCharge( Bool_t r ) {fRequireCharge=r;fCutRequireCharge=kTRUE;}
58
59   Int_t GetMinNClustersTPC() const {return fAliESDtrackCuts->GetMinNClusterTPC();}
60   Int_t GetMinNClustersITS() const {return fAliESDtrackCuts->GetMinNClustersITS();}
61   AliESDtrackCuts::ITSClusterRequirement GetClusterRequirementITS( AliESDtrackCuts::Detector det ) const
62                                  { return fAliESDtrackCuts->GetClusterRequirementITS(det); } 
63   Float_t GetMaxChi2PerClusterTPC() const {return fAliESDtrackCuts->GetMaxChi2PerClusterTPC();}
64   Float_t GetMaxChi2PerClusterITS() const {return fAliESDtrackCuts->GetMaxChi2PerClusterITS();}
65   Bool_t GetRequireTPCRefit() const {return fAliESDtrackCuts->GetRequireTPCRefit();}
66   Bool_t GetRequireTPCStandAlone() const {return fAliESDtrackCuts->GetRequireTPCStandAlone();}
67   Bool_t GetRequireITSRefit() const {return fAliESDtrackCuts->GetRequireITSRefit();}
68   Bool_t GetRequireITSStandAlone() const {return fAliESDtrackCuts->GetRequireITSStandAlone();}
69   Bool_t GetAcceptKinkDaughters() const {return fAliESDtrackCuts->GetAcceptKinkDaughters();}
70   Float_t GetMaxDCAToVertexZ() const {return fAliESDtrackCuts->GetMaxDCAToVertexZ();}
71   Float_t GetMaxDCAToVertexXY() const {return fAliESDtrackCuts->GetMaxDCAToVertexXY();}
72   const char* GetMaxDCAToVertexXYPtDep() const {return fAliESDtrackCuts->GetMaxDCAToVertexXYPtDep();}
73   Bool_t GetRequireSigmaToVertex() const {return fAliESDtrackCuts->GetRequireSigmaToVertex();}
74   Float_t GetMaxNsigmaToVertex() const {return fAliESDtrackCuts->GetMaxNsigmaToVertex(); }
75   Bool_t GetDCAToVertex2D() const {return fAliESDtrackCuts->GetDCAToVertex2D();}
76   void GetEtaRange( Float_t& r1, Float_t& r2 ) const { r1=GetEtaMin(); r2=GetEtaMax(); }
77   void GetPtRange( Float_t& r1, Float_t& r2 ) const { r1=GetPtMin(); r2=GetPtMax(); }
78   Bool_t GetRequireCharge() const {return fRequireCharge;}
79
80   //MC stuff
81   void SetMCprocessType( TMCProcess t ) { fMCprocessType = t; fCutMCprocessType=kTRUE; }
82   TMCProcess GetMCprocessType() const { return fMCprocessType; }
83   void SetMCisPrimary( Bool_t b ) { fMCisPrimary=b; fCutMCisPrimary=kTRUE; }
84   Bool_t GetMCisPrimary() const {return fMCisPrimary;}
85
86   void SetParamType(trackParameterType paramType) {fParamType=paramType;}
87   trackParameterType GetParamType() const {return fParamType;}
88   void SetParamMix(trackParameterMix paramMix) {fParamMix=paramMix;}
89   trackParameterMix GetParamMix() const {return fParamMix;}
90
91   virtual Bool_t IsSelected(TObject* obj);
92   const AliVParticle* GetTrack() const {return fTrack;}
93   AliFlowTrack* MakeFlowTrack() const;
94   
95   void SetMCevent(AliMCEvent* mcEvent) {fMCevent=mcEvent;}
96   AliMCEvent* GetMCevent() const {return fMCevent;}
97
98  protected:
99   Bool_t PassesCuts(AliVParticle* track);
100   Bool_t PassesCuts(AliFlowTrackSimple* track);
101   void HandleESDtrack(AliESDtrack* track);
102   void HandleVParticle(AliVParticle* track);
103
104   AliESDtrackCuts* fAliESDtrackCuts; //alianalysis cuts
105   Bool_t fCutMCprocessType;          //do we cut on mc process type?
106   TMCProcess fMCprocessType;         //mc process type
107   Bool_t fCutMCPID;                  //cut on MC pid?
108   Int_t fMCPID;                      //MC PID
109   Bool_t fCutMCisPrimary;            //do we cut on primaryness?
110   Bool_t fMCisPrimary;               //is MC primary
111   Bool_t fCutRequireCharge;       //cut on charge requirement?
112   Bool_t fRequireCharge;          //is charged? (mostly for MC)
113
114   trackParameterType fParamType;     //parameter type tu cut on
115   trackParameterMix fParamMix;       //parameter mixing
116   Bool_t fCleanupTrack;              //check if we need to delete
117   AliVParticle* fTrack;              //!the track to apply cuts on
118   AliMCEvent* fMCevent;              //!mc event
119   AliMCParticle* fMCparticle;        //!mc particle
120
121   ClassDef(AliFlowTrackCuts,1)
122 };
123
124 #endif
125
126