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
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef StTriggerId_hh
00039 #define StTriggerId_hh
00040 #include "StObject.h"
00041 #include <Stiostream.h>
00042 #include <vector>
00043 #include <stdint.h>
00044
00045 class StTriggerId : public StObject {
00046 public:
00047 StTriggerId();
00048 StTriggerId(const StTriggerId &id);
00049 const StTriggerId &operator=(const StTriggerId &id);
00050 ~StTriggerId();
00051
00052 uint64_t mask() const;
00053
00054 unsigned int maxTriggerIds() const;
00055 bool isTrigger(unsigned int id) const;
00056
00057 unsigned int version(unsigned int id) const;
00058 unsigned int nameVersion(unsigned int id) const;
00059 unsigned int thresholdVersion(unsigned int id) const;
00060 unsigned int prescaleVersion(unsigned int id) const;
00061
00062 unsigned int triggerId(const int idx) const;
00063 vector<unsigned int> triggerIds() const;
00064
00065
00066 void setMask(uint64_t);
00067 void addTrigger(unsigned int, unsigned int,
00068 unsigned int, unsigned int, unsigned int);
00069
00070 friend ostream& operator<<(ostream&, const StTriggerId&);
00071
00072 private:
00073 unsigned int index(unsigned int) const;
00074
00075 protected:
00076 enum {mMaxTriggerIds = 64};
00077
00078 private:
00079 UInt_t mIdx;
00080 ULong64_t mMask;
00081 UInt_t mId[mMaxTriggerIds];
00082 UInt_t mVersion[mMaxTriggerIds];
00083 UInt_t mNameVersion[mMaxTriggerIds];
00084 UInt_t mThresholdVersion[mMaxTriggerIds];
00085 UInt_t mPrescaleVersion[mMaxTriggerIds];
00086
00087 ClassDef(StTriggerId,5)
00088 };
00089
00090 inline unsigned int
00091 StTriggerId::maxTriggerIds() const {return mMaxTriggerIds;}
00092
00093 inline unsigned int
00094 StTriggerId::triggerId(const int idx) const
00095 {
00096 if (idx>=0 && idx<mMaxTriggerIds)
00097 return mId[idx];
00098 else
00099 return 0;
00100 }
00101
00102 #endif