00001
00002
00003 #include "StChargedPionEvent.h"
00004
00005 #include "TClass.h"
00006
00007 #include "StMessMgr.h"
00008
00009 #include "StChargedPionVertex.h"
00010 #include "StChargedPionTrack.h"
00011 #include "StChargedPionJet.h"
00012
00013 ClassImp(StChargedPionEvent)
00014
00015 StChargedPionEvent::StChargedPionEvent() : mSpinQA(0), mTriggerBits(0), mSimuTriggerBits(0) {
00016 mVertices = new TClonesArray("StChargedPionVertex", 20);
00017 mTracks = new TClonesArray("StChargedPionTrack", 50);
00018 mJets = new TClonesArray("StChargedPionJet", 50);
00019
00020 memset(mL2Result, 0, 36);
00021 memset(mL2ResultEmulated, 0, 36);
00022
00023 StChargedPionEvent::Class()->IgnoreTObjectStreamer();
00024 StChargedPionVertex::Class()->IgnoreTObjectStreamer();
00025 StChargedPionTrack::Class()->IgnoreTObjectStreamer();
00026 StChargedPionJet::Class()->IgnoreTObjectStreamer();
00027 }
00028
00029 StChargedPionEvent::~StChargedPionEvent() {
00030 if(mVertices) delete mVertices;
00031 if(mTracks) delete mTracks;
00032 if(mJets) delete mJets;
00033 }
00034
00035 StChargedPionEvent::StChargedPionEvent(const StChargedPionEvent & e) :
00036 mRunId(e.mRunId), mEventId(e.mEventId), mBx7(e.mBx7), mBbcTimeBin(e.mBbcTimeBin),
00037 mSpinBit(e.mSpinBit), mSpinQA(e.mSpinQA),
00038 mTriggerBits(e.mTriggerBits), mSimuTriggerBits(e.mSimuTriggerBits) {
00039
00040 memcpy(mL2Result, e.mL2Result, 36);
00041 memcpy(mL2ResultEmulated, e.mL2ResultEmulated, 36);
00042
00043 for(unsigned i=0; i<e.nVertices(); ++i) {
00044 addVertex(e.vertex(i));
00045 }
00046
00047 for(unsigned i=0; i<e.nTracks(); ++i) {
00048 addTrack(e.track(i));
00049 }
00050
00051 for(unsigned i=0; i<e.nJets(); ++i) {
00052 addJet(e.jet(i));
00053 }
00054 }
00055
00056 StChargedPionEvent& StChargedPionEvent::operator=(const StChargedPionEvent & e) {
00057 if (this == &e) return *this;
00058
00059 this->Clear();
00060 mRunId = e.mRunId;
00061 mEventId = e.mEventId;
00062 mBx7 = e.mBx7;
00063 mBbcTimeBin = e.mBbcTimeBin;
00064 mSpinBit = e.mSpinBit;
00065 mSpinQA = e.mSpinQA;
00066 mTriggerPrescales = e.mTriggerPrescales;
00067 mTriggerBits = e.mTriggerBits;
00068 mSimuTriggerBits = e.mSimuTriggerBits;
00069
00070 memcpy(mL2Result, e.mL2Result, 36);
00071 memcpy(mL2ResultEmulated, e.mL2ResultEmulated, 36);
00072
00073 for(unsigned i=0; i<e.nVertices(); ++i) {
00074 addVertex(e.vertex(i));
00075 }
00076
00077 for(unsigned i=0; i<e.nTracks(); ++i) {
00078 addTrack(e.track(i));
00079 }
00080
00081 for(unsigned i=0; i<e.nJets(); ++i) {
00082 addJet(e.jet(i));
00083 }
00084
00085 return *this;
00086 }
00087
00088 void StChargedPionEvent::copy(const StChargedPionEvent& e) {
00089 *this = e;
00090 }
00091
00092 void StChargedPionEvent::Clear(Option_t* o) {
00093 mSpinQA = 0;
00094 mTriggerBits = 0;
00095 mSimuTriggerBits = 0;
00096 mVertices->Clear();
00097 mTracks->Clear();
00098
00099
00100 mJets->Delete();
00101
00102 mTriggerPrescales.clear();
00103 mHighTowers.clear();
00104 mTriggerPatches.clear();
00105 mJetPatches.clear();
00106 }
00107
00108 bool StChargedPionEvent::isSpinValid() const {
00109 return (isPolValid() && !isBxingMasked() && isNullOffset());
00110 }
00111
00112 bool StChargedPionEvent::isTrigger(unsigned int trigId) const {
00113 map<unsigned int, unsigned int>::const_iterator it = mTriggerLookup.find(trigId);
00114 if(it==mTriggerLookup.end()) return false;
00115 return mTriggerBits & it->second;
00116 }
00117
00118 bool StChargedPionEvent::isSimuTrigger(unsigned int trigId) const {
00119 map<unsigned int, unsigned int>::const_iterator it = mTriggerLookup.find(trigId);
00120 if(it==mTriggerLookup.end()) return false;
00121 return mSimuTriggerBits & it->second;
00122 }
00123
00124 float StChargedPionEvent::prescale(unsigned int trigId) const {
00125 map<unsigned int, float>::const_iterator it = mTriggerPrescales.find(trigId);
00126 if(it==mTriggerPrescales.end()) return -1.0;
00127 return it->second;
00128 }
00129
00130 int StChargedPionEvent::highTowerAdc(short towerId) const {
00131 map<short, int>::const_iterator it = mHighTowers.find(towerId);
00132 if(it==mHighTowers.end()) return -1;
00133 return it->second;
00134 }
00135
00136 int StChargedPionEvent::triggerPatchAdc(short patchId) const {
00137 map<short, int>::const_iterator it = mTriggerPatches.find(patchId);
00138 if(it==mTriggerPatches.end()) return -1;
00139 return it->second;
00140 }
00141
00142 int StChargedPionEvent::jetPatchAdc(short patchId) const {
00143 map<short, int>::const_iterator it = mJetPatches.find(patchId);
00144 if(it==mJetPatches.end()) return -1;
00145 return it->second;
00146 }
00147
00148 StChargedPionVertex* StChargedPionEvent::vertex(int i) {
00149 return static_cast<StChargedPionVertex*>(mVertices->At(i));
00150 }
00151
00152 const StChargedPionVertex* StChargedPionEvent::vertex(int i) const {
00153 return static_cast<StChargedPionVertex*>(mVertices->At(i));
00154 }
00155
00156 StChargedPionTrack* StChargedPionEvent::track(int i) {
00157 return static_cast<StChargedPionTrack*>(mTracks->At(i));
00158 }
00159
00160 const StChargedPionTrack* StChargedPionEvent::track(int i) const {
00161 return static_cast<StChargedPionTrack*>(mTracks->At(i));
00162 }
00163
00164 StChargedPionJet* StChargedPionEvent::jet(int i) {
00165 return static_cast<StChargedPionJet*>(mJets->At(i));
00166 }
00167
00168 const StChargedPionJet* StChargedPionEvent::jet(int i) const {
00169 return static_cast<StChargedPionJet*>(mJets->At(i));
00170 }
00171
00172 void StChargedPionEvent::addTrigger(unsigned int trigId) {
00173 map<unsigned int, unsigned int>::const_iterator it = mTriggerLookup.find(trigId);
00174 if(it!=mTriggerLookup.end()) {
00175 mTriggerBits |= it->second;
00176 }
00177 }
00178
00179 void StChargedPionEvent::addSimuTrigger(unsigned int trigId) {
00180 map<unsigned int, unsigned int>::const_iterator it = mTriggerLookup.find(trigId);
00181 if(it!=mTriggerLookup.end()) {
00182 mSimuTriggerBits |= it->second;
00183 }
00184 }
00185
00186 void StChargedPionEvent::setL2Result(const void *address, bool emulated) {
00187 if(emulated) {
00188 memcpy(mL2ResultEmulated, address, 20);
00189 memcpy(mL2ResultEmulated+5, (int*)address+6, 16);
00190 }
00191 else {
00192 memcpy(mL2Result, address, 20);
00193 memcpy(mL2Result+5, (int*)address+6, 16);
00194 }
00195 }
00196
00197 void StChargedPionEvent::addVertex(const StChargedPionVertex* v) {
00198 new ( (*mVertices)[mVertices->GetEntriesFast()] ) StChargedPionVertex(*v);
00199 }
00200
00201 void StChargedPionEvent::addTrack(const StChargedPionTrack* t) {
00202 new ( (*mTracks)[mTracks->GetEntriesFast()] ) StChargedPionTrack(*t);
00203 }
00204
00205 void StChargedPionEvent::addJet(const StChargedPionJet* j) {
00206 new ( (*mJets)[mJets->GetEntriesFast()] ) StChargedPionJet(*j);
00207 }
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218