G4PolarizedAnnihilationModel.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: G4PolarizedAnnihilationModel.hh 69847 2013-05-16 09:36:18Z gcosmo $
00027 //
00028 // -------------------------------------------------------------------
00029 //
00030 // GEANT4 Class header file
00031 //
00032 //
00033 // File name:     G4PolarizedAnnihilationModel
00034 //
00035 // Author:        Andreas Schaelicke and Pavel Starovoitov
00036 //
00037 // Creation date: 01.05.2005
00038 //
00039 // Modifications:
00040 // 18-07-06 use newly calculated cross sections (P. Starovoitov)
00041 // 21-08-06 update interface to geant4.8.1 (A. Schaelicke)
00042 // 10-07-07 copied Initialise() method from G4eeToTwoGammaModel to provide a  
00043 //          ParticleChangeForGamma object (A. Schaelicke)
00044 //
00045 //
00046 // Class Description:
00047 //
00048 // Implementation of polarized gamma Annihilation scattering on free electron
00049 // 
00050 
00051 // -------------------------------------------------------------------
00052 //
00053 
00054 #ifndef G4PolarizedAnnihilationModel_h
00055 #define G4PolarizedAnnihilationModel_h 1
00056 
00057 #include "G4eeToTwoGammaModel.hh"
00058 #include "G4StokesVector.hh"
00059 
00060 class G4ParticleChangeForGamma;
00061 class G4PolarizedAnnihilationCrossSection;
00062 
00063 class G4PolarizedAnnihilationModel : public G4eeToTwoGammaModel
00064 {
00065 
00066 public:
00067 
00068   G4PolarizedAnnihilationModel(const G4ParticleDefinition* p = 0, 
00069                         const G4String& nam = "Polarized-Annihilation");
00070 
00071   virtual ~G4PolarizedAnnihilationModel();
00072 
00073   virtual void Initialise(const G4ParticleDefinition*, 
00074                           const G4DataVector&);
00075   virtual G4double ComputeCrossSectionPerElectron(
00076                                 const G4ParticleDefinition*,
00077                                       G4double kinEnergy, 
00078                                       G4double cut,
00079                                       G4double emax);
00080   void ComputeAsymmetriesPerElectron(G4double gammaEnergy,
00081                                      G4double & valueX,
00082                                      G4double & valueA,
00083                                      G4double & valueT);
00084 
00085   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00086                                  const G4MaterialCutsCouple*,
00087                                  const G4DynamicParticle*,
00088                                  G4double tmin,
00089                                  G4double maxEnergy);
00090 
00091   // polarized routines 
00092   inline void SetTargetPolarization(const G4ThreeVector & pTarget);
00093   inline void SetBeamPolarization(const G4ThreeVector & pBeam);
00094   inline const G4ThreeVector & GetTargetPolarization() const;
00095   inline const G4ThreeVector & GetBeamPolarization() const;
00096   inline const G4ThreeVector & GetFinalGamma1Polarization() const;
00097   inline const G4ThreeVector & GetFinalGamma2Polarization() const;
00098 private:
00099 
00100   // hide assignment operator
00101   G4PolarizedAnnihilationModel & operator=(const  G4PolarizedAnnihilationModel &right);
00102   G4PolarizedAnnihilationModel(const  G4PolarizedAnnihilationModel&);
00103 
00104   G4PolarizedAnnihilationCrossSection * crossSectionCalculator;
00105   // incomming
00106   G4StokesVector theBeamPolarization;    // positron
00107   G4StokesVector theTargetPolarization;  // electron
00108   // outgoing
00109   G4StokesVector finalGamma1Polarization;
00110   G4StokesVector finalGamma2Polarization;
00111 
00112   G4int verboseLevel;
00113 
00114   G4ParticleChangeForGamma* gParticleChange;
00115   G4bool gIsInitialised;
00116 };
00117 
00118 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00119 
00120 inline void G4PolarizedAnnihilationModel::SetTargetPolarization(const G4ThreeVector & pTarget)
00121 {
00122   theTargetPolarization = pTarget;
00123 }
00124 inline void G4PolarizedAnnihilationModel::SetBeamPolarization(const G4ThreeVector & pBeam)
00125 {
00126   theBeamPolarization = pBeam;
00127 }
00128 inline const G4ThreeVector & G4PolarizedAnnihilationModel::GetTargetPolarization() const
00129 {
00130   return theTargetPolarization;
00131 }
00132 inline const G4ThreeVector & G4PolarizedAnnihilationModel::GetBeamPolarization() const
00133 {
00134   return theBeamPolarization;
00135 }
00136 inline const G4ThreeVector &  G4PolarizedAnnihilationModel::GetFinalGamma1Polarization() const
00137 {
00138   return finalGamma1Polarization;
00139 }
00140 inline const G4ThreeVector & G4PolarizedAnnihilationModel::GetFinalGamma2Polarization() const
00141 {
00142   return finalGamma2Polarization;
00143 }
00144 
00145 #endif

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