208 #include "TDataSetIter.h"
209 #include "TObjectSet.h"
210 #include "TBrowser.h"
211 #include "StCalibrationVertex.h"
212 #include "StDetectorState.h"
214 #include "StEventClusteringHints.h"
215 #include "StEventInfo.h"
216 #include "StEventSummary.h"
217 #include "StTpcHitCollection.h"
218 #include "StRnDHitCollection.h"
219 #include "StEtrHitCollection.h"
220 #include "StSvtHitCollection.h"
221 #include "StSsdHitCollection.h"
222 #include "StSstHitCollection.h"
223 #include "StFtpcHitCollection.h"
224 #include "StEmcCollection.h"
225 #include "StEpdCollection.h"
226 #include "StFcsCollection.h"
227 #include "StFttCollection.h"
228 #include "StFmsCollection.h"
229 #include "StRHICfCollection.h"
230 #include "StRichCollection.h"
231 #include "StRpsCollection.h"
232 #include "StRunInfo.h"
233 #include "StTofCollection.h"
234 #include "StBTofCollection.h"
235 #include "StETofCollection.h"
236 #include "StMtdCollection.h"
237 #include "StFpdCollection.h"
238 #include "StPhmdCollection.h"
239 #include "StTrackDetectorInfo.h"
240 #include "StTriggerData.h"
241 #include "StTriggerDetectorCollection.h"
242 #include "StTriggerIdCollection.h"
243 #include "StPrimaryVertex.h"
244 #include "StL0Trigger.h"
245 #include "StL1Trigger.h"
246 #include "StL3Trigger.h"
248 #include "event_header.h"
249 #include "StEventBranch.h"
250 #include "StHltEvent.h"
251 #include "StFgtCollection.h"
252 #include "StPxlHitCollection.h"
253 #include "StIstHitCollection.h"
254 #include "StFstEvtCollection.h"
255 #include "StFstHitCollection.h"
256 #include "StTrackNode.h"
258 #include "StFwdTrackCollection.h"
259 #include "StGmtCollection.h"
261 #ifndef ST_NO_NAMESPACES
265 TString StEvent::mCvsTag =
"$Id: StEvent.cxx,v 2.61 2021/02/27 17:07:50 ullrich Exp $";
266 static const char rcsid[] =
"$Id: StEvent.cxx,v 2.61 2021/02/27 17:07:50 ullrich Exp $";
271 template<class T>
void _lookup(T*& val, StSPtrVecObject &vec)
274 for (
unsigned int i=0; i<vec.size(); i++)
275 if (vec[i] &&
typeid(*vec[i]) ==
typeid(T)) {
276 val =
static_cast<T*
>(vec[i]);
282 template<
class T>
void _lookupOrCreate(T*& val, StSPtrVecObject &vec)
294 template<
class T>
void _lookupAndSet(T* val, StSPtrVecObject &vec)
296 for (
unsigned int i=0; i<vec.size(); i++)
297 if (vec[i] &&
typeid(*vec[i]) ==
typeid(T)) {
307 template<
class T>
void _lookupDynamic(T*& val, StSPtrVecObject &vec)
310 for (
unsigned int i=0; i<vec.size(); i++)
312 val =
dynamic_cast<T*
>(vec[i]);
318 template<
class T>
void _lookupDynamicAndSet(T* val, StSPtrVecObject &vec)
321 for (
unsigned int i=0; i<vec.size(); i++) {
323 test =
dynamic_cast<T*
>(vec[i]);
336 void StEvent::initToZero() { }
350 StEvent::type()
const
353 _lookup(info, mContent);
354 return info ? info->type() : TString();
361 _lookup(info, mContent);
362 return info ? info->id() : 0;
366 StEvent::runId()
const
369 _lookup(info, mContent);
370 return info ? info->runId() : 0;
374 StEvent::time()
const
377 _lookup(info, mContent);
378 return info ? info->time() : 0;
382 StEvent::triggerMask()
const
385 _lookup(info, mContent);
386 return info ? info->triggerMask() : 0;
390 StEvent::bunchCrossingNumber(
unsigned int i)
const
393 _lookup(info, mContent);
394 return info ? info->bunchCrossingNumber(i) : 0;
401 _lookup(info, mContent);
406 StEvent::info()
const
409 _lookup(info, mContent);
417 _lookup(info, mContent);
422 StEvent::runInfo()
const
425 _lookup(info, mContent);
433 _lookup(summary, mContent);
438 StEvent::summary()
const
441 _lookup(summary, mContent);
446 StEvent::cvsTag() {
return mCvsTag; }
452 _lookup(hits, mContent);
458 StEvent::tpcHitCollection()
const
461 _lookup(hits, mContent);
469 _lookup(hits, mContent);
477 _lookup(hits, mContent);
485 _lookup(hits, mContent);
493 _lookup(hits, mContent);
500 _lookup(hits, mContent);
505 StEvent::ftpcHitCollection()
const
508 _lookup(hits, mContent);
513 StEvent::svtHitCollection()
516 _lookup(hits, mContent);
521 StEvent::svtHitCollection()
const
524 _lookup(hits, mContent);
529 StEvent::ssdHitCollection()
532 _lookup(hits, mContent);
537 StEvent::ssdHitCollection()
const
540 _lookup(hits, mContent);
545 StEvent::sstHitCollection()
548 _lookup(hits, mContent);
553 StEvent::sstHitCollection()
const
556 _lookup(hits, mContent);
561 StEvent::emcCollection()
564 _lookup(emc, mContent);
569 StEvent::emcCollection()
const
572 _lookup(emc, mContent);
577 StEvent::fcsCollection()
580 _lookup(fcs, mContent);
585 StEvent::fcsCollection()
const
588 _lookup(fcs, mContent);
593 StEvent::fttCollection()
596 _lookup(ftt, mContent);
601 StEvent::fttCollection()
const
604 _lookup(ftt, mContent);
609 StEvent::fmsCollection()
612 _lookup(fms, mContent);
617 StEvent::fmsCollection()
const
620 _lookup(fms, mContent);
625 StEvent::rhicfCollection()
628 _lookup(rhicf, mContent);
633 StEvent::rhicfCollection()
const
636 _lookup(rhicf, mContent);
641 StEvent::richCollection()
644 _lookup(rich, mContent);
649 StEvent::richCollection()
const
652 _lookup(rich, mContent);
657 StEvent::rpsCollection()
660 _lookup(rps, mContent);
665 StEvent::rpsCollection()
const
668 _lookup(rps, mContent);
673 StEvent::tofCollection()
676 _lookup(tof, mContent);
681 StEvent::tofCollection()
const
684 _lookup(tof, mContent);
689 StEvent::btofCollection()
692 _lookup(btof, mContent);
697 StEvent::btofCollection()
const
700 _lookup(btof, mContent);
705 StEvent::etofCollection()
708 _lookup(etof, mContent);
713 StEvent::etofCollection()
const
716 _lookup(etof, mContent);
721 StEvent::epdCollection()
724 _lookup(epd, mContent);
729 StEvent::epdCollection()
const
732 _lookup(epd, mContent);
737 StEvent::mtdCollection()
740 _lookup(mtd, mContent);
745 StEvent::mtdCollection()
const
748 _lookup(mtd, mContent);
753 StEvent::fpdCollection()
756 _lookup(fpd, mContent);
761 StEvent::fpdCollection()
const
764 _lookup(fpd, mContent);
769 StEvent::phmdCollection()
772 _lookup(phmd, mContent);
777 StEvent::phmdCollection()
const
780 _lookup(phmd, mContent);
785 StEvent::triggerDetectorCollection()
788 _lookup(trg, mContent);
793 StEvent::triggerDetectorCollection()
const
796 _lookup(trg, mContent);
801 StEvent::triggerIdCollection()
804 _lookup(trg, mContent);
809 StEvent::triggerIdCollection()
const
812 _lookup(trg, mContent);
817 StEvent::triggerData()
820 _lookupDynamic(trg, mContent);
825 StEvent::triggerData()
const
828 _lookupDynamic(trg, mContent);
836 _lookup(trg, mContent);
841 StEvent::l0Trigger()
const
844 _lookup(trg, mContent);
852 _lookup(trg, mContent);
857 StEvent::l1Trigger()
const
860 _lookup(trg, mContent);
868 _lookup(trg, mContent);
873 StEvent::l3Trigger()
const
876 _lookup(trg, mContent);
884 _lookup(hlt, mContent);
889 StEvent::hltEvent()
const
892 _lookup(hlt, mContent);
897 StEvent::fgtCollection()
900 _lookup(fgtCollection, mContent);
901 return fgtCollection;
905 StEvent::fgtCollection()
const
908 _lookup(fgtCollection, mContent);
909 return fgtCollection;
913 StEvent::gmtCollection()
916 _lookup(gmtCollection, mContent);
917 return gmtCollection;
921 StEvent::gmtCollection()
const
924 _lookup(gmtCollection, mContent);
925 return gmtCollection;
930 StEvent::istHitCollection()
933 _lookup(istHitCollection, mContent);
934 return istHitCollection;
938 StEvent::istHitCollection()
const
941 _lookup(istHitCollection, mContent);
942 return istHitCollection;
946 StEvent::fstEvtCollection()
949 _lookup(fstEvtCollection, mContent);
950 return fstEvtCollection;
954 StEvent::fstEvtCollection()
const
957 _lookup(fstEvtCollection, mContent);
958 return fstEvtCollection;
962 StEvent::fstHitCollection()
965 _lookup(fstHitCollection, mContent);
966 return fstHitCollection;
970 StEvent::fstHitCollection()
const
973 _lookup(fstHitCollection, mContent);
974 return fstHitCollection;
978 StEvent::pxlHitCollection()
981 _lookup(pxlHitCollection, mContent);
982 return pxlHitCollection;
986 StEvent::pxlHitCollection()
const
989 _lookup(pxlHitCollection, mContent);
990 return pxlHitCollection;
993 StSPtrVecTrackDetectorInfo&
994 StEvent::trackDetectorInfo()
996 StSPtrVecTrackDetectorInfo *info = 0;
997 _lookupOrCreate(info, mContent);
1001 const StSPtrVecTrackDetectorInfo&
1002 StEvent::trackDetectorInfo()
const
1004 StSPtrVecTrackDetectorInfo *info = 0;
1005 _lookupOrCreate(info, mContent);
1010 StEvent::fwdTrackCollection()
1013 _lookup(fwdTracks, mContent);
1018 StEvent::fwdTrackCollection()
const
1021 _lookup(fwdTrack, mContent);
1026 StEvent::trackNodes()
1028 StSPtrVecTrackNode *nodes = 0;
1029 _lookupOrCreate(nodes, mContent);
1033 const StSPtrVecTrackNode&
1034 StEvent::trackNodes()
const
1036 StSPtrVecTrackNode *nodes = 0;
1037 _lookupOrCreate(nodes, mContent);
1042 StEvent::numberOfPrimaryVertices()
const
1044 StSPtrVecPrimaryVertex *vertices = 0;
1045 _lookupOrCreate(vertices, mContent);
1046 return vertices ? vertices->size() : 0;
1050 StEvent::primaryVertex(
unsigned int i)
1052 StSPtrVecPrimaryVertex *vertices = 0;
1053 _lookup(vertices, mContent);
1054 if (vertices && i < vertices->size())
1055 return (*vertices)[i];
1061 StEvent::primaryVertex(
unsigned int i)
const
1063 StSPtrVecPrimaryVertex *vertices = 0;
1064 _lookup(vertices, mContent);
1065 if (vertices && i < vertices->size())
1066 return (*vertices)[i];
1072 StEvent::numberOfCalibrationVertices()
const
1074 StSPtrVecCalibrationVertex *vertices = 0;
1075 _lookupOrCreate(vertices, mContent);
1076 return vertices ? vertices->size() : 0;
1080 StEvent::calibrationVertex(
unsigned int i)
1082 StSPtrVecCalibrationVertex *vertices = 0;
1083 _lookup(vertices, mContent);
1084 if (vertices && i < vertices->size())
1085 return (*vertices)[i];
1091 StEvent::calibrationVertex(
unsigned int i)
const
1093 StSPtrVecCalibrationVertex *vertices = 0;
1094 _lookup(vertices, mContent);
1095 if (vertices && i < vertices->size())
1096 return (*vertices)[i];
1102 StEvent::v0Vertices()
1104 StSPtrVecV0Vertex *vertices = 0;
1105 _lookupOrCreate(vertices, mContent);
1109 const StSPtrVecV0Vertex&
1110 StEvent::v0Vertices()
const
1112 StSPtrVecV0Vertex *vertices = 0;
1113 _lookupOrCreate(vertices, mContent);
1118 StEvent::xiVertices()
1120 StSPtrVecXiVertex *vertices = 0;
1121 _lookupOrCreate(vertices, mContent);
1125 const StSPtrVecXiVertex&
1126 StEvent::xiVertices()
const
1128 StSPtrVecXiVertex *vertices = 0;
1129 _lookupOrCreate(vertices, mContent);
1133 StSPtrVecKinkVertex&
1134 StEvent::kinkVertices()
1136 StSPtrVecKinkVertex *vertices = 0;
1137 _lookupOrCreate(vertices, mContent);
1141 const StSPtrVecKinkVertex&
1142 StEvent::kinkVertices()
const
1144 StSPtrVecKinkVertex *vertices = 0;
1145 _lookupOrCreate(vertices, mContent);
1150 StEvent::detectorState(StDetectorId det)
1152 StSPtrVecDetectorState *states = 0;
1153 _lookup(states, mContent);
1155 for (
unsigned int i=0; i<states->size(); i++)
1156 if ((*states)[i]->detector() == det)
return (*states)[i];
1161 StEvent::detectorState(StDetectorId det)
const
1163 StSPtrVecDetectorState *states = 0;
1164 _lookup(states, mContent);
1166 for (
unsigned int i=0; i<states->size(); i++)
1167 if ((*states)[i]->detector() == det)
return (*states)[i];
1172 StEvent::psd(
StPwg p,
int i)
1175 for (
unsigned int k=0; k<mContent.size(); k++) {
1176 thePsd =
dynamic_cast<StPsd*
>(mContent[k]);
1177 if (thePsd && thePsd->pwg() == p && thePsd->id() == i)
1184 StEvent::psd(
StPwg p,
int i)
const
1186 const StPsd *thePsd = 0;
1187 for (
unsigned int k=0; k<mContent.size(); k++) {
1188 thePsd =
dynamic_cast<StPsd*
>(mContent[k]);
1189 if (thePsd && thePsd->pwg() == p && thePsd->id() == i)
1196 StEvent::numberOfPsds()
const
1199 for (
unsigned int i=0; i<mContent.size(); i++)
1200 if (dynamic_cast<StPsd*>(mContent[i])) nPsds++;
1205 StEvent::numberOfPsds(
StPwg p)
const
1209 for (
unsigned int i=0; i<mContent.size(); i++) {
1210 thePsd =
dynamic_cast<StPsd*
>(mContent[i]);
1211 if (thePsd && thePsd->pwg() == p) nPsds++;
1217 StEvent::content() {
return mContent; }
1220 StEvent::clusteringHints()
const
1223 _lookupOrCreate(hints, mContent);
1228 StEvent::clusteringHints()
1231 _lookupOrCreate(hints, mContent);
1232 hints->SetParent(
this);
1237 StEvent::setType(
const char* val)
1240 _lookupOrCreate(info, mContent);
1245 StEvent::setRunId(
int val)
1248 _lookupOrCreate(info, mContent);
1249 info->setRunId(val);
1253 StEvent::setId(
int val)
1256 _lookupOrCreate(info, mContent);
1261 StEvent::setTime(
int val)
1264 _lookupOrCreate(info, mContent);
1269 StEvent::setTriggerMask(
unsigned int val)
1272 _lookupOrCreate(info, mContent);
1273 info->setTriggerMask(val);
1277 StEvent::setBunchCrossingNumber(
unsigned int val,
unsigned int i)
1280 _lookupOrCreate(info, mContent);
1281 info->setBunchCrossingNumber(val, i);
1287 _lookupAndSet(val, mContent);
1293 _lookupAndSet(val, mContent);
1299 _lookupAndSet(val, mContent);
1305 _lookupAndSet(val, mContent);
1311 _lookupAndSet(val, mContent);
1317 _lookupAndSet(val, mContent);
1323 _lookupAndSet(val, mContent);
1329 _lookupAndSet(val, mContent);
1335 _lookupAndSet(val, mContent);
1341 _lookupAndSet(val, mContent);
1347 _lookupAndSet(val, mContent);
1353 _lookupAndSet(val, mContent);
1359 _lookupAndSet(val, mContent);
1365 _lookupAndSet(val, mContent);
1371 _lookupAndSet(val, mContent);
1377 _lookupAndSet(val, mContent);
1383 _lookupAndSet(val, mContent);
1389 _lookupAndSet(val, mContent);
1395 _lookupAndSet(val, mContent);
1402 _lookupAndSet(val, mContent);
1408 _lookupAndSet(val, mContent);
1414 _lookupAndSet(val, mContent);
1420 _lookupAndSet(val, mContent);
1426 _lookupAndSet(val, mContent);
1432 _lookupAndSet(val, mContent);
1438 _lookupDynamicAndSet(val, mContent);
1444 _lookupAndSet(val, mContent);
1450 _lookupAndSet(val, mContent);
1456 _lookupAndSet(val, mContent);
1462 _lookupAndSet(val, mContent);
1468 _lookupAndSet(val, mContent);
1474 _lookupAndSet(val, mContent);
1480 _lookupAndSet(val, mContent);
1486 _lookupAndSet(val, mContent);
1492 _lookupAndSet(val, mContent);
1498 _lookupAndSet(val, mContent);
1504 _lookupAndSet(val, mContent);
1510 _lookupAndSet(val, mContent);
1516 if (!vertex)
return;
1521 StSPtrVecPrimaryVertex* vertexVector = 0;
1522 _lookupOrCreate(vertexVector, mContent);
1523 vertexVector->push_back(vertex);
1535 for (i=vertexVector->size()-1; i>0; i--) {
1536 if ((*vertexVector)[i]->numberOfDaughters() > (*vertexVector)[i-1]->numberOfDaughters())
1537 swap((*vertexVector)[i], (*vertexVector)[i-1]);
1545 for (i=vertexVector->size()-1; i>0; i--) {
1546 if ((*vertexVector)[i]->ranking() > (*vertexVector)[i-1]->ranking())
1547 swap((*vertexVector)[i], (*vertexVector)[i-1]);
1559 StSPtrVecCalibrationVertex* vertexVector = 0;
1560 _lookupOrCreate(vertexVector, mContent);
1561 vertexVector->push_back(vertex);
1569 StSPtrVecDetectorState* stateVector = 0;
1570 _lookupOrCreate(stateVector, mContent);
1571 stateVector->push_back(state);
1576 StEvent::addPsd(
StPsd* p)
1579 if (psd(p->pwg(), p->id()))
1580 cerr <<
"StEvent::addPsd(): Error, PSD with same identifiers already exist. Nothing added." << endl;
1582 mContent.push_back(p);
1586 void StEvent::removePsd(
StPsd* p)
1588 StSPtrVecObjectIterator iter;
1590 for (iter = mContent.begin(); iter != mContent.end(); iter++)
1592 mContent.erase(iter);
1596 void StEvent::statistics()
1598 cout <<
"Statistics and information for event " << id() << endl;
1599 cout <<
"\tthis: " <<
static_cast<void*
>(
this) << endl;
1601 cout <<
"\ttype: " << type() << endl;
1602 cout <<
"\tid: " << id() << endl;
1603 cout <<
"\trunId: " << runId() << endl;
1604 cout <<
"\ttime: " << time() << endl;
1605 cout <<
"\ttriggerMask: " << triggerMask() << endl;
1606 cout <<
"\tbunchCrossingNumber(0): " << bunchCrossingNumber(0) << endl;
1607 cout <<
"\tbunchCrossingNumber(1): " << bunchCrossingNumber(1) << endl;
1608 cout <<
"\tStEventSummary: " <<
static_cast<void*
>(summary()) << endl;
1609 cout <<
"\tStTpcHitCollection: " <<
static_cast<void*
>(tpcHitCollection()) << endl;
1610 cout <<
"\tStRnDHitCollection: " <<
static_cast<void*
>(rndHitCollection()) << endl;
1611 cout <<
"\tStFtpcHitCollection: " <<
static_cast<void*
>(ftpcHitCollection()) << endl;
1612 cout <<
"\tStSvtHitCollection: " <<
static_cast<void*
>(svtHitCollection()) << endl;
1613 cout <<
"\tStSsdHitCollection: " <<
static_cast<void*
>(ssdHitCollection()) << endl;
1614 cout <<
"\tStSstHitCollection: " <<
static_cast<void*
>(sstHitCollection()) << endl;
1615 cout <<
"\tStIstHitCollection: " <<
static_cast<void*
>(istHitCollection()) << endl;
1616 cout <<
"\tStFstEvtCollection: " <<
static_cast<void*
>(fstEvtCollection()) << endl;
1617 cout <<
"\tStFstHitCollection: " <<
static_cast<void*
>(fstHitCollection()) << endl;
1618 cout <<
"\tStPxlHitCollection: " <<
static_cast<void*
>(pxlHitCollection()) << endl;
1619 cout <<
"\tStEmcCollection: " <<
static_cast<void*
>(emcCollection()) << endl;
1620 cout <<
"\tStFmsCollection: " <<
static_cast<void*
>(fmsCollection()) << endl;
1621 cout <<
"\tStRHICfCollection: " <<
static_cast<void*
>(rhicfCollection()) << endl;
1622 cout <<
"\tStRichCollection: " <<
static_cast<void*
>(richCollection()) << endl;
1623 cout <<
"\tStRpsCollection: " <<
static_cast<void*
>(rpsCollection()) << endl;
1624 cout <<
"\tStTofCollection: " <<
static_cast<void*
>(tofCollection()) << endl;
1625 cout <<
"\tStBTofCollection: " <<
static_cast<void*
>(btofCollection()) << endl;
1626 cout <<
"\tStETofCollection: " <<
static_cast<void*
>(etofCollection()) << endl;
1627 cout <<
"\tStEpdCollection: " <<
static_cast<void*
>(epdCollection()) << endl;
1628 cout <<
"\tStMtdCollection: " <<
static_cast<void*
>(mtdCollection()) << endl;
1629 cout <<
"\tStFpdCollection: " <<
static_cast<void*
>(fpdCollection()) << endl;
1630 cout <<
"\tStPhmdCollection: " <<
static_cast<void*
>(phmdCollection()) << endl;
1631 cout <<
"\tStL0Trigger: " <<
static_cast<void*
>(l0Trigger()) << endl;
1632 cout <<
"\tStL1Trigger: " <<
static_cast<void*
>(l0Trigger()) << endl;
1633 cout <<
"\tStL3Trigger: " <<
static_cast<void*
>(l3Trigger()) << endl;
1634 cout <<
"\tStHltEvent: " <<
static_cast<void*
>(hltEvent()) << endl;
1635 cout <<
"\tStTriggerDetectorCollection: " <<
static_cast<void*
>(triggerDetectorCollection()) << endl;
1636 cout <<
"\tStTriggerIdCollection: " <<
static_cast<void*
>(triggerIdCollection()) << endl;
1637 cout <<
"\tStTriggerData: " <<
static_cast<void*
>(triggerData()) << endl;
1638 cout <<
"\tStPrimaryVertex: " <<
static_cast<void*
>(primaryVertex(0)) << endl;
1639 cout <<
"\tnumberOfPrimaryVertices: " << numberOfPrimaryVertices() << endl;
1640 cout <<
"\tStCalibrationVertex: " <<
static_cast<void*
>(calibrationVertex(0));
1641 cout <<
"\tnumberOfCalibrationVertices: " << numberOfCalibrationVertices() << endl;
1642 cout <<
"\t# of TPC hits: " << (tpcHitCollection() ? tpcHitCollection()->numberOfHits() : 0) << endl;
1643 cout <<
"\t# of FTPC hits: " << (ftpcHitCollection() ? ftpcHitCollection()->numberOfHits() : 0) << endl;
1644 cout <<
"\t# of SVT hits: " << (svtHitCollection() ? svtHitCollection()->numberOfHits() : 0) << endl;
1645 cout <<
"\t# of SSD hits: " << (ssdHitCollection() ? ssdHitCollection()->numberOfHits() : 0) << endl;
1646 cout <<
"\t# of IST hits: " << (istHitCollection() ? istHitCollection()->numberOfHits() : 0) << endl;
1647 cout <<
"\t# of PXL hits: " << (pxlHitCollection() ? pxlHitCollection()->numberOfHits() : 0) << endl;
1648 cout <<
"\t# of track nodes: " << trackNodes().size() << endl;
1649 cout <<
"\t# of primary tracks: " << (primaryVertex(0) ? primaryVertex(0)->numberOfDaughters() : 0) << endl;
1650 cout <<
"\t# of V0s: " << v0Vertices().size() << endl;
1651 cout <<
"\t# of Xis: " << xiVertices().size() << endl;
1652 cout <<
"\t# of Kinks: " << kinkVertices().size() << endl;
1653 cout <<
"\t# of hits in EMC: " << (emcCollection() ? emcCollection()->barrelPoints().size() : 0) << endl;
1654 cout <<
"\t# of hits in EEMC: " << (emcCollection() ? emcCollection()->endcapPoints().size() : 0) << endl;
1655 cout <<
"\t# of hits in FGT: " << (fgtCollection() ? fgtCollection()->getNumHits() : 0) << endl;
1656 cout <<
"\t# of hits in GMT: " << (gmtCollection() ? gmtCollection()->
getNumHits() : 0) << endl;
1657 cout <<
"\t# of hits in RICH: " << (richCollection() ? richCollection()->getRichHits().size() : 0) << endl;
1658 cout <<
"\t# of PSDs: " << numberOfPsds() << endl;
1661 void StEvent::Split()
1668 while ((ds=next())) {
1669 if (ds->IsA()!=StEventBranch::Class())
continue;
1673 vector<string> brs = clu->listOfBranches();
1674 int nbrs = brs.size();
1675 for (
int ibr =0; ibr < nbrs; ibr++) {
1676 string sbr = brs[ibr];
1677 if(sbr.size()==0)
continue;
1678 const char *brName = sbr.c_str();
1679 assert(strncmp(brName,
"evt_",4)==0 || strcmp(brName,
"event")==0);
1681 UInt_t tally = ((clu->branchId(brName)) << 22) | 1 ;
1684 vector<string> cls = clu->listOfClasses(sbr.c_str());
1685 int ncls = cls.size();
1686 for (
int icl =0; icl < ncls; icl++) {
1687 string scl = cls[icl];
1688 if(scl.size()==0)
continue;
1689 obr->AddKlass(scl.c_str());
1694 Bool_t StEvent::Notify() {Split();
return 0;}
1696 void StEvent::Streamer(TBuffer &R__b)
1701 if (R__b.IsReading()) {
1703 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
1705 TDataSet::Streamer(R__b);
1706 mContent.Streamer(R__b);
1707 R__b.CheckByteCount(R__s, R__c, Class());
1712 StXRefMain::Streamer(R__b);
1713 R__b.CheckByteCount(R__s, R__c, Class());
1721 while ((ds=next())) {
1722 if (ds->IsA()==StEventBranch::Class())
break;
1727 R__c = R__b.WriteVersion(Class(), kTRUE);
1728 StXRefMain::Streamer(R__b);
1729 R__b.SetByteCount(R__c, kTRUE);
1733 StSPtrVecHit* StEvent::hitCollection(
const Char_t *name) {
1734 StSPtrVecHit *theHitCollection = 0;
1736 if (set) theHitCollection = (StSPtrVecHit *) set->
GetObject();
1737 return theHitCollection;
1740 void StEvent::addHitCollection(StSPtrVecHit* p,
const Char_t *name) {
1744 cerr <<
"StEvent::addHitCollection(): Error, HitCollection with "
1745 << name <<
" already exist. Nothing added." << endl;
1753 void StEvent::removeHitCollection(
const Char_t *name) {
1758 void StEvent::setIdTruth() {
1759 StSPtrVecTrackNode& trackNode = trackNodes();
1760 UInt_t nTracks = trackNode.size();
1762 for (UInt_t i = 0; i < nTracks; i++) {
1763 node = trackNode[i];
1764 if (!node)
continue;
1765 UInt_t notr = node->entries();
1766 for (UInt_t t = 0; t < notr; t++) {
1768 track->setIdTruth();
1772 Int_t noOfPrimaryVertices = numberOfPrimaryVertices();
1773 for (Int_t i = 0; i < noOfPrimaryVertices; i++) primaryVertex(i)->setIdTruth();
1774 Int_t noOfCalibrationVertices = numberOfCalibrationVertices();
1775 for (Int_t i = 0; i < noOfCalibrationVertices; i++) calibrationVertex(i)->setIdTruth();
1776 Int_t noOfv0Vertices = v0Vertices().size();
1777 for (Int_t i = 0; i < noOfv0Vertices; i++) ((
StVertex *) v0Vertices()[i])->setIdTruth();
1778 Int_t noOfxiVertices = xiVertices().size();
1779 for (Int_t i = 0; i < noOfxiVertices; i++) ((
StVertex *) xiVertices()[i])->setIdTruth();
1780 Int_t noOfkinkVertices = kinkVertices().size();
1781 for (Int_t i = 0; i < noOfkinkVertices; i++) ((
StVertex *) kinkVertices()[i])->setIdTruth();
Holds collections of GMT data.
virtual void Remove(TDataSet *set)
Remiove the "set" from this TDataSet.
virtual void Delete(Option_t *opt="")
to be documented
size_t getNumHits() const
Number total number of hits.
Collection of trigger ids as stored in StEvent.
virtual TDataSet * FindByName(const char *name, const char *path="", Option_t *opt="") const
virtual TObject * GetObject() const
The depricated method (left here for the sake of the backward compatibility)