130         throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::operator== forbidden");
 
  138         throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::operator!= forbidden");
 
  170         if ( hadrons.second ==0 )
 
  184                                    std::sqrt(Mom3.mag2() + 
 
  185                                              sqr(hadrons.first->GetPDGMass())));
 
  193 #ifdef DEBUG_LightFragmentationTest 
  194                G4cout << 
"VlongSF Warning replacing qq-qqbar string by TWO hadrons "  
  195                       << hadrons.first->GetParticleName() << 
" / "  
  196                       << hadrons.second->GetParticleName()
 
  197                       << 
"string .. " << 
string->Get4Momentum() << 
" "  
  198                       << 
string->Get4Momentum().m() << 
G4endl;
 
  203                                &Mom2,hadrons.second->GetPDGMass(),
 
  204                                string->Get4Momentum().mag());
 
  213                G4ThreeVector Velocity = 
string->Get4Momentum().boostVector();
 
  214                result->
Boost(Velocity);          
 
  230         static G4ThreadLocal std::vector<double> *nomix_G4MT_TLS_ = 0 ; 
if (!nomix_G4MT_TLS_) nomix_G4MT_TLS_ = 
new  std::vector<double>  ;  std::vector<double> &nomix = *nomix_G4MT_TLS_;
 
  236            for ( 
G4int i=0; i<6 ; i++ ) nomix[i]=0;
 
  251            Hadron1 = (minMassHadronizer->*build)(string->
GetLeftParton(),
 
  252                                                  string->GetRightParton());
 
  254            mass= (Hadron1)->GetPDGMass();
 
  263            Hadron1 = (minMassHadronizer->*build)(string->
GetLeftParton(),
 
  267            mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
 
  272            pdefs->first  = Hadron1;
 
  273            pdefs->second = Hadron2;
 
  286        G4cout << 
"Particle with encoding "<<Encoding<<
" does not exist!!!"<<
G4endl;
 
  332           string->SetLeftPartonStable();
 
  335           string->SetRightPartonStable();
 
  355        delete newString; newString=0;                          
 
  358        if ( HadronMomentum != 0 ) {    
 
  361            Hadron = 
new G4KineticTrack(HadronDefinition, 0,Pos, *HadronMomentum);
 
  366            delete HadronMomentum;
 
  382     created = QuarkPair.second;
 
  401          G4int Swap = stableQuarkEncoding;
 
  402          stableQuarkEncoding = decayQuarkEncoding;
 
  403          decayQuarkEncoding = Swap;
 
  406       G4int IsParticle=(decayQuarkEncoding>0) ? -1 : +1; 
 
  410       G4int QuarkEncoding=QuarkPair.second->GetPDGEncoding();
 
  411       G4int i10  = 
std::max(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
 
  412       G4int i20  = 
std::min(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
 
  414       G4int NewDecayEncoding = -1*IsParticle*(i10 * 1000 + i20 * 100 + spin);
 
  427       created = QuarkPair.second;
 
  480    return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
 
  491    for(
size_t c1 = 0; 
c1 < Hadrons->size(); 
c1++)
 
  497          SumPz += Hadrons->operator[](
c2)->Get4Momentum().pz();
 
  498          SumE  += Hadrons->operator[](
c2)->Get4Momentum().e();   
 
  500       G4double HadronE  = Hadrons->operator[](
c1)->Get4Momentum().e();
 
  501       G4double HadronPz = Hadrons->operator[](
c1)->Get4Momentum().pz();
 
  502       Hadrons->operator[](
c1)->SetFormationTime(
 
  503 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light); 
 
  506 (theInitialStringMass - 2.*SumE  - HadronE + HadronPz)/(2.*kappa));
 
  507       Hadrons->operator[](
c1)->SetPosition(aPosition);
 
  517                 throw G4HadronicException(__FILE__, __LINE__, 
"4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
 
  528                 throw G4HadronicException(__FILE__, __LINE__, 
"4VLongitudinalStringDecay::SetStrangenessSuppression after FragmentString() not allowed");
 
  539                 throw G4HadronicException(__FILE__, __LINE__, 
"4VLongitudinalStringDecay::SetDiquarkSuppression after FragmentString() not allowed");
 
  550                 throw G4HadronicException(__FILE__, __LINE__, 
"4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
 
  561                 throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed");
 
  575                 throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed");
 
  589                 throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
 
  591           if ( aVector.size() < 6 ) 
 
  592               throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
 
  610                 throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
 
  612           if ( aVector.size() < 6 ) 
 
  613               throw G4HadronicException(__FILE__, __LINE__, 
"G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
 
G4ParticleDefinition * GetRightParton(void) const 
 
int operator!=(const G4VLongitudinalStringDecay &right) const 
 
ThreeVector shoot(const G4int Ap, const G4int Af)
 
static c2_factory< G4double > c2
 
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
 
G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
CLHEP::Hep3Vector G4ThreeVector
 
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)
 
G4ExcitedString * CPExcited(const G4ExcitedString &string)
 
void SetStrangenessSuppression(G4double aValue)
 
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
 
G4int StringLoopInterrupt
 
G4Parton * GetLeftParton(void) const 
 
G4int ClusterLoopInterrupt
 
G4int GetPDGEncoding() const 
 
G4ThreeVector SampleQuarkPt(G4double ptMax=-1.)
 
std::vector< G4double > vectorMesonMix
 
G4double FragmentationMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
 
virtual void SetMassCut(G4double aValue)
 
G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
G4VLongitudinalStringDecay()
 
G4int SampleQuarkFlavor(void)
 
virtual ~G4VLongitudinalStringDecay()
 
G4ParticleDefinition * GetDecayParton() const 
 
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
 
void SetStringTensionParameter(G4double aValue)
 
const G4ThreeVector & GetPosition() const 
 
G4ParticleDefinition * GetLeftParton(void) const 
 
void SetDiquarkBreakProbability(G4double aValue)
 
G4GLOB_DLL std::ostream G4cout
 
ParticleList decay(Cluster *const c)
Carries out a cluster decay. 
 
G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString *const theString)
 
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
 
G4ParticleDefinition * FindParticle(G4int Encoding)
 
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
 
void Boost(G4ThreeVector &Velocity)
 
G4bool FourQuarkString(void) const 
 
std::vector< G4double > scalarMesonMix
 
int operator==(const G4VLongitudinalStringDecay &right) const 
 
void SetVectorMesonProbability(G4double aValue)
 
G4Parton * GetRightParton(void) const 
 
G4double GetStringTensionParameter()
 
G4HadronBuilder * hadronizer
 
static G4ParticleTable * GetParticleTable()
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
void SetVectorMesonMixings(std::vector< G4double > aVector)
 
void SetSpinThreeHalfBarionProbability(G4double aValue)
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
G4double DiquarkBreakProb
 
void SetSigmaTransverseMomentum(G4double aQT)
 
G4int GetDirection(void) const 
 
void SetScalarMesonMixings(std::vector< G4double > aVector)
 
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
 
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
 
static const double fermi
 
G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString)
 
void SetDiquarkSuppression(G4double aValue)
 
CLHEP::HepLorentzVector G4LorentzVector