1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 // Extra Cuts from the ALICE HFE Group
17 // Container for cuts which are currently not implemented by
18 // the Correction Framework
20 #ifndef ALIHFEEXTRACUTS_H
21 #define ALIHFEEXTRACUTS_H
23 // #ifndef ALICFCUTBASE_H
24 #include "AliCFCutBase.h"
33 class AliHFEextraCuts : public AliCFCutBase{
48 kFoundOverFindable = 0,
49 kFoundOverFindableIter1 = 1,
53 AliHFEextraCuts(const Char_t *name, const Char_t *title);
54 AliHFEextraCuts(const AliHFEextraCuts &c);
55 AliHFEextraCuts &operator=(const AliHFEextraCuts &c);
56 virtual ~AliHFEextraCuts();
58 virtual Bool_t IsSelected(TObject *o);
59 virtual Bool_t IsSelected(TList *) { return kTRUE; };
60 virtual void SetRecEventInfo(const TObject *event);
62 inline void SetClusterRatioTPC(Double_t ratio, ETPCclrDef_t def);
63 inline void SetRequireITSpixel(ITSPixel_t pixel);
64 inline void SetMinImpactParamR(Double_t impactParam);
65 inline void SetMaxImpactParamR(Double_t impactParam);
66 inline void SetMinImpactParamZ(Double_t impactParam);
67 inline void SetMaxImpactParamZ(Double_t impactParam);
68 inline void SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t issigmacut);
69 inline void SetMinTrackletsTRD(Int_t minTracklets);
70 inline void SetMinNClustersTPC(Int_t minclusters, ETPCclusterDef_t def);
71 void SetTOFPID(Bool_t tofPid) { fTOFpid = tofPid;}
72 void SetTOFMISMATCH(Bool_t tofMismatch) { fTOFmismatch = tofMismatch;}
73 void SetMaxImpactParameterRpar(Bool_t maxImpactParameterRpar) {fMaxImpactParameterRpar = maxImpactParameterRpar;}
74 void SetFractionOfTPCSharedClusters(Double_t fractionOfTPCSharedClusters) {fFractionOfTPCSharedClusters = fractionOfTPCSharedClusters;}
76 void SetCheckITSstatus(Bool_t check) { fCheck = check; };
77 Bool_t GetCheckITSstatus() const { return fCheck; };
79 void SetDebugLevel(Int_t level) { fDebugLevel = level; };
80 Int_t GetDebugLevel() const { return fDebugLevel; };
83 virtual void AddQAHistograms(TList *qaList);
84 Bool_t CheckRecCuts(AliVTrack *track);
85 Bool_t CheckMCCuts(AliVParticle * /*track*/) const;
86 Bool_t CheckITSstatus(Int_t itsStatus) const;
87 void FillQAhistosRec(AliVTrack *track, UInt_t when);
88 // void FillQAhistosMC(AliMCParticle *track, UInt_t when);
89 void FillCutCorrelation(ULong64_t survivedCut);
90 void PrintBitMap(Int_t bitmap);
92 // Getter Functions for ESD/AOD compatible mode
93 Int_t GetTRDnTrackletsPID(AliVTrack *track);
94 Int_t GetITSstatus(AliVTrack *track, Int_t layer);
95 UInt_t GetTPCncls(AliVTrack *track);
96 Double_t GetTPCclusterRatio(AliVTrack *track);
97 void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
98 void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy);
99 void GetHFEImpactParameterCuts(AliVTrack *track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
100 void GetMaxImpactParameterCutR(AliVTrack *track, Double_t &maximpactRcut);
101 Float_t GetTPCsharedClustersRatio(AliVTrack *track);
105 kMinImpactParamR = 0,
106 kMaxImpactParamR = 1,
107 kMinImpactParamZ = 2,
108 kMaxImpactParamZ = 3,
109 kClusterRatioTPC = 4,
110 kMinTrackletsTRD = 5,
112 kMinHFEImpactParamR = 7,
113 kMinHFEImpactParamNsigmaR = 8,
114 kMinNClustersTPC = 9,
124 AliVEvent *fEvent; //! working event
125 ULong64_t fCutCorrelation; // Cut Correlation
126 ULong64_t fRequirements; // Cut Requirements
127 Float_t fImpactParamCut[4]; // Impact Parmameter Cut
128 Float_t fIPcutParam[4]; // Parmameter of impact parameter cut parametrization
129 UInt_t fMinNClustersTPC; // Minimum TPC clusters cut
130 Float_t fClusterRatioTPC; // Ratio of findable vs. found clusters in TPC
131 UChar_t fMinTrackletsTRD; // Min. Number of Tracklets inside TRD
132 UChar_t fPixelITS; // Cut on ITS Pixels
133 Bool_t fTOFpid; // TOF pid
134 Bool_t fTOFmismatch; // TOF mismatch
135 UChar_t fTPCclusterDef; // TPC cluster definition Bitmap
136 UChar_t fTPCclusterRatioDef; // TPC cluster ratio definition Bitmap
137 Bool_t fMaxImpactParameterRpar; // Parametrized max impact parameter cut
138 Double_t fFractionOfTPCSharedClusters; // Cut on fraction of shared clusters
140 Bool_t fCheck; // check
141 TList *fQAlist; //! Directory for QA histograms
142 Int_t fDebugLevel; // Debug Level
144 ClassDef(AliHFEextraCuts, 1) // Additional cuts implemented by the ALICE HFE group
147 //__________________________________________________________
148 void AliHFEextraCuts::SetClusterRatioTPC(Double_t ratio, ETPCclrDef_t def) {
149 SETBIT(fRequirements, kClusterRatioTPC);
150 SETBIT(fTPCclusterRatioDef, def);
151 fClusterRatioTPC = ratio;
154 //__________________________________________________________
155 void AliHFEextraCuts::SetRequireITSpixel(ITSPixel_t pixel) {
156 SETBIT(fRequirements, kPixelITS);
160 //__________________________________________________________
161 void AliHFEextraCuts::SetMinImpactParamR(Double_t impactParam){
162 SETBIT(fRequirements, kMinImpactParamR);
163 fImpactParamCut[0] = impactParam;
166 //__________________________________________________________
167 void AliHFEextraCuts::SetMaxImpactParamR(Double_t impactParam){
168 SETBIT(fRequirements, kMaxImpactParamR);
169 fImpactParamCut[2] = impactParam;
172 //__________________________________________________________
173 void AliHFEextraCuts::SetMinImpactParamZ(Double_t impactParam){
174 SETBIT(fRequirements, kMinImpactParamZ);
175 fImpactParamCut[1] = impactParam;
178 //__________________________________________________________
179 void AliHFEextraCuts::SetMaxImpactParamZ(Double_t impactParam){
180 SETBIT(fRequirements, kMaxImpactParamZ);
181 fImpactParamCut[3] = impactParam;
184 //__________________________________________________________
185 void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut){
186 if(isSigmacut) SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);
187 else SETBIT(fRequirements, kMinHFEImpactParamR);
188 fIPcutParam[0]=ipcutParam[0];
189 fIPcutParam[1]=ipcutParam[1];
190 fIPcutParam[2]=ipcutParam[2];
191 fIPcutParam[3]=ipcutParam[3];
194 //__________________________________________________________
195 void AliHFEextraCuts::SetMinTrackletsTRD(Int_t minTracklets){
196 SETBIT(fRequirements, kMinTrackletsTRD);
197 fMinTrackletsTRD = minTracklets;
200 //__________________________________________________________
201 void AliHFEextraCuts::SetMinNClustersTPC(Int_t minClusters, ETPCclusterDef_t tpcdef){
202 SETBIT(fRequirements, kMinNClustersTPC);
203 SETBIT(fTPCclusterDef, tpcdef);
204 fMinNClustersTPC = minClusters;