]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/AliDielectronTrackCuts.h
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronTrackCuts.h
CommitLineData
164bfb53 1#ifndef ALIDIELECTRONTRACKCUTS_H
2#define ALIDIELECTRONTRACKCUTS_H
3
4/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7//#############################################################
8//# #
9//# Class AliDielectronTrackCuts #
10//# #
11//# Authors: #
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 #
19//# #
20//#############################################################
21
22#include <AliPID.h>
23#include <AliAnalysisCuts.h>
24
25class AliDielectronTrackCuts : public AliAnalysisCuts {
26public:
27 enum ITSClusterRequirement { kOff = 0, kNone, kAny, kFirst, kOnlyFirst, kSecond, kOnlySecond, kBoth };
28 enum Detector { kSPD = 0, kSDD, kSSD };
5720c765 29 enum ITScluster { kSPD0=0x0001, kSPD1=0x0002,
30 kSDD0=0x0004, kSDD1=0x0008,
31 kSSD0=0x0010, kSSD1=0x0020};
32 enum ITSclusterCutType { kOneOf=0, kAtLeast, kExact };
d05d1dfc 33 enum EFilterBit { kSwitchOff=0, kTPCqual=1, kITSonly=2, kTPCqualSPDany=4, kTPCqualSPDanyPIDele=8, kTPConly=128 };
164bfb53 34
164bfb53 35 AliDielectronTrackCuts();
36 AliDielectronTrackCuts(const char*name, const char* title);
37
38 virtual ~AliDielectronTrackCuts();
39
fb7d2d99 40 void SetV0DaughterCut(AliPID::EParticleType type, Bool_t negate=kFALSE);
164bfb53 41 void SetClusterRequirementITS(Detector det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
42
43 void SetRequireITSRefit(Bool_t req) { fRequireITSRefit=req; }
44 void SetRequireTPCRefit(Bool_t req) { fRequireTPCRefit=req; }
fb7d2d99 45
46 void SetTPCNclFRobust(Int_t cut) { fTPCNclRobustCut=cut; }
4a49f1b8 47 void SetMinNCrossedRowsOverFindable(Double_t CrossedOverFindable) { fTPCcrossedOverFindable = CrossedOverFindable; }
164bfb53 48
49 Int_t GetV0DaughterCut() const { return fV0DaughterCut; }
50 ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
5720c765 51
52 void SetITSclusterCut(ITSclusterCutType type, UChar_t map) { fITSclusterBitMap=map; fITSclusterCutType=type; }
67fd1119 53
4a49f1b8 54
67fd1119 55 void SetAODFilterBit(EFilterBit type) { fAODFilterBit = type; }
08b801a6 56 void SetMaxWaivedITSNcls(Int_t max) { fWaiveITSNcls = max; }
67fd1119 57
164bfb53 58 //
59 //Analysis cuts interface
60 //
61 virtual Bool_t IsSelected(TObject* track);
62 virtual Bool_t IsSelected(TList* /* list */ ) {return kFALSE;}
63
64
65private:
66
67 AliDielectronTrackCuts(const AliDielectronTrackCuts &c);
68 AliDielectronTrackCuts &operator=(const AliDielectronTrackCuts &c);
69
70 Int_t fV0DaughterCut; // Bit for V0 daughter selection
fb7d2d99 71 Bool_t fNegateV0DauterCut; // If to negate the V0 daughter cut
164bfb53 72 ITSClusterRequirement fCutClusterRequirementITS[3]; // detailed ITS cluster requirements for (SPD, SDD, SSD)
73
5720c765 74 UChar_t fITSclusterBitMap; // map of requested ITS clusters
75 ITSclusterCutType fITSclusterCutType; // logic of requested ITS clusters
76
164bfb53 77 Bool_t fRequireITSRefit; // require ITS refit
78 Bool_t fRequireTPCRefit; // require TPC refit
fb7d2d99 79
4a49f1b8 80 Int_t fTPCNclRobustCut; // TPC Ncl cut, Robust, corresponds to 'crossed Rows' in ESDTrackCuts
c022452e 81 Double_t fTPCcrossedOverFindable; // TPC Crossed Rows / Findable Clusters Cut, analogous to ESDTrackCuts
4a49f1b8 82
67fd1119 83 Int_t fAODFilterBit; // Filter bit for AOD analysis
08b801a6 84 Int_t fWaiveITSNcls; // max number of waived ITS clusters after first hit
67fd1119 85
164bfb53 86 Bool_t CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2) const;
5720c765 87 Bool_t CheckITSClusterCut(UChar_t itsBits) const;
b3e5a366 88
9afa0f7e 89 ClassDef(AliDielectronTrackCuts,3) // Dielectron TrackCuts
164bfb53 90};
91
92
93
94#endif