27 #include "StHltMaker.h"
28 #include "StRtsTable.h"
29 #include "HLTFormats.h"
30 #include "RTS/src/DAQ_HLT/hlt_gl3.h"
31 #include "StThreeVectorF.hh"
33 #include "StEvent/StEvent.h"
34 #include "StEvent/StHltEvent.h"
35 #include "StEvent/StHltTrackNode.h"
36 #include "StEvent/StHltTrack.h"
37 #include "StEvent/StHltBTofHit.h"
38 #include "StEvent/StHltVpdHit.h"
39 #include "StEvent/StHltBEmcTowerHit.h"
40 #include "StEvent/StHltTriggerReason.h"
41 #include "StEvent/StHltHighPt.h"
42 #include "StEvent/StHltHeavyFragment.h"
43 #include "StEvent/StHltDiElectron.h"
47 using namespace star::rts;
48 using namespace star::rts::hlt;
52 #define HTLPAIRATTR(bank) pair<string, EHLTBANKS>(_QUOTE_(HLT_##bank),_NAME2_(kHLT_,bank))
53 #define SELECTBANK(bank) case _NAME2_(kHLT_,bank): { processBank((_NAME2_(HLT_,bank) *)(&(hlt.data))); break;}
55 map<string, EHLTBANKS> fHltBanks;
58 fHltBanks.insert(HTLPAIRATTR(EVE));
59 fHltBanks.insert(HTLPAIRATTR(TOF));
60 fHltBanks.insert(HTLPAIRATTR(PVPD));
61 fHltBanks.insert(HTLPAIRATTR(EMC));
62 fHltBanks.insert(HTLPAIRATTR(GT));
63 fHltBanks.insert(HTLPAIRATTR(PT));
64 fHltBanks.insert(HTLPAIRATTR(NODE));
65 fHltBanks.insert(HTLPAIRATTR(HIPT));
66 fHltBanks.insert(HTLPAIRATTR(DIEP));
67 fHltBanks.insert(HTLPAIRATTR(HF));
68 fHltBanks.insert(HTLPAIRATTR(NONE));
70 EHLTBANKS BankId(
const char *bankName) {
71 map<string,EHLTBANKS>::iterator it=
72 fHltBanks.find(
string(bankName));
73 return (it == fHltBanks.end()) ? kHLT_NONE : it->second;
77 EHLTBANKS BankId(
const char *bankName) {
78 EHLTBANKS j= gHltBanks.BankId(bankName) ;
94 mNumHeavyFragment = 0;
99 for(uint32_t i=0; i<NMax; i++){
100 mHighPtNodeSN[i] = -1;
101 mHeavyFragmentNodeSN[i] = -1;
102 mDaughter1NodeSN[i] = -1;
103 mDaughter2NodeSN[i] = -1;
106 LOG_DEBUG <<
"StHltMaker::ctor" << endm;
111 StHltMaker::~StHltMaker()
120 return StMaker::Init();
126 return StMaker::Init();
142 return GetNext(
"gl3");
160 mStEvent =
dynamic_cast<StEvent *
> (GetInputDS(
"StEvent"));
163 HltEvent = mStEvent->hltEvent();
166 LOG_DEBUG <<
"Create StHltEvent !" << endm;
169 mStEvent->setHltEvent(HltEvent);
172 else {LOG_WARN <<
"No StEvent found" << endm; }
182 if ( Token() == 0 )
return kStOK ;
183 mStHltEvent = GetHltEvent();
185 LOG_WARN <<
"No hlt event found in this data !" << endm;
190 mNumHeavyFragment = 0;
193 for(uint32_t i=0; i<NMax; i++){
194 mHighPtNodeSN[i] = -1;
195 mHeavyFragmentNodeSN[i] = -1;
196 mDaughter1NodeSN[i] = -1;
197 mDaughter2NodeSN[i] = -1;
202 while ( GetNextGl3() ) {
207 switch (BankId(hlt.name)) {
218 default:
case kHLT_NONE:{
219 LOG_ERROR <<
"Unknown bank name was delivered: <" << hlt.name <<
">" << endm;
226 fillNodePointer(mStHltEvent);
227 fillHighPt(mStHltEvent);
228 fillHeavyFragment(mStHltEvent);
229 fillDielectron(mStHltEvent);
230 fillTriggerReason(mStHltEvent);
235 Int_t hltMode = IAttr(
"hltMode");
239 StSPtrVecHltTrack& VecgTrack = mStHltEvent->globalTrack();
241 StSPtrVecHltTrack& VecpTrack = mStHltEvent->primaryTrack();
243 StSPtrVecHltTrackNode& VecTrackNode = mStHltEvent->trackNode();
244 VecTrackNode.resize(0);
245 StSPtrVecHltBTofHit& VecbTofHit = mStHltEvent->bTofHit();
246 VecbTofHit.resize(0);
247 StSPtrVecHltBEmcTowerHit& VecbEmcHit = mStHltEvent->bEmcTowerHits();
248 VecbEmcHit.resize(0);
249 StSPtrVecHltVpdHit& VecpVpdHit = mStHltEvent->vpdHit();
250 VecpVpdHit.resize(0);
252 LOG_INFO <<
"Clear The Vector Of HLT Tracks, TrackNodes, BTofHit, BEmcTowerHit, VpdHit in <<Triggered Tracks Only>> model " << endm;
257 LOG_DEBUG <<
"There was no hlt data for this event. " << endm;
259 LOG_DEBUG <<
"End of hlt data for this event : " << GetEventNumber() <<
", Total = " << counter+1
260 <<
" records were found" << endm;
271 LOG_DEBUG <<
"Begin to fill HLT_EVE bank " << endm;
273 mStHltEvent->setVersion((
unsigned int) hlt_eve->version) ;
275 mStHltEvent->setTriggerReasonBitOred((
unsigned int) hlt_eve->
hltDecision) ;
278 mStHltEvent->setT0(hlt_eve->T0) ;
279 mStHltEvent->setVpdVertexZ(hlt_eve->vpdVertexZ);
281 if( hlt_eve->version >= 0x20100216){
282 mStHltEvent->setInnerSecGain(hlt_eve->innerSectorGain) ;
283 mStHltEvent->setOuterSecGain(hlt_eve->outerSectorGain) ;
285 mStHltEvent->setInnerSecGain(-999.) ;
286 mStHltEvent->setOuterSecGain(-999.) ;
289 float vertX = hlt_eve->vertexX ;
290 float vertY = hlt_eve->vertexY ;
291 float vertZ = hlt_eve->vertexZ ;
293 mStHltEvent->setVertex(vertex) ;
295 float lmvertX = hlt_eve->lmVertexX ;
296 float lmvertY = hlt_eve->lmVertexY ;
297 float lmvertZ = hlt_eve->lmVertexZ ;
299 mStHltEvent->setLowMultVertex(lmvertex) ;
301 LOG_DEBUG <<
"Finish to fill HLT_EVE bank " << endm;
310 LOG_DEBUG <<
"Begin to fill HLT_TOF bank " << endm;
312 for(uint32_t i=0 ; i < hlt_tof->nTofHits ; i++){
317 aHit->setTrayId(hlt_tof->tofHit[i].trayId);
318 aHit->setChannel(hlt_tof->tofHit[i].
channel);
319 aHit->setTdc(hlt_tof->tofHit[i].tdc);
320 aHit->setTot(hlt_tof->tofHit[i].tot);
321 aHit->setTof(hlt_tof->tofHit[i].tof);
322 aHit->setTriggerTime(hlt_tof->tofHit[i].triggertime);
325 mStHltEvent->addBTofHit(aHit);
329 LOG_DEBUG <<
"Finish to fill HLT_TOF bank " << endm;
338 LOG_DEBUG <<
"Begin to fill HLT_PVPD bank " << endm;
340 for(uint32_t i=0 ; i < hlt_pvpd->nPvpdHits ; i++){
345 int trayID = hlt_pvpd->pvpdHit[i].trayId;
346 if(trayID==120) aHit->setDirection(west);
347 else aHit->setDirection(east);
348 aHit->setChannel(hlt_pvpd->pvpdHit[i].
channel);
349 aHit->setTdc(hlt_pvpd->pvpdHit[i].tdc);
350 aHit->setTot(hlt_pvpd->pvpdHit[i].tot);
351 aHit->setTof(hlt_pvpd->pvpdHit[i].tof);
352 aHit->setTriggerTime(hlt_pvpd->pvpdHit[i].triggertime);
355 mStHltEvent->addVpdHit(aHit);
359 LOG_DEBUG <<
"Finish to fill HLT_PVPD bank " << endm;
368 LOG_DEBUG <<
"Begin to fill HLT_EMC bank " << endm;
370 for(uint32_t i=0 ; i< hlt_emc->nEmcTowers ; i++){
375 aHit->setAdc(hlt_emc->emcTower[i].adc);
376 aHit->setEnergy(hlt_emc->emcTower[i].energy);
377 aHit->setPhi(hlt_emc->emcTower[i].phi);
378 aHit->setEta(hlt_emc->emcTower[i].eta);
379 aHit->setZ(hlt_emc->emcTower[i].z);
380 aHit->setSoftId(hlt_emc->emcTower[i].softId);
381 aHit->setDaqId(hlt_emc->emcTower[i].daqId);
384 mStHltEvent->addBEmcTowerHit(aHit);
388 LOG_DEBUG <<
"Finish to fill HLT_EMC bank " << endm;
397 LOG_DEBUG <<
"Begin to fill HLT_GT bank " << endm;
399 for(uint32_t i=0 ; i < hlt_gt->nGlobalTracks; i++){
404 aTrack->setType(global);
405 aTrack->setId(hlt_gt->globalTrack[i].
id);
406 aTrack->setFlag(hlt_gt->globalTrack[i].
flag);
407 aTrack->setInnerMostRow(hlt_gt->globalTrack[i].innerMostRow);
408 aTrack->setOuterMostRow(hlt_gt->globalTrack[i].outerMostRow);
409 aTrack->setNHits(hlt_gt->globalTrack[i].
nHits);
410 aTrack->setNDedx(hlt_gt->globalTrack[i].
ndedx);
411 aTrack->setQ(hlt_gt->globalTrack[i].
q);
412 aTrack->setChi2(0,hlt_gt->globalTrack[i].
chi2[0]);
413 aTrack->setChi2(1,hlt_gt->globalTrack[i].
chi2[1]);
414 aTrack->setDedx(hlt_gt->globalTrack[i].
dedx);
415 aTrack->setPt(hlt_gt->globalTrack[i].
pt);
416 aTrack->setPhi0(hlt_gt->globalTrack[i].
phi0);
417 aTrack->setPsi(hlt_gt->globalTrack[i].
psi);
418 aTrack->setR0(hlt_gt->globalTrack[i].
r0);
419 aTrack->setTanl(hlt_gt->globalTrack[i].
tanl);
420 aTrack->setZ0(hlt_gt->globalTrack[i].
z0);
421 aTrack->setLength(hlt_gt->globalTrack[i].length);
422 aTrack->setDpt(hlt_gt->globalTrack[i].dpt);
423 aTrack->setDpsi(hlt_gt->globalTrack[i].dpsi);
424 aTrack->setDz0(hlt_gt->globalTrack[i].dz0);
425 aTrack->setDtanl(hlt_gt->globalTrack[i].dtanl);
428 mStHltEvent->addGlobalTrack(aTrack);
433 LOG_DEBUG <<
"Finish to fill HLT_GT bank " << endm;
442 LOG_DEBUG <<
"Begin to fill HLT_PT bank " << endm;
444 for(uint32_t i=0;i<hlt_pt->nPrimaryTracks;i++){
449 aTrack->setType(primary);
450 aTrack->setId(hlt_pt->primaryTrack[i].
id);
451 aTrack->setFlag(hlt_pt->primaryTrack[i].
flag);
452 aTrack->setInnerMostRow(hlt_pt->primaryTrack[i].innerMostRow);
453 aTrack->setOuterMostRow(hlt_pt->primaryTrack[i].outerMostRow);
454 aTrack->setNHits(hlt_pt->primaryTrack[i].
nHits);
455 aTrack->setNDedx(hlt_pt->primaryTrack[i].
ndedx);
456 aTrack->setQ(hlt_pt->primaryTrack[i].
q) ;
457 aTrack->setChi2(0,hlt_pt->primaryTrack[i].
chi2[0]);
458 aTrack->setChi2(1,hlt_pt->primaryTrack[i].
chi2[1]);
459 aTrack->setDedx(hlt_pt->primaryTrack[i].
dedx);
460 aTrack->setPt(hlt_pt->primaryTrack[i].
pt);
461 aTrack->setPhi0(hlt_pt->primaryTrack[i].
phi0);
462 aTrack->setPsi(hlt_pt->primaryTrack[i].
psi);
463 aTrack->setR0(hlt_pt->primaryTrack[i].
r0);
464 aTrack->setTanl(hlt_pt->primaryTrack[i].
tanl);
465 aTrack->setZ0(hlt_pt->primaryTrack[i].
z0);
466 aTrack->setLength(hlt_pt->primaryTrack[i].length);
467 aTrack->setDpt(hlt_pt->primaryTrack[i].dpt);
468 aTrack->setDpsi(hlt_pt->primaryTrack[i].dpsi);
469 aTrack->setDz0(hlt_pt->primaryTrack[i].dz0);
470 aTrack->setDtanl(hlt_pt->primaryTrack[i].dtanl);
473 mStHltEvent->addPrimaryTrack(aTrack);
477 LOG_DEBUG <<
"Finish to fill HLT_PT bank " << endm;
485 LOG_DEBUG <<
"Begin to fill HLT_NODE bank " << endm;
487 for(uint32_t i=0 ; i< hlt_node->nNodes ; i++){
492 aNode->setBEmcMatchPhiDiff(hlt_node->node[i].emcMatchPhiDiff);
493 aNode->setBEmcMatchZEdge(hlt_node->node[i].emcMatchZEdge);
494 aNode->setBTofProjChannel(hlt_node->node[i].projChannel);
495 aNode->setBTofCellLocalY(hlt_node->node[i].localY);
496 aNode->setBTofCellLocalZ(hlt_node->node[i].localZ);
497 aNode->setBTofPathLength(hlt_node->node[i].pathlength);
498 aNode->setBeta(hlt_node->node[i].beta);
499 aNode->setTof(hlt_node->node[i].tof);
503 aNode->setTofHitSN(hlt_node->node[i].
tofHitSN);
504 aNode->setEmcTowerSN(hlt_node->node[i].
emcTowerSN);
507 mStHltEvent->addTrackNode(aNode);
511 LOG_DEBUG <<
"Finish to fill HLT_NODE bank " << endm;
520 LOG_DEBUG <<
"Begin to fill HLT_HTPT bank " << endm;
522 mNumHighPt = hlt_hipt->nHighPt;
523 for(uint32_t i=0; i<hlt_hipt->nHighPt; i++){
524 mHighPtNodeSN[i] = hlt_hipt->highPtNodeSN[i];
527 LOG_DEBUG <<
"Finish to fill HLT_HTPT bank " << endm;
536 LOG_DEBUG <<
"Begin to fill HLT_DIEP bank " << endm;
538 mNumDielectron = hlt_diep->nEPairs;
539 for(uint32_t i=0; i<hlt_diep->nEPairs; i++){
544 mDaughter1NodeSN[i] = hlt_diep->ePair[i].dau1NodeSN;
545 mDaughter2NodeSN[i] = hlt_diep->ePair[i].dau2NodeSN;
546 aDielectron->setPt(hlt_diep->ePair[i].pt);
547 aDielectron->setPsi(hlt_diep->ePair[i].psi);
548 aDielectron->setTanl(hlt_diep->ePair[i].tanl);
549 aDielectron->setInvariantMass(hlt_diep->ePair[i].invariantMass);
551 aDielectron->setDaughter1SelectionBit(hlt_diep->ePair[i].dau1SelectionBit);
552 aDielectron->setDaughter2SelectionBit(hlt_diep->ePair[i].dau2SelectionBit);
555 mStHltEvent->addDiElectron(aDielectron);
559 LOG_DEBUG <<
"Finish to fill HLT_DIEP bank " << endm;
568 LOG_DEBUG <<
"Begin to fill HLT_HF bank " << endm;
570 mNumHeavyFragment = hlt_hf->nHeavyFragments;
571 for(uint32_t i=0 ; i < hlt_hf->nHeavyFragments ; i++){
572 mHeavyFragmentNodeSN[i] = hlt_hf->heavyFragmentSN[i];
575 LOG_DEBUG <<
"Finish to fill HLT_HF bank " << endm;
584 LOG_DEBUG <<
"Begin to create pointers in tracknode" << endm;
586 StSPtrVecHltTrackNode& VecTrackNode =
event->trackNode();
587 StSPtrVecHltTrack& VecgTrack =
event->globalTrack();
588 StSPtrVecHltTrack& VecpTrack =
event->primaryTrack();
589 StSPtrVecHltBTofHit& VecbTofHit =
event->bTofHit();
590 StSPtrVecHltBEmcTowerHit& VecbEmcHit =
event->bEmcTowerHits();
593 for(uint32_t i=0 ; i<VecTrackNode.size() ; i++){
596 int globalTrackSN = trackNode->globalTrackSN();
597 int primaryTrackSN = trackNode->primaryTrackSN();
598 int tofHitSN = trackNode->tofHitSN();
599 int emcTowerSN = trackNode->emcTowerSN();
605 if(globalTrackSN >= 0) gTrack = (
StHltTrack*)VecgTrack.at(globalTrackSN);
606 if(primaryTrackSN >= 0) pTrack = (
StHltTrack*)VecpTrack.at(primaryTrackSN);
607 if(tofHitSN >= 0) TofHit = (
StHltBTofHit*)VecbTofHit.at(tofHitSN);
610 trackNode->setGlobalTrack(gTrack);
611 trackNode->setPrimaryTrack(pTrack);
612 trackNode->setBTofHit(TofHit);
613 trackNode->setBEmcTowerHit(BEmcHit);
615 if(globalTrackSN >= 0) gTrack->setTrackNode(trackNode);
616 if(primaryTrackSN >= 0) pTrack->setTrackNode(trackNode);
617 if(tofHitSN >= 0) TofHit->setTrackNode(trackNode);
618 if(emcTowerSN >= 0) BEmcHit->setTrackNode(trackNode);
622 LOG_DEBUG <<
"Finish to create pointers in tracknode" << endm;
631 LOG_DEBUG <<
"Begin to fill high pt to StHltEvent" << endm;
633 StSPtrVecHltTrackNode& VecTrackNode =
event->trackNode();
635 for(uint32_t i=0 ; i<mNumHighPt ; i++){
642 if(node->globalTrack()) globalTrack = *node->globalTrack();
644 if(node->primaryTrack()) primaryTrack = *node->primaryTrack();
646 if(node->bTofHit()) bTofHit = *node->bTofHit();
648 if(node->bEmcTowerHit()) bEmcHit = *node->bEmcTowerHit();
650 highPt->setGlobalTrack(globalTrack);
651 highPt->setPrimaryTrack(primaryTrack);
652 highPt->setBTofHit(bTofHit);
653 highPt->setBEmcTowerHit(bEmcHit);
654 highPt->setGlobalTrackSN(node->globalTrackSN());
655 highPt->setPrimaryTrackSN(node->primaryTrackSN());
656 highPt->setTofHitSN(node->tofHitSN());
657 highPt->setEmcTowerSN(node->emcTowerSN());
658 highPt->setBEmcMatchPhiDiff(node->bEmcMatchPhiDiff());
659 highPt->setBEmcMatchZEdge(node->bEmcMatchZEdge());
660 highPt->setBTofProjChannel(node->bTofProjChannel());
661 highPt->setBTofCellLocalY(node->bTofCellLocalY());
662 highPt->setBTofCellLocalZ(node->bTofCellLocalZ());
663 highPt->setBTofPathLength(node->bTofPathLength());
664 highPt->setBeta(node->beta());
665 highPt->setTof(node->tof());
668 mStHltEvent->addHighPt(highPt);
672 LOG_DEBUG <<
"Finish to fill high pt to StHltEvent" << endm;
682 LOG_DEBUG <<
"Begin to fill heavy fragment to StHltEvent" << endm;
684 StSPtrVecHltTrackNode& VecTrackNode =
event->trackNode();
686 for(uint32_t i=0 ; i<mNumHeavyFragment ; i++){
693 if(node->globalTrack()) globalTrack = *node->globalTrack();
695 if(node->primaryTrack()) primaryTrack = *node->primaryTrack();
697 if(node->bTofHit()) bTofHit = *node->bTofHit();
699 if(node->bEmcTowerHit()) bEmcHit = *node->bEmcTowerHit();
701 heavyFragment->setGlobalTrack(globalTrack);
702 heavyFragment->setPrimaryTrack(primaryTrack);
703 heavyFragment->setBTofHit(bTofHit);
704 heavyFragment->setBEmcTowerHit(bEmcHit);
705 heavyFragment->setGlobalTrackSN(node->globalTrackSN());
706 heavyFragment->setPrimaryTrackSN(node->primaryTrackSN());
707 heavyFragment->setTofHitSN(node->tofHitSN());
708 heavyFragment->setEmcTowerSN(node->emcTowerSN());
709 heavyFragment->setBEmcMatchPhiDiff(node->bEmcMatchPhiDiff());
710 heavyFragment->setBEmcMatchZEdge(node->bEmcMatchZEdge());
711 heavyFragment->setBTofProjChannel(node->bTofProjChannel());
712 heavyFragment->setBTofCellLocalY(node->bTofCellLocalY());
713 heavyFragment->setBTofCellLocalZ(node->bTofCellLocalZ());
714 heavyFragment->setBTofPathLength(node->bTofPathLength());
715 heavyFragment->setBeta(node->beta());
716 heavyFragment->setTof(node->tof());
719 mStHltEvent->addHeavyFragment(heavyFragment);
722 LOG_DEBUG <<
"Finish to fill heavy fragment to StHltEvent" << endm;
731 LOG_DEBUG <<
"Begin to fill di-electron to StHltEvent" << endm;
733 StSPtrVecHltTrackNode& VecTrackNode =
event->trackNode();
734 StSPtrVecHltDiElectron& VecDiElectron =
event->diElectron();
736 for(uint32_t i=0 ; i<mNumDielectron ; i++){
743 if(daughter1node->globalTrack()) daughter1globalTrack = *daughter1node->globalTrack();
745 if(daughter1node->primaryTrack()) daughter1primaryTrack = *daughter1node->primaryTrack();
747 if(daughter1node->bTofHit()) daughter1bTofHit = *daughter1node->bTofHit();
749 if(daughter1node->bEmcTowerHit()) daughter1bEmcHit = *daughter1node->bEmcTowerHit();
751 diElectron->setDaughter1GlobalTrack(daughter1globalTrack);
752 diElectron->setDaughter1PrimaryTrack(daughter1primaryTrack);
753 diElectron->setDaughter1BTofHit(daughter1bTofHit);
754 diElectron->setDaughter1BEmcTowerHit(daughter1bEmcHit);
755 diElectron->setDaughter1GlobalTrackSN(daughter1node->globalTrackSN());
756 diElectron->setDaughter1PrimaryTrackSN(daughter1node->primaryTrackSN());
757 diElectron->setDaughter1TofHitSN(daughter1node->tofHitSN());
758 diElectron->setDaughter1EmcTowerSN(daughter1node->emcTowerSN());
759 diElectron->setDaughter1BEmcMatchPhiDiff(daughter1node->bEmcMatchPhiDiff());
760 diElectron->setDaughter1BEmcMatchZEdge(daughter1node->bEmcMatchZEdge());
761 diElectron->setDaughter1BTofProjChannel(daughter1node->bTofProjChannel());
762 diElectron->setDaughter1BTofCellLocalY(daughter1node->bTofCellLocalY());
763 diElectron->setDaughter1BTofCellLocalZ(daughter1node->bTofCellLocalZ());
764 diElectron->setDaughter1BTofPathLength(daughter1node->bTofPathLength());
765 diElectron->setDaughter1Beta(daughter1node->beta());
766 diElectron->setDaughter1Tof(daughter1node->tof());
769 if(daughter2node->globalTrack()) daughter2globalTrack = *daughter2node->globalTrack();
771 if(daughter2node->primaryTrack()) daughter2primaryTrack = *daughter2node->primaryTrack();
773 if(daughter2node->bTofHit()) daughter2bTofHit = *daughter2node->bTofHit();
775 if(daughter2node->bEmcTowerHit()) daughter2bEmcHit = *daughter2node->bEmcTowerHit();
777 diElectron->setDaughter2GlobalTrack(daughter2globalTrack);
778 diElectron->setDaughter2PrimaryTrack(daughter2primaryTrack);
779 diElectron->setDaughter2BTofHit(daughter2bTofHit);
780 diElectron->setDaughter2BEmcTowerHit(daughter2bEmcHit);
781 diElectron->setDaughter2GlobalTrackSN(daughter2node->globalTrackSN());
782 diElectron->setDaughter2PrimaryTrackSN(daughter2node->primaryTrackSN());
783 diElectron->setDaughter2TofHitSN(daughter2node->tofHitSN());
784 diElectron->setDaughter2EmcTowerSN(daughter2node->emcTowerSN());
785 diElectron->setDaughter2BEmcMatchPhiDiff(daughter2node->bEmcMatchPhiDiff());
786 diElectron->setDaughter2BEmcMatchZEdge(daughter2node->bEmcMatchZEdge());
787 diElectron->setDaughter2BTofProjChannel(daughter2node->bTofProjChannel());
788 diElectron->setDaughter2BTofCellLocalY(daughter2node->bTofCellLocalY());
789 diElectron->setDaughter2BTofCellLocalZ(daughter2node->bTofCellLocalZ());
790 diElectron->setDaughter2BTofPathLength(daughter2node->bTofPathLength());
791 diElectron->setDaughter2Beta(daughter2node->beta());
792 diElectron->setDaughter2Tof(daughter2node->tof());
796 LOG_DEBUG <<
"Finish to fill di-electron to StHltEvent" << endm;
805 LOG_DEBUG <<
"Begin to fill trigger reason to StHltEvent" << endm;
808 StSPtrVecHltDiElectron& VecDiElectron =
event->diElectron();
809 for(uint32_t i=0 ; i<VecDiElectron.size() ; i++){
813 aTriggerReason->setReasonBit(kDiElectron);
814 aTriggerReason->setReason(diElectron);
815 mStHltEvent->addTriggerReason(aTriggerReason);
819 StSPtrVecHltHighPt& VecHighPt =
event->highPt();
820 for(uint32_t i=0 ; i<VecHighPt.size() ; i++){
824 aTriggerReason->setReasonBit(kHighPt);
825 aTriggerReason->setReason(highPt);
826 mStHltEvent->addTriggerReason(aTriggerReason);
830 StSPtrVecHltHeavyFragment& VecHeavyFragment =
event->heavyFragment();
831 for(uint32_t i=0 ; i<VecHeavyFragment.size() ; i++){
835 aTriggerReason->setReasonBit(kHeavyFragment);
836 aTriggerReason->setReason(heavyFragment);
837 mStHltEvent->addTriggerReason(aTriggerReason);
841 LOG_DEBUG <<
"Finish to fill trigger reason to StHltEvent" << endm;
int globalTrackSN
serial number in HLT_GT
float psi
azimuthal angle of the momentum at (r,..
virtual StRtsTable * GetNextGl3()
This is an overloaded member function, provided for convenience.
unsigned char nHits
Number of points assigned to that track.
float dedx
dE/dx information
Class StRTSBaseMaker - is an abstract StMaker to define the interface to access the DAQ data from the...
int primaryTrackSN
serial number in HLT_PT
float chi2[2]
chi squared of the momentum fit
float r0
r (in cyl. coord.) for the first point
virtual Int_t InitRun(int runumber)
Overload empty StMaker::InitRun.
float z0
z coordinate of the first point
virtual void Clear(Option_t *option="")
User defined functions.
virtual Int_t Finish()
< Finish ...
void fillHighPt(StHltEvent *)
fill high pt information
virtual Int_t Make()
< Make - this method is called in loop for each event
virtual void Clear(Option_t *option="")
< Clear - this method is called in loop for prepare the maker for the next event
virtual void processBank(const HLT_EVE *bank)
< Fill StHltEvent at event level
int emcTowerSN
serial number in HLT_EMC
float tanl
tg of the dip angle at (r,phi,z)
unsigned short flag
Primaries flag=1, Secondaries flag=0.
Bank with event level qualities.
void fillTriggerReason(StHltEvent *)
fill triggered prticles (highpt heavyfragment di-electron) to trigger reason
short channel
= nModule*6+nCell
unsigned int hltDecision
HLT trigger bits.
void fillHeavyFragment(StHltEvent *)
fill heavy fragment information
float phi0
azimuthal angle of the first point
float pt
pt (transverse momentum) at (r,phi,z)
virtual Int_t Init()
< Init - is a first method the top level StChain calls to initialize all its makers ...
void fillNodePointer(StHltEvent *)
create pointers in track node
int tofHitSN
serial number in HLT_TOF
unsigned char ndedx
nr of clusters contributing to the dedx value
void fillDielectron(StHltEvent *)
fill di-electron information
StHltEvent * GetHltEvent()
create StHltEvent point