00001
00002
00003 #include <utility>
00004 using std::make_pair;
00005
00006 #include "StMessMgr.h"
00007 #include "StTriggerSimuResult.h"
00008
00009 #include "StDaqLib/TRG/trgStructures2005.h"
00010 #include "StDaqLib/TRG/trgStructures2009.h"
00011
00012 #ifndef L2RESULTS_2009_OFFSET_DIJET_HIGH
00013 #define L2RESULTS_2009_OFFSET_DIJET_HIGH 25
00014 #endif // L2RESULTS_2009_OFFSET_DIJET_HIGH
00015
00016 #include "L2Emulator/L2pedAlgo/L2pedResults2006.h"
00017 #include "L2Emulator/L2jetAlgo/L2jetResults2006.h"
00018 #include "L2Emulator/L2gammaAlgo/L2gammaResult2006.h"
00019 #include "L2Emulator/L2upsilon/L2upsilonResult2006.h"
00020 #include <cstring>
00021
00022 ClassImp(HttpResult)
00023 ClassImp(StTriggerSimuResult)
00024
00025 StTriggerSimuResult::StTriggerSimuResult() : TObject(), mBbcDecision(kDoNotCare),
00026 mBemcDecision(kDoNotCare), mEemcDecision(kDoNotCare), mL2Decision(kDoNotCare) { }
00027
00028 int StTriggerSimuResult::highTowerAdc(short towerId) const {
00029 for(unsigned i=0; i<mHighTowerIds.size(); i++) {
00030 if(mHighTowerIds[i] == towerId) return mHighTowerAdcs[i];
00031 }
00032 return -1;
00033 }
00034
00035 int StTriggerSimuResult::triggerPatchAdc(short patchId) const {
00036 for(unsigned i=0; i<mTriggerPatchIds.size(); i++) {
00037 if(mTriggerPatchIds[i] == patchId) return mTriggerPatchAdcs[i];
00038 }
00039 return -1;
00040 }
00041
00042
00043 int StTriggerSimuResult::jetPatchAdc(short jetPatchId) const {
00044 for(unsigned i=0; i<mJetPatchIds.size(); i++) {
00045 if(mJetPatchIds[i] == jetPatchId) return mJetPatchAdcs[i];
00046 }
00047 return -1;
00048 }
00049
00050 HttpResult StTriggerSimuResult::httpPair(short towerId) const {
00051 HttpResult result;
00052 result.towerId = -1;
00053 result.towerAdc = -1;
00054 result.triggerPatchId = -1;
00055 result.triggerPatchAdc = -1;
00056 for(unsigned i=0; i<mHighTowerIds.size(); i++) {
00057 if(mHighTowerIds[i] == towerId) {
00058 result.towerId = towerId;
00059 result.towerAdc = mHighTowerAdcs[i];
00060 if(i<mTriggerPatchAdcs.size()) {
00061 result.triggerPatchId = mTriggerPatchIds[i];
00062 result.triggerPatchAdc = mTriggerPatchAdcs[i];
00063 }
00064 else {
00065 LOG_WARN << "No matching TP is available for " << towerId << endm;
00066 }
00067 }
00068 }
00069 return result;
00070 }
00071
00072 const unsigned int* StTriggerSimuResult::l2Result(L2ResultType algo, int year) const {
00073 switch(algo) {
00074 case kPed:
00075 if(year==2006) return mL2Result + L2RESULTS_OFFSET_EMC_PED;
00076 if(year==2009) return mL2Result + L2RESULTS_2009_OFFSET_EMC_PED;
00077 break;
00078 case kJet:
00079 if(year==2006) return mL2Result + L2RESULTS_OFFSET_DIJET;
00080 if(year==2009) return mL2Result + L2RESULTS_2009_OFFSET_DIJET_HIGH;
00081 break;
00082 case kGammaBemc:
00083 if(year==2006) return mL2Result + L2RESULTS_OFFSET_PIG;
00084 if(year==2009) return mL2Result + L2RESULTS_2009_OFFSET_BGAMMA;
00085 break;
00086 case kGammaEemc:
00087 if(year==2006) return mL2Result + L2RESULTS_OFFSET_PIG + 2;
00088 if(year==2009) return mL2Result + L2RESULTS_2009_OFFSET_EGAMMA;
00089 break;
00090 case kUpsilon:
00091 if(year==2006) return mL2Result + L2RESULTS_OFFSET_UPS;
00092 if(year==2009) return mL2Result + L2RESULTS_2009_OFFSET_UPSILON;
00093 break;
00094 }
00095 return 0;
00096 }
00097
00098 const unsigned int* StTriggerSimuResult::l2Result() const {
00099 return mL2Result;
00100 }
00101
00102 void StTriggerSimuResult::addHighTower(int towerId, int dsmAdc) {
00103 mHighTowerIds.push_back(towerId);
00104 mHighTowerAdcs.push_back(dsmAdc);
00105 }
00106
00107 void StTriggerSimuResult::addTriggerPatch(int patchId, int dsmAdc) {
00108 mTriggerPatchIds.push_back(patchId);
00109 mTriggerPatchAdcs.push_back(dsmAdc);
00110 }
00111
00112 void StTriggerSimuResult::addJetPatch(int jetPatchId, int dsmAdc) {
00113 mJetPatchIds.push_back(jetPatchId);
00114 mJetPatchAdcs.push_back(dsmAdc);
00115 }
00116
00117 void StTriggerSimuResult::setL2Result(const unsigned int* result) {
00118 memcpy(mL2Result, result, sizeof(mL2Result));
00119 }
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149