00001 #ifndef ST_CHARGED_PION_EVENT_HH
00002 #define ST_CHARGED_PION_EVENT_HH
00003
00004
00005
00006 #include <string>
00007 using std::string;
00008
00009 #include <vector>
00010 using std::vector;
00011
00012 #include "TClonesArray.h"
00013 #include "StEvent/StRunInfo.h"
00014 #include "StChargedPionBaseEv.h"
00015
00016 class StChargedPionVertex;
00017 class StChargedPionTrack;
00018 class StChargedPionJet;
00019
00020 class StChargedPionEvent : public StChargedPionBaseEv
00021 {
00022 public:
00023 StChargedPionEvent();
00024 StChargedPionEvent(const StChargedPionEvent&);
00025 virtual ~StChargedPionEvent();
00026
00027 StChargedPionEvent& operator=(const StChargedPionEvent&);
00028 void copy(const StChargedPionEvent&);
00029
00030 virtual void Clear(Option_t* = "");
00031
00032 unsigned int runId() const;
00033 unsigned int eventId() const;
00034 unsigned int bx7() const;
00035 unsigned int bbcTimeBin() const;
00036 const string& muDstName() const;
00037 const StRunInfo& runInfo() const;
00038
00039 unsigned int spinBit() const;
00040 bool isSpinValid() const;
00041 bool isPolValid() const;
00042 bool isPolLong() const;
00043 bool isPolTrans() const;
00044 bool isBxingMasked() const;
00045 bool isNullOffset() const;
00046
00047 bool isTrigger(unsigned int trigId) const;
00048 bool isSimuTrigger(unsigned int trigId) const;
00049 float prescale(unsigned int trigId) const;
00050
00051 int highTowerAdc(short towerId) const;
00052 int triggerPatchAdc(short patchId) const;
00053 int jetPatchAdc(short patchId) const;
00054
00055 unsigned int nVertices() const;
00056 TClonesArray* vertices();
00057 const TClonesArray* vertices() const;
00058
00059 unsigned int nTracks() const;
00060 TClonesArray* tracks();
00061 const TClonesArray* tracks() const;
00062
00063 unsigned int nJets() const;
00064 TClonesArray* jets();
00065 const TClonesArray* jets() const;
00066
00067 StChargedPionVertex* vertex(int i);
00068 const StChargedPionVertex* vertex(int i) const;
00069
00070 StChargedPionTrack* track(int i);
00071 const StChargedPionTrack* track(int i) const;
00072
00073 StChargedPionJet* jet(int i);
00074 const StChargedPionJet* jet(int i) const;
00075
00076 void setRunId(unsigned int);
00077 void setEventId(unsigned int);
00078 void setBx7(unsigned char);
00079 void setBbcTimeBin(unsigned short);
00080 void setMuDstName(const char*);
00081 void setRunInfo(const StRunInfo&);
00082
00083 void setSpinBit(unsigned char);
00084 void setPolValid(bool);
00085 void setPolLong(bool);
00086 void setPolTrans(bool);
00087 void setBxingMasked(bool);
00088 void setBxingOffset(int);
00089
00090 void addTrigger(unsigned int);
00091 void addSimuTrigger(unsigned int);
00092 void setPrescale(unsigned int trigId, float prescale);
00093
00094 void addHighTower(short towerId, int ADC);
00095 void addTriggerPatch(short patchId, int ADC);
00096 void addJetPatch(short patchId, int ADC);
00097
00099 void setL2Result(const void *address, bool emulated=false);
00100
00101 void addVertex(const StChargedPionVertex*);
00102 void addTrack(const StChargedPionTrack*);
00103 void addJet(const StChargedPionJet*);
00104
00105 private:
00106 UInt_t mRunId;
00107 UInt_t mEventId;
00108 UChar_t mBx7;
00109 UShort_t mBbcTimeBin;
00110 UChar_t mSpinBit;
00111 UChar_t mSpinQA;
00112
00113 StRunInfo mRunInfo;
00114
00115 string mMuDstName;
00116
00117 map<unsigned int, float> mTriggerPrescales;
00118 UInt_t mTriggerBits;
00119 UInt_t mSimuTriggerBits;
00120
00121 map<short, int> mHighTowers;
00122 map<short, int> mTriggerPatches;
00123 map<short, int> mJetPatches;
00124
00125
00126 UInt_t mL2Result[9];
00127 UInt_t mL2ResultEmulated[9];
00128
00129 TClonesArray *mVertices;
00130 TClonesArray *mTracks;
00131 TClonesArray *mJets;
00132
00133 enum {kIsPolValid=0x01,
00134 kIsPolLong=0x02,
00135 kIsPolTrans=0x04,
00136 kIsBxingMasked=0x8,
00137 kNullOffset=0x10};
00138
00139 ClassDef(StChargedPionEvent,4)
00140 };
00141
00142 inline unsigned int StChargedPionEvent::runId() const { return mRunId; }
00143 inline unsigned int StChargedPionEvent::eventId() const { return mEventId; }
00144 inline unsigned int StChargedPionEvent::bx7() const { return mBx7; }
00145 inline unsigned int StChargedPionEvent::bbcTimeBin() const { return mBbcTimeBin; }
00146 inline const string& StChargedPionEvent::muDstName() const { return mMuDstName; }
00147 inline const StRunInfo& StChargedPionEvent::runInfo() const { return mRunInfo; }
00148
00149 inline unsigned int StChargedPionEvent::spinBit() const { return mSpinBit; }
00150 inline bool StChargedPionEvent::isPolValid() const { return mSpinQA & kIsPolValid; }
00151 inline bool StChargedPionEvent::isPolLong() const { return mSpinQA & kIsPolLong; }
00152 inline bool StChargedPionEvent::isPolTrans() const { return mSpinQA & kIsPolTrans; }
00153 inline bool StChargedPionEvent::isBxingMasked() const { return mSpinQA & kIsBxingMasked; }
00154 inline bool StChargedPionEvent::isNullOffset() const { return mSpinQA & kNullOffset; }
00155
00156 inline unsigned int StChargedPionEvent::
00157 nVertices() const { return mVertices->GetEntriesFast(); }
00158
00159 inline TClonesArray* StChargedPionEvent::
00160 vertices() { return mVertices; }
00161
00162 inline const TClonesArray* StChargedPionEvent::
00163 vertices() const { return mVertices; }
00164
00165 inline unsigned int StChargedPionEvent::
00166 nTracks() const { return mTracks->GetEntriesFast(); }
00167
00168 inline TClonesArray* StChargedPionEvent::
00169 tracks() { return mTracks; }
00170
00171 inline const TClonesArray* StChargedPionEvent::
00172 tracks() const { return mTracks; }
00173
00174 inline unsigned int StChargedPionEvent::
00175 nJets() const { return mJets->GetEntriesFast(); }
00176
00177 inline TClonesArray* StChargedPionEvent::
00178 jets() { return mJets; }
00179
00180 inline const TClonesArray* StChargedPionEvent::
00181 jets() const { return mJets; }
00182
00183 inline void StChargedPionEvent::setRunId(unsigned int a) { mRunId = a; }
00184 inline void StChargedPionEvent::setEventId(unsigned int a) { mEventId = a; }
00185 inline void StChargedPionEvent::setBx7(unsigned char a) { mBx7 = a; }
00186 inline void StChargedPionEvent::setBbcTimeBin(unsigned short a) { mBbcTimeBin = a; }
00187 inline void StChargedPionEvent::setMuDstName(const char* a) { mMuDstName = a; }
00188 inline void StChargedPionEvent::setRunInfo(const StRunInfo& a) { mRunInfo = a; }
00189
00190 inline void StChargedPionEvent::
00191 setSpinBit(unsigned char a) { mSpinBit = a; }
00192
00193 inline void StChargedPionEvent::
00194 setPolValid(bool a) { a ? mSpinQA |= kIsPolValid : mSpinQA &= ~kIsPolValid; }
00195
00196 inline void StChargedPionEvent::
00197 setPolLong(bool a) { a ? mSpinQA |= kIsPolLong : mSpinQA &= ~kIsPolLong; }
00198
00199 inline void StChargedPionEvent::
00200 setPolTrans(bool a) { a ? mSpinQA |= kIsPolTrans : mSpinQA &= ~kIsPolTrans; }
00201
00202 inline void StChargedPionEvent::
00203 setBxingMasked(bool a) { a ? mSpinQA |= kIsBxingMasked : mSpinQA &= ~kIsBxingMasked; }
00204
00205 inline void StChargedPionEvent::
00206 setBxingOffset(int a) { (a==0) ? mSpinQA |= kNullOffset : mSpinQA &= ~kNullOffset; }
00207
00208 inline void StChargedPionEvent::
00209 setPrescale(unsigned int trigId, float prescale) { mTriggerPrescales[trigId] = prescale; }
00210
00211 inline void StChargedPionEvent::
00212 addHighTower(short towerId, int ADC) { mHighTowers[towerId] = ADC; }
00213
00214 inline void StChargedPionEvent::
00215 addTriggerPatch(short patchId, int ADC) { mTriggerPatches[patchId] = ADC; }
00216
00217 inline void StChargedPionEvent::
00218 addJetPatch(short patchId, int ADC) { mJetPatches[patchId] = ADC; }
00219
00220 #endif
00221
00222
00223
00224
00225
00226
00227