Getting x-y position of primary particles after certain distance

Hi all,
I have a low vacuum setup, in which I am trying to investigate how a beam of electrons (1MeV) looks like after a certain distance (in this case it is 17.6cm). My world geometry is two metal hollow tubes of 1mm thickness placed inside a world with these low vacuum conditions (O-20%, N-80%, 7mbar). The source is placed inside these tubes which act as a shielding from my magnetic field (not introduced yet so we can ignore for now).
Now to see what the distribution of the beam looks like after it has passed through these two tubes, I have put a Si volume at the end of it and made it sensitive. I first tried just using TrackingAction for tracks that were greater z>27.6cm however, I was a bit unhappy with the approach as it meant that I either reduced my world volume to match perfectly with the end of the tube or just take all tracks which went passed that point, meaning their tracks would obviously go through more multiscattering.

Now I am recording the hits on the said Si volume (which for now is just a holder for my real detection setup). However, when I shoot the beam I see that I record more events than the ones I simulated e.g. for 500000 I see something like 503400. The energy of the graphs points me to think that these just may be primary particles which backscatter from the Silicon and are then redetected but that is just a first guess (though I feel it may not be true). For my recording condition, I use the following code:

    if(aStep->GetTrack()->GetTrackID()==1 && aStep->IsFirstStepInVolume()) {
        auto newHit=new TrackerHit();

Where Write() is just a function that writes all of these things to a file/histogram. I am using PreStepPoint here because I wanted to take the energy before it struck Si. So my question now is, is there a better way to record this information? Should I just reduce my world volume, use stepping action for poststep points that exit the World geometry? Any help will be appreciated