Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4PolarizationTransition.hh
이 파일의 문서화 페이지로 가기
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 
57 
59 {
60  typedef std::vector< std::vector<G4complex> > POLAR;
61 
62  public:
63  explicit G4PolarizationTransition();
65 
67  G4int twoJ1, G4int twoJ2,
68  G4int L0, G4int Lp, G4double mpRatio,
69  G4double& cosTheta, G4double& phi);
70 
71  // generic static functions
73  G4int twoJ2, G4int twoJ1) const;
75  G4int Lprime, G4int twoJ2, G4int twoJ1) const;
76 
77  // transition-specific functions
80 
81  void DumpTransitionData(const POLAR& pol) const;
82 
83  inline void SetVerbose(G4int val) { fVerbose = val; };
84 
85  private:
86 
89 
90  // Gamma angle generation and decay: call these functions in this order!
91  // All angles are in the same coordinate system: user may choose any axis
93  G4double GenerateGammaPhi(G4double& cosTheta, const POLAR&);
94 
95  inline G4double LnFactorial(int k) const { return G4Pow::GetInstance()->logfactorial(k); }
96 
104 };
105 
106 
107 #endif
G4double LnFactorial(int k) const
static constexpr double L
Definition: G4SIunits.hh:124
void SampleGammaTransition(G4NuclearPolarization *np, G4int twoJ1, G4int twoJ2, G4int L0, G4int Lp, G4double mpRatio, G4double &cosTheta, G4double &phi)
G4double FCoefficient(G4int K, G4int L, G4int Lprime, G4int twoJ2, G4int twoJ1) const
Double_t K
std::vector< std::vector< G4complex > > POLAR
double G4double
Definition: G4Types.hh:76
static G4Pow * GetInstance()
Definition: G4Pow.cc:57
G4double GammaTransF3Coefficient(G4int K, G4int K2, G4int K1) const
G4double GenerateGammaCosTheta(const POLAR &)
G4double logfactorial(G4int Z) const
Definition: G4Pow.hh:252
int G4int
Definition: G4Types.hh:78
G4double GenerateGammaPhi(G4double &cosTheta, const POLAR &)
const G4PolarizationTransition & operator=(const G4PolarizationTransition &right)=delete
G4double F3Coefficient(G4int K, G4int K2, G4int K1, G4int L, G4int Lprime, G4int twoJ2, G4int twoJ1) const
G4LegendrePolynomial fgLegendrePolys
G4double GammaTransFCoefficient(G4int K) const
void DumpTransitionData(const POLAR &pol) const