Hands-on 6

Code for download: session6_start.tar.gz

Exercise 6a:

With use of G4AnalysisManager (see example B4/B4d ):

  1. Create & fill histogram

    • Define a 1D histogram for the energy deposited per event for each calorimeter layer

    • Implement filling of histograms in the EmCalorimeterSD::EndOfEvent() function. Hint: To access the i-th calorimeter hit from fHitsCollection:

      EmCalorimeterHit* hit = (EmCalorimeterHit*)(*fHitsCollection)[i];
      
    • Activate plotting of histograms using the UI command(s)

  2. Create & fill ntuples

    • Define two ntuples representing the tracker chamber hits in each tracker chamber (one in the first arm and one in the second arm)

      • the chamber layer number
      • hit local position (x, y, z)
    • Implement filling of the ntuples in ChamberSD::ProcessHits();

      • Note that there is added a new data member, fNtupleId, in the ChamberSD class which allows to associate each tracker chamber with one of created ntuples
  3. Inspect generated file in ROOT with the ROOT browser

    • The command to call Root:
      root
      

Exercise 6b:

  • Inspect the implementation of a command using G4GenericMessenger in the EventAction class, execute the command to inactivate verbose mode and run a new event

  • Implement a command to activate or inactivate the randomizing of the particle direction in the primary generator action using G4GenericMessenger in an analogous way as the command in EventAction

    • Add a G4GenericMessenger object in PrimaryGeneratorAction
    • Call its DeclareProperty method to create setRandomize command associated with already existing data member fRandomize of a G4bool type

Solution: session6_solution.tar.gz