projects/lcdd/branches/v04-01-00-pre/src/lcdd/detectors
--- projects/lcdd/branches/v04-01-00-pre/src/lcdd/detectors/ScoringTrackerHitProcessor.cc 2014-08-06 08:00:45 UTC (rev 3235)
+++ projects/lcdd/branches/v04-01-00-pre/src/lcdd/detectors/ScoringTrackerHitProcessor.cc 2014-08-07 19:06:26 UTC (rev 3236)
@@ -26,12 +26,6 @@
// edep
G4double edep = step->GetTotalEnergyDeposit();
- // get track information
- //TrackInformation* trkInfo = TrackInformation::getTrackInformation(step);
-
- // set hit flag in trk info
- //trkInfo->setHasTrackerHit(true);
-
// Get track ID.
G4int trackID = step->GetTrack()->GetTrackID();
@@ -50,20 +44,30 @@
// Get the end position from the post-step point.
G4ThreeVector endPosition = step->GetPostStepPoint()->GetPosition();
+ // Compute the midpoint.
+ G4ThreeVector midPoint = (0.5 * (step->GetPreStepPoint()->GetPosition() + step->GetPostStepPoint()->GetPosition()));
+
// Compute the step's path length.
G4double length = sqrt(pow(startPosition.x() - endPosition.x(), 2) + pow(startPosition.y() - endPosition.y(), 2) + pow(startPosition.z() - endPosition.z(), 2));
// Set the hit information.
newHit->setTrackID(trackID);
newHit->setEdep(edep);
- newHit->setPosition(startPosition);
+ newHit->setPosition(midPoint);
newHit->setMomentum(step->GetPreStepPoint()->GetMomentum());
newHit->setTdep(tdep);
newHit->setId(id64.getId0());
newHit->setLength(length);
- // Add hit to SD.
- getTracker()->addHit(newHit, false);
+ // Get the TrackInformation and flag track as having a tracker hit.
+ VUserTrackInformation* trackInformation = dynamic_cast<VUserTrackInformation*>(step->GetTrack()->GetUserInformation());
+ if (trackInformation)
+ trackInformation->setHasTrackerHit();
+ else
+ G4Exception("ScoringTrackerHitProcessor::processHits", "", FatalException, "Missing required VUserTrackInformation.");
+
+ // Add hit to detector.
+ getTracker()->addHit(newHit, getCollectionIndex());
}
return true;
}