// // ******************************************************************** // * 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: G4UniversalFluctuation.hh,v 1.12 2004/05/11 15:35:07 vnivanch Exp $ // GEANT4 tag $Name: geant4-06-02 $ // // ------------------------------------------------------------------- // // GEANT4 Class header file // // // File name: G4UniversalFluctuation // // Author: Vladimir Ivanchenko // // Creation date: 03.01.2002 // // Modifications: // // 09-12-02 remove warnings (V.Ivanchenko) // 28-12-02 add method Dispersion (V.Ivanchenko) // 07-02-03 change signature (V.Ivanchenko) // 13-02-03 Add name (V.Ivanchenko) // 16-10-03 Changed interface to Initialisation (V.Ivanchenko) // // Class Description: // // Implementation of energy loss fluctuations // ------------------------------------------------------------------- // #ifndef G4UniversalFluctuation_h #define G4UniversalFluctuation_h 1 #include "G4VEmFluctuationModel.hh" class G4UniversalFluctuation : public G4VEmFluctuationModel { public: G4UniversalFluctuation(const G4String& nam = "UniFluc"); ~G4UniversalFluctuation(); G4double SampleFluctuations(const G4Material*, const G4DynamicParticle*, G4double&, G4double&, G4double&); G4double Dispersion( const G4Material*, const G4DynamicParticle*, G4double&, G4double&); void InitialiseMe(const G4ParticleDefinition*); protected: private: // hide assignment operator G4UniversalFluctuation & operator=(const G4UniversalFluctuation &right); G4UniversalFluctuation(const G4UniversalFluctuation&); const G4ParticleDefinition* particle; const G4Material* lastMaterial; G4double particleMass; G4double chargeSquare; // data members to speed up the fluctuation calculation G4double ipotFluct; G4double electronDensity; // G4double zeff; G4double f1Fluct; G4double f2Fluct; G4double e1Fluct; G4double e2Fluct; G4double rateFluct; G4double e1LogFluct; G4double e2LogFluct; G4double ipotLogFluct; G4double minNumberInteractionsBohr; G4double theBohrBeta2; G4double minLoss; G4double sumalim; G4double alim; G4double nmaxCont1; G4double nmaxCont2; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #endif