12 #include "StContainers.h"
13 #include "StEvent/StEventTypes.h"
14 #include "StEvent/StTriggerData.h"
15 #include "StEvent/StTriggerData2003.h"
16 #include "StEvent/StTriggerData2004.h"
17 #include "StEvent/StTriggerData2005.h"
18 #include "StEvent/StTriggerData2007.h"
19 #include "StEvent/StTriggerData2008.h"
20 #include "StEvent/StTriggerData2009.h"
22 #include "StarClassLibrary/StTimer.hh"
23 #include "StMuDstMaker.h"
24 #include "StMuEvent.h"
25 #include "StMuPrimaryVertex.h"
26 #include "StMuRpsCollection.h"
27 #include "StMuMtdCollection.h"
28 #include "StMuTrack.h"
29 #include "StMuDebug.h"
30 #include "StMuEmcUtil.h"
31 #include "StMuFmsUtil.h"
32 #include "StMuFcsUtil.h"
33 #include "StMuFttUtil.h"
34 #include "StMuFstUtil.h"
35 #include "StMuPmdUtil.h"
37 #include "StBTofCollection.h"
38 #include "StBTofRawHit.h"
39 #include "StBTofHeader.h"
40 #include "StBTofPidTraits.h"
41 #include "StMuBTofHit.h"
42 #include "StETofCollection.h"
43 #include "StMuETofCollection.h"
44 #include "StMuETofHeader.h"
45 #include "StMuETofDigi.h"
46 #include "StMuETofHit.h"
47 #include "StMuEpdHitCollection.h"
48 #include "StMuEpdHit.h"
49 #include "StMuMtdHit.h"
50 #include "StMuMtdHeader.h"
51 #include "TClonesArray.h"
53 #ifndef __NO_STRANGE_MUDST__
54 #include "StStrangeMuDstMaker/StV0MuDst.hh"
55 #include "StStrangeMuDstMaker/StXiMuDst.hh"
56 #include "StStrangeMuDstMaker/StKinkMuDst.hh"
59 #ifndef __NO_STRANGE_MUDST__
62 #include "StMuMcVertex.h"
63 #include "StMuMcTrack.h"
64 TClonesArray** StMuDst::mcArrays = 0;
77 TClonesArray *StMuDst::mMuEmcCollectionArray = 0;
83 TClonesArray *StMuDst::mMuPmdCollectionArray = 0;
102 #ifndef __NO_STRANGE_MUDST__
118 mMuEmcCollectionArray = 0;
124 mMuPmdCollectionArray = 0;
136 if (!maker) { DEBUGVALUE(maker);
return;}
138 #ifndef __NO_STRANGE_MUDST__
141 mcArrays = maker->mMCArrays;
156 mMuEmcCollectionArray = maker->mEmcCollectionArray;
162 mMuPmdCollectionArray = maker->mPmdCollectionArray;
166 #ifndef __NO_STRANGE_MUDST__
168 int nV0s =
v0s()->GetEntriesFast();
for (
int i=0;i<nV0s; i++)
v0s(i)->SetEvent(ev);
169 int nXis =
xis()->GetEntriesFast();
for (
int i=0;i<nXis; i++)
xis(i)->SetEvent(ev);
177 #ifndef __NO_STRANGE_MUDST__
178 TClonesArray** theStrangeArrays,
180 TClonesArray** theMCArrays,
181 TClonesArray** theEmcArrays,
182 TClonesArray** theFmsArrays,
183 TClonesArray** theFcsArrays,
184 TClonesArray** theFttArrays,
185 TClonesArray** theFstArrays,
186 TClonesArray** thePmdArrays,
187 TClonesArray** theTofArrays,
188 TClonesArray** theBTofArrays,
189 TClonesArray** theETofArrays,
190 TClonesArray** theEpdArrays,
191 TClonesArray** theMTDArrays,
192 TClonesArray** theFgtArrays,
193 TClonesArray** theEztArrays,
194 TClonesArray* emc_arr,
200 TClonesArray* pmd_arr,
207 #ifndef __NO_STRANGE_MUDST__
210 mcArrays = theMCArrays;
222 mMuEmcCollectionArray = emc_arr;
228 mMuPmdCollectionArray = pmd_arr;
239 Int_t n_track =
arrays[muPrimary]->GetEntriesFast();
241 for (Int_t i_track = 0; i_track < n_track; i_track++) {
276 if ( !(global&&primary) )
return;
281 static int warningPrinted = 0;
282 if (!warningPrinted) {
283 LOG_WARN <<
"WARNING: You are using " << __PRETTY_FUNCTION__
284 <<
" which does not work properly "
285 " for productions with FTPC >= SL04d and <= SL05g" << endm;
288 int nGlobals = global->GetEntriesFast();
289 int nPrimaries = primary->GetEntriesFast();
291 map<short,unsigned short> globalIndex;
293 for (
int i=0; i<nGlobals; i++) {
296 globalIndex[g->
id()] = i+1;
301 DEBUGVALUE2(primary->GetEntriesFast());
302 for (
int i=0; i<nPrimaries; i++) {
305 if (globalIndex[p->
id()])
311 DEBUGVALUE2(timer.elapsedTime());
319 if(!(fabs(
event()->primaryVertexPosition().x()) < 1.e-5 && fabs(
event()->primaryVertexPosition().y()) < 1.e-5 && fabs(
event()->primaryVertexPosition().z()) < 1.e-5)){
331 if (j==startpos) startpos++;
334 else if (pid > tid)
break;
346 for(
int i=0;i<Nvert;i++) startpos[i]=0;
355 for(
int j=0;j<Nvert;j++){
359 for(
int k=startpos[j];k<
primaryTracks()->GetEntriesFast();k++){
364 if (k==startpos[j]) startpos[j]++;
367 else if (pid > tid)
break;
387 if ( !(primary&&global&&btofHit) )
return;
392 int nPrimarys = primary->GetEntriesFast();
393 int nGlobals = global->GetEntriesFast();
394 int nBTofHits = btofHit->GetEntriesFast();
396 map<short,unsigned short> tofIndex;
397 map<short,unsigned short> globalIndex;
398 map<short,unsigned short> primaryIndex;
400 for (
int i=0; i<nBTofHits; i++) {
403 tofIndex[t->associatedTrackId()] = i+1;
407 for (
int i=0; i<nGlobals; i++) {
410 globalIndex[g->
id()] = i+1;
412 if(tofIndex[g->
id()])
413 g->setIndex2BTofHit( tofIndex[g->
id()]-1 );
415 g->setIndex2BTofHit(-1);
418 for (
int i=0; i<nPrimarys; i++) {
421 primaryIndex[p->
id()] = i+1;
423 if(tofIndex[p->
id()])
424 p->setIndex2BTofHit( tofIndex[p->
id()]-1 );
426 p->setIndex2BTofHit(-1);
431 for (
int i=0; i<nBTofHits; i++) {
434 if(globalIndex[t->associatedTrackId()])
435 t->setIndex2Global( globalIndex[t->associatedTrackId()]-1 );
437 t->setIndex2Global(-1);
439 if(primaryIndex[t->associatedTrackId()])
440 t->setIndex2Primary( primaryIndex[t->associatedTrackId()]-1 );
442 t->setIndex2Primary(-1);
446 DEBUGVALUE2(timer.elapsedTime());
463 if( !( primary && global && etofHit ) )
return;
468 int nPrimaries = primary->GetEntriesFast();
469 int nGlobals = global->GetEntriesFast();
470 int nETofHits = etofHit->GetEntriesFast();
472 map<short,unsigned short> etofIndex;
473 map<short,unsigned short> globalIndex;
474 map<short,unsigned short> primaryIndex;
476 for(
int i=0; i<nETofHits; i++ ) {
483 for(
int i=0; i<nGlobals; i++ ) {
486 globalIndex[g->
id()] = i+1;
488 if( etofIndex[g->
id()] ) {
496 for(
int i=0; i<nPrimaries; i++ ) {
499 primaryIndex[p->
id()] = i+1;
501 if( etofIndex[p->
id()] ) {
511 for(
int i=0; i<nETofHits; i++ ) {
517 t->setIndex2Global( -1 );
522 t->setIndex2Primary( -1 );
526 DEBUGVALUE2(timer.elapsedTime());
543 if ( !(primary&&global&&mtdHit) )
return;
548 int nPrimarys = primary->GetEntriesFast();
549 int nGlobals = global->GetEntriesFast();
550 int nMtdHits = mtdHit->GetEntriesFast();
552 map<short,unsigned short> mtdIndex;
553 map<short,unsigned short> globalIndex;
554 map<short,unsigned short> primaryIndex;
556 for (
int i=0; i<nMtdHits; i++) {
559 mtdIndex[t->associatedTrackKey()] = i+1;
563 for (
int i=0; i<nGlobals; i++) {
566 globalIndex[g->
id()] = i+1;
568 if(mtdIndex[g->
id()])
569 g->setIndex2MtdHit( mtdIndex[g->
id()]-1 );
571 g->setIndex2MtdHit(-1);
574 for (
int i=0; i<nPrimarys; i++) {
577 primaryIndex[p->
id()] = i+1;
579 if(mtdIndex[p->
id()])
580 p->setIndex2MtdHit( mtdIndex[p->
id()]-1 );
582 p->setIndex2MtdHit(-1);
587 for (
int i=0; i<nMtdHits; i++) {
590 if(globalIndex[t->associatedTrackKey()])
591 t->setIndex2Global( globalIndex[t->associatedTrackKey()]-1 );
593 t->setIndex2Global(-1);
595 if(primaryIndex[t->associatedTrackKey()])
596 t->setIndex2Primary( primaryIndex[t->associatedTrackKey()]-1 );
598 t->setIndex2Primary(-1);
602 DEBUGVALUE2(timer.elapsedTime());
614 for(
size_t i=0; i < (size_t)mMTD.hitsPresent(); i++)
637 for(
size_t i=0; i < (size_t) muETofColl.digisPresent(); i++ ) {
642 for(
size_t i=0; i < (size_t) muETofColl.hitsPresent(); i++ ) {
658 unsigned int index =
etofArrays[ muETofHit ]->GetEntriesFast();
659 LOG_DEBUG <<
"hit will be added as index: " << index << endm;
663 LOG_DEBUG <<
"done. -> new array size: " <<
etofArrays[ muETofHit ]->GetEntriesFast() << endm;
688 ev->setRunInfo(
new StRunInfo(mu->runInfo()) );
700 trg_coll->vpd()=mu->vpdTriggerDetector();
701 trg_coll->bbc()=mu->bbcTriggerDetector();
702 trg_coll->ctb()=mu->ctbTriggerDetector();
703 trg_coll->emc()=mu->emcTriggerDetector();
704 trg_coll->fpd()=mu->fpdTriggerDetector();
705 trg_coll->zdc()=mu->zdcTriggerDetector();
706 ev->setTriggerDetectorCollection(trg_coll);
710 ev->setL0Trigger (
new StL0Trigger(mu->l0Trigger()) );
715 ev->addPrimaryVertex(vp);
716 vp->setPosition( mu->eventSummary().primaryVertexPosition() );
718 int nGlobals =
arrays[muGlobal]->GetEntriesFast();
720 StSPtrVecTrackNode &trackNodes = ev->trackNodes();
721 TArrayI global_indices(nGlobals);
724 for (
int i=0; i<nGlobals; i++) {
728 trackNodes.push_back(node);
729 global_indices[i]=trackNodes.size()-1;
732 global_indices[i]=-1;
743 int nPrimaries = prim_tracks->GetEntriesFast();
747 if (global_idx >= 0 && global_indices[global_idx] >= 0)
748 trackNodes[global_indices[global_idx]]->addTrack( t );
752 trackNodes.push_back(node);
754 vp->addDaughter( t );
763 int nStates =
arrays[muState]->GetEntriesFast();
764 for (
int i=0; i<nStates; i++) {
766 ev->addDetectorState(det);
775 if(EMC) ev->setEmcCollection(EMC);
782 if(FMS) ev->setFmsCollection(FMS);
789 if(FCS) ev->setFcsCollection(FCS);
796 if(FTT) ev->setFttCollection(FTT);
803 if(FST) ev->setFstHitCollection(FST);
810 if(PMD) ev->setPhmdCollection(PMD);
815 ev->setTofCollection(tofcoll);
816 int nTofData =
tofArrays[muTofData]->GetEntriesFast();
817 for(
int i=0;i<nTofData;i++) {
820 unsigned short id =
tofData(i)->dataIndex();
821 unsigned short adc =
tofData(i)->adc();
822 unsigned short tdc =
tofData(i)->tdc();
824 unsigned short sc =
tofData(i)->sc();
826 aData =
new StTofData(
id, adc, tdc, tc, sc, 0, 0);
828 aData =
new StTofData(0, 0, 0, 0, 0, 0, 0);
830 tofcoll->addData(aData);
833 int nTofRawData =
tofArrays[muTofRawData]->GetEntriesFast();
834 for(
int i=0;i<nTofRawData;i++) {
838 unsigned short leteFlag =
tofRawData(i)->leteFlag();
839 unsigned short channel =
tofRawData(i)->channel();
841 unsigned int triggertime =
tofRawData(i)->triggertime();
842 unsigned short quality =
tofRawData(i)->quality();
843 aRawData =
new StTofRawData(leteFlag,tray,channel,tdc,triggertime,quality);
847 tofcoll->addRawData(aRawData);
852 ev->setBTofCollection(btofcoll);
853 int nBTofRawHits =
btofArrays[muBTofRawHit]->GetEntriesFast();
854 for(
int i=0;i<nBTofRawHits;i++) {
861 btofcoll->addRawHit(aRawHit);
867 triggerId = mu->triggerIdCollection().l1();
868 if ( !StMuTriggerIdCollection::isEmpty( triggerId ) ) triggerIdCollection->setL1(
new StTriggerId( triggerId ) );
869 triggerId = mu->triggerIdCollection().l2();
870 if ( !StMuTriggerIdCollection::isEmpty( triggerId ) ) triggerIdCollection->setL2(
new StTriggerId( triggerId ) );
871 triggerId = mu->triggerIdCollection().l3();
872 if ( !StMuTriggerIdCollection::isEmpty( triggerId ) ) triggerIdCollection->setL3(
new StTriggerId( triggerId ) );
873 triggerId = mu->triggerIdCollection().nominal();
874 if ( !StMuTriggerIdCollection::isEmpty( triggerId ) ) triggerIdCollection->setNominal(
new StTriggerId( triggerId ) );
875 ev->setTriggerIdCollection( triggerIdCollection );
878 DEBUGVALUE2(timer.elapsedTime());
882 #include "StarClassLibrary/SystemOfUnits.h"
883 #include "StarClassLibrary/PhysicalConstants.h"
887 if (nullHelix==*h)
return 0;
888 if (fabs(h->curvature()) > 100)
return 0;
889 if (fabs(h->
origin().x())>1000)
return 0;
890 if (fabs(h->
origin().y())>1000)
return 0;
891 if (fabs(h->
origin().z())>1000)
return 0;
894 h->momentumAt(0,
event()->runInfo().magneticField()*kilogauss), h->
h());
901 if (track->bad())
return 0;
906 t->setFlag( track->
flag() );
907 t->setFlagExtension( track->flagExtension() );
908 t->setKey( track->
id() );
911 helix = track->
helix();
913 if (tg) t->setGeometry( tg );
916 if (tg) t->setOuterGeometry( tg );
918 t->setIdTruth(track->idTruth(), track->qaTruth());
919 t->setIdParentVx( track->idParentVx() );
920 t->setLength(track->
length());
921 t->setImpactParameter(track->
dca().mag());
926 memset(b,0,15*
sizeof(Float_t));
929 traits.setNumberOfFitPoints(track->
nHitsFit(kTpcId),kTpcId);
930 traits.setNumberOfFitPoints(track->
nHitsFit(kFtpcEastId),kFtpcEastId);
931 traits.setNumberOfFitPoints(track->
nHitsFit(kFtpcWestId),kFtpcWestId);
932 traits.setNumberOfFitPoints(track->
nHitsFit(kSvtId),kSvtId);
933 traits.setNumberOfFitPoints(track->
nHitsFit(kSsdId),kSsdId);
936 if (track->
type() == primary && track->mNHitsFitTpc != 255)
937 traits.setPrimaryVertexUsedInFit(kTRUE);
938 t->setFitTraits(traits);
940 t->setNumberOfPossiblePoints(track->
nHitsPoss(kTpcId),kTpcId);
941 t->setNumberOfPossiblePoints(track->
nHitsPoss(kFtpcEastId),kFtpcEastId);
942 t->setNumberOfPossiblePoints(track->
nHitsPoss(kFtpcWestId),kFtpcWestId);
943 t->setNumberOfPossiblePoints(track->
nHitsPoss(kSvtId),kSvtId);
944 t->setNumberOfPossiblePoints(track->
nHitsPoss(kSsdId),kSsdId);
945 t->setNumberOfPossiblePoints(track->
nHitsPoss(kSstId), kSstId);
946 t->setNumberOfPossiblePoints(track->
nHitsPoss(kPxlId), kPxlId);
947 t->setNumberOfPossiblePoints(track->
nHitsPoss(kIstId), kIstId);
953 t->addPidTraits(track->btofPidTraits().createBTofPidTraits());
956 t->addPidTraits(track->
etofPidTraits().createETofPidTraits());
964 cout <<
"++++++++++++++ MuDst run " <<
event->runId() <<
" event " <<
event->eventId() <<
" ++++++++++++++" << endl;
965 cout << endl <<
"primary vertex pos " <<
event->primaryVertexPosition() << endl;
968 cout <<
"No event structure (StMuEvent) found!" << endl;
971 cout << numberOfPrimaryVertices() <<
" vertices reconstructed" << endl;
972 cout << numberOfPrimaryTracks() <<
" primary tracks, ";
975 cout << numberOfGlobalTracks() <<
" global " << endl;
977 #ifndef __NO_STRANGE_MUDST__
978 cout << numberOfV0s() <<
" V0s, " << numberOfXis() <<
" Xis "
979 << numberOfKinks() <<
" kinks" << endl;
983 cout <<
"EMC data present" << endl;
985 cout <<
"No EMC data present" << endl;
988 cout <<
"FMS data present" << endl;
990 cout <<
"No FMS data present" << endl;
992 cout <<
"PMD data present" << endl;
994 cout <<
"No PMD data present" << endl;
996 if (numberOfTofHit())
997 cout <<
"TOF data present" << endl;
999 cout <<
"No TOF data present" << endl;
1003 void StMuDst::printVertices() {
1004 if (numberOfPrimaryVertices() == 0) {
1005 cout <<
"No vertices stored (for older data, check StMuEvent)" << endl;
1009 cout <<
"+++++++++ vertex list ( " << numberOfPrimaryVertices() <<
" entries )" << endl << endl;
1010 for (UInt_t i_vtx = 0; i_vtx < numberOfPrimaryVertices(); i_vtx++) {
1011 cout <<
"+++ Vertex " << i_vtx << endl;
1017 void StMuDst::printPrimaryTracks() {
1018 if (numberOfPrimaryTracks() == 0) {
1019 cout <<
"No primary tracks found!" << endl;
1023 cout <<
"+++++++++ PRIMARY track list ( " << numberOfPrimaryTracks() <<
" entries )" << endl << endl;
1024 for (UInt_t i_trk = 0; i_trk < numberOfPrimaryTracks(); i_trk++) {
1025 cout <<
"+++ Primary track " << i_trk << endl;
1031 void StMuDst::printGlobalTracks() {
1032 if (numberOfGlobalTracks() == 0) {
1033 cout <<
"No global tracks found!" << endl;
1037 cout <<
"+++++++++ GLOBAL track list ( " << numberOfGlobalTracks() <<
" entries )" << endl << endl;
1038 for (UInt_t i_trk = 0; i_trk < numberOfGlobalTracks(); i_trk++) {
1039 cout <<
"+++ Global track " << i_trk << endl;
static TObjArray * mCurrPrimaryTracks
Temporary array to collect tracks from currect primary vertex.
static StMuFcsCollection * muFcsCollection()
returns pointer to current StMuFcsCollection
static void unset()
resets the pointers to the TClonesArrays to 0
static TClonesArray ** tofArrays
array of TClonesArrays for the stuff inherited from the TOF
static StMuFstCollection * mMuFstCollection
pointer to FstCollection (manages the FstArrays)
static StMuPrimaryVertex * primaryVertex()
return pointer to current primary vertex
short type() const
Returns the track type: 0=global, 1=primary, etc (see StEvent manual for type information) ...
static StMuFmsCollection * muFmsCollection()
returns pointer to current StMuFmsCollection
static TObjArray * globalTracks()
returns pointer to the global tracks list
void fixTofTrackIndices()
static StMuPmdCollection * pmdCollection()
returns pointer to current StMuPmdCollection
static StMuFttCollection * muFttCollection()
returns pointer to current StMuFttCollection
static void set(StMuDstMaker *maker)
set the pointers to the TClonesArrays
static StMuFttCollection * mMuFttCollection
pointer to FttCollection (manages the FttArrays)
static StMuFmsCollection * mMuFmsCollection
pointer to FmsCollection (manages the FmsArrays)
int h() const
y-center of circle in xy-plane
short id() const
Returns the track id(or key), is unique for a track node, i.e. global and primary tracks have the sam...
static TClonesArray ** fgtArrays
array of TClonesArrays for the stuff inherited from the Fgt
UShort_t nHitsDedx() const
Return number of hits used for dEdx.
Double_t length() const
Returns length of track (cm) from primary vertex to last measured point.
static StTofRawData * tofRawData(int i)
returns pointer to the i-th tofRawData
void setETofArray(const StETofCollection *etof_coll)
static TClonesArray ** pmdArrays
array of TClonesArrays for the stuff inherited from the Pmd
static StMuEmcCollection * mMuEmcCollection
pointer to EmcCollection (manages the EmcArrays)
Double_t chi2() const
Returns chi2 of fit.
static StMuETofHit * etofHit(int i)
returns pointer to the i-th StMuETofHit
static TClonesArray * v0s()
returns pointer to the v0 list
const StMuETofPidTraits & etofPidTraits() const
dongx
static TClonesArray * primaryVertices()
returns pointer to the primary vertex list
virtual void Print(Option_t *option="") const
Print basic event info.
static TClonesArray ** fmsArrays
array of TClonesArrays for the stuff inherited from the Fms
static void collectVertexTracks()
Helper function to collect tracks for the current prim vertex.
static void fixTrackIndicesG(int mult=1)
void fixTrackIndices()
checks and if necessary corrects the indecies of elements pointing to each other (e.g., a primary track's index to the corresponding global track)
static TClonesArray ** mtdArrays
array of TClonesArrays for the stuff inherited from the Mtd
void setIndex2Global(Int_t i)
Set index of associated global track.
void fixETofTrackIndices()
static StTofData * tofData(int i)
returns pointer to the i-th tofData
static StEmcCollection * mEmcCollection
pointer to EmcCollecion (for Emc clusterfinding etc)
static TClonesArray ** eztArrays
array of TClonesArrays for the stuff inherited from the EZT (ezTree)
static TClonesArray ** fttArrays
array of TClonesArrays for the stuff inherited from the Ftt
static StMuPmdCollection * mMuPmdCollection
pointer to PmdCollection (manages the PmdArrays)
StPhysicalHelixD helix() const
Returns inner helix (first measured point)
UShort_t nHitsFit() const
Return total number of hits used in fit.
static StStrangeEvMuDst * strangeEvent()
returns pointer to current StStrangeEvMuDst (class holding the event wise information, e.g. event number, run number)
void fixMtdTrackIndices()
short flag() const
Returns flag, (see StEvent manual for type information)
Short_t charge() const
Returns charge.
static TClonesArray ** fcsArrays
array of TClonesArrays for the stuff inherited from the Fcs
Collection of trigger ids as stored in StEvent.
static StBTofRawHit * btofRawHit(int i)
returns pointer to the i-th btofRawHit - dongx
static TClonesArray * detectorStates()
returns pointer to the list of detector states
static StMuFstCollection * muFstCollection()
returns pointer to current StMuFstCollection
int associatedTrackId() const
id to the track which has been matched to this hit
static TObjArray * primaryTracks()
returns pointer to a list of tracks belonging to the selected primary vertex
const StThreeVector< double > & origin() const
-sign(q*B);
UShort_t nHitsPoss() const
Return number of possible hits on track.
TClonesArray ** mBTofArrays
dongx
static StMuEmcCollection * muEmcCollection()
returns pointer to current StMuEmcCollection
static StMuEvent * event()
returns pointer to current StMuEvent (class holding the event wise information, e.g. event number, run number)
static StTrackGeometry * trackGeometry(int q, StPhysicalHelixD *h)
helper function to create a StTrackGeometry
static StMuETofDigi * etofDigi(int i)
returns pointer to the i-th StMuEtofDigi
static StTrack * createStTrack(const StMuTrack *)
creates a StTrack from an StMuTrack and return pointer to it
StThreeVectorF dca(Int_t vtx_id=-1) const
Returns 3D distance of closest approach to primary vertex.
static TClonesArray * xis()
returns pointer to the xi list
Double_t dEdx() const
Returns measured dE/dx value.
static TClonesArray ** strangeArrays
array of TClonesArrays for the stuff inherited from the StStrangeMuDst
void addETofHit(const StMuETofHit *hit)
static TClonesArray ** emcArrays
array of TClonesArrays for the stuff inherited from the Emc
static StBTofHeader * btofHeader()
returns pointer to the btofHeader - dongx
static StMuFcsCollection * mMuFcsCollection
pointer to FcsCollection (manages the FcsArrays)
static TClonesArray ** epdArrays
array of TClonesArrays for Epd
void setMtdArray(StMtdCollection *mtd_coll)
static Int_t currentVertexIndex()
Get the index number of the current primary vertex.
static TClonesArray ** etofArrays
array of TClonesArrays for ETof
StEvent * createStEvent()
creates a StEvent from the StMuDst (this) and returns a pointer to it. (This function is not yet fini...
static TClonesArray ** fstArrays
array of TClonesArrays for the stuff inherited from the Fst
StPhysicalHelixD outerHelix() const
Returns outer helix (last measured point)
static void setVertexIndex(Int_t vtx_id)
Set the index number of the current primary vertex (used by both primaryTracks() functions and for St...
static TClonesArray ** arrays
array of TClonesArrays
StTrackTopologyMap topologyMap() const
Returns topology map.
static Int_t mCurrVertexId
Index number of current primary vertex.
static TClonesArray ** btofArrays
array of TClonesArrays for the stuff inherited from the BTOF // dongx
double phase() const
1/R in xy-plane
static StFmsCollection * mFmsCollection
pointer to FmsCollecion (for Fms clusterfinding etc)
virtual void Print(Option_t *option="") const
Print essential vertex info.
void setIndex2ETofHit(Int_t i)
dongx