Ignore:
Timestamp:
Nov 5, 2010, 3:45:55 PM (14 years ago)
Author:
garnier
Message:

update ti head

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh

    r1337 r1340  
    2525//
    2626//
    27 // $Id: G4ExcitedStringDecay.hh,v 1.12 2010/06/21 17:50:48 vuzhinsk Exp $
    28 // GEANT4 tag $Name: geant4-09-04-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 $
    2929//
    3030#ifndef G4ExcitedStringDecay_h
     
    4242      G4ExcitedStringDecay();
    4343      G4ExcitedStringDecay(G4VLongitudinalStringDecay * aStringDecay);
    44       ~G4ExcitedStringDecay();
     44      virtual ~G4ExcitedStringDecay();
    4545
    4646  private:
     
    6262};
    6363
    64 inline
    65 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 inline
    76 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 up
    126         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_ExcitedStringDecay
    135   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 #endif
    145 
    146   return theResult;
    147 }
    148 
    14964#endif
    15065
Note: See TracChangeset for help on using the changeset viewer.