G4PomeronCrossSection.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 #ifndef G4PomeronCrossSection_h
00027 #define G4PomeronCrossSection_h 1
00028 //
00029 // $Id$
00030 //
00031 #include "G4Proton.hh"
00032 #include "G4Neutron.hh"
00033 
00034 #include "G4PionPlus.hh"
00035 #include "G4PionMinus.hh"
00036 #include "G4PionZero.hh"
00037 
00038 #include "G4KaonPlus.hh"
00039 #include "G4KaonMinus.hh"
00040 #include "G4KaonZero.hh"
00041 #include "G4KaonZeroShort.hh"
00042 #include "G4KaonZeroLong.hh"
00043 #include "G4Gamma.hh"
00044 
00045 class G4PomeronCrossSection
00046 {
00047 
00048   public:
00049         G4PomeronCrossSection(const G4ParticleDefinition * );
00050         G4PomeronCrossSection(const G4Proton * );
00051         G4PomeronCrossSection(const G4Neutron * );
00052 
00053         G4PomeronCrossSection(const G4PionPlus * );
00054         G4PomeronCrossSection(const G4PionMinus * );
00055         G4PomeronCrossSection(const G4PionZero * );
00056 
00057         G4PomeronCrossSection(const G4KaonPlus * );
00058         G4PomeronCrossSection(const G4KaonMinus * );
00059         G4PomeronCrossSection(const G4KaonZero * );
00060         G4PomeronCrossSection(const G4KaonZeroLong * );
00061         G4PomeronCrossSection(const G4KaonZeroShort * );
00062 
00063         G4PomeronCrossSection(const G4Gamma * );
00064 
00065         ~G4PomeronCrossSection();
00066 //                                      s = (center of mass energy)**2  
00067         G4double GetTotalCrossSection(const G4double s);
00068         G4double GetDiffractiveCrossSection(const G4double s);
00069         G4double GetElasticCrossSection(const G4double s);
00070         G4double GetInelasticCrossSection(const G4double s);
00071 
00072         G4double GetTotalProbability(const G4double s, 
00073                                   const G4double impactsquare);
00074         G4double GetDiffractiveProbability(const G4double s,
00075                                         const G4double impactsquare);
00076         G4double GetNondiffractiveProbability(const G4double s,
00077                                         const G4double impactsquare);
00078         G4double GetElasticProbability(const G4double s,
00079                                     const G4double impactsquare);
00080 
00081         G4double GetInelasticProbability(const G4double s, 
00082                                       const G4double impactsquare);
00083                                       
00084         G4double GetCutPomeronProbability(const G4double s,
00085                         const G4double impactsquare, const G4int nPomerons);
00086         
00087         void Setgamma(const G4double agam); // temporary only! GF.
00088         G4double SoftEikonal(G4double s, G4double impactsquare);
00089         G4double HardEikonal(G4double s, G4double impactsquare);
00090         
00091         void Pomeron_S(G4double apomeron_S){ pomeron_S = apomeron_S;}
00092         void Pomeron_Gamma(G4double apomeron_Gamma){ pomeron_Gamma = apomeron_Gamma;}
00093         void Pomeron_C(G4double apomeron_C){ pomeron_C = apomeron_C;}
00094         void Pomeron_Rsquare(G4double apomeron_Rsquare){ pomeron_Rsquare = apomeron_Rsquare;}
00095         void Pomeron_Alpha(G4double apomeron_Alpha){ pomeron_Alpha = apomeron_Alpha;}
00096         void Pomeron_Alphaprime(G4double apomeron_Alphaprime){ pomeron_Alphaprime = apomeron_Alphaprime;}
00097         void Pomeron_Gamma_Hard(G4double apomeron_Gamma_Hard){ pomeron_Gamma_Hard = apomeron_Gamma_Hard;}
00098         void Pomeron_Alpha_Hard(G4double apomeron_Alpha_Hard){ pomeron_Alpha_Hard = apomeron_Alpha_Hard;}
00099 
00100   private: 
00101         G4double PowerSoft(const G4double s);
00102         G4double PowerHard(const G4double s);
00103         G4double LambdaSoft(const G4double s);
00104         G4double LambdaHard(const G4double s);
00105         G4double Zsoft(const G4double s);
00106         G4double Zhard(const G4double s);
00107   
00108         G4PomeronCrossSection();
00109         void InitForNucleon();
00110         void InitForPion();
00111         void InitForKaon();
00112         void InitForGamma();
00113         
00114         G4double Expand(G4double z);
00115         inline G4double Z(const G4double Scms);
00116         inline G4double SigP(const G4double Scms);
00117         inline G4double Power(const G4double Scms);
00118         inline G4double Lambda(const G4double s);
00119         inline G4double Eikonal(const G4double s,const G4double impactsquare);
00120         
00121         G4double pomeron_Alpha;
00122         G4double pomeron_Alpha_Hard;
00123         G4double pomeron_Alphaprime;
00124         G4double pomeron_C;
00125         G4double pomeron_Gamma;
00126         G4double pomeron_Gamma_Hard;
00127         G4double pomeron_Rsquare;
00128         G4double pomeron_S;
00129         
00130 
00131 };
00132 #endif

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