ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4TwoBodyAngularDist.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4TwoBodyAngularDist.hh
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 // Author: Michael Kelsey (SLAC)
27 // Date: 21 February 2013
28 //
29 // Description: Singleton class to evaluate two-body angular distribution
30 // functions based on intial/final state codes.
31 //
32 // 20130307 M. Kelsey -- Add verbosity interface for contained objects
33 // 20130422 M. Kelsey -- Add three-body distributions, for temporary use
34 // 20130619 Change singleton instance to be thread-local, to avoid collisions.
35 // 20130620 Address Coverity warnings about missing copy actions
36 
37 #ifndef G4TwoBodyAngularDist_h
38 #define G4TwoBodyAngularDist_h 1
39 
40 #include "globals.hh"
41 
42 class G4VTwoBodyAngDst;
43 class G4GamP2NPipAngDst;
44 class G4GamP2PPi0AngDst;
45 class G4PP2PPAngDst;
46 class G4NP2NPAngDst;
47 class G4NuclNuclAngDst;
48 class G4Pi0P2Pi0PAngDst;
49 class G4PimP2Pi0NAngDst;
50 class G4PimP2PimPAngDst;
51 class G4PipP2PipPAngDst;
55 class G4GammaNuclAngDst;
56 
57 class G4HadNucl3BodyAngDst; // TEMPORARY, until migration to GENBOD
59 
60 
62 public:
64 
65  static const G4TwoBodyAngularDist* GetInstance();
66 
67  // Return appropriate generator for initial, final state, and kw flag
68  static const G4VTwoBodyAngDst* GetDist(G4int is, G4int fs, G4int kw) {
69  return GetInstance()->ChooseDist(is,fs,kw);
70  }
71 
72  static const G4VTwoBodyAngDst* GetDist(G4int is) {
73  return GetInstance()->ChooseDist(is,0,0);
74  }
75 
76  // Pass verbosity through to owned objects
77  static void setVerboseLevel(G4int vb=0);
78 
79 private:
80  // Constructor is private for singleton
82  const G4VTwoBodyAngDst* ChooseDist(G4int is, G4int fs, G4int kw) const;
83 
84  void passVerbose(G4int verbose);
85 
87 
88  // Generators for various initial/final state combinations
89  G4GamP2NPipAngDst* gp_npip; // gamma p -> n pi+
90  G4GamP2PPi0AngDst* gp_ppi0; // gamma p -> p pi0
91  G4PP2PPAngDst* ppAngDst; // pp, nn elastic
92  G4NP2NPAngDst* npAngDst; // np and pn elastic
93  G4NuclNuclAngDst* nnAngDst; // Y N elastic and inelastic
94  G4Pi0P2Pi0PAngDst* pi0pAngDst; // pi0 p, pi0 n elastic
95  G4PimP2Pi0NAngDst* pipCXAngDst; // pi- p, pi+ n, pi0 p, pi0 n charge exchange
96  G4PimP2PimPAngDst* pimpAngDst; // pi- p, pi+ n elastic
97  G4PipP2PipPAngDst* pippAngDst; // pi+ p, pi- n elastic
98 
99  G4PiNInelasticAngDst* qxAngDst; // pi N charge/strangeness exchange
100  G4HadNElastic1AngDst* hn1AngDst; // pi+p and related elastic scattering
101  G4HadNElastic2AngDst* hn2AngDst; // pi-p and related elastic scattering
102  G4GammaNuclAngDst* gnAngDst; // gamma N inelastic
103 
104  // TEMPORARY generators for three-body final states
105  G4HadNucl3BodyAngDst* hn3BodyDst; // (pi,K,Y,g) N -> XYZ scattering
106  G4NuclNucl3BodyAngDst* nn3BodyDst; // N N -> XYZ scattering
107 
108 private:
109  // Copying of modules is forbidden
112 };
113 
114 #endif /* G4TwoBodyAngularDist_h */