source: trunk/source/processes/electromagnetic/adjoint/include/G4AdjointBremsstrahlungModel.hh

Last change on this file was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 5.4 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: G4AdjointBremsstrahlungModel.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
27// GEANT4 tag $Name: geant4-09-04-beta-01 $
28//
29/////////////////////////////////////////////////////////////////////////////////
30//      Class:          G4AdjointBremsstrahlungModel
31//      Author:         L. Desorgher
32//      Organisation:   SpaceIT GmbH
33//      Contract:       ESA contract 21435/08/NL/AT
34//      Customer:       ESA/ESTEC
35/////////////////////////////////////////////////////////////////////////////////
36//
37// CHANGE HISTORY
38// --------------
39//      ChangeHistory:
40//              15 June 2007 creation by L. Desorgher. Adapted from G4eBremsstrahlungModel 
41//              20-10-2009 Remove all the screening effect that are not considered in the direct models blow 10 GeV. L.Desorgher
42//              4-11-2009  Implement the use of a simple biased differential cross section (C(Z)/Egamma) allowing a rapid computation of adjoint CS
43//                         and rapid sampling of adjoint secondaries. By this way cross section matrices are not used anymore, avoiding a rather
44//                         time consuming computation of adjoint brem cross section matrices for each material at initialisation. This mode is switch on/off
45//                         by selecting SetUseMatrix(false)/ SetUseMatrix(true) in the constructor. L.Desorgher
46//                                     
47//
48//-------------------------------------------------------------
49//      Documentation:
50//              Adjoint Model for e- Bremsstrahlung
51//
52
53
54
55#ifndef G4AdjointBremsstrahlungModel_h
56#define G4AdjointBremsstrahlungModel_h 1
57#include "globals.hh"
58#include "G4VEmAdjointModel.hh"
59#include "G4eBremsstrahlungModel.hh"
60//#include "G4PenelopeBremsstrahlungModel.hh"
61#include "G4PhysicsTable.hh"
62//#include "G4EmModelManager.hh"
63class G4Timer;
64class G4AdjointBremsstrahlungModel: public G4VEmAdjointModel
65
66{
67public:
68
69  G4AdjointBremsstrahlungModel();
70  ~G4AdjointBremsstrahlungModel();
71  virtual void SampleSecondaries(const G4Track& aTrack,
72                                G4bool IsScatProjToProjCase,
73                                G4ParticleChange* fParticleChange);
74  void RapidSampleSecondaries(const G4Track& aTrack,
75                                G4bool IsScatProjToProjCase,
76                                G4ParticleChange* fParticleChange);
77  virtual G4double DiffCrossSectionPerVolumePrimToSecond(
78                                      const G4Material* aMaterial,
79                                      G4double kinEnergyProj,  // kinetic energy of the primary particle before the interaction
80                                      G4double kinEnergyProd // kinetic energy of the secondary particle
81                                      ); 
82  G4double DiffCrossSectionPerVolumePrimToSecondApproximated1(
83                                      const G4Material* aMaterial,
84                                      G4double kinEnergyProj,  // kinetic energy of the primary particle before the interaction
85                                      G4double kinEnergyProd // kinetic energy of the secondary particle
86                                      ); 
87  G4double DiffCrossSectionPerVolumePrimToSecondApproximated2(
88                                      const G4Material* aMaterial,
89                                      G4double kinEnergyProj,  // kinetic energy of the primary particle before the interaction
90                                      G4double kinEnergyProd // kinetic energy of the secondary particle
91                                      ); 
92  virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
93                                             G4double primEnergy,
94                                             G4bool IsScatProjToProjCase); 
95 
96 
97 // private void InitialiseFwdModels();
98
99
100private: 
101   G4eBremsstrahlungModel* theDirectStdBremModel;
102  //G4PenelopeBremsstrahlungModel* theDirectPenelopeBremModel;
103
104
105  G4double highKinEnergy;
106  G4double lowKinEnergy;
107 
108 
109  std::vector<G4DataVector*> partialSumSigma;
110 
111 
112 
113  std::vector<float> SigmaPerAtom; 
114  G4Timer* theTimer;
115 
116  G4double MigdalConstant;
117  G4double lastCZ;
118 
119
120 /*
121  G4bool UsePenelopeModel;
122  G4EmModelManager* theEmModelManagerForFwdModels;
123  G4bool isPenelopeModelInitialised ;
124 */ 
125 
126 
127};
128
129
130#endif
Note: See TracBrowser for help on using the repository browser.