00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef rotationEventCut_hh
00031 #define rotationEventCut_hh
00032
00033
00034 #include "StHbtMaker/Base/StHbtEventCut.h"
00035 class HepRandom;
00036 class HepJamesRandom;
00037 class RandGauss;
00038
00039 class rotationEventCut : public StHbtEventCut {
00040 public:
00041
00042 rotationEventCut();
00043 rotationEventCut(rotationEventCut&);
00044
00045
00046 void SetEventRefMult(const int& lo,const int& hi);
00047 void SetEventMult(const int& lo,const int& hi);
00048 void SetEventMultGood(const int& lo,const int& hi);
00049 void SetNumberOfTracks(const int& lo,const int& hi);
00050 void SetNumberOfV0s(const int& lo,const int& hi);
00051 void SetVertZPos(const float& lo, const float& hi);
00052 void SetReactionPlaneError(const float& lo, const float& hi);
00053 void SetL3TriggerAlgorithm(const unsigned int&);
00054 void SetSmear(const float& s=0);
00055 void RotationOn();
00056 void RotationOff();
00057 void RandomOn();
00058 void RandomOff();
00059 long NEventsPassed();
00060 long NEventsFailed();
00061
00062
00063 virtual StHbtString Report();
00064 virtual bool Pass(const StHbtEvent*);
00065
00066 rotationEventCut* Clone();
00067
00068 private:
00069 StHbtTrackCollection* ChargeList(StHbtTrackCollection*, const unsigned short);
00070 StHbtTrackCollection* RemoveList(StHbtTrackCollection*, const float, const float);
00071
00072 bool mRotation;
00073 bool mRandom;
00074 float mSmear;
00075 int mEventRefMult[2];
00076 int mEventMult[2];
00077 int mEventMultGood[2];
00078 float mVertZPos[2];
00079 int mNumberOfTracks[2];
00080 int mNumberOfV0s[2];
00081 float mReactionPlaneError[2];
00082 unsigned int mL3TriggerAlgorithm;
00083
00084 long mNEventsPassed;
00085 long mNEventsFailed;
00086 HepJamesRandom* engine;
00087 RandGauss* gauss;
00088
00089 #ifdef __ROOT__
00090 ClassDef(rotationEventCut, 1)
00091 #endif
00092
00093 };
00094
00095 inline void rotationEventCut::SetEventRefMult(const int& lo, const int& hi){mEventRefMult[0]=lo; mEventRefMult[1]=hi;}
00096 inline void rotationEventCut::SetEventMult(const int& lo, const int& hi){mEventMult[0]=lo; mEventMult[1]=hi;}
00097 inline void rotationEventCut::SetEventMultGood(const int& lo, const int& hi){mEventMultGood[0]=lo; mEventMultGood[1]=hi;}
00098 inline void rotationEventCut::SetNumberOfTracks(const int& lo, const int& hi){mNumberOfTracks[0]=lo; mNumberOfTracks[1]=hi;}
00099 inline void rotationEventCut::SetNumberOfV0s(const int& lo, const int& hi){mNumberOfV0s[0]=lo; mNumberOfV0s[1]=hi;}
00100 inline void rotationEventCut::SetVertZPos(const float& lo, const float& hi){mVertZPos[0]=lo; mVertZPos[1]=hi;}
00101 inline void rotationEventCut::SetReactionPlaneError(const float& lo, const float& hi){mReactionPlaneError[0]=lo; mReactionPlaneError[1]=hi;}
00102 inline void rotationEventCut::SetL3TriggerAlgorithm(const unsigned int& l3) {mL3TriggerAlgorithm=l3;}
00103 inline void rotationEventCut::SetSmear(const float& s){ mSmear = s;}
00104 inline void rotationEventCut::RotationOn() { mRotation = true; }
00105 inline void rotationEventCut::RotationOff() { mRotation = false; }
00106 inline void rotationEventCut::RandomOn() { mRandom = true; }
00107 inline void rotationEventCut::RandomOff() { mRandom = false; }
00108 inline long rotationEventCut::NEventsPassed() {return mNEventsPassed;}
00109 inline long rotationEventCut::NEventsFailed() {return mNEventsFailed;}
00110 inline rotationEventCut* rotationEventCut::Clone() { rotationEventCut* c = new rotationEventCut(*this); return c;}
00111 inline rotationEventCut::rotationEventCut(rotationEventCut& c) : StHbtEventCut(c) {
00112 mRotation = c.mRotation;
00113 mRandom = c.mRandom;
00114 mSmear = c.mSmear;
00115 mEventMult[0] = c.mEventMult[0];
00116 mEventMult[1] = c.mEventMult[1];
00117 mEventRefMult[0] = c.mEventRefMult[0];
00118 mEventRefMult[1] = c.mEventRefMult[1];
00119 mEventMultGood[0] = c.mEventMultGood[0];
00120 mEventMultGood[1] = c.mEventMultGood[1];
00121 mVertZPos[0] = c.mVertZPos[0];
00122 mVertZPos[1] = c.mVertZPos[1];
00123 mNumberOfTracks[0] = c.mNumberOfTracks[0];
00124 mNumberOfTracks[1] = c.mNumberOfTracks[1];
00125 mNumberOfV0s[0] = c.mNumberOfV0s[0];
00126 mNumberOfV0s[1] = c.mNumberOfV0s[1];
00127 mReactionPlaneError[0] = c.mReactionPlaneError[0];
00128 mReactionPlaneError[1] = c.mReactionPlaneError[1];
00129 mL3TriggerAlgorithm = c.mL3TriggerAlgorithm;
00130 mNEventsPassed = 0;
00131 mNEventsFailed = 0;
00132 }
00133
00134
00135 #endif