G4QGSMSplitableHadron.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 G4QGSMSplitableHadron_h
00027 #define G4QGSMSplitableHadron_h 1
00028 
00029 #include "G4VSplitableHadron.hh"
00030 #include "G4PartonVector.hh"
00031 #include "G4MesonSplitter.hh"
00032 #include "G4BaryonSplitter.hh"
00033 #include "Randomize.hh"
00034 #include <deque>
00035 
00036 // based on prototype by Maxim Komogorov
00037 // Splitting into methods, and centralizing of model parameters HPW Feb 1999
00038 // continued clean-up of interfaces and algorithms HPW 1999.
00039 // Redesign of data structures and algorithms HPW Feb 1999
00040 
00041 class G4QGSMSplitableHadron : public G4VSplitableHadron
00042 {
00043 
00044 public:
00045         G4QGSMSplitableHadron();
00046         G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary);
00047         G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary, G4bool Direction);
00048         G4QGSMSplitableHadron(const G4Nucleon & aNucleon);
00049         G4QGSMSplitableHadron(const G4Nucleon & aNucleon, G4bool Direction);
00050 
00051         virtual ~G4QGSMSplitableHadron();
00052 
00053 private:
00054         const G4QGSMSplitableHadron & operator=(const G4QGSMSplitableHadron &right);
00055 
00056 public:
00057         virtual void SplitUp();
00058         virtual void SetFirstParton(G4int PDGcode);  // Uzhi 24.11.10
00059         virtual void SetSecondParton(G4int PDGcode);  // Uzhi 24.11.10
00060         virtual G4Parton * GetNextParton();
00061         virtual G4Parton * GetNextAntiParton();
00062 
00063 private:
00064         void InitParameters();
00065         void DiffractiveSplitUp();
00066         void SoftSplitUp();
00067         G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare);
00068         void GetValenceQuarkFlavors(const G4ParticleDefinition * aPart,
00069                         G4Parton *& Parton1, G4Parton *& Parton2);
00070         G4Parton * BuildSeaQuark(G4bool isAntiQuark, G4int aPDGCode, G4int nSeaPair);
00071         G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta);
00072 
00073 private:
00074         // aggregated data
00075         G4bool Direction; // FALSE is target. - candidate for more detailed design. @@@@ HPW
00076 
00077         std::deque<G4Parton *> Color;
00078         std::deque<G4Parton *> AntiColor;
00079 private:
00080         // associated classes
00081         G4MesonSplitter theMesonSplitter;
00082         G4BaryonSplitter theBaryonSplitter;
00083 
00084 private:
00085         // model parameters
00086         G4double alpha;
00087         G4double beta;
00088         G4double theMinPz;
00089         G4double StrangeSuppress;
00090         G4double sigmaPt;
00091         G4double widthOfPtSquare;
00092         G4double minTransverseMass;
00093 };
00094 
00095 inline G4Parton* G4QGSMSplitableHadron::GetNextParton()
00096 {
00097         if(Color.size()==0) return 0;
00098         G4Parton * result = Color.back();
00099         Color.pop_back();
00100         return result;
00101 }
00102 
00103 inline G4Parton* G4QGSMSplitableHadron::GetNextAntiParton()
00104 {
00105         if(AntiColor.size() == 0) return 0;
00106         G4Parton * result = AntiColor.front();
00107         AntiColor.pop_front();
00108         return result;
00109 }
00110 
00111 inline void G4QGSMSplitableHadron::SetFirstParton(G4int PDGcode)  // Uzhi 24.11.10
00112 {PDGcode++;}
00113 inline void G4QGSMSplitableHadron::SetSecondParton(G4int PDGcode)  // Uzhi 24.11.10
00114 {PDGcode++;}
00115 #endif
00116 
00117 

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