Changeset 1340 for trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4ExcitedStringDecay.hh,v 1.1 2 2010/06/21 17:50:48vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4ExcitedStringDecay.hh,v 1.13 2010/08/05 08:44:37 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4ExcitedStringDecay_h … … 42 42 G4ExcitedStringDecay(); 43 43 G4ExcitedStringDecay(G4VLongitudinalStringDecay * aStringDecay); 44 ~G4ExcitedStringDecay();44 virtual ~G4ExcitedStringDecay(); 45 45 46 46 private: … … 62 62 }; 63 63 64 inline65 G4KineticTrackVector *G4ExcitedStringDecay::66 FragmentString(const G4ExcitedString &theString)67 {68 if ( theStringDecay == NULL )69 theStringDecay=new G4LundStringFragmentation();70 71 return theStringDecay->FragmentString(theString);72 }73 74 75 inline76 G4KineticTrackVector *G4ExcitedStringDecay::77 FragmentStrings(const G4ExcitedStringVector * theStrings)78 {79 G4KineticTrackVector * theResult = new G4KineticTrackVector;80 81 G4LorentzVector KTsum(0.,0.,0.,0.);82 G4LorentzVector KTsecondaries(0.,0.,0.,0.);83 G4bool NeedEnergyCorrector=false;84 85 for ( unsigned int astring=0; astring < theStrings->size(); astring++)86 {87 KTsum+= theStrings->operator[](astring)->Get4Momentum();88 89 if( !(KTsum.e()<1) && !(KTsum.e()>-1) )90 {91 throw G4HadronicException(__FILE__, __LINE__,92 "G4ExcitedStringDecay::FragmentStrings received nan string...");93 }94 G4KineticTrackVector * generatedKineticTracks = NULL;95 96 if ( theStrings->operator[](astring)->IsExcited() )97 {98 generatedKineticTracks=FragmentString(*theStrings->operator[](astring));99 } else {100 generatedKineticTracks = new G4KineticTrackVector;101 generatedKineticTracks->push_back(theStrings->operator[](astring)->GetKineticTrack());102 }103 104 if (generatedKineticTracks == NULL)105 {106 G4cerr << "G4VPartonStringModel:No KineticTracks produced" << G4endl;107 continue;108 }109 110 G4LorentzVector KTsum1(0.,0.,0.,0.);111 for ( unsigned int aTrack=0; aTrack<generatedKineticTracks->size();aTrack++)112 {113 theResult->push_back(generatedKineticTracks->operator[](aTrack));114 KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum();115 }116 KTsecondaries+=KTsum1;117 118 if ( KTsum1.e() > 0 && std::abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion )119 {120 //--debug-- G4cout << "String secondaries(" <<generatedKineticTracks->size()<< ") momentum: "121 //--debug-- << theStrings->operator[](astring)->Get4Momentum() << " " << KTsum1 << G4endl;122 NeedEnergyCorrector=true;123 }124 125 // clean up126 delete generatedKineticTracks;127 }128 //--DEBUG G4cout << "Strings/secs total 4 momentum " << KTsum << " " <<KTsecondaries << G4endl;129 130 G4bool success=true;131 if ( NeedEnergyCorrector ) success=EnergyAndMomentumCorrector(theResult, KTsum);132 133 134 #ifdef debug_ExcitedStringDecay135 G4LorentzVector KTsum1=0;136 for ( unsigned int aTrack=0; aTrack<theResult->size();aTrack++)137 {138 G4cout << " corrected tracks .. " << (*theResult)[aTrack]->GetDefinition()->GetParticleName()139 <<" " << (*theResult)[aTrack]->Get4Momentum() << G4endl;140 KTsum1+= (*theResult)[aTrack]->Get4Momentum();141 }142 G4cout << "Needcorrector/success " << NeedEnergyCorrector << "/" << success << ", Corrected total 4 momentum " << KTsum1 << G4endl;143 if ( ! success ) G4cout << "failed to correct E/p" << G4endl;144 #endif145 146 return theResult;147 }148 149 64 #endif 150 65
Note: See TracChangeset
for help on using the changeset viewer.