1 #ifndef ALIDIELECTRONTRACKCUTS_H
2 #define ALIDIELECTRONTRACKCUTS_H
4 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //#############################################################
9 //# Class AliDielectronTrackCuts #
12 //# Anton Andronic, GSI / A.Andronic@gsi.de #
13 //# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
14 //# Julian Book, Uni Ffm / Julian.Book@cern.ch #
15 //# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
16 //# Magnus Mager, CERN / Magnus.Mager@cern.ch #
17 //# WooJin J. Park, GSI / W.J.Park@gsi.de #
18 //# Jens Wiechula, Uni Tü / Jens.Wiechula@cern.ch #
20 //#############################################################
23 #include <AliAnalysisCuts.h>
25 class AliDielectronTrackCuts : public AliAnalysisCuts {
27 enum ITSClusterRequirement { kOff = 0, kNone, kAny, kFirst, kOnlyFirst, kSecond, kOnlySecond, kBoth };
28 enum Detector { kSPD = 0, kSDD, kSSD };
29 enum ITScluster { kSPD0=0x0001, kSPD1=0x0002,
30 kSDD0=0x0004, kSDD1=0x0008,
31 kSSD0=0x0010, kSSD1=0x0020};
32 enum ITSclusterCutType { kOneOf=0, kAtLeast, kExact };
34 AliDielectronTrackCuts();
35 AliDielectronTrackCuts(const char*name, const char* title);
37 virtual ~AliDielectronTrackCuts();
39 void SetV0DaughterCut(AliPID::EParticleType type, Bool_t negate=kFALSE);
40 void SetClusterRequirementITS(Detector det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
42 void SetRequireITSRefit(Bool_t req) { fRequireITSRefit=req; }
43 void SetRequireTPCRefit(Bool_t req) { fRequireTPCRefit=req; }
45 void SetTPCNclFRobust(Int_t cut) { fTPCNclRobustCut=cut; }
47 Int_t GetV0DaughterCut() const { return fV0DaughterCut; }
48 ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
50 void SetITSclusterCut(ITSclusterCutType type, UChar_t map) { fITSclusterBitMap=map; fITSclusterCutType=type; }
52 //Analysis cuts interface
54 virtual Bool_t IsSelected(TObject* track);
55 virtual Bool_t IsSelected(TList* /* list */ ) {return kFALSE;}
60 AliDielectronTrackCuts(const AliDielectronTrackCuts &c);
61 AliDielectronTrackCuts &operator=(const AliDielectronTrackCuts &c);
63 Int_t fV0DaughterCut; // Bit for V0 daughter selection
64 Bool_t fNegateV0DauterCut; // If to negate the V0 daughter cut
65 ITSClusterRequirement fCutClusterRequirementITS[3]; // detailed ITS cluster requirements for (SPD, SDD, SSD)
67 UChar_t fITSclusterBitMap; // map of requested ITS clusters
68 ITSclusterCutType fITSclusterCutType; // logic of requested ITS clusters
70 Bool_t fRequireITSRefit; // require ITS refit
71 Bool_t fRequireTPCRefit; // require TPC refit
73 Int_t fTPCNclRobustCut; // TPC Ncl cut, Robust
75 Bool_t CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2) const;
76 Bool_t CheckITSClusterCut(UChar_t itsBits) const;
78 ClassDef(AliDielectronTrackCuts,2) // Dielectron TrackCuts