A Brief Overview of the New Pixel Fast Simulator

The new StPixelFastSimMaker imposes the pixel structure on the PXL detector and the strip structure on the IST detector.  For each event the simulator loops over StMcPixelHits, determines which pixel each hit was in, and then compiles a list of pixels with hits in them.  This list is then used to create the StRnDHits: for each lit-up pixel a StRnDHit is created in the center of that pixel.  Note that this means that there is no longer a 1-to-1 correspondence between StMcPixelHits and StRnDHits: if multiple StMcPixelHits appear in the same pixel, they will all correspond to one StRnDHit (but that StRnDHit will be assigned the key value of one of those hits, so it is still possible to connect each StRnDHit to an StMcPixelHit that it came from).  Additionally, hit locations are no longer smeared.

For the IST, the situation is the same: a list of lit-up strips is created, and each lit-up strip has an StRnDHit created in its exact center, with no smearing.

Finally, StMcHits in dead areas of the IST and PXL are ignored by the simulator.

Additionally, the new simulator implements IdTruth.  This means that every StRnDHit now has a member which is the key value of the StMcTrack that contains the StMcHit from which the StRnDHit was constructed.  This gives another method for association between StTracks and StMcTracks: if StTrack->detectorInfo()->hits(kPxlId)[i]->idTruth()==StMcTrack->key(), then the tracks likely match.  It's not guaranteed to be the correct match because there could be ambiguity about which StMcHit the StRnDHit was constructed from.  However, the StRnDHit also has the member qaTruth, which is the quality of the association, determined by dividing the charge deposited by the selected StMcTrack in the pixel (or strip) by the total charge deposited by all StMcTracks in that pixel (or strip).  For an example of this, you can look at StAssociationMaker.cxx, where IdTruth is used to associate MC and reconstructed TPC hits:
if (mcTpcHit->parentTrack()->key() != rcTpcHit->idTruth()) continue;
Finally, and separately from the pixel fast simulator, the track topology map has been implemented for the PXL and IST.  The track topology map is accessed from an StTrack by track->topologyMap().  It allows you to determine not just the number of hits a track has in the PXL or IST but also whether the track has hits in a particular layer of the PXL or IST, using the methods hasHitInPxlLayer(i) (i=1,2) and hasHitInIstLayer(i) (i=1-3).  Thus, for instance, to figure out if a track has a hit in the first PXL layer, you can do the following:

if(track->topologyMap()->hasHitInPxlLayer(1)) cout<<"The track has a hit in the first PXL layer"<<endl;