00001
00002
00003
00004
00005
00006
00015 #ifndef StMuCut_h
00016 #define StMuCut_h
00017
00018 #include "TObject.h"
00019
00020 class StEvent;
00021 class StTrack;
00022 class StV0Vertex;
00023 class StXiVertex;
00024 class StKinkVertex;
00025 class StV0MuDst;
00026 class StXiMuDst;
00027 class StKinkMuDst;
00028
00029 class StMuCut : public TObject {
00030 public:
00031 StMuCut();
00032 virtual ~StMuCut() {};
00033
00034 bool pass( const StEvent* );
00035 bool pass( const StTrack* );
00036 bool pass( const StV0Vertex* );
00037 bool pass( const StXiVertex* );
00038 bool pass( const StKinkVertex* );
00039 bool pass( const StV0MuDst* );
00040 bool pass( const StXiMuDst* );
00041 bool pass( const StKinkMuDst* );
00042 protected:
00043 virtual bool accept( const StEvent* ) = 0;
00044 virtual bool accept( const StTrack* ) = 0;
00045 virtual bool accept( const StV0Vertex* ) = 0;
00046 virtual bool accept( const StXiVertex* ) = 0;
00047 virtual bool accept( const StKinkVertex* ) = 0;
00048 virtual bool accept( const StV0MuDst* ) = 0;
00049 virtual bool accept( const StXiMuDst* ) = 0;
00050 virtual bool accept( const StKinkMuDst* ) = 0;
00051
00052 bool leave(bool b, unsigned int counter[2]);
00053
00054
00055 unsigned int mNStEvent[2];
00056 unsigned int mNStTrack[2];
00057 unsigned int mNStV0Vertex[2];
00058 unsigned int mNStXiVertex[2];
00059 unsigned int mNStKinkVertex[2];
00060 unsigned int mNStV0MuDst[2];
00061 unsigned int mNStXiMuDst[2];
00062 unsigned int mNStKinkMuDst[2];
00063
00064 ClassDef(StMuCut,1)
00065 };
00066
00067 inline bool StMuCut::leave(bool b, unsigned int counter[2]) { (b) ? counter[0]++ : counter[1]++; return b; }
00068 inline bool StMuCut::pass( const StEvent* e) { return leave( accept(e), mNStEvent ); }
00069 inline bool StMuCut::pass( const StTrack* t) { return leave( accept(t), mNStTrack ); }
00070 inline bool StMuCut::pass( const StV0Vertex* v) { return leave( accept(v), mNStV0Vertex ); }
00071 inline bool StMuCut::pass( const StXiVertex* x) { return leave( accept(x), mNStXiVertex ); }
00072 inline bool StMuCut::pass( const StKinkVertex* k) { return leave( accept(k), mNStKinkVertex ); }
00073 inline bool StMuCut::pass( const StV0MuDst* v) { return leave( accept(v), mNStV0MuDst ); }
00074 inline bool StMuCut::pass( const StXiMuDst* x) { return leave( accept(x), mNStXiMuDst ); }
00075 inline bool StMuCut::pass( const StKinkMuDst* k) { return leave( accept(k), mNStKinkMuDst ); }
00076
00077
00078
00079 #endif
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103