Skip to content
Snippets Groups Projects
SteppingAction.cc 3.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • Chad Lantz's avatar
    Chad Lantz committed
    //
    // ********************************************************************
    // * License and Disclaimer                                           *
    // *                                                                  *
    // * The  Geant4 software  is  copyright of the Copyright Holders  of *
    // * the Geant4 Collaboration.  It is provided  under  the terms  and *
    // * conditions of the Geant4 Software License,  included in the file *
    // * LICENSE and available at  http://cern.ch/geant4/license .  These *
    // * include a list of copyright holders.                             *
    // *                                                                  *
    // * Neither the authors of this software system, nor their employing *
    // * institutes,nor the agencies providing financial support for this *
    // * work  make  any representation or  warranty, express or implied, *
    // * regarding  this  software system or assume any liability for its *
    // * use.  Please see the license in the file  LICENSE  and URL above *
    // * for the full disclaimer and the limitation of liability.         *
    // *                                                                  *
    // * This  code  implementation is the result of  the  scientific and *
    // * technical work of the GEANT4 collaboration.                      *
    // * By using,  copying,  modifying or  distributing the software (or *
    // * any work based  on the software)  you  agree  to acknowledge its *
    // * use  in  resulting  scientific  publications,  and indicate your *
    // * acceptance of all terms of the Geant4 Software license.          *
    // ********************************************************************
    //
    //
    
    clantz's avatar
    clantz committed
    /// \file SteppingAction.cc
    /// \brief Implementation of the SteppingAction class
    
    Chad Lantz's avatar
    Chad Lantz committed
    
    
    clantz's avatar
    clantz committed
    #include "SteppingAction.hh"
    
    Chad Lantz's avatar
    Chad Lantz committed
    
    #include "G4Step.hh"
    #include "G4Track.hh"
    #include "G4OpticalPhoton.hh"
    
    #include "G4Event.hh"
    #include "G4RunManager.hh"
    
    
    clantz's avatar
    clantz committed
    /*
    */
    SteppingAction::SteppingAction()
    
    Chad Lantz's avatar
    Chad Lantz committed
    : G4UserSteppingAction()
    
    clantz's avatar
    clantz committed
    {
    
    Chad Lantz's avatar
    Chad Lantz committed
      fScintillationCounter = 0;
      fCerenkovCounter      = 0;
      fEventNumber = -1;
    }
    
    
    clantz's avatar
    clantz committed
    /*
    */
    SteppingAction::~SteppingAction()
    
    Chad Lantz's avatar
    Chad Lantz committed
    { ; }
    
    
    clantz's avatar
    clantz committed
    /*
    */
    void SteppingAction::UserSteppingAction(const G4Step* step)
    
    Chad Lantz's avatar
    Chad Lantz committed
    {
      G4int eventNumber = G4RunManager::GetRunManager()->
                                                  GetCurrentEvent()->GetEventID();
    
      if (eventNumber != fEventNumber) {
         fEventNumber = eventNumber;
         fScintillationCounter = 0;
         fCerenkovCounter = 0;
      }
    
      G4Track* track = step->GetTrack();
    
      G4String ParticleName = track->GetDynamicParticle()->
                                     GetParticleDefinition()->GetParticleName();
    
      if (ParticleName == "opticalphoton") return;
    
      const std::vector<const G4Track*>* secondaries =
                                                step->GetSecondaryInCurrentStep();
    
      if (secondaries->size()>0) {
         for(unsigned int i=0; i<secondaries->size(); ++i) {
            if (secondaries->at(i)->GetParentID()>0) {
               if(secondaries->at(i)->GetDynamicParticle()->GetParticleDefinition()
                   == G4OpticalPhoton::OpticalPhotonDefinition()){
                  if (secondaries->at(i)->GetCreatorProcess()->GetProcessName()
                   == "Scintillation")fScintillationCounter++;
                  if (secondaries->at(i)->GetCreatorProcess()->GetProcessName()
                   == "Cerenkov")fCerenkovCounter++;
               }
            }
         }
      }
    }