00001
00025
00026
00027 #include "StMuDSTMaker/COMMON/StMuDst.h"
00028 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00029 #include "StMessMgr.h"
00030 #include "StMuScalerCutter.h"
00031
00032 ClassImp(StMuScalerCutter)
00033
00034
00035 StMuScalerCutter::StMuScalerCutter(const Char_t *name) : StMaker(name) {}
00036
00037 Int_t StMuScalerCutter::Make()
00038 {
00039
00040
00041 StMuDst* mu = (StMuDst*) GetInputDS("MuDst");
00042 if (!mu){
00043 LOG_WARN << "StMuScalerCutter::Make : No MuDst" << endm;
00044 return kStOK;
00045 }
00046
00047 return (accept(mu->event()) ? kStOK : kStSkip);
00048 }
00049
00050 bool StMuScalerCutter::accept(StMuEvent* event)
00051 {
00052
00053
00054 if (!event) return true;
00055 StRunInfo& runInfo = event->runInfo();
00056 int run = runInfo.runId();
00057 double zdce = runInfo.zdcEastRate();
00058 double zdcw = runInfo.zdcWestRate();
00059 double zdcx = runInfo.zdcCoincidenceRate();
00060
00061 double bbcw = runInfo.bbcWestRate();
00062 double bbcx = runInfo.bbcCoincidenceRate();
00063 double bbcbb = runInfo.bbcBlueBackgroundRate();
00064
00065
00066
00067 if (run > 8330000 && run < 9029000) {
00068
00069
00070 if (zdcx/bbcx > 0.42 ||
00071 zdcx/zdcw > 0.35) return false;
00072
00073
00074 if (run > 8361110 && run < 8363032) {
00075 if (zdce/bbcx > 2.9 ||
00076 zdce/zdcw > 1.8) return false;
00077 } else {
00078 if (zdce/bbcx > 1.9 ||
00079 zdce/zdcw > 1.8) return false;
00080 }
00081
00082
00083 double R1 = 1.4923e-3*pow(zdcw,-2.57818)*pow(bbcw,3.6488);
00084 double R2 = bbcbb/R1;
00085 if (((R2 > 0.2) && (R2 < 0.72)) ||
00086 ((R2 > 1.4) && (R2 < 4.6) )) return false;
00087
00088 }
00089
00090 return true;
00091 }