Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/event/include/G4PrimaryTransformer.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 // G4PrimaryTransformer
 27 //
 28 // Class description:
 29 //
 30 // This class is exclusively used by G4EventManager for the conversion
 31 // from G4PrimaryVertex/G4PrimaryParticle to G4DynamicParticle/G4Track.
 32 
 33 // Author: Makoto Asai, 1999
 34 // --------------------------------------------------------------------
 35 #ifndef G4PrimaryTransformer_hh 
 36 #define G4PrimaryTransformer_hh 1
 37 
 38 #include "globals.hh"
 39 #include "G4TrackVector.hh"
 40 #include "G4ParticleTable.hh"
 41 #include "G4PrimaryParticle.hh"
 42 #include "G4DynamicParticle.hh"
 43 #include "G4ExceptionSeverity.hh"
 44 
 45 class G4Event;
 46 class G4PrimaryVertex;
 47 
 48 class G4PrimaryTransformer
 49 {
 50   public:
 51 
 52     G4PrimaryTransformer();
 53     virtual ~G4PrimaryTransformer() = default;
 54     
 55     G4TrackVector* GimmePrimaries(G4Event* anEvent, G4int trackIDCounter=0);
 56     void CheckUnknown();
 57 
 58     inline void SetVerboseLevel(G4int vl)
 59       { verboseLevel = vl; }
 60 
 61     void SetUnknownParticleDefined(G4bool vl);
 62     void SetChargedUnknownParticleDefined(G4bool vl);
 63       // By invoking these methods, the user can alter the treatment of,
 64       // respectively, 'unknown' and 'chargedunknown' particles.
 65       // The ideal place to invoke these methods is in the BeginOfRunAction().
 66 
 67     inline G4bool GetUnknownParticleDefined() const
 68       { return unknownParticleDefined; }
 69 
 70     inline G4bool GetChargedUnknownParticleDefined() const
 71       { return chargedUnknownParticleDefined; }
 72   
 73   protected:
 74 
 75     void GenerateTracks(G4PrimaryVertex* primaryVertex);
 76     void GenerateSingleTrack(G4PrimaryParticle* primaryParticle,
 77                              G4double x0, G4double y0, G4double z0,
 78                              G4double t0, G4double wv);
 79     void SetDecayProducts(G4PrimaryParticle* mother,
 80                           G4DynamicParticle* motherDP);
 81     G4bool CheckDynamicParticle(G4DynamicParticle*DP);
 82 
 83     // Following two virtual methods are provided to customize the use
 84     // of G4PrimaryTransformer for particle types exotic to Geant4.
 85 
 86     virtual G4ParticleDefinition* GetDefinition(G4PrimaryParticle* pp);
 87       // Return appropriate G4ParticleDefinition w.r.t. the primary particle. 
 88       // If nullptr is returned, the particle will not be treated as a track,
 89       // but its daughters will be examined in case it has "pre-assigned
 90       // decay products".
 91 
 92     virtual G4bool IsGoodForTrack(G4ParticleDefinition* pd);
 93       // Return true if a primary particle should be converted into a track.
 94       // By default, all particles of non-shortlived and shortlived with
 95       // valid decay tables are converted.
 96 
 97   protected:
 98 
 99     G4TrackVector TV;
100     G4ParticleTable* particleTable = nullptr;
101 
102     G4ParticleDefinition* unknown = nullptr;
103     G4ParticleDefinition* chargedunknown = nullptr;
104     G4ParticleDefinition* opticalphoton = nullptr;
105     G4int verboseLevel = 0;
106     G4int trackID = 0;
107     G4int nWarn = 0;
108     G4bool unknownParticleDefined = false;
109     G4bool chargedUnknownParticleDefined = false;
110     G4bool opticalphotonDefined = false;
111 
112     static G4double kETolerance;
113     static G4ExceptionSeverity kETSeverity;
114   public:
115     static void SetKETolerance(G4double val, G4ExceptionSeverity sev = JustWarning)
116     { kETolerance = val; kETSeverity = sev; }
117 
118 };
119 
120 #endif
121