| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DsPmtModel.cc

Go to the documentation of this file.
00001 #include "DsPmtModel.h"
00002 
00003 #include "G4OpticalPhoton.hh"
00004 #include "G4FastTrack.hh"
00005 #include "G4TransportationManager.hh"
00006 #include "G4Navigator.hh"
00007 #include "G4VSensitiveDetector.hh"
00008 
00009 class G4Hooks {
00010 public:
00011     G4Hooks()
00012         : fakeStep(new G4Step)
00013         , touchable(new G4TouchableHistory )
00014         , navi(new G4Navigator) 
00015         , setup(false) { }
00016 
00017     ~G4Hooks() {
00018         delete fakeStep;
00019         delete navi;
00020         
00021     }
00022 
00023     G4Step * fakeStep;
00024     G4TouchableHandle touchable;
00025     G4Navigator* navi;
00026     bool setup;
00027 };
00028 
00029 DsPmtModel::DsPmtModel(const G4String& name, G4Envelope* volume, G4bool unique)
00030     : G4VFastSimulationModel(name,volume,unique)
00031     , m_hooks(new G4Hooks)
00032 {
00033     G4cout << "DsPmtModel " << name <<  " created" << G4endl;
00034 }
00035 
00036 DsPmtModel::DsPmtModel(const G4String& name)
00037     : G4VFastSimulationModel(name)
00038     , m_hooks(new G4Hooks)
00039 {
00040     G4cout << "DsPmtModel " << name <<  " created" << G4endl;
00041 }
00042 
00043 DsPmtModel::~DsPmtModel ()
00044 {
00045     delete m_hooks; m_hooks = 0;
00046 }
00047 
00048     
00049 G4bool DsPmtModel::IsApplicable(const G4ParticleDefinition& particle)
00050 {
00051     G4cout << "DsPmtModel checking if applicable to " << particle.GetParticleName() << G4endl;
00052     return &particle == G4OpticalPhoton::Definition();
00053 }
00054 
00055 G4bool DsPmtModel::ModelTrigger(const G4FastTrack & /*track*/)
00056 {
00057     // Veni, vidi, trigi
00058     return true;
00059 }
00060 
00061 void DsPmtModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep)
00062 {
00063     const G4Track* track = fastTrack.GetPrimaryTrack();
00064     double energy = track->GetKineticEnergy();
00065 
00066     fastStep.ProposeTrackStatus(fStopAndKill);
00067     fastStep.ProposePrimaryTrackPathLength(0.0);
00068     fastStep.ProposeTotalEnergyDeposited(energy);
00069 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:53:24 2011 for DetSim by doxygen 1.4.7