12.07.2015 Views

Geant4 User's Guide for Application Developers - Geant4 - CERN

Geant4 User's Guide for Application Developers - Geant4 - CERN

Geant4 User's Guide for Application Developers - Geant4 - CERN

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Tracking and Physicsor as three points contained in it:G4ErrorPlaneSurfaceTarget(const G4Point3D &p1,const G4Point3D &p2,const G4Point3D &p3);5.8.4.1.2. Cylindrical surface targetG4ErrorCylSurfaceTarget implements an infinite-length cylindrical surface (a cylinder without end-caps).The surface can be given as the radius, the translation and the rotationG4ErrorCylSurfaceTarget( const G4double& radius,const G4ThreeVector& trans=G4ThreeVector(),const G4RotationMatrix& rotm=G4RotationMatrix() );or as the radius and the affine trans<strong>for</strong>mationG4ErrorCylSurfaceTarget( const G4double& radius,const G4AffineTrans<strong>for</strong>m& trans );5.8.4.2. Geometry volume targetWhen the user chooses a G4ErrorGeomVolumeTarget as target, the track is propagated until the surface of aGEANT4 volume is reached. User can choose if the track will be stopped only when the track enters the volume,only when the track exits the volume or in both cases.The object has to be instantiated giving the name of a logical volume existing in the geometry:G4ErrorGeomVolumeTarget( const G4String& name );5.8.4.3. Track Length targetWhen the user chooses a G4ErrorTrackLengthTarget as target, the track is propagated until the giventrack length is reached.The object has to be instantiated giving the value of the track length:G4ErrorTrackLengthTarget(const G4double maxTrkLength );It is implemented as a G4VDiscreteProcess and it limits the step in PostStepGetPhysicalInteractionLength.To ease its use, the process is registered to all particles in the constructor.5.8.5. Managing the track propagationThe user needs to propagate just one track, so there is no need of run and events. neither ofG4VPrimaryGeneratorAction. G4ErrorPropagator creates a track from the in<strong>for</strong>mation given in theG4ErrorTrajState and manages the step propagation. The propagation is done by the standard GEANT4methods, invoking G4SteppingManager::Stepping() to propagate each step.After one step is propagated, G4ErrorPropagator takes cares of propagating the track errors <strong>for</strong> this step,what is done by G4ErrorTrajStateFree::PropagateError(). The equations of error propagation areonly implemented in the representation of G4ErrorTrajStateFree. There<strong>for</strong>e if the user has provided insteada G4ErrorTrajStateOnSurface object, it will be trans<strong>for</strong>med into a G4ErrorTrajStateFree at thebeginning of tracking, and at the end it is converted back into G4ErrorTrajStateOnSurface on the targetsurface (on the normal plane to the surface at the final point).The user G4VUserTrackingAction::PreUserTrackingAction( const G4Track* ) andG4VUserTrackingAction::PreUserTrackingAction( const G4Track* ) are also invoked atthe beginning and at the end of the track propagation.G4ErrorPropagator stops the tracking when one of the three conditions is true:192

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!