00001 #ifndef franksPairCut_hh
00002 #define franksPairCut_hh
00003
00004
00005
00006
00007
00008
00009 class StHbtPair;
00010 #include "StHbtMaker/Base/StHbtPairCut.h"
00011
00012 class franksPairCut : public StHbtPairCut{
00013 public:
00014 franksPairCut();
00015 franksPairCut(const franksPairCut&);
00016
00017
00018 virtual bool Pass(const StHbtPair*);
00019 virtual void EventBegin(const StHbtEvent*);
00020 virtual void EventEnd(const StHbtEvent*) { }
00021 void SetQuality(const float, const float );
00022 void SetKt(const float, const float );
00023 void SetPt(const float, const float );
00024 void SetOpeningAngle(const float, const float );
00025 void SetEntranceSeparation(const float, const float );
00026 void SetRapidity(const float, const float );
00027 void SetEta(const float, const float );
00028 void SetQinv(const float, const float );
00029 void SetDecayLength(const float, const float);
00030 void SetAngleToPrimaryVertex(const float, const float);
00031 void SetDcaToPrimaryVertex(const float, const float);
00032 void SetDcaOfDaughters(const float, const float);
00033 void SetIdenticalMother(const int=0);
00034
00035 franksPairCut* Clone();
00036
00037 virtual StHbtString Report();
00038
00039
00040 private:
00041 bool leave(bool);
00042
00043 StHbtThreeVector mPrimaryVertex;
00044 int mIdenticalMother;
00045 float mQuality[2];
00046 float mKt[2];
00047 float mPt[2];
00048 float mRapidity[2];
00049 float mEta[2];
00050 float mQinv[2];
00051 float mOpeningAngle[2];
00052 float mEntranceSeparation[2];
00053 float mDecayLength[2];
00054 float mAngleToPrimaryVertex[2];
00055 float mDcaToPrimaryVertex[2];
00056 float mDcaOfDaughters[2];
00057 long mNPairsPassed;
00058 long mNPairsFailed;
00059
00060 protected:
00061
00062
00063 #ifdef __ROOT__
00064 ClassDef(franksPairCut, 1)
00065 #endif
00066 };
00067
00068 inline void franksPairCut::SetQuality(const float x, const float y) { mQuality[0]=x; mQuality[1]=y; }
00069 inline void franksPairCut::SetKt(const float x, const float y) { mKt[0]=x; mKt[1]=y; }
00070 inline void franksPairCut::SetPt(const float x, const float y) { mPt[0]=x; mPt[1]=y; }
00071 inline void franksPairCut::SetOpeningAngle(const float x, const float y) { mOpeningAngle[0]=x; mOpeningAngle[1]=y; }
00072 inline void franksPairCut::SetRapidity(const float x, const float y) { mRapidity[0]=x; mRapidity[1]=y; }
00073 inline void franksPairCut::SetEta(const float x, const float y) { mEta[0]=x; mEta[1]=y; }
00074 inline void franksPairCut::SetQinv(const float x, const float y) { mQinv[0]=x; mQinv[1]=y; }
00075 inline void franksPairCut::SetEntranceSeparation(const float x, const float y) { mEntranceSeparation[0]=x; mEntranceSeparation[1]=y; }
00076 inline void franksPairCut::SetDecayLength(const float x, const float y) { mDecayLength[0]=x; mDecayLength[1]=y; }
00077 inline void franksPairCut::SetAngleToPrimaryVertex(const float x, const float y) { mAngleToPrimaryVertex[0]=x; mAngleToPrimaryVertex[1]=y; }
00078 inline void franksPairCut::SetDcaToPrimaryVertex(const float x, const float y) { mDcaToPrimaryVertex[0]=x; mDcaToPrimaryVertex[1]=y; }
00079 inline void franksPairCut::SetDcaOfDaughters(const float x, const float y) { mDcaOfDaughters[0]=x; mDcaOfDaughters[1]=y; }
00080 inline void franksPairCut::SetIdenticalMother(const int i) { mIdenticalMother=i; }
00081 inline void franksPairCut::EventBegin(const StHbtEvent* ev) { mPrimaryVertex = ev->PrimVertPos(); }
00082 inline franksPairCut* franksPairCut::Clone() { franksPairCut* c = new franksPairCut(*this); return c;}
00083
00084
00085 #endif