gabbbri_ella

GENERARE PARTICELLE GEANT4

May 11th, 2022 (edited)
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. GENERARE PARTICELLE
  2. ACTION INITIALIZATION---PARTICLE GUN
  3.  
  4. ACTION.HH
  5.  
  6. #ifndef ACTION_HH
  7. #define ACTION_HH
  8.  
  9. #include "G4VUserActionInitialization.hh"
  10.  
  11. class MyActionInitialization : public G4VUserActionInitialization
  12. {
  13. public:
  14.    MyActionInitialization();
  15.    ~MyActionInitialization();
  16.    
  17.    virtual void Build() const;
  18.    {
  19.    //prendiamo la funzione build dalla classe G4VUserActionInitialization che fa il run di una particella, funzione principale del programma
  20.    
  21.    MyPrimaryGenerator *generator = new MyPrimaryGenerator();
  22.    SetUserAction(generator);
  23.    }
  24. }
  25. #endif
  26.  
  27.  
  28.  
  29. ACTION.CC
  30.  
  31.  
  32. #include "action.hh"
  33.  
  34. MyActionInitialization::MyActionInitialization()
  35. {}
  36.  
  37. MyActionInitialization::~MyActionInitialization()
  38. {}
  39.  
  40. void MyActionInitialization::Build() const
  41. {}
  42. //La lascio vuota ma implemento nel main la runManager->SetUserInitialization(new MyActionInitialization()); e metto #include action.hh
  43.  
  44.  
  45.  
  46. GENERARE PARTICELLE
  47.  
  48. generator.hh
  49.  
  50. #ifndef GENERATOR_HH
  51. #define GENERATOR_HH
  52.  
  53. #include "G4VUserPrymaryGeneratorAction.hh"
  54. #include "G4SystemOfUnits.hh"
  55. #include "G4ParticleGun.hh"
  56. #include "G4ParticleTable.hh"
  57.  
  58. class MyPrimaryGenerator : public G4VUserPrymaryGeneratorAction
  59. {
  60. public:
  61.    MyPrimaryGenerator();
  62.    ~MyPrimaryGenerator();
  63.    
  64.    virtual void GeneratorPrimaries(G4 Event*);
  65.    //prendiamo la funzione build dalla classe G4VUserActionInitialization che fa il run di una particella, funzione principale del programma
  66.  private:
  67.  //adesso si definisce la particella incidente
  68.     G4ParticleGun fParticleGun;
  69.  
  70.    
  71. }
  72. #endif
  73.  
  74. GENERATOR.CC
  75.  
  76. MyPrimaryGenerator::MyPrimaryGenerator()
  77. {
  78.    fParticleGun = new G4Particleun(1);
  79.        //dentro la parentesi va scritto il numero di particelle per evento. in g4 si fa un run con diversi eventi e ogni evento può contenere più particelle. ora è preferibile simulare una particella per ogni evento
  80. }
  81.  
  82. MyPrimaryGenerator::~MyPrimaryGenerator()
  83. {
  84.  delete fParticleGun;
  85. }
  86.  
  87. //occupiamoci della funzione
  88. void MyPrimaryGenerator::GeneratorPrimaries(G4Event* anEvent)
  89. {
  90.    G4ParticleTable *particleTable =G4ParticleTable::GetParticleTable();
  91.    //questa è la clase, adesso, con il comando successivo, andiamo a trovare la particella.
  92.    G4String particlename="proton";
  93.     //definiamo la variabile particella
  94.    G4ParticlDefinition *particle = ParticleTable->FindParticle("proton");
  95.     //adesso riprendiamo la classe G4ThreeVector e creiamo il vettore posizione
  96.     G4ThreeVector pos(0.,0.,0.,);//il protone viene generato al centro del volume madre
  97.     G4ThreeVector mom(0.,0.,1.) //direzione iniziale del momento.
  98.        
  99.     fParticleGun->SetParticlePosition(pos); //usiamo la funzione SetParticlePosition e gli passiamo il nostro vettore
  100.     fParticleGun->SetParticleMomentumDirection(mom); //solo direzinone del momento
  101.     fParticleGun->SetParticleMomentum(100*GeV);//valore del momento, lo stanzard è MeV
  102.     fParticleGun->SetParticleDefinition(proton);  
  103.    
  104.     fParticleGun->GeneratePrimaryVertex(anEvent);
  105.        
  106. }  
  107.    
  108.  //adesso diciamo al main che vogliamo simulare la particella e devo dire anche di disegnare la traittoria con
  109. //UImanager->applycommand("/vis/scene/trajectories/smooth")
  110. //set autorefresh
  111.  
  112.  
  113. //modifico la funzione build in action.hh
  114.    
  115.    
  116.    
  117.    
  118.    
Add Comment
Please, Sign In to add comment