StRoot
1
|
#include <StiStEventFiller.h>
Public Member Functions | |
void | setUseAux (int aux=1) |
void | fillEvent (StEvent *e, StiTrackContainer *t) |
void | fillEventPrimaries () |
void | fillDetectorInfo (StTrackDetectorInfo *detInfo, StiKalmanTrack *kTrack, bool refCountIncr) |
void | fillGeometry (StTrack *track, StiKalmanTrack *kTrack, bool outer) |
void | fillFitTraits (StTrack *track, StiKalmanTrack *kTrack) |
void | fillTrack (StTrack *track, StiKalmanTrack *kTrack, StTrackDetectorInfo *detInfo) |
void | fillDca (StTrack *track, StiKalmanTrack *kTrack) |
void | fillFlags (StTrack *track) |
double | impactParameter (StiKalmanTrack *kTrack, StThreeVectorD &vertexPosition) |
double | impactParameter (StTrack *strack, StThreeVectorD &vertexPosition) |
void | setPullEvent (StiPullEvent *pe) |
Static Public Member Functions | |
static StiStEventFiller * | instance () |
static map< StiKalmanTrack *, StTrackNode * > * | Track2NodeMap () |
static map< StTrackNode *, StiKalmanTrack * > * | Node2TrackMap () |
StiStEventFiller is a utilitity class meant to properly convert StiKalmanTrack objects into StTrack (Global/Primary) objects and hang these on the StEvent Track-node.
Definition at line 187 of file StiStEventFiller.h.
void StiStEventFiller::fillDetectorInfo | ( | StTrackDetectorInfo * | detInfo, |
StiKalmanTrack * | track, | ||
bool | refCountIncr | ||
) |
use the vector of StHits to fill the detector info change: currently point and fit points are the same for StiKalmanTracks, if this gets modified later in ITTF, this must be changed here but maybe use track->getPointCount() later?
Definition at line 929 of file StiStEventFiller.cxx.
References StiHit::detector(), StiKalmanTrack::getAllPointCount(), StiHit::stHit(), and StiHit::timesUsed().
Referenced by fillEvent(), and StKFVertexMaker::Make().
void StiStEventFiller::fillEvent | ( | StEvent * | e, |
StiTrackContainer * | t | ||
) |
Algorithm: Loop over all tracks in the StiTrackContainer, doing for each track:
In addition to the StGlobalTrack, we need to create the following objects (owned by it): StTrackTopologyMap StTrackFitTraits StTrackGeometry (2 are needed, one at first point, one at last point) (note: StHelixModel is implementation of the StTrackGeometry abstract class)
The track also owns a container of PidTraits, this algorithm will not fill this container.
And set up links to: StTrackDetectorInfo (owned by StEvent, StSPtrVecTrackDetectorInfo) StTrackNode (owned by StEvent, StSPtrVecTrackNode) These links are track -> detector info track <-> track node
Skeleton of the algorithm:
The creation of the various objects needed by StGlobalTrack are taken care of in the methods: fillTopologyMap(), fillGeometry(), fillFitTraits(), which are called within fillGlobalTrack().
StSPtrVecTrackNode& trNodeVec = mEvent->trackNodes();
StSPtrVecTrackDetectorInfo& detInfoVec = mEvent->trackDetectorInfo();
for (trackIterator trackIt = mTrackStore->begin(); trackIt != mTrackStore->end(); ++trackIt) {
StiKalmanTrack* kTrack = (*trackIt).second; // the container is a <map>, need second entry of <pair>
StTrackDetectorInfo* detInfo = new StTrackDetectorInfo();
fillDetectorInfo(detInfo,kTrack);
detInfoVec.push_back(detInfo);
StTrackNode* trackNode = new StTrackNode;
trNodeVec.push_back(trackNode);
StGlobalTrack* gTrack = new StGlobalTrack();
fillGlobalTrack(gTrack,kTrack);
set up relationships between objects
gTrack->setDetectorInfo(detInfo);
gTrack->setNode(trackNode);
trackNode->AddTrack(gTrack);
}
Definition at line 700 of file StiStEventFiller.cxx.
References fillDetectorInfo(), StiKalmanTrack::getPointCount(), and StiHftHits::hftHist().
void StiStEventFiller::fillFlags | ( | StTrack * | gTrack | ) |
data members from StEvent/StTrack.h The track flag (mFlag accessed via flag() method) definitions with ITTF (flag definition in EGR era can be found at http://www.star.bnl.gov/STAR/html/all_l/html/dst_track_flags.html)
mFlag=zxyy, where z = 1 for pile up track in TPC (otherwise 0) x indicates the detectors included in the fit and yy indicates the status of the fit. Positive mFlag values are good fits, negative values are bad fits.
The first digit indicates which detectors were used in the refit:
x=1 -> TPC only x=3 -> TPC + primary vertex x=5 -> SVT + TPC x=6 -> SVT + TPC + primary vertex x=7 -> FTPC only x=8 -> FTPC + primary x=9 -> TPC beam background tracks
The last two digits indicate the status of the refit: = +x01 -> good track
= -x01 -> Bad fit, outlier removal eliminated too many points = -x02 -> Bad fit, not enough points to fit = -x03 -> Bad fit, too many fit iterations = -x04 -> Bad Fit, too many outlier removal iterations = -x06 -> Bad fit, outlier could not be identified = -x10 -> Bad fit, not enough points to start
= -x11 -> Short track pointing to EEMC = -x12 -> Short track pointing to ETOF
In the flagging scheme, I will put in the cases for TPC only, and TPC+SVT (plus their respective cases with vertex) Ftpc case has their own code and SSD doesn't have a flag...
Definition at line 1146 of file StiStEventFiller.cxx.