Back to Geant4 at Fermilab
Back to Novice examples explained
Back to Key Word Page
Back to Index Page for Example N01
Key Word ="Generating the incident particle"
Listing of PrimaryGeneratorAction
- PrimaryGeneratorAction.cc
- PrimaryGeneratorAction.hh
1. PrimaryGeneratorAction.cc
//
// ********************************************************************
// *
DISCLAIMER
*
//
*
*
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations
in:
*
// *
http://cern.ch/geant4/license
*
//
*
*
// * 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.
*
//
*
*
// * This code implementation is the intellectual
property of the *
// * GEANT4
collaboration.
*
// * By copying, distributing or modifying the Program (or
any work *
// * based on the Program) you indicate
your acceptance of this *
// * statement, and all its
terms.
*
// ********************************************************************
//
//
// $Id: ExN01PrimaryGeneratorAction.cc,v 1.5 2002/05/14 01:50:31 asaim
Exp $
// GEANT4 tag $Name: $
//
#include "ExN01PrimaryGeneratorAction.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "globals.hh"
ExN01PrimaryGeneratorAction::ExN01PrimaryGeneratorAction()
{
G4int n_particle = 1;
particleGun = new G4ParticleGun(n_particle);
G4ParticleTable* particleTable =
G4ParticleTable::GetParticleTable();
G4String particleName;
particleGun->SetParticleDefinition(particleTable->FindParticle(particleName="geantino"));
particleGun->SetParticleEnergy(1.0*GeV);
particleGun->SetParticlePosition(G4ThreeVector(-2.0*m, 0.0,
0.0));
}
ExN01PrimaryGeneratorAction::~ExN01PrimaryGeneratorAction()
{
delete particleGun;
}
void ExN01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4int i = anEvent->GetEventID() % 3;
G4ThreeVector v(1.0,0.0,0.0);
switch(i)
{
case 0:
break;
case 1:
v.setY(0.1);
break;
case 2:
v.setZ(0.1);
break;
}
particleGun->SetParticleMomentumDirection(v);
particleGun->GeneratePrimaryVertex(anEvent);
}
2. PrimaryGeneratorAction.hh
//
// ********************************************************************
// *
DISCLAIMER
*
//
*
*
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations
in:
*
// *
http://cern.ch/geant4/license
*
//
*
*
// * 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.
*
//
*
*
// * This code implementation is the intellectual
property of the *
// * GEANT4
collaboration.
*
// * By copying, distributing or modifying the Program (or
any work *
// * based on the Program) you indicate
your acceptance of this *
// * statement, and all its
terms.
*
// ********************************************************************
//
//
// $Id: ExN01PrimaryGeneratorAction.hh,v 1.4 2002/01/09 17:23:48
ranjard Exp $
// GEANT4 tag $Name: $
//
#ifndef ExN01PrimaryGeneratorAction_h
#define ExN01PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
class G4ParticleGun;
class G4Event;
class ExN01PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
ExN01PrimaryGeneratorAction();
~ExN01PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event* anEvent);
private:
G4ParticleGun* particleGun;
};
#endif
