// StEvent #include "StEvent/StEvent.h" #include "StEvent/StEmcCollection.h" #include "StEvent/StEmcDetector.h" #include "StEvent/StTriggerId.h" #include "StEvent/StTriggerIdCollection.h" //MuDst #include "StMuDSTMaker/COMMON/StMuDstMaker.h" #include "StMuDSTMaker/COMMON/StMuDst.h" #include "StMuDSTMaker/COMMON/StMuTriggerIdCollection.h" #include "StMuDSTMaker/COMMON/StMuEvent.h" // trg-data from ezTree #include "StMuDSTMaker/EZTREE/EztTrigBlob.h" #include "StEvent/StTriggerData2005.h" #include "StDaqLib/TRG/trgStructures2005.h" #include "StDaqLib/TRG/L2jetResults2006.h" //======================================== //======================================== bool StL2JetMatchMaker::checkTriggerData(){ vector trgL; if(mUseMuDst) { StMuDstMaker *muMk = (StMuDstMaker*)GetMaker("MuDst"); assert(muMk); // use muDst first, in JetReader StEvent also exist -but w/o trigger data StMuEvent *muEve = muMk -> muDst() -> event(); assert(muEve); StMuTriggerIdCollection ticB = muEve -> triggerIdCollection(); const StTriggerId &L1 = ticB.nominal(); trgL=L1.triggerIds(); } else { // try StEvent #if 0 // fix it StEvent *mEvent = (StEvent *) GetInputDS("StEvent"); assert(mEvent); // no other choises (except ezTree) StTriggerIdCollection *ticA=mEvent->triggerIdCollection(); assert(ticA); const StTriggerId & L1=&ticA->nominal(); trgL=L1.triggerIds(); #endif } // printf("trigL len=%d totEve=%d\n",trgL.size(),mTotInpEve); bool L0ok=false; uint ii; for(ii=0;iiFill(2); } if(trgL[ii]==127652) { // EJP0-mb-L2 L0ok=true; hA[0]->Fill(3); } } return L0ok; } //======================================== //======================================== void StL2JetMatchMaker::getOnlineJets(){ printf("in getOnlineJets()\n"); StMuDstMaker *muMk = (StMuDstMaker*)GetMaker("MuDst"); assert(muMk); EztTrigBlob *eTrig=muMk->muDst()->eztTrig(); const TrgDataType2005 *trgD=( TrgDataType2005 *)eTrig->trgd->GetArray(); StTriggerData2005 trgAkio5(trgD ); //................. unpack L2Result[].... int l2jetOff=trgAkio5.L2ResultsOffset(l2Dijet, muMk->muDst()->event()->runId()); const unsigned int *l2res=trgD->TrgSum.L2Result; //for (int k=0;k<32;k++) printf("k=%2d val=0x%04x\n",k,l2res[k]); L2jetResults2006 *jetRes= ( L2jetResults2006 *) &l2res[l2jetOff]; L2jetResults2006_print(jetRes); unsigned char cSum=L2jetResults2006_doCheckSum(jetRes); assert(cSum==0); float ET1=jetRes->jet1.iEne/100.; //now in GeV, lower edge float phi1=1+2*jetRes->jet1.jPhi; // now in deg, center of bin float eta1=(0.5+jetRes->jet1.jEta)/50-1.; // now in eta-units, center of bin printf("by Hand: jet1 Et/GeV=%.2f phiCntr/deg=%.2f etaCntr=%.3f\n",ET1,phi1,eta1); }