if(!si->TestEvent()); si->ClearEvent(); //If the event fails for some reason, we void it and clear it here. The number of these should be logged and, ideally, should be zero. A VOIDED EVENT IS ONE IN WHICH ALL SILICON DATA ARE THROWN AWAY BECAUSE THE RESULT IS WRONG. There are more energy hits than theta hits, for example. IT THEY ARE HAPPENING, THEN YOU'VE DONE IT WRONG.
This is from MMM.c.
Note: if(!si->TestEvent());
So, this was functionally testing the event and then, having done so, clearing the event as the 'si->ClearEvent(); wasn't within the 'if' statement. However SiliconHits was set to be something +ve. Hence my confusion.
I have now changed this in the master (as it was a problem in there as well) and uncommented the print statement in 'SiliconData::ClearEvent()'. We should:
1) Check to see that this doesn't happen elsewhere, and
2) Make sure that the ClearEvent for an invalid event has a way of notifying the user of that eventuality.
Master could try giving Dobby a sock...
if(!si->TestEvent()); si->ClearEvent(); //If the event fails for some reason, we void it and clear it here. The number of these should be logged and, ideally, should be zero. A VOIDED EVENT IS ONE IN WHICH ALL SILICON DATA ARE THROWN AWAY BECAUSE THE RESULT IS WRONG. There are more energy hits than theta hits, for example. IT THEY ARE HAPPENING, THEN YOU'VE DONE IT WRONG.
This is from MMM.c.
Note: if(!si->TestEvent());
So, this was functionally testing the event and then, having done so, clearing the event as the 'si->ClearEvent(); wasn't within the 'if' statement. However SiliconHits was set to be something +ve. Hence my confusion.
I have now changed this in the master (as it was a problem in there as well) and uncommented the print statement in 'SiliconData::ClearEvent()'. We should:
1) Check to see that this doesn't happen elsewhere, and
2) Make sure that the ClearEvent for an invalid event has a way of notifying the user of that eventuality.