00001 //---------------------------------------------------------------------------// 00002 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu// 00003 // // 00004 // MAJORANA Simulation // 00005 // // 00006 // This code implementation is the intellectual property of the // 00007 // MAJORANA Collaboration. It is based on Geant4, an intellectual // 00008 // property of the RD44 GEANT4 collaboration. // 00009 // // 00010 // ********************* // 00011 // // 00012 // Neither the authors of this software system, nor their employing // 00013 // institutes, nor the agencies providing financial support for this // 00014 // work make any representation or warranty, express or implied, // 00015 // regarding this software system or assume any liability for its use. // 00016 // By copying, distributing or modifying the Program (or any work based // 00017 // on on the Program) you indicate your acceptance of this statement, // 00018 // and all its terms. // 00019 // // 00020 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu// 00021 //---------------------------------------------------------------------------// 00032 // Begin description of class here 00044 // End class description 00045 // 00050 // 00051 // --------------------------------------------------------------------------// 00063 // --------------------------------------------------------------------------// 00064 00065 #ifndef _MJGENERATORTUNLFEL_HH 00066 #define _MJGENERATORTUNLFEL_HH 00067 00068 //---------------------------------------------------------------------------// 00069 00070 #include "globals.hh" 00071 #include "G4ThreeVector.hh" 00072 00073 #include "generators/MJVGenerator.hh" 00074 00075 //---------------------------------------------------------------------------// 00076 00077 class G4Event; 00078 class G4Messenger; 00079 class G4ParticleGun; 00080 class G4Run; 00081 00082 class MJGeneratorTUNLFEL : public MJVGenerator 00083 { 00084 public: 00085 00086 //default constructor 00087 MJGeneratorTUNLFEL(); 00088 00089 //copy constructor 00090 MJGeneratorTUNLFEL(const MJGeneratorTUNLFEL &); 00091 00092 //destructor 00093 ~MJGeneratorTUNLFEL(); 00094 00095 //public interface 00096 void BeginOfEventAction(G4Event *event); 00097 void BeginOfRunAction(G4Run const *run); 00098 void Dump(); 00099 void EndOfRunAction(G4Run const *run); 00100 void GeneratePrimaryVertex(G4Event *event); 00101 void SetDefaults(); 00102 00103 G4double GetCurrentEnergy() { return fCurrentEnergy; } 00104 G4ThreeVector GetCurrentPosition() { return fCurrentPosition; } 00105 00106 //This method is not used but it is necessary 00107 //because it is purely virtual in MJVGenerator 00108 void SetParticlePosition(G4ThreeVector vec) {;} 00109 00110 void SetEnergySigma(G4double energysigma) { fEnergySigma = energysigma; } 00111 void SetMajorSigma(G4double majorsig) { fMajorSigma = majorsig; } 00112 void SetMeanEnergy(G4double energy) { fMeanEnergy = energy; } 00113 void SetMinorSigma(G4double minorsig) { fMinorSigma = minorsig; } 00114 void SetOrigin(G4ThreeVector origin) { fOrigin = origin; } 00115 void SetRho(G4double rho) { fRho = rho; } 00116 00117 //protected members 00118 protected: 00119 00120 //private members 00121 private: 00122 G4ParticleGun *fParticleGun; 00123 00124 G4double fCurrentEnergy; // Energy of current particle. 00125 G4ThreeVector fCurrentPosition; // Current position of particle 00126 // generated. 00127 G4ThreeVector fDirection; // Direction of Beam 00128 G4double fEnergySigma; // Energy spread of beam (sigma). 00129 G4double fMajorSigma; // Beam width (sigma) along major axis 00130 G4double fMeanEnergy; // Mean energy of beam 00131 G4double fMinorSigma; // Beam width along minor axis. 00132 G4ThreeVector fOrigin; // Beam origin. Particles will be 00133 // distributed around this point. 00134 G4double fRho; // Major angle of beam ellips relative to x-axis. 00135 }; 00136 #endif