gabbbri_ella

messenger per detector construction

May 17th, 2022 (edited)
566
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. //DEFINIRE UN MESSENGER
  2. //si usa per manipolare alcuni parametri, come il particlegun in run time.
  3. //ad esempio nella giometria lo si può usare per manipolare lo spessore del radiator, grazie al  numero di fotosensori.
  4.  
  5. mettiamoci nel detector construction.
  6.  
  7. 1) ci sono molti messenger disponibili in geant4, quello generico è il più semplice da implementare
  8.  
  9. nel detectorconstruction.hh si implementa
  10. #include G4GenericMessenger.hh
  11.  
  12. adesso possiamo create oggetti ad esempio nella nostra sessione privata della classe MydetectorConstruction
  13. ...........
  14. private:
  15.    G4GenericMessenger* fMessenger; //nome dell'oggetto
  16. .......
  17.  
  18. adesso mi sposto in Mydetectorconstruction.cc
  19.  
  20. nel costruttore scriviamo
  21. fMessenger* new G4GenericMessenger("this, "/detector/", "Detector Construction");
  22. //si definisce l'oggetto a cui ci riferiamo, noi scriviamo this perchè ci riferiamo al nostro detector construction, "detector" è il nome della cartella root in cui da adesso in poi si troveranno tutti i comandi, Detector Construction" è un tipo di help-test che sarà utile all'user per identificare che tipo di cose posso fare con questo messenger.
  23.  
  24. //adesso possiamo usare questo messenger per definire i nostri comandi, DeclareProperty è la funzione da usare per definire i comandi.
  25. fMessenger->DeclareProperty("nCols", nCols, "Number of Columns");
  26. //mettiamo dentro i nomi dei comandi che vogliamo ripetere in geant4: "nCols=voglio cambiare i numeri dei fotosensori, il nome della variabile sarà ancora nCols , e poi metto  un altro help-test per dire all'user quello che voglio fare con questo.
  27. //analogamente posso farlo con le righe
  28. fMessenger->DeclareProperty("nRows", nRows, "Number of Rows");  
  29.                                    
  30. //adesso dichiariamo queste due variabili nella parte privata della classe in detectorconstruction.hh
  31.                                    
  32.  private:
  33.     G4int nCols, nRows
  34.    
  35.  //adesso definiamo in .cc il valore di queste variabili
  36.  
  37.  ncols=100;
  38.  nrows=100;
  39.                                    
  40.  //adesso vediamo se compilando ci sono stati errori. la  geometria non cambia ma nella visualizzazione grafica adesso ci sarà una cartella con scritto detector e il numero di colonne e righe da poter modificare. a questo punto sarebbe una buona cosa parametrizzare il codice.                                
  41.  
Add Comment
Please, Sign In to add comment