]>
Commit | Line | Data |
---|---|---|
979d80f1 | 1 | #ifndef ALIESDPIDCUTS_H\r |
2 | #define ALIESDPIDCUTS_H\r | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r | |
4 | * See cxx source for full Copyright notice */\r | |
5 | //\r | |
6 | // Class for PID cuts\r | |
7 | // Cuts the track based on numbers of sigmas in the detectors TPC and TOF\r | |
8 | // The sigma cuts can be applied symmetrically or assymetrically\r | |
9 | //\r | |
10 | \r | |
11 | #ifndef ALIANALYSISCUTS_H\r | |
12 | #include "AliAnalysisCuts.h"\r | |
13 | #endif\r | |
14 | \r | |
15 | #ifndef ALIPID_H\r | |
16 | #include "AliPID.h"\r | |
17 | #endif\r | |
18 | \r | |
19 | class TCollection;\r | |
20 | class TH1F;\r | |
21 | class TH1I;\r | |
22 | class TH2I;\r | |
23 | class TList;\r | |
24 | class AliESDtrack;\r | |
25 | class AliESDEvent;\r | |
26 | class AliESDpid;\r | |
27 | \r | |
28 | class AliESDpidCuts : public AliAnalysisCuts{\r | |
29 | enum{\r | |
30 | kHasHistograms = BIT(17)\r | |
31 | };\r | |
32 | public: \r | |
33 | AliESDpidCuts(const Char_t *name = "AliESDpidCuts", const Char_t *title = "");\r | |
34 | AliESDpidCuts(const AliESDpidCuts &ref); // Copy constructor\r | |
35 | AliESDpidCuts &operator=(const AliESDpidCuts &ref);\r | |
36 | virtual ~AliESDpidCuts();\r | |
37 | \r | |
38 | virtual void Copy(TObject &c) const;\r | |
39 | virtual Long64_t Merge(TCollection *coll);\r | |
40 | \r | |
41 | Bool_t HasHistograms() const { return TestBit(kHasHistograms); }\r | |
42 | void DefineHistograms(Color_t color = kRed);\r | |
43 | void DrawHistograms();\r | |
44 | void SaveHistograms(const Char_t *location = NULL);\r | |
45 | virtual Bool_t IsSelected(TObject *);\r | |
46 | virtual Bool_t IsSelected(TList * /*lst*/) {return kTRUE; }\r | |
47 | virtual Bool_t AcceptTrack(const AliESDtrack *track, const AliESDEvent *event);\r | |
48 | \r | |
49 | AliESDpid *GetESDpid() { return fESDpid; };\r | |
50 | \r | |
51 | void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; }\r | |
52 | inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);\r | |
53 | inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);\r | |
54 | inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);\r | |
55 | inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);\r | |
56 | void SetMinMomentumTOF(Float_t mom) { fMinMomentumTOF = mom; }\r | |
57 | \r | |
58 | protected:\r | |
59 | static const Int_t kNcuts; // Number of Cuts\r | |
60 | AliESDpid *fESDpid; //! PID helper (n-sigma-cut)\r | |
61 | Char_t fTPCsigmaCutRequired; // Sigma cut Requirement for TPC and Particle Species\r | |
62 | Char_t fTOFsigmaCutRequired; // Sigma cut Requirement for TOF and Particle Species\r | |
63 | Float_t fCutTPCnSigma[AliPID::kSPECIES * 2]; // Species dependent cut on the distance to the TPC dE/dx line\r | |
61cfa442 | 64 | Float_t fCutTOFnSigma[AliPID::kSPECIES * 2]; // Species dependent cut on the distance to the TOF calculated time of flight line\r |
979d80f1 | 65 | Float_t fCutTPCclusterRatio; // Cut on Ratio of found clusters with repect to findable clusters in the TPC\r |
66 | Float_t fMinMomentumTOF; // Apply TOF PID only above a certain momentum\r | |
67 | \r | |
68 | //------------------------------------------\r | |
69 | // QA histograms\r | |
70 | TH1I *fHcutStatistics; // Cut Statistics\r | |
71 | TH2I *fHcutCorrelation; // Cut Correlation\r | |
72 | TH1F *fHclusterRatio[2]; // TPC cluster Ratio\r | |
73 | TH1F *fHnSigmaTPC[AliPID::kSPECIES][2]; // TPC n-sigma cut\r | |
74 | TH1F *fHnSigmaTOF[AliPID::kSPECIES][2]; // TOF n-sigma cut\r | |
75 | //------------------------------------------\r | |
76 | \r | |
61cfa442 | 77 | ClassDef(AliESDpidCuts, 3)\r |
979d80f1 | 78 | };\r |
79 | \r | |
80 | //_____________________________________________________________________\r | |
81 | void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ \r | |
82 | //\r | |
83 | // symmetric sigma cut for TPC PID\r | |
84 | //\r | |
85 | fCutTPCnSigma[itype * 2] = -nSigma;\r | |
86 | fCutTPCnSigma[itype * 2 + 1] = nSigma; \r | |
87 | fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r | |
88 | } \r | |
89 | \r | |
90 | //_____________________________________________________________________\r | |
91 | void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){\r | |
92 | //\r | |
93 | // assymetric sigma cut for TPC PID\r | |
94 | //\r | |
95 | fCutTPCnSigma[itype * 2] = negSigma;\r | |
96 | fCutTPCnSigma[itype * 2 + 1] = posSigma;\r | |
97 | fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r | |
98 | } \r | |
99 | \r | |
100 | //_____________________________________________________________________\r | |
101 | void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ \r | |
102 | //\r | |
103 | // symmetric sigma cut for TOF PID\r | |
104 | //\r | |
105 | fCutTOFnSigma[itype * 2] = -nSigma;\r | |
106 | fCutTOFnSigma[itype * 2 + 1] = nSigma; \r | |
107 | fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r | |
108 | } \r | |
109 | \r | |
110 | //_____________________________________________________________________\r | |
111 | void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){\r | |
112 | //\r | |
113 | // assymetric sigma cut for TOF PID\r | |
114 | //\r | |
115 | fCutTOFnSigma[itype * 2] = negSigma;\r | |
116 | fCutTOFnSigma[itype * 2 + 1] = posSigma;\r | |
117 | fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r | |
118 | }\r | |
119 | #endif\r |