G4ePolarizedIonisation.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // $Id: G4ePolarizedIonisation.hh 69847 2013-05-16 09:36:18Z gcosmo $
00027 // -------------------------------------------------------------------
00028 //
00029 // GEANT4 Class header file
00030 //
00031 //
00032 // File name:     G4ePolarizedIonisation
00033 //
00034 // Author:        A.Schaelicke on base of Vladimir Ivanchenko code
00035 //
00036 // Creation date: 10.11.2005
00037 //
00038 // Modifications:
00039 //
00040 // 10-11-05, include polarization description (A.Schaelicke)
00041 // , create asymmetry table and determine interactionlength 
00042 // , update polarized differential cross section 
00043 //
00044 // 20-08-06, modified interface (A.Schaelicke)
00045 // 11-06-07, add PostStepGetPhysicalInteractionLength (A.Schalicke)
00046 //
00047 // Class Description:
00048 //
00049 // polarized version of G4eIonisation
00050 // ----------------------------------------------------------------------------
00051 // -------------------------------------------------------------------
00052 //
00053 
00054 #ifndef G4ePolarizedIonisation_h
00055 #define G4ePolarizedIonisation_h 1
00056 
00057 #include "G4VEnergyLossProcess.hh"
00058 #include "G4Electron.hh"
00059 #include "G4Positron.hh"
00060 
00061 class G4Material;
00062 class G4ParticleDefinition;
00063 class G4VEmFluctuationModel;
00064 class G4PolarizedMollerBhabhaModel;
00065 
00066 class G4ePolarizedIonisation : public G4VEnergyLossProcess
00067 {
00068 
00069 public:
00070 
00071   G4ePolarizedIonisation(const G4String& name = "pol-eIoni");
00072 
00073   virtual ~G4ePolarizedIonisation();
00074 
00075   G4bool IsApplicable(const G4ParticleDefinition& p);
00076 
00077   // Print out of the class parameters
00078   virtual void PrintInfo();
00079 
00080 protected:
00081 
00082   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
00083                                            const G4ParticleDefinition*);
00084 
00085   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*,
00086                                     const G4Material*, G4double cut);
00087 
00088 
00089   // for polarization
00090   G4double PostStepGetPhysicalInteractionLength(
00091                              const G4Track& track,
00092                              G4double   previousStepSize,
00093                              G4ForceCondition* condition
00094                             );
00095 
00096   G4double GetMeanFreePath(const G4Track& track,
00097                               G4double previousStepSize,
00098                               G4ForceCondition* condition);
00099 
00100   virtual void BuildPhysicsTable(const G4ParticleDefinition&);
00101 
00102   G4double ComputeAsymmetry(G4double energy,
00103                             const G4MaterialCutsCouple* couple,
00104                             const G4ParticleDefinition& particle,
00105                             G4double cut,
00106                             G4double &tasm);
00107 
00108 protected:
00109 
00110   const G4ParticleDefinition* DefineBaseParticle(const G4ParticleDefinition* p);
00111 
00112 private:
00113   G4ePolarizedIonisation & operator=(const G4ePolarizedIonisation &right);
00114   G4ePolarizedIonisation(const G4ePolarizedIonisation&);
00115 
00116   G4ParticleDefinition* theElectron;
00117   G4VEmFluctuationModel* flucModel;
00118   G4PolarizedMollerBhabhaModel* emModel;
00119 
00120   G4bool isElectron;
00121   G4bool isInitialised;
00122 
00123   // for polarization:
00124   G4ThreeVector theTargetPolarization;
00125 
00126 
00127   
00128   G4PhysicsTable* theAsymmetryTable;          // table for cross section assym.
00129   G4PhysicsTable* theTransverseAsymmetryTable; // table for transverse cross section assym.
00130 };
00131 
00132 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00134 
00135 inline G4double G4ePolarizedIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
00136                                                    const G4Material*,
00137                                                          G4double cut)
00138 {
00139   G4double x = cut;
00140   if(isElectron) x += cut;
00141   return x;
00142 }
00143 
00144 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00145 
00146 inline G4bool G4ePolarizedIonisation::IsApplicable(const G4ParticleDefinition& p)
00147 {
00148   return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
00149 }
00150 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00151 
00152 #endif

Generated on Mon May 27 17:48:10 2013 for Geant4 by  doxygen 1.4.7