StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Static Public Member Functions | List of all members
StiStEventFiller Class Reference

#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 StiStEventFillerinstance ()
static map< StiKalmanTrack
*, StTrackNode * > * 
Track2NodeMap ()
static map< StTrackNode
*, StiKalmanTrack * > * 
Node2TrackMap ()

Detailed Description

StiStEventFiller is a utilitity class meant to properly convert StiKalmanTrack objects into StTrack (Global/Primary) objects and hang these on the StEvent Track-node.

Manuel Calderon de la Barca Sanchez (Yale Software)

Definition at line 187 of file StiStEventFiller.h.

Member Function Documentation

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:

  • Create a new global track and associated information (see below) and set its data members according to the StiKalmanTrack, can be done in a StGlobalTrack constructor
  • Hang the new track to the StTrackNode container in StEvent, this creates a new entry in the container, the global track is now owned by it.

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:
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();

StTrackNode* trackNode = new StTrackNode;

StGlobalTrack* gTrack = new StGlobalTrack();

set up relationships between objects
The creation of the various objects needed by StGlobalTrack are taken care of in the methods: fillTopologyMap(), fillGeometry(), fillFitTraits(), which are called within fillGlobalTrack().

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

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.

The documentation for this class was generated from the following files: