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 // GEANT4 tag $Name: $ 00029 // 00030 // Class Description 00031 // Final state production code for hadron inelastic scattering above 20 GeV 00032 // based on the modeling ansatz used in FRITIOF. 00033 // To be used in your physics list in case you need this physics. 00034 // In this case you want to register an object of this class with an object 00035 // of G4TheoFSGenerator. 00036 // Class Description - End 00037 00038 #ifndef G4FTFModel_h 00039 #define G4FTFModel_h 1 00040 00041 // ------------------------------------------------------------ 00042 // GEANT 4 class header file 00043 // 00044 // ---------------- G4FTFModel ---------------- 00045 // by Gunter Folger, May 1998. 00046 // class implementing the excitation in the FTF Parton String Model 00047 // ------------------------------------------------------------ 00048 00049 00050 #include "G4VPartonStringModel.hh" 00051 00052 class G4VSplitableHadron; 00053 class G4ExcitedString; 00054 00055 #include "G4FTFParameters.hh" 00056 #include "G4FTFParticipants.hh" 00057 00058 #include "G4ExcitedStringVector.hh" 00059 #include "G4DiffractiveExcitation.hh" 00060 #include "G4ElasticHNScattering.hh" 00061 #include "G4FTFAnnihilation.hh" 00062 00063 class G4FTFModel : public G4VPartonStringModel 00064 { 00065 00066 public: 00067 G4FTFModel(const G4String& modelName = "FTF"); 00068 //G4FTFModel(G4double , G4double , G4double ); 00069 //G4FTFModel(G4DiffractiveExcitation * anExcitation); 00070 ~G4FTFModel(); 00071 private: 00072 G4FTFModel(const G4FTFModel &right); 00073 const G4FTFModel & operator=(const G4FTFModel &right); 00074 int operator==(const G4FTFModel &right) const; 00075 int operator!=(const G4FTFModel &right) const; 00076 public: 00077 void Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile); 00078 G4ExcitedStringVector * GetStrings(); 00079 G4V3DNucleus * GetWoundedNucleus() const; 00080 virtual void ModelDescription(std::ostream&) const; 00081 00082 protected: 00083 00084 private: 00085 void StoreInvolvedNucleon(); 00086 void ReggeonCascade(); 00087 G4bool PutOnMassShell(); 00088 G4bool ExciteParticipants(); 00089 G4ExcitedStringVector * BuildStrings(); 00090 void GetResidualNucleus(); 00091 void AjustTargetNucleonForAnnihilation(G4VSplitableHadron *SelectedAntiBaryon, 00092 G4VSplitableHadron *SelectedTargetNucleon); 00093 G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const; 00094 00095 private: 00096 00097 G4ReactionProduct theProjectile; 00098 G4FTFParticipants theParticipants; 00099 00100 G4Nucleon * TheInvolvedNucleon[250]; 00101 G4int NumberOfInvolvedNucleon; 00102 G4int NumberOfInvolvedTargetNucleon; 00103 00104 G4Nucleon * TheInvolvedNucleonOfProjectile[250]; 00105 G4int NumberOfInvolvedNucleonOfProjectile; 00106 00107 G4FTFParameters *theParameters; 00108 G4DiffractiveExcitation * theExcitation; 00109 G4ElasticHNScattering * theElastic; 00110 G4FTFAnnihilation * theAnnihilation; // Uzhi 17.11.10 00111 00112 std::vector<G4VSplitableHadron *> theAdditionalString; // Uzhi 17.11.10 00113 00114 G4LorentzVector Residual4Momentum; 00115 G4double ResidualExcitationEnergy; 00116 00117 }; 00118 00119 // ------------------------------------------------------------ 00120 inline 00121 G4V3DNucleus * G4FTFModel::GetWoundedNucleus() const 00122 { 00123 return theParticipants.GetWoundedNucleus(); 00124 } 00125 00126 #endif