Ignore:
Timestamp:
Jun 18, 2010, 11:42:07 AM (14 years ago)
Author:
garnier
Message:

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/chiral_inv_phase_space/processes/src/G4QLowEnergy.cc

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4QLowEnergy.cc,v 1.1 2009/11/17 10:36:55 mkossov Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4QLowEnergy.cc,v 1.4 2010/06/07 15:19:55 mkossov Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929//      ---------------- G4QLowEnergy class -----------------
     
    548548        if(!tD || !pD)                // Quasi-Elastic: B+A->(B-1)+N+A || ->B+N+(A-1)
    549549        {
    550           G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
     550          G4VQCrossSection* PCSmanager=G4QProtonElasticCrossSection::GetPointer();
     551          G4VQCrossSection* NCSmanager=G4QNeutronElasticCrossSection::GetPointer();
    551552          G4int pPDG=2112;            // Proto of the nucleon PDG (proton)
    552553          G4double prM =mNeut;        // Proto of the nucleon mass
     
    587588              else break;             // Break the while loop
    588589            }
    589             G4double xSec=CSmanager->GetCrossSection(false, Mom, tZ, tN, pPDG);
     590            G4double xSec=0.;
     591            if(pPDG==2212) xSec=PCSmanager->GetCrossSection(false, Mom, tZ, tN, pPDG);
     592            else           xSec=NCSmanager->GetCrossSection(false, Mom, tZ, tN, pPDG);
    590593            if( xSec <= 0. ) break;   // Break the while loop
    591             G4double mint=CSmanager->GetExchangeT(tZ,tN,pPDG); // functional randomized -t
    592             G4double cost=1.-mint/CSmanager->GetHMaxT();       // cos(theta) in CMS
     594            G4double mint=0.;                 // Prototype of functional randomized -t
     595            if(pPDG==2212) mint=PCSmanager->GetExchangeT(tZ,tN,pPDG); // randomized -t
     596            else           mint=NCSmanager->GetExchangeT(tZ,tN,pPDG); // randomized -t
     597            G4double maxt=0.;                           // Prototype of maximum -t
     598            if(pPDG==2212) maxt=PCSmanager->GetHMaxT(); // maximum -t
     599            else           maxt=NCSmanager->GetHMaxT(); // maximum -t
     600            G4double cost=1.-mint/maxt;       // cos(theta) in CMS
    593601            if(cost>1. || cost<-1.) break; // Break the while loop
    594602            G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,tgM); // 4mom of recoil target
     
    729737              rNuc4M=G4LorentzVector(fm,rNE);
    730738              G4LorentzVector qfN4M=targ4M - rNuc4M;// 4Mom of the quasi-free nucleon in LS
    731               com4M += qfN4M;         // Calculate Total 4Mom for NA scattering
     739              com4M += qfN4M;                 // Calculate Total 4Mom for NA scattering
    732740              G4ThreeVector boostV=proj4M.vect()/proj4M.e();
    733741              qfN4M.boost(-boostV);
    734               G4double tNE = qfN4M.e(); // Energy of the QF nucleon in LS
     742              G4double tNE = qfN4M.e();       // Energy of the QF nucleon in LS
    735743              if(rNE >= prM) Mom = std::sqrt(tNE*tNE-prM2); // Mom(s) fake value
    736               else break;             // Break the while loop
    737             }
    738             G4double xSec=CSmanager->GetCrossSection(false, Mom, pZ, pN, pPDG);
    739             if( xSec <= 0. ) break;   // Break the while loop
    740             G4double mint=CSmanager->GetExchangeT(pZ,pN,pPDG); // functional randomized -t
    741             G4double cost=1.-mint/CSmanager->GetHMaxT();       // cos(theta) in CMS
    742             if(cost>1. || cost<-1.) break; // Break the while loop
     744              else break;                     // Break the while loop
     745            }
     746            G4double xSec=0.;
     747            if(pPDG==2212) xSec=PCSmanager->GetCrossSection(false, Mom, tZ, tN, pPDG);
     748            else           xSec=NCSmanager->GetCrossSection(false, Mom, tZ, tN, pPDG);
     749            if( xSec <= 0. ) break;           // Break the while loop
     750            G4double mint=0.;                 // Prototype of functional randomized -t
     751            if(pPDG==2212) mint=PCSmanager->GetExchangeT(tZ,tN,pPDG); // randomized -t
     752            else           mint=NCSmanager->GetExchangeT(tZ,tN,pPDG); // randomized -t
     753            G4double maxt=0.;                           // Prototype of maximum -t
     754            if(pPDG==2212) maxt=PCSmanager->GetHMaxT(); // maximum -t
     755            else           maxt=NCSmanager->GetHMaxT(); // maximum -t
     756            G4double cost=1.-mint/maxt;                 // cos(theta) in CMS
     757            if(cost>1. || cost<-1.) break;    // Break the while loop
    743758            G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,prM); // 4mom of recoil target
    744759            G4LorentzVector scat4M=G4LorentzVector(0.,0.,0.,rNM); // 4mom of scattered N
     
    747762            {
    748763              G4cout<<"G4QLE::Tt="<<com4M.m()<<",p="<<prM<<",r="<<rNM<<",c="<<cost<<G4endl;
    749               break;                  // Break the while loop
     764              break;                          // Break the while loop
    750765            }
    751766            G4Track* targSpect = 0;
    752767            G4Track* aNucTrack = 0;
    753             if(tB > tD)               // Fill the residual nucleus
     768            if(tB > tD)                       // Fill the residual nucleus
    754769            {
    755770              G4int rZ=tZ-tC;
     
    928943            G4cout<<"G4QLE::PSDI: rpA=1, rpZ"<<rpZ<<G4endl;
    929944#endif
     945          }
     946          else if(rpA==2 && rpZ==0)            // nn decay
     947          {
     948            theDefinition = aNeutron;
     949            G4LorentzVector f4M=G4LorentzVector(0.,0.,0.,mNeut); // 4mom of 1st neutron
     950            G4LorentzVector s4M=G4LorentzVector(0.,0.,0.,mNeut); // 4mom of 2nd neutron
     951#ifdef pdebug
     952            G4cout<<"G4QLE::CPS->n+n,nn="<<rp4M.m()<<" >? 2*MNeutron="<<2*mNeutron<<G4endl;
     953#endif
     954            if(!G4QHadron(rp4M).DecayIn2(f4M, s4M))
     955            {
     956              G4cout<<"*W*G4QLE::CPS->n+n,t="<<rp4M.m()<<" >? 2*Neutron="<<2*mAlph<<G4endl;
     957            }
     958            G4DynamicParticle* pNeu = new G4DynamicParticle(theDefinition, f4M);
     959            aFraPTrack = new G4Track(pNeu, localtime, position );
     960            aFraPTrack->SetWeight(weight);                    //    weighted
     961            aFraPTrack->SetTouchableHandle(trTouchable);
     962            tt4M-=f4M;
     963#ifdef edebug
     964            totBaN-=2;
     965            tch4M -=f4M;
     966            G4cout<<">>G4QLEn::PSDI:n,tZ="<<totChg<<",tB="<<totBaN<<",t4M="<<tch4M<<G4endl;
     967#endif
     968#ifdef pdebug
     969            G4cout<<"G4QLowEn::PSDI:-->ProjSpectA4M="<<f4M<<G4endl;
     970#endif
     971            ++nSec;
     972            rp4M=s4M;
     973          }
     974          else if(rpA>2 && rpZ==0)            // Z=0 decay
     975          {
     976            theDefinition = aNeutron;
     977            G4LorentzVector f4M=rp4M/rpA;     // 4mom of 1st neutron
     978#ifdef pdebug
     979            G4cout<<"G4QLE::CPS->Nn,M="<<rp4M.m()<<" >? N*MNeutron="<<rpA*mNeutron<<G4endl;
     980#endif
     981            for(G4int it=1; it<rpA; ++it)     // Fill (N-1) neutrons to output
     982            {
     983              G4DynamicParticle* pNeu = new G4DynamicParticle(theDefinition, f4M);
     984              G4Track* aNTrack = new G4Track(pNeu, localtime, position );
     985              aNTrack->SetWeight(weight);                    //    weighted
     986              aNTrack->SetTouchableHandle(trTouchable);
     987              result.push_back(aNTrack);
     988            }
     989            G4int nesc = rpA-1;
     990            tt4M-=f4M*nesc;
     991#ifdef edebug
     992            totBaN-=nesc;
     993            tch4M -=f4M*nesc;
     994            G4cout<<">G4QLEn::PSDI:Nn,tZ="<<totChg<<",tB="<<totBaN<<",t4M="<<tch4M<<G4endl;
     995#endif
     996#ifdef pdebug
     997            G4cout<<"G4QLowEn::PSDI:-->ProjSpectA4M="<<f4M<<G4endl;
     998#endif
     999            nSec+=nesc;
     1000            rp4M=f4M;
    9301001          }
    9311002          else if(rpA==8 && rpZ==4)            // Be8 decay
Note: See TracChangeset for help on using the changeset viewer.