G4ForwardXrayTR.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 // G4ForwardXrayTR
00030 //
00031 // Class for description
00032 //
00033 // Class for forward X-ray transition radiation generated
00034 // by relativistic charged particle crossed interface between material 1
00035 // and material 2 (1 -> 2)
00036 
00037 // History:
00038 // 22.09.97, V. Grichine (Vladimir.Grichine@cern.ch)
00039 // 26.01.00, V.Grichine, new constructor and protected DM for fast sim. models
00040 // 10.03.03, V.Ivanchenko migrade to "cut per region"
00041 // 03.06.03, V.Ivanchenko fix compilation warnings
00042 
00043 #ifndef G4FORWARDXRAYTR_H
00044 #define G4FORWARDXRAYTR_H
00045 
00046 
00047 #include "globals.hh"
00048 #include "templates.hh"
00049 #include "geomdefs.hh"
00050 #include "Randomize.hh"
00051 #include "G4Step.hh"
00052 #include "G4VDiscreteProcess.hh"
00053 #include "G4DynamicParticle.hh"
00054 #include "G4Material.hh"
00055 #include "G4LogicalBorderSurface.hh"
00056 #include "G4LogicalSkinSurface.hh"
00057 #include "G4OpticalSurface.hh"
00058 #include "G4OpticalPhoton.hh"
00059 #include "G4TransportationManager.hh"
00060 
00061 #include "G4TransitionRadiation.hh"
00062 #include "G4PhysicsTable.hh"
00063 #include "G4Gamma.hh"
00064 #include "G4PhysicsLogVector.hh"
00065 
00066 class G4ForwardXrayTR : public G4TransitionRadiation
00067 {
00068 public:
00069 
00070   // Constructors
00071 
00072   G4ForwardXrayTR(  const G4String& matName1,    //  G4Material* pMat1,
00073                     const G4String& matName2,    //  G4Material* pMat2,     
00074                     const G4String& processName="XrayTR"     );
00075   
00076   G4ForwardXrayTR(  const G4String& processName="XrayTR"     );
00077 
00078   // Destructor //  virtual
00079 
00080   virtual ~G4ForwardXrayTR();
00081 
00083 
00084   void BuildXrayTRtables();
00085 
00086   G4double GetMeanFreePath(const G4Track&, G4double,
00087                            G4ForceCondition* condition);
00088 
00089     G4VParticleChange* PostStepDoIt( const G4Track& aTrack,
00090                                      const G4Step&  aStep    );
00091 
00092   G4double GetEnergyTR(G4int iMat, G4int jMat, G4int iTkin) const;
00093   
00094   G4double GetThetaTR(G4int iMat, G4int jMat, G4int iTkin) const;     
00095 
00096 
00098 //
00099 
00100 G4double SpectralAngleTRdensity( G4double energy,
00101                                  G4double varAngle ) const;
00102 
00103 G4double AngleDensity( G4double energy,
00104                        G4double varAngle ) const;
00105 
00106 G4double EnergyInterval( G4double energy1,
00107                          G4double energy2,
00108                          G4double varAngle ) const;
00109 
00110 G4double AngleSum( G4double varAngle1,
00111                    G4double varAngle2     )  const;
00112 
00114 
00115 G4double SpectralDensity( G4double energy,
00116                           G4double x       ) const;
00117 
00118 G4double AngleInterval( G4double energy,
00119                         G4double varAngle1,
00120                         G4double varAngle2   ) const;
00121 
00122 G4double EnergySum( G4double energy1,
00123                     G4double energy2     )   const;
00124 
00125 
00127 
00128   G4PhysicsTable* GetAngleDistrTable()  { return fAngleDistrTable; };
00129   G4PhysicsTable* GetEnergyDistrTable() { return fEnergyDistrTable; };
00130 
00131   static G4int    GetSympsonNumber()       { return fSympsonNumber;  };
00132   static G4int            GetBinTR()       { return fBinTR;       };
00133 
00134   static G4double GetMinProtonTkin()       { return fMinProtonTkin; };
00135   static G4double GetMaxProtonTkin()       { return fMaxProtonTkin; };
00136   static G4int           GetTotBin()       { return fTotBin;       };
00137 
00138 
00139 protected:  // for access from X-ray TR fast simulation models
00140 
00141   // private :  ///////////////  Data members   ///////////////////////////
00142 
00143 G4ParticleDefinition* fPtrGamma;  // pointer to TR photon
00144 
00145 const std::vector<G4double>* fGammaCutInKineticEnergy;
00146                                      // TR photon cut in energy array
00147 G4double  fGammaTkinCut;            // Tkin cut of TR photon in current mat.
00148 
00149 G4PhysicsTable* fAngleDistrTable;
00150 G4PhysicsTable* fEnergyDistrTable;
00151 
00152 G4PhysicsLogVector* fProtonEnergyVector;
00153 
00154 static G4int fSympsonNumber;                // Accuracy of Sympson integration 
00155 
00156 static G4double fTheMinEnergyTR;            //  static min TR energy
00157 static G4double fTheMaxEnergyTR;            //  static max TR energy
00158        G4double fMinEnergyTR;               //  min TR energy in material
00159        G4double fMaxEnergyTR;               //  max TR energy in material
00160 static G4double  fTheMaxAngle;               //  max theta of TR quanta
00161 static G4double  fTheMinAngle;               //  max theta of TR quanta
00162        G4double  fMaxThetaTR;               //  max theta of TR quanta
00163 static G4int          fBinTR;               //  number of bins in TR vectors
00164 
00165 static G4double fMinProtonTkin;             // min Tkin of proton in tables
00166 static G4double fMaxProtonTkin;             // max Tkin of proton in tables
00167 static G4int    fTotBin;             // number of bins in log scale
00168        G4double fGamma;             // current Lorentz factor
00169 
00170 static G4double fPlasmaCof;               // physical consts for plasma energy
00171 static G4double fCofTR;
00172 
00173 G4double fSigma1;                       // plasma energy Sq of matter1
00174 G4double fSigma2;                       // plasma energy Sq of matter2
00175 
00176 private:
00177   // Operators
00178 
00179   G4ForwardXrayTR(const G4ForwardXrayTR& right) ;
00180 
00181   G4ForwardXrayTR& operator=(const G4ForwardXrayTR& right);
00182 
00183   // G4int operator==(const G4ForwardXrayTR& right)const;
00184   // G4int operator!=(const G4ForwardXrayTR& right)const;
00185 
00186 };    // end of G4ForwardXrayTR class ---------------------------
00187 
00188 #endif   // G4FORWARDXRAYTR_H
00189 
00190 
00191 

Generated on Mon May 27 17:48:17 2013 for Geant4 by  doxygen 1.4.7