ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ForwardXrayTR.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ForwardXrayTR.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 //
27 //
28 // G4ForwardXrayTR
29 //
30 // Class for description
31 //
32 // Class for forward X-ray transition radiation generated
33 // by relativistic charged particle crossed interface between material 1
34 // and material 2 (1 -> 2)
35 
36 // History:
37 // 22.09.97, V. Grichine (Vladimir.Grichine@cern.ch)
38 // 26.01.00, V.Grichine, new constructor and protected DM for fast sim. models
39 // 10.03.03, V.Ivanchenko migrade to "cut per region"
40 // 03.06.03, V.Ivanchenko fix compilation warnings
41 
42 #ifndef G4FORWARDXRAYTR_H
43 #define G4FORWARDXRAYTR_H
44 
45 
46 #include "globals.hh"
47 #include "templates.hh"
48 #include "geomdefs.hh"
49 #include "Randomize.hh"
50 #include "G4Step.hh"
51 #include "G4VDiscreteProcess.hh"
52 #include "G4DynamicParticle.hh"
53 #include "G4Material.hh"
55 #include "G4LogicalSkinSurface.hh"
56 #include "G4OpticalSurface.hh"
57 #include "G4OpticalPhoton.hh"
59 
60 #include "G4TransitionRadiation.hh"
61 #include "G4PhysicsTable.hh"
62 #include "G4Gamma.hh"
63 #include "G4PhysicsLogVector.hh"
64 
66 {
67 public:
68 
69  // Constructors
70 
71  explicit G4ForwardXrayTR( const G4String& matName1, // G4Material* pMat1,
72  const G4String& matName2, // G4Material* pMat2,
73  const G4String& processName="XrayTR" );
74 
75  explicit G4ForwardXrayTR( const G4String& processName="XrayTR" );
76 
77  // Destructor // virtual
78 
79  virtual ~G4ForwardXrayTR();
80 
82 
83  void BuildXrayTRtables();
84 
86  G4ForceCondition* condition) override;
87 
88  G4VParticleChange* PostStepDoIt( const G4Track& aTrack,
89  const G4Step& aStep ) override;
90 
91  G4double GetEnergyTR(G4int iMat, G4int jMat, G4int iTkin) const;
92 
93  G4double GetThetaTR(G4int iMat, G4int jMat, G4int iTkin) const;
94 
95 
97 //
98 
100  G4double varAngle ) const override;
101 
103  G4double varAngle ) const;
104 
106  G4double energy2,
107  G4double varAngle ) const;
108 
109 G4double AngleSum( G4double varAngle1,
110  G4double varAngle2 ) const;
111 
113 
115  G4double x ) const;
116 
118  G4double varAngle1,
119  G4double varAngle2 ) const;
120 
121 G4double EnergySum( G4double energy1,
122  G4double energy2 ) const;
123 
124 
126 
129 
130  static G4int GetSympsonNumber();
131  static G4int GetBinTR();
132 
133  static G4double GetMinProtonTkin();
134  static G4double GetMaxProtonTkin();
135  static G4int GetTotBin();
136 
137 
138 protected: // for access from X-ray TR fast simulation models
139 
140  // private : /////////////// Data members ///////////////////////////
141 
142 G4ParticleDefinition* fPtrGamma; // pointer to TR photon
143 
144 const std::vector<G4double>* fGammaCutInKineticEnergy;
145  // TR photon cut in energy array
146 G4double fGammaTkinCut; // Tkin cut of TR photon in current mat.
147 
150 
152 
153 static G4int fSympsonNumber; // Accuracy of Sympson integration
154 
155 static G4double fTheMinEnergyTR; // static min TR energy
156 static G4double fTheMaxEnergyTR; // static max TR energy
157  G4double fMinEnergyTR; // min TR energy in material
158  G4double fMaxEnergyTR; // max TR energy in material
159 static G4double fTheMaxAngle; // max theta of TR quanta
160 static G4double fTheMinAngle; // max theta of TR quanta
161  G4double fMaxThetaTR; // max theta of TR quanta
162 static G4int fBinTR; // number of bins in TR vectors
163 
164 static G4double fMinProtonTkin; // min Tkin of proton in tables
165 static G4double fMaxProtonTkin; // max Tkin of proton in tables
166 static G4int fTotBin; // number of bins in log scale
167  G4double fGamma; // current Lorentz factor
168 
169 static G4double fPlasmaCof; // physical consts for plasma energy
171 
172 G4double fSigma1; // plasma energy Sq of matter1
173 G4double fSigma2; // plasma energy Sq of matter2
174 
175 private:
176  // Operators
177 
178  G4ForwardXrayTR(const G4ForwardXrayTR& right) = delete;
179 
181 
182  // G4bool operator==(const G4ForwardXrayTR& right)const;
183  // G4bool operator!=(const G4ForwardXrayTR& right)const;
184 
185 }; // end of G4ForwardXrayTR class ---------------------------
186 
187 #endif // G4FORWARDXRAYTR_H
188 
189 
190