musrsim/geant4/LEMuSR/include/LEMuSRPrimaryGeneratorAction.hh
2005-11-11 12:35:21 +00:00

100 lines
2.9 KiB
C++

///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
//
// ID : LEMuSRPrimaryGeneratorAction.hh , v 1.3
// AUTHOR: Taofiq PARAISO
// DATE : 2004-09-16 09:12
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
//
// & &&&&&&&&&& &&&&&&& &&&&&&&&
// & & && && & &&
// & & & & & & &&
// & &&&&&&& & & &&&&&& &&&&&&&&
// & & & && & & &&
// & & && & & && && & &
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
// &
// &
// &
// &
// PRIMARY GENERATOR ACTION
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
#ifndef LEMuSRPrimaryGeneratorAction_h
#define LEMuSRPrimaryGeneratorAction_h 1
// G4 LIBRARIES
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#include "G4ThreeVector.hh"
#include "LEMuSRParticleGun.hh"
#include "G4Event.hh"
#include "Randomize.hh"
#include "G4ParticleGun.hh"
#include "LEMuSRPgaMessenger.hh"
#include <iomanip>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <ios>
// G4 CLASSES
//class G4RandGauss;
class G4ParticleGun;
class LEMuSRParticleGun;
class G4Event;
// LEMuSRPrimaryGeneratorAction CLASS DEFINITION
class LEMuSRPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
// Constructor & Destructor
public:
LEMuSRPrimaryGeneratorAction();
~LEMuSRPrimaryGeneratorAction();
static LEMuSRPrimaryGeneratorAction* thePGA;
static LEMuSRPrimaryGeneratorAction* GetPGA();
// Event generation method
void GeneratePrimaries(G4Event* anEvent);
void GetScanningMode(G4int scan_mode);
private:
LEMuSRParticleGun* lemuParticleGun;
public:
double rndenergy;
G4double decaytime, energy;
HepRandomEngine * theEngine;
G4double X, Y, Z,momX, momY, momZ, m_xrange, m_yrange;
G4int m_counterx, m_nbxsteps, m_countery, m_nbysteps, scan, gauss;
G4double radius, angle, mean, stddev, sc_mean, sc_stddev;
G4double circ;
G4bool rnd;
LEMuSRPgaMessenger* messenger;
G4double charge, ke_offset;
G4String pname;
//===============================
std::ofstream Yprint;
double table[1000];
int i,j;
};
#endif