Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4PolarizationTransition.hh
Go to the documentation of this file.
1 // ********************************************************************
2 // * License and Disclaimer *
3 // * *
4 // * The Geant4 software is copyright of the Copyright Holders of *
5 // * the Geant4 Collaboration. It is provided under the terms and *
6 // * conditions of the Geant4 Software License, included in the file *
7 // * LICENSE and available at http://cern.ch/geant4/license . These *
8 // * include a list of copyright holders. *
9 // * *
10 // * Neither the authors of this software system, nor their employing *
11 // * institutes,nor the agencies providing financial support for this *
12 // * work make any representation or warranty, express or implied, *
13 // * regarding this software system or assume any liability for its *
14 // * use. Please see the license in the file LICENSE and URL above *
15 // * for the full disclaimer and the limitation of liability. *
16 // * *
17 // * This code implementation is the result of the scientific and *
18 // * technical work of the GEANT4 collaboration. *
19 // * By using, copying, modifying or distributing the software (or *
20 // * any work based on the software) you agree to acknowledge its *
21 // * use in resulting scientific publications, and indicate your *
22 // * acceptance of all terms of the Geant4 Software license. *
23 // ********************************************************************
24 //
25 //
26 // -------------------------------------------------------------------
27 // GEANT4 Class file
28 //
29 // File name: G4PolarizationTransition
30 //
31 // Author: Jason Detwiler (jasondet@gmail.com)
32 //
33 // Creation date: Aug 2012
34 //
35 // Description:
36 // Stores and manipulates the statistical tensor describing the nuclear
37 // polarization (see Alder and Winther, "Electromagnetic Excitation" (1975),
38 // Appendix F). Functions are implemented for generating angular correlations
39 // in gamma decays, following Alder and Winther, Appendix G.
40 // This code assumes no polarization will be detected and uses eqs (17-20).
41 // Adding polarization would require using instead (13) and the more generic
42 // form of the statstical tensor after decay described by equation (6)
43 // Could be expanded to also generate e.g. gamma-beta and other
44 // correlations as well.
45 //
46 // -------------------------------------------------------------------
47 
48 #ifndef G4POLARIZATIONTRANSITION_HH
49 #define G4POLARIZATIONTRANSITION_HH
50 
51 #include "globals.hh"
52 #include "G4LegendrePolynomial.hh"
53 #include "G4PolynomialPDF.hh"
54 #include "G4Pow.hh"
55 
56 class G4Fragment;
57 
59 {
60  typedef std::vector< std::vector<G4complex> > POLAR;
61 
62  public:
63  explicit G4PolarizationTransition();
65 
66  // generic static functions
67  G4double FCoefficient(G4int K, G4int L, G4int Lprime,
68  G4int twoJ2, G4int twoJ1) const;
70  G4int Lprime, G4int twoJ2, G4int twoJ1) const;
71 
72  // transition-specific functions
75 
76  // Gamma angle generation and decay: call these functions in this order!
77  // All angles are in the same coordinate system: user may choose any axis
78  void SetGammaTransitionData(G4int twoJ1, G4int twoJ2, G4int Lbar,
79  G4double delta=0, G4int Lprime=1);
80  G4double GenerateGammaCosTheta(const POLAR&);
81  G4double GenerateGammaPhi(G4double cosTheta, const POLAR&);
83  G4Fragment*);
84 
85  void DumpTransitionData(const POLAR& pol) const;
86 
87  inline void SetVerbose(G4int val) { fVerbose = val; };
88 
89  private:
90 
92  const G4PolarizationTransition& operator=(const G4PolarizationTransition &right) = delete;
93 
94  inline G4double LnFactorial(int k) const { return G4Pow::GetInstance()->logfactorial(k); }
95 
96  G4int fVerbose;
97  G4int fTwoJ1, fTwoJ2;
98  G4int fLbar, fL;
99  G4double fDelta;
100  G4double kEps;
101  G4PolynomialPDF kPolyPDF;
102  G4LegendrePolynomial fgLegendrePolys;
103 };
104 
105 
106 #endif
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double FCoefficient(G4int K, G4int L, G4int Lprime, G4int twoJ2, G4int twoJ1) const
G4double GenerateGammaPhi(G4double cosTheta, const POLAR &)
G4double GammaTransF3Coefficient(G4int K, G4int K2, G4int K1) const
G4double GenerateGammaCosTheta(const POLAR &)
int G4int
Definition: G4Types.hh:78
G4double GammaTransFCoefficient(G4int K) const
void SetGammaTransitionData(G4int twoJ1, G4int twoJ2, G4int Lbar, G4double delta=0, G4int Lprime=1)
G4double F3Coefficient(G4int K, G4int K2, G4int K1, G4int L, G4int Lprime, G4int twoJ2, G4int twoJ1) const
G4double logfactorial(G4int Z) const
Definition: G4Pow.hh:269
void UpdatePolarizationToFinalState(G4double cosTheta, G4double phi, G4Fragment *)
void DumpTransitionData(const POLAR &pol) const
double G4double
Definition: G4Types.hh:76
static constexpr double L
Definition: G4SIunits.hh:124