G4PolarizedCompton.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 // -------------------------------------------------------------------
00027 //
00028 // GEANT4 Class header file
00029 //
00030 //
00031 // File name:     G4PolarizedCompton
00032 //
00033 // Author:        Andreas Schaelicke
00034 //                based on code by Michel Maire / Vladimir IVANTCHENKO
00035 // Class description
00036 //
00037 // modified version respecting media and beam polarization
00038 //     using the stokes formalism
00039 //
00040 // Creation date: 01.05.2005
00041 //
00042 // Modifications:
00043 //
00044 // 01-01-05, include polarization description (A.Stahl)
00045 // 01-01-05, create asymmetry table and determine interactionlength (A.Stahl)
00046 // 01-05-05, update handling of media polarization (A.Schalicke)
00047 // 01-05-05, update polarized differential cross section (A.Schalicke)
00048 // 26-07-06, cross section recalculated (P.Starovoitov)
00049 // 09-08-06, make it work under current geant4 release (A.Schalicke)
00050 // 11-06-07, add PostStepGetPhysicalInteractionLength (A.Schalicke)
00051 //
00052 // -----------------------------------------------------------------------------
00053 
00054 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00055 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00056 
00057 #ifndef PolarizedComptonScattering_h
00058 #define PolarizedComptonScattering_h 1
00059 
00060 #include "globals.hh"
00061 #include "G4VEmProcess.hh"
00062 #include "G4Gamma.hh"
00063 
00064 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00065 
00066 class G4ParticleDefinition;
00067 class G4VEmModel;
00068 class G4MaterialCutsCouple;
00069 class G4DynamicParticle;
00070 
00071 class G4PolarizedComptonModel;
00072 
00073 class G4PolarizedCompton : public G4VEmProcess
00074 
00075 {
00076 public:  // with description
00077 
00078   G4PolarizedCompton(const G4String& processName ="pol-compt",
00079                       G4ProcessType type = fElectromagnetic);
00080 
00081   virtual ~G4PolarizedCompton();
00082 
00083   // true for Gamma only.  
00084   G4bool IsApplicable(const G4ParticleDefinition&);
00085 
00086   // Print few lines of informations about the process: validity range,
00087   virtual void PrintInfo();
00088 
00089   void SetModel(const G4String& name);
00090 
00091 protected:
00092 
00093   virtual void InitialiseProcess(const G4ParticleDefinition*);
00094 
00095   // added for polarization treatment of polarized media:
00096   virtual void BuildPhysicsTable(const G4ParticleDefinition&);
00097   virtual void PreparePhysicsTable(const G4ParticleDefinition&);
00098   void BuildAsymmetryTable(const G4ParticleDefinition& part);
00099   G4double ComputeAsymmetry(G4double energy,
00100                             const G4MaterialCutsCouple* couple,
00101                             const G4ParticleDefinition& particle,
00102                             G4double cut,
00103                             G4double & tAsymmetry);
00104 
00105   virtual G4double GetMeanFreePath(const G4Track& aTrack,     
00106                                    G4double   previousStepSize,
00107                                    G4ForceCondition* condition);
00108   virtual G4double PostStepGetPhysicalInteractionLength(
00109                              const G4Track& track,
00110                              G4double   previousStepSize,
00111                              G4ForceCondition* condition
00112                             );
00113 
00114   // can be removed as soon as G4PolarizationChangeForGamma is fixed!
00115   //  virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
00116 
00117 private:
00118   
00119   G4PolarizedCompton& operator=(const G4PolarizedCompton &right);
00120   G4PolarizedCompton(const G4PolarizedCompton& );
00121      
00122   G4bool          buildAsymmetryTable;
00123   G4bool          useAsymmetryTable;
00124 
00125   G4bool          isInitialised;
00126   G4VEmModel*     selectedModel;
00127   G4int           mType;
00128 
00129   // added for polarization treatment:
00130   G4PolarizedComptonModel* emModel;
00131   G4PhysicsTable* theAsymmetryTable;  // table for crosssection assymmetry
00132   G4ThreeVector targetPolarization;
00133 };
00134 
00135 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00137 
00138 inline G4bool G4PolarizedCompton::IsApplicable(const G4ParticleDefinition& p)
00139 {
00140   return (&p == G4Gamma::Gamma());
00141 }
00142 
00143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00144   
00145 #endif
00146  

Generated on Mon May 27 17:49:23 2013 for Geant4 by  doxygen 1.4.7