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{
42 AliHFEextraCuts(const Char_t *name, const Char_t *title);
43 AliHFEextraCuts(const AliHFEextraCuts &c);
44 AliHFEextraCuts &operator=(const AliHFEextraCuts &c);
45 virtual ~AliHFEextraCuts();
47 virtual Bool_t IsSelected(TObject *o);
48 virtual Bool_t IsSelected(TList *) { return kTRUE; };
49 virtual void SetRecEventInfo(const TObject *event);
51 inline void SetClusterRatioTPC(Double_t ratio);
52 inline void SetRequireITSpixel(ITSPixel_t pixel);
53 inline void SetMinImpactParamR(Double_t impactParam);
54 inline void SetMaxImpactParamR(Double_t impactParam);
55 inline void SetMinImpactParamZ(Double_t impactParam);
56 inline void SetMaxImpactParamZ(Double_t impactParam);
57 inline void SetMinHFEImpactParamR();
58 inline void SetMinHFEImpactParamNsigmaR();
59 inline void SetMinTrackletsTRD(Int_t minTracklets);
60 inline void SetMinNClustersTPC(Int_t minclusters);
61 void SetTPCIter1(Bool_t tpcIter1) { fTPCiter1 = tpcIter1; }
63 void SetCheckITSstatus(Bool_t check) { fCheck = check; };
64 Bool_t GetCheckITSstatus() const { return fCheck; };
66 void SetDebugLevel(Int_t level) { fDebugLevel = level; };
67 Int_t GetDebugLevel() const { return fDebugLevel; };
70 virtual void AddQAHistograms(TList *qaList);
71 Bool_t CheckRecCuts(AliVTrack *track);
72 Bool_t CheckMCCuts(AliVParticle * /*track*/) const;
73 Bool_t CheckITSstatus(Int_t itsStatus) const;
74 void FillQAhistosRec(AliVTrack *track, UInt_t when);
75 // void FillQAhistosMC(AliMCParticle *track, UInt_t when);
76 void FillCutCorrelation(ULong64_t survivedCut);
77 void PrintBitMap(Int_t bitmap);
79 // Getter Functions for ESD/AOD compatible mode
80 Int_t GetTRDnTrackletsPID(AliVTrack *track);
81 Int_t GetITSstatus(AliVTrack *track, Int_t layer);
82 Int_t GetTPCfindableClusters(AliVTrack *track, Bool_t iter1 = kFALSE);
83 Int_t GetTPCncls(AliVTrack *track, Bool_t iter1 = kFALSE);
84 void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
85 void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy);
86 void GetHFEImpactParameterCuts(AliVTrack *track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
97 kMinHFEImpactParamR = 7,
98 kMinHFEImpactParamNsigmaR = 8,
109 AliVEvent *fEvent; //! working event
110 ULong64_t fCutCorrelation; // Cut Correlation
111 ULong64_t fRequirements; // Cut Requirements
112 Bool_t fTPCiter1; // Tracking iteration from which the number of clusters is taken
113 Float_t fImpactParamCut[4]; // Impact Parmameter Cut
114 UInt_t fMinNClustersTPC; // Minimum TPC clusters cut
115 Float_t fClusterRatioTPC; // Ratio of findable vs. found clusters in TPC
116 UChar_t fMinTrackletsTRD; // Min. Number of Tracklets inside TRD
117 UChar_t fPixelITS; // Cut on ITS Pixels
119 Bool_t fCheck; // check
120 TList *fQAlist; //! Directory for QA histograms
121 Int_t fDebugLevel; // Debug Level
123 ClassDef(AliHFEextraCuts, 1) // Additional cuts implemented by the ALICE HFE group
126 //__________________________________________________________
127 void AliHFEextraCuts::SetClusterRatioTPC(Double_t ratio) {
128 SETBIT(fRequirements, kClusterRatioTPC);
129 fClusterRatioTPC = ratio;
132 //__________________________________________________________
133 void AliHFEextraCuts::SetRequireITSpixel(ITSPixel_t pixel) {
134 SETBIT(fRequirements, kPixelITS);
138 //__________________________________________________________
139 void AliHFEextraCuts::SetMinImpactParamR(Double_t impactParam){
140 SETBIT(fRequirements, kMinImpactParamR);
141 fImpactParamCut[0] = impactParam;
144 //__________________________________________________________
145 void AliHFEextraCuts::SetMaxImpactParamR(Double_t impactParam){
146 SETBIT(fRequirements, kMaxImpactParamR);
147 fImpactParamCut[2] = impactParam;
150 //__________________________________________________________
151 void AliHFEextraCuts::SetMinImpactParamZ(Double_t impactParam){
152 SETBIT(fRequirements, kMinImpactParamZ);
153 fImpactParamCut[1] = impactParam;
156 //__________________________________________________________
157 void AliHFEextraCuts::SetMaxImpactParamZ(Double_t impactParam){
158 SETBIT(fRequirements, kMaxImpactParamZ);
159 fImpactParamCut[3] = impactParam;
162 //__________________________________________________________
163 void AliHFEextraCuts::SetMinHFEImpactParamR(){
164 SETBIT(fRequirements, kMinHFEImpactParamR);
167 //__________________________________________________________
168 void AliHFEextraCuts::SetMinHFEImpactParamNsigmaR(){
169 SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);
172 //__________________________________________________________
173 void AliHFEextraCuts::SetMinTrackletsTRD(Int_t minTracklets){
174 SETBIT(fRequirements, kMinTrackletsTRD);
175 fMinTrackletsTRD = minTracklets;
178 //__________________________________________________________
179 void AliHFEextraCuts::SetMinNClustersTPC(Int_t minClusters){
180 SETBIT(fRequirements, kMinNClustersTPC);
181 fMinNClustersTPC = minClusters;