]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.h
New AliFlowTrackCuts and AliFlowEventCuts, allow running of centrality train
[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
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(); }
77
78   //MC stuff
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;}
83
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;}
88
89   virtual Bool_t IsSelected(TObject* obj);
90   const AliVParticle* GetTrack() const {return fTrack;}
91   AliFlowTrack* MakeFlowTrack() const;
92   
93   void SetMCevent(AliMCEvent* mcEvent) {fMCevent=mcEvent;}
94   AliMCEvent* GetMCevent() const {return fMCevent;}
95
96  protected:
97   Bool_t PassesCuts(AliVParticle* track);
98   Bool_t PassesCuts(AliFlowTrackSimple* track);
99   void HandleESDtrack(AliESDtrack* track);
100   void HandleVParticle(AliVParticle* track);
101
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
109
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
116
117   ClassDef(AliFlowTrackCuts,1)
118 };
119
120 #endif
121
122