00001
00002 #include "StjTPCRandomMuDst.h"
00003
00004 #include <StMuDSTMaker/COMMON/StMuTrack.h>
00005 #include <StMuDSTMaker/COMMON/StMuDst.h>
00006 #include <StMuDSTMaker/COMMON/StMuDstMaker.h>
00007 #include <StMuDSTMaker/COMMON/StMuEvent.h>
00008
00009 #include <mudst/StMuEmcPosition.h>
00010 #include <StEmcUtil/geometry/StEmcGeom.h>
00011
00012 #include <TVector3.h>
00013 #include <stdio.h>
00014
00015 StjTPCRandomMuDst::StjTPCRandomMuDst(StMuDstMaker* uDstMaker, Double_t randomSelectorProb, bool randomSelectorAt, UInt_t randomSelectorSeed)
00016 : StjTPCMuDst(),
00017 _randomSelector( randomSelectorProb, randomSelectorAt, randomSelectorSeed )
00018 {
00019 }
00020
00021 StjTrackList StjTPCRandomMuDst::getTrackList()
00022 {
00023 StjTrackList ret;
00024
00025
00026
00027
00028 double magneticField = StMuDst::event()->magneticField()/10.0;
00029 StMuTrack * mutrack = 0;
00030 TObjArray tracks;
00031
00032 int nTracks = StMuDst::numberOfPrimaryTracks();
00033
00034
00035
00036
00037
00038
00039
00040 for ( int ii = 0; ii < nTracks; ++ii )
00041 {
00042 mutrack = StMuDst::primaryTracks(ii);
00043
00044 if ( mutrack->flag() < 0 )
00045 continue;
00046
00047 if ( mutrack->topologyMap().trackFtpcEast()
00048 || mutrack->topologyMap().trackFtpcWest()
00049 )
00050 continue;
00051
00052 tracks.AddLast( mutrack );
00053 }
00054
00055
00056 _randomSelector.SetContainer( &tracks );
00057
00058 while (
00059 (mutrack = dynamic_cast<StMuTrack *>(_randomSelector.GetNextRandom()))
00060 )
00061 {
00062 UInt_t trackIndex =
00063 _randomSelector.GetNumberReturned()
00064 + _randomSelector.GetNumberSkipped()
00065 - 1;
00066
00067 StjTrack track = createTrack(mutrack, trackIndex, magneticField);
00068
00069 ret.push_back(track);
00070 }
00071
00072 return ret;
00073 }