00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ST_EMC_TRIGGER_SIMU_H
00009 #define ST_EMC_TRIGGER_SIMU_H
00010
00011 class StBemcTriggerSimu;
00012 class StEemcTriggerSimu;
00013 struct DSMLayer_EM201_2009;
00014 struct DSMLayer_LD301_2009;
00015 struct TriggerDefinition;
00016 class TCU;
00017
00018 #include <set>
00019
00020 using namespace std;
00021
00022 #include "StTriggerUtilities/StVirtualTriggerSimu.h"
00023 #include "StTriggerUtilities/StTriggerSimuResult.h"
00024
00025 class StEmcTriggerSimu : public StVirtualTriggerSimu {
00026 public:
00027 StEmcTriggerSimu();
00028 virtual ~StEmcTriggerSimu();
00029
00030 bool isTrigger(int trigId);
00031 set<int> triggerIds() const;
00032 StTriggerSimuDecision triggerDecision(int trigId);
00033
00034
00035 int EM201output() const;
00036
00037
00038
00039 int BHT() const;
00040 int EHT() const;
00041 int JP1() const;
00042 int JP2() const;
00043 int BJP1() const;
00044 int BJP2() const;
00045 int EJP1() const;
00046 int EJP2() const;
00047 int AJP() const;
00048 int BAJP() const;
00049 int EAJP() const;
00050 int JP0() const;
00051
00052 int BHT0() const;
00053 int BHT1() const;
00054 int BHT2() const;
00055 int BHT3() const;
00056
00057 int EHT0() const;
00058 int EHT1() const;
00059
00060 void setHeadMaker(StMaker*) { }
00061
00062 void InitRun(int runNumber);
00063 void Make();
00064
00065 void setBemc(StBemcTriggerSimu* bemc);
00066 void setEemc(StEemcTriggerSimu* eemc);
00067
00068 DSMLayer_EM201_2009* get2009_DSMLayer2_Result();
00069 DSMLayer_LD301_2009* get2009_DSMLayer3_Result();
00070
00071 void defineTrigger(const TriggerDefinition& trigdef);
00072 void defineTrigger(int triggerIndex, const char* name, int triggerId, int onbits, int offbits, int onbits1, int onbits2, int onbits3, int offbits1, int offbits2, int offbits3);
00073
00074 int overlapJetPatchTh(int i) const;
00075 void getOverlapJetPatchAdc(int i, int& jp, int& adc) const;
00076
00077 private:
00078
00079 int btest(int x, int pos) const { return x >> pos & 1; }
00080
00081
00082 int getbits(int x, int pos, int n) const { return x >> pos & ~(~0 << n); }
00083
00084
00085 void setbits(int& x, int pos, int value) const { x |= value << pos; }
00086
00087 TDatime mDBTime;
00088 StBemcTriggerSimu* mBemc;
00089 StEemcTriggerSimu* mEemc;
00090 DSMLayer_EM201_2009* mEM201;
00091 DSMLayer_LD301_2009* mLD301;
00092 TCU* mTcu;
00093
00094 ClassDef(StEmcTriggerSimu,0);
00095 };
00096
00097 inline DSMLayer_EM201_2009* StEmcTriggerSimu::get2009_DSMLayer2_Result() { return mEM201; }
00098 inline DSMLayer_LD301_2009* StEmcTriggerSimu::get2009_DSMLayer3_Result() { return mLD301; }
00099
00100 inline int StEmcTriggerSimu::BHT() const { return getbits(EM201output(),0,4); }
00101 inline int StEmcTriggerSimu::EHT() const { return getbits(EM201output(),4,2); }
00102 inline int StEmcTriggerSimu::JP1() const { return btest(EM201output(),6); }
00103 inline int StEmcTriggerSimu::JP2() const { return btest(EM201output(),7); }
00104 inline int StEmcTriggerSimu::BJP1() const { return btest(EM201output(),8); }
00105 inline int StEmcTriggerSimu::BJP2() const { return btest(EM201output(),9); }
00106 inline int StEmcTriggerSimu::EJP1() const { return btest(EM201output(),10); }
00107 inline int StEmcTriggerSimu::EJP2() const { return btest(EM201output(),11); }
00108 inline int StEmcTriggerSimu::AJP() const { return btest(EM201output(),12); }
00109 inline int StEmcTriggerSimu::BAJP() const { return btest(EM201output(),13); }
00110 inline int StEmcTriggerSimu::EAJP() const { return btest(EM201output(),14); }
00111 inline int StEmcTriggerSimu::JP0() const { return btest(EM201output(),15); }
00112
00113 inline int StEmcTriggerSimu::BHT0() const { return btest(EM201output(),0); }
00114 inline int StEmcTriggerSimu::BHT1() const { return btest(EM201output(),1); }
00115 inline int StEmcTriggerSimu::BHT2() const { return btest(EM201output(),2); }
00116 inline int StEmcTriggerSimu::BHT3() const { return btest(EM201output(),3); }
00117
00118 inline int StEmcTriggerSimu::EHT0() const { return btest(EM201output(),4); }
00119 inline int StEmcTriggerSimu::EHT1() const { return btest(EM201output(),5); }
00120
00121 #endif // ST_EMC_TRIGGER_SIMU_H