source: trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh @ 1347

Last change on this file since 1347 was 1347, checked in by garnier, 13 years ago

geant4 tag 9.4

File size: 5.0 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: G4LowEnergyPolarizedRayleigh.hh,v 1.5 2006/06/29 19:36:07 gunter Exp $
27// GEANT4 tag $Name: geant4-09-04-ref-00 $
28//
29// --------------------------------------------------------------
30//
31// File name:     G4LowEnergyPolarizedRayleigh.hh
32//
33// Author:        Capra Riccardo
34//
35// Creation date: May 2005
36//
37// History:
38// -----------
39// 02 May 2005  R. Capra         1st implementation
40//
41//----------------------------------------------------------------
42       
43
44#ifndef   G4LowEnergyPolarizedRayleigh_hh
45 #define  G4LowEnergyPolarizedRayleigh_hh
46 
47 #include "G4VLowEnergyDiscretePhotonProcess.hh"
48
49// G4LowEnergyPolarizedRayleigh
50// The class implements the polarized Rayleigh process
51//
52//          Specialization of G4VLowEnergyDiscretePhotonProcess class.
53//          This is a preliminary implementation of the Rayleigh polarized process.
54//          Reference articles are:
55//
56// Rayleigh process:                     The Quantum Theory of Radiation
57//                                       W. Heitler,       Oxford at the Clarendon Press, Oxford (1954)                                                 
58// Scattering function:                   A simple model of photon transport
59//                                        D.E. Cullen,      Nucl. Instr. Meth. in Phys. Res. B 101 (1995) 499-510                                       
60// Polarization of the outcoming photon:  Beam test of a prototype detector array for the PoGO astronomical hard X-ray/soft gamma-ray polarimeter
61//                                        T. Mizuno et al., Nucl. Instr. Meth. in Phys. Res. A 540 (2005) 158-168                                       
62//
63class G4LowEnergyPolarizedRayleigh : public G4VLowEnergyDiscretePhotonProcess
64{
65public:
66  //   Class constructor
67  //   processName The name of the process
68  G4LowEnergyPolarizedRayleigh(const G4String &processName = "polarLowEnRayleigh");
69
70  //   Class destructor
71  inline virtual ~G4LowEnergyPolarizedRayleigh(void) {}
72
73  //   Calculates the new photon direction and polarization
74  //
75  //   In the code the following definitions are used
76  //   aTrack The track
77  //   aStep  The step
78  //   The proposed changes for the photon
79  virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
80   
81private:
82
83  //   Hides copy constructor
84  G4LowEnergyPolarizedRayleigh(const G4LowEnergyPolarizedRayleigh&);
85
86  //   Hides assignment operator
87  G4LowEnergyPolarizedRayleigh & operator=(const G4LowEnergyPolarizedRayleigh&);
88
89  //   Generates \f$cos \left ( \theta\right )\f$ of the scattered photon
90  //   incomingPhotonEnergy The energy of the incoming photon
91  //   zAtom Atomic number
92  //   \f$cos \left ( \theta\right )\f$
93  G4double GenerateCosTheta(G4double incomingPhotonEnergy, G4int zAtom) const;
94   
95  //   Generates \f$\phi\f$ of the scattered photon
96  //   cosTheta \f$cos \left ( \theta\right )\f$ of the scattered photon
97  //    \f$\phi\f$
98  G4double GeneratePhi(G4double cosTheta) const;
99
100  //   Generates the polarization direction \f$\beta\f$ in the plane x, y relative to the x direction
101  //   \f$\beta\f$
102  G4double GeneratePolarizationAngle(void) const;
103   
104  //   Lower energy limit due to the available data in the physics tables
105  G4double intrinsicLowEnergyLimit;
106
107  //   Higher energy limit due to the available data in the physics tables
108  G4double intrinsicHighEnergyLimit;
109};
110
111#endif /* G4LowEnergyPolarizedRayleigh_hh */
Note: See TracBrowser for help on using the repository browser.