Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 /// \file Par02FastSimModelTracker.hh 28 /// \brief Definition of the Par02FastSimModelTracker class 29 30 #ifndef PAR02_TRACKER_FAST_SIM_MODEL_H 31 #define PAR02_TRACKER_FAST_SIM_MODEL_H 32 33 #include "Par02DetectorParametrisation.hh" 34 35 #include "G4Navigator.hh" 36 #include "G4Step.hh" 37 #include "G4VFastSimulationModel.hh" 38 39 /// Shortcut to the ordinary tracking for tracking detectors. 40 /// 41 /// The fast simulation model describes what should be done instead of a 42 /// normal tracking. Instead of the ordinary tracking, a particle momentum 43 /// at the entrance of the tracking detector is smeared 44 /// (by Par02Smearer::SmearMomentum()) and the particle is placed at the 45 /// tracking detector exit, at the place it would reach without the change 46 /// of its momentum. Based on G4 47 /// examples/extended/parametrisations/Par01/include/Par01EMShowerModel.hh . 48 /// @author Anna Zaborowska 49 50 class Par02FastSimModelTracker : public G4VFastSimulationModel 51 { 52 public: 53 /// A constructor. 54 /// @param aModelName A name of the fast simulation model. 55 /// @param aEnvelope A region where the model can take over the ordinary tracking. 56 /// @param aParamType A parametrisation type. 57 Par02FastSimModelTracker(G4String aModelName, G4Region* aEnvelope, 58 Par02DetectorParametrisation::Parametrisation aParamType); 59 60 /// A constructor. 61 /// @param aModelName A name of the fast simulation model. 62 /// @param aEnvelope A region where the model can take over the ordinary tracking. 63 Par02FastSimModelTracker(G4String aModelName, G4Region* aEnvelope); 64 65 /// A constructor. 66 /// @param aModelName A name of the fast simulation model. 67 Par02FastSimModelTracker(G4String aModelName); 68 69 ~Par02FastSimModelTracker(); 70 71 /// Checks if this model should be applied to this particle type. 72 /// @param aParticle A particle definition (type). 73 virtual G4bool IsApplicable(const G4ParticleDefinition& aParticle); 74 75 /// Checks if the model should be applied taking into account the kinematics 76 /// of a track. 77 /// @param aFastTrack A track. 78 virtual G4bool ModelTrigger(const G4FastTrack& aFastTrack); 79 80 /// Calculates the final position (at the outer boundary of the tracking detector) 81 /// of a particle with the momentum at the entrance of the tracking detector. 82 /// Smears the particle momentum and saves it, together with the tracking detector 83 /// resolution and efficiency to the Par02PrimaryParticleInformation. 84 /// @param aFastTrack A track. 85 /// @param aFastStep A step. 86 virtual void DoIt(const G4FastTrack& aFastTrack, G4FastStep& aFastStep); 87 88 private: 89 /// A pointer to Par02DetectorParametrisation used to get the efficiency and 90 /// resolution of the tracking detector for a given particle and 91 /// parametrisation type. 92 Par02DetectorParametrisation* fCalculateParametrisation; 93 94 /// A parametrisation type. 95 Par02DetectorParametrisation::Parametrisation fParametrisation; 96 }; 97 98 #endif 99