]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEextraCuts.h
Changes requested in report #61429: PID: Separating response functions from ESD ...
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEextraCuts.h
1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
7 * Permission to use, copy, modify and distribute this software and its   *
8 * documentation strictly for non-commercial purposes is hereby granted   *
9 * without fee, provided that the above copyright notice appears in all   *
10 * copies and that both the copyright notice and this permission notice   *
11 * appear in the supporting documentation. The authors make no claims     *
12 * about the suitability of this software for any purpose. It is          *
13 * provided "as is" without express or implied warranty.                  *
14 **************************************************************************/
15 //
16 // Extra Cuts from the ALICE HFE Group
17 // Container for cuts which are currently not implemented by
18 // the Correction Framework
19 //
20 #ifndef ALIHFEEXTRACUTS_H
21 #define ALIHFEEXTRACUTS_H
22
23 // #ifndef ALICFCUTBASE_H
24 #include "AliCFCutBase.h"
25 // #endif
26
27 class TList;
28
29 class AliESDtrack;
30 class AliMCParticle;
31
32 class AliHFEextraCuts : public AliCFCutBase{
33   public:
34     typedef enum{
35       kFirst = 0,
36       kSecond = 1,
37       kBoth = 2,
38       kNone = 3,
39       kAny = 4
40     } ITSPixel_t;
41     AliHFEextraCuts(const Char_t *name, const Char_t *title);
42     AliHFEextraCuts(const AliHFEextraCuts &c);
43     AliHFEextraCuts &operator=(const AliHFEextraCuts &c);
44     virtual ~AliHFEextraCuts();
45     
46     virtual Bool_t IsSelected(TObject *o, TObject *o2 = 0);
47     //virtual Bool_t IsSelected(TList *) { return kTRUE; };
48
49     inline void SetClusterRatioTPC(Double_t ratio);
50     inline void SetRequireITSpixel(ITSPixel_t pixel);
51     inline void SetMinImpactParamR(Double_t impactParam);
52     inline void SetMaxImpactParamR(Double_t impactParam);
53     inline void SetMinImpactParamZ(Double_t impactParam);
54     inline void SetMaxImpactParamZ(Double_t impactParam);
55     inline void SetMinTrackletsTRD(Int_t minTracklets);
56
57     void SetCheckITSstatus(Bool_t check) { fCheck = check; };
58     Bool_t GetCheckITSstatus() const { return fCheck; };
59
60     void SetDebugLevel(Int_t level) { fDebugLevel = level; };
61     Int_t GetDebugLevel() const { return fDebugLevel; };
62     
63   protected:
64     virtual void AddQAHistograms(TList *qaList);
65     Bool_t CheckESDCuts(AliESDtrack *track);
66     Bool_t CheckMCCuts(AliMCParticle * /*track*/) const;
67     Bool_t CheckITSstatus(Int_t itsStatus) const;
68     void FillQAhistosESD(AliESDtrack *track, UInt_t when);
69 //     void FillQAhistosMC(AliMCParticle *track, UInt_t when);
70     void FillCutCorrelation(ULong64_t survivedCut);
71     void PrintBitMap(Int_t bitmap);
72     
73   private:
74     typedef enum{
75       kMinImpactParamR = 0,
76       kMaxImpactParamR = 1,
77       kMinImpactParamZ = 2,
78       kMaxImpactParamZ = 3,
79       kClusterRatioTPC = 4,
80       kMinTrackletsTRD = 5,
81       kPixelITS = 6,
82       kNcuts = 7
83     } Cut_t;
84     enum{
85       //
86       // Common Constants
87       //
88       kBeforeCuts =0,
89       kAfterCuts = 1
90     };
91     ULong64_t fCutCorrelation;          // Cut Correlation
92     ULong64_t fRequirements;            // Cut Requirements
93     Float_t fImpactParamCut[4];         // Impact Parmameter Cut
94     Float_t fClusterRatioTPC;           // Ratio of findable vs. found clusters in TPC
95     UChar_t fMinTrackletsTRD;           // Min. Number of Tracklets inside TRD
96     UChar_t fPixelITS;                  // Cut on ITS Pixels
97
98     Bool_t  fCheck;                     // check
99     
100     TList *fQAlist;                     //! Directory for QA histograms
101   
102     Int_t fDebugLevel;    // Debug Level
103   
104   ClassDef(AliHFEextraCuts, 1)      // Additional cuts implemented by the ALICE HFE group
105 };
106
107 //__________________________________________________________
108 void AliHFEextraCuts::SetClusterRatioTPC(Double_t ratio) {
109   SETBIT(fRequirements, kClusterRatioTPC);
110   fClusterRatioTPC = ratio; 
111 }
112
113 //__________________________________________________________
114 void AliHFEextraCuts::SetRequireITSpixel(ITSPixel_t pixel) {
115   SETBIT(fRequirements, kPixelITS);
116   fPixelITS = pixel; 
117 }
118
119 //__________________________________________________________
120 void AliHFEextraCuts::SetMinImpactParamR(Double_t impactParam){
121   SETBIT(fRequirements, kMinImpactParamR);
122   fImpactParamCut[0] = impactParam;
123 }
124
125 //__________________________________________________________
126 void AliHFEextraCuts::SetMaxImpactParamR(Double_t impactParam){
127   SETBIT(fRequirements, kMaxImpactParamR);
128   fImpactParamCut[2] = impactParam;
129 }
130
131 //__________________________________________________________
132 void AliHFEextraCuts::SetMinImpactParamZ(Double_t impactParam){
133   SETBIT(fRequirements, kMinImpactParamZ);
134   fImpactParamCut[1] = impactParam;
135 }
136
137 //__________________________________________________________
138 void AliHFEextraCuts::SetMaxImpactParamZ(Double_t impactParam){
139   SETBIT(fRequirements, kMaxImpactParamZ);
140   fImpactParamCut[3] = impactParam;
141 }
142
143 //__________________________________________________________
144 void AliHFEextraCuts::SetMinTrackletsTRD(Int_t minTracklets){
145   SETBIT(fRequirements, kMinTrackletsTRD);
146   fMinTrackletsTRD = minTracklets;
147 }
148 #endif