Skip to content
Snippets Groups Projects
README.md 3.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • clantz's avatar
    clantz committed
    
    ### ZDC Light Guide Monte Carlo
    
    
    This simulation is based on OpNovice and OpNovice2
    
    Build requirements
      Geant4 compiled with GDML and additional datasets
      ROOT
      -CADMesh is required to read CAD models (i.e. stl, step), but is optional for compiling
    
    #### main()
    
    define Random Number Engine, initial seed, CAD input and GDML output
    
    #### G4VUserPhysicsList
    
     - Define particles; including - *** G4OpticalPhoton     ***
     - Define processes; including
       - *** G4Cerenkov          ***
       - *** G4Scintillation     ***
       - *** G4OpAbsorption      ***
       - *** G4OpRayleigh        ***
       - *** G4OpBoundaryProcess ***
    
    #### Materials
    
    defines many materials for potential use
        For our purposes the G4OpticalSurface AlSurface and the G4Material Al and Air
        will be given optical properties and used for construction.
    
    #### G4VUserDetectorConstruction
    
    A light guide is made either by simple G4trd or by importing a model
        via CADMesh.
        define G4LogicalBorderSurface between the light guide and world volume
        defines a PMT window sensitive detector at the top of the light guide
        AlSurface properties can be modified via DetectorMessenger via the following commands
    
        /lightGuide/surfaceModel
        /lightGuide/surfaceType
        /lightGuide/surfaceFinish
        /lightGuide/surfaceSigmaAlpha
        /lightGuide/surfaceProperty
    
    examples can be found in run1.mac
    
    #### G4VUserPrimaryGeneratorAction
    
    Use G4GeneralParticleSource to shoot an optical photon into the light guide
    Particle type and distribution is set in run1.mac
    
    #### G4UserRunAction
    
    define G4Timer (start/stop)
    define G4AnalysisManager (output .root file)
    set verbose levels
    
    #### PMTHit
    
    stores G4int         trackID,
           G4ThreeVector pos;      // Origin position of the photon
           G4ThreeVector hit;      // Location where the photon hit the PMT window
           G4double      energy;   // Energy of the photon
           G4ThreeVector momentum; // Momentum of the photon (direction)
           G4double      time;     // Time of arrival of the photon
    for each hit on the PMT sensitive detector
    
    #### PMTSD
    
    Records a PMTHit if the photon strikes the PMT window
    
    #### G4UserEventAction
    
     Show how to count the number of secondary particles in an event
    
    #### Visualisation
    
     The Visualization Manager is set in the main().
     The initialisation of the drawing is done via a set of /vis/ commands
     in the macro vis.mac. This macro is automatically read from
     the main in case of interactive running mode.
    
    #### How to start
    
     - compile and link to generate an executable
    ```
      $ mkdir zdclg-build zdclg-install
      $ cd zdclg-build
      $ cmake -DCMAKE_INSTALL_PREFIX=../zdclg-install /path/to/zdclg
    ```
    
       This example handles the program arguments in a new way.
       It can be run with the following optional arguments:
    ```
      $ ./lightGuide [-m macro ]
                      [-u UIsession]
                      [-t nThreads]
                      [-r seed]
                      [-o outputFileName]
                      [-c CADmodelName filetype]
                      [-co GDMLoutFileName]
    ```
    
       The -t option is available only in multi-threading mode
       and it allows the user to override the Geant4 default number of
       threads. The number of threads can be also set via G4FORCENUMBEROFTHREADS
       environment variable which has the top priority.
    
     - execute lightGuide in 'batch' mode from macro files
    ```
       $ ./lightGuide -m run1.mac
    ```
    
     - execute lightGuide in 'interactive mode' with visualization
    ```
    $ lightGuide
    ....
    Idle> type your commands. For instance:
    Idle> /control/execute run1.mac
    ....
    Idle> exit
    ```