#ifndef LEMuSRMUONIUM_h #define LEMuSRMUONIUM_h 1 #include "G4VDiscreteProcess.hh" #include "G4EnergyLossTables.hh" #include "G4GPILSelection.hh" #include "G4PhysicsLogVector.hh" #include "G4VPhysicalVolume.hh" #include "G4VParticleChange.hh" #include "G4UnitsTable.hh" #include "G4MaterialCutsCouple.hh" #include "G4ForceCondition.hh" #include "G4ParticleTable.hh" #include "G4DynamicParticle.hh" #include "LEMuSRPrimaryGeneratorAction.hh" #include "yields.h" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class LEMuSRMUONIUM : public G4VDiscreteProcess { public: // with description LEMuSRMUONIUM(const G4String& name="Muformation" , G4ProcessType aType = fElectromagnetic ); ~LEMuSRMUONIUM(); G4VParticleChange* PostStepDoIt( const G4Track& , const G4Step& ); G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition ); G4bool CheckCondition( const G4Step& aStep); G4bool CheckCondition( const G4Step* aStep); G4String p_name, vname; G4double spin, edep, toten, kinen, tof, globaltime, proptime; G4ThreeVector hitpos, hitmom; G4int ID; G4bool condition; void GetDatas( const G4Step* aStep); // model parameters G4ParticleTable* particleTable; G4ParticleDefinition* particle; Yields Gonin; G4double yvector[3]; G4double rnd; G4DynamicParticle *DP; G4VParticleChange fParticleChange; void PrepareSecondary(const G4Track&); G4Track* aSecondary; void InitializeSecondaries(const G4Track&); }; #endif