00001
00002
00003
00004
00005
00006
00007
00008 #include <sstream>
00009
00010
00011 #include "StTriggerUtilities/StTriggerSimuMaker.h"
00012 #include "StTriggerUtilities/Emc/StEmcTriggerSimu.h"
00013 #include "StTriggerUtilities/Bemc/StBemcTriggerSimu.h"
00014 #include "StTriggerUtilities/Eemc/StEemcTriggerSimu.h"
00015 #include "StEmcTriggerMaker/StEmcTriggerMaker.h"
00016
00017
00018 #include "StBfcTriggerFilterMaker.h"
00019
00020 ClassImp(StBfcTriggerFilterMaker);
00021
00022 int StBfcTriggerFilterMaker::Init()
00023 {
00024
00025 SetAttr(".Privilege",1);
00026
00027
00028 LOG_INFO << Form("MASK: BHT0=%d BHT1=%d BHT2=%d BHT3=%d EHT0=%d EHT1=%d JP1=%d JP2=%d BJP1=%d BJP2=%d EJP1=%d EJP2=%d AJP=%d BAJP=%d EAJP=%d",
00029 mMask.test(0),
00030 mMask.test(1),
00031 mMask.test(2),
00032 mMask.test(3),
00033 mMask.test(4),
00034 mMask.test(5),
00035 mMask.test(6),
00036 mMask.test(7),
00037 mMask.test(8),
00038 mMask.test(9),
00039 mMask.test(10),
00040 mMask.test(11),
00041 mMask.test(12),
00042 mMask.test(13),
00043 mMask.test(14)) << endm;
00044
00045
00046 ostringstream os;
00047 copy(mTriggers.begin(),mTriggers.end(),ostream_iterator<int>(os," "));
00048 LOG_INFO << "Triggers: " << os.str() << endm;
00049
00050 return kStOk;
00051 }
00052
00053
00054
00055 struct PrintTrigger {
00056 ostream& out;
00057 StEmcTriggerMaker* emcTrig;
00058
00059 PrintTrigger(ostream& out, StEmcTriggerMaker* emcTrig) : out(out), emcTrig(emcTrig) {}
00060
00061 ostream& operator()(int trigId) const { return out << trigId << "(" << emcTrig->isTrigger(trigId) << ") "; }
00062 };
00063
00064 int StBfcTriggerFilterMaker::Make()
00065 {
00066 const TDatime& datime = GetDBTime();
00067
00068 LOG_INFO << "DB Time = " << datime.AsSQLString() << endm;
00069
00070 if (datime.GetYear() < 2009) {
00071 StEmcTriggerMaker* emcTrig = (StEmcTriggerMaker*)GetMakerInheritsFrom("StEmcTriggerMaker");
00072 if (!emcTrig) {
00073 LOG_ERROR << "Missing StEmcTriggerMaker" << endm;
00074 return kStErr;
00075 }
00076
00077
00078 ostringstream os;
00079 for_each(mTriggers.begin(),mTriggers.end(),PrintTrigger(os,emcTrig));
00080 LOG_INFO << "Triggers: " << os.str() << endm;
00081
00082
00083 return os.str().find("(1)") != string::npos ? kStOk : kStSkip;
00084 }
00085
00086
00087 StTriggerSimuMaker* trgsim = (StTriggerSimuMaker*)GetMakerInheritsFrom("StTriggerSimuMaker");
00088 if (!trgsim) {
00089 LOG_ERROR << "Missing StTriggerSimuMaker" << endm;
00090 return kStErr;
00091 }
00092
00093
00094 bitset<16> emc(trgsim->emc->EM201output());
00095
00096 LOG_INFO << Form("EM201: BHT0=%d BHT1=%d BHT2=%d BHT3=%d EHT0=%d EHT1=%d JP1=%d JP2=%d BJP1=%d BJP2=%d EJP1=%d EJP2=%d AJP=%d BAJP=%d EAJP=%d",
00097 emc.test(0),
00098 emc.test(1),
00099 emc.test(2),
00100 emc.test(3),
00101 emc.test(4),
00102 emc.test(5),
00103 emc.test(6),
00104 emc.test(7),
00105 emc.test(8),
00106 emc.test(9),
00107 emc.test(10),
00108 emc.test(11),
00109 emc.test(12),
00110 emc.test(13),
00111 emc.test(14)) << endm;
00112
00113
00114 emc &= mMask;
00115
00116
00117 return emc.any() ? kStOk : kStSkip;
00118 }
00119
00120 void StBfcTriggerFilterMaker::changeJPThresh(int dsm)
00121 {
00122 StTriggerSimuMaker* trgsim = (StTriggerSimuMaker*)GetMakerInheritsFrom("StTriggerSimuMaker");
00123 trgsim->changeJPThresh(dsm);
00124 }
00125
00126 void StBfcTriggerFilterMaker::addTrigger(int trigId)
00127 {
00128 mTriggers.push_back(trigId);
00129 }