G4ePolarizedBremsstrahlungModel Class Reference

#include <G4ePolarizedBremsstrahlungModel.hh>

Inheritance diagram for G4ePolarizedBremsstrahlungModel:

G4eBremsstrahlungModel G4VEmModel

Public Member Functions

 G4ePolarizedBremsstrahlungModel (const G4ParticleDefinition *p=0, const G4String &nam="PolBrem")
virtual ~G4ePolarizedBremsstrahlungModel ()
virtual void Initialise (const G4ParticleDefinition *, const G4DataVector &)
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const G4ElementSelectedAtom ()

Protected Attributes

G4VPolarizedCrossSectioncrossSectionCalculator

Detailed Description

Definition at line 58 of file G4ePolarizedBremsstrahlungModel.hh.


Constructor & Destructor Documentation

G4ePolarizedBremsstrahlungModel::G4ePolarizedBremsstrahlungModel ( const G4ParticleDefinition p = 0,
const G4String nam = "PolBrem" 
)

Definition at line 56 of file G4ePolarizedBremsstrahlungModel.cc.

00058   : G4eBremsstrahlungModel(p,nam),
00059     crossSectionCalculator(0)
00060 {
00061 }

G4ePolarizedBremsstrahlungModel::~G4ePolarizedBremsstrahlungModel (  )  [virtual]

Definition at line 65 of file G4ePolarizedBremsstrahlungModel.cc.

References crossSectionCalculator.

00066 {
00067   if (crossSectionCalculator) delete crossSectionCalculator;
00068 }


Member Function Documentation

void G4ePolarizedBremsstrahlungModel::Initialise ( const G4ParticleDefinition ,
const G4DataVector  
) [virtual]

Reimplemented from G4eBremsstrahlungModel.

Definition at line 72 of file G4ePolarizedBremsstrahlungModel.cc.

References crossSectionCalculator, and G4eBremsstrahlungModel::Initialise().

void G4ePolarizedBremsstrahlungModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  ,
const G4MaterialCutsCouple ,
const G4DynamicParticle ,
G4double  tmin,
G4double  maxEnergy 
) [virtual]

Reimplemented from G4eBremsstrahlungModel.

Definition at line 84 of file G4ePolarizedBremsstrahlungModel.cc.

References crossSectionCalculator, G4eBremsstrahlungModel::fParticleChange, G4cout, G4VEmModel::GetCurrentElement(), G4PolarizationHelper::GetFrame(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4VPolarizedCrossSection::GetPol2(), G4VPolarizedCrossSection::GetPol3(), G4DynamicParticle::GetPolarization(), G4ParticleChangeForLoss::GetProposedMomentumDirection(), G4VPolarizedCrossSection::Initialize(), G4StokesVector::InvRotateAz(), G4ParticleChangeForLoss::ProposePolarization(), G4StokesVector::RotateAz(), G4eBremsstrahlungModel::SampleSecondaries(), G4VPolarizedCrossSection::SetMaterial(), G4StokesVector::SetPhoton(), and G4StokesVector::ZERO.

00089 {
00090   G4eBremsstrahlungModel::SampleSecondaries(vdp,couple,dp,tmin,maxEnergy);
00091   G4int num = vdp->size();
00092 
00093   if(num > 0) {
00094     G4double lepEnergy0 = dp->GetKineticEnergy();
00095     G4double gamEnergy1 = (*vdp)[0]->GetKineticEnergy();
00096     G4double sintheta   = dp->GetMomentumDirection().cross((*vdp)[0]->GetMomentumDirection()).mag();
00097     if (sintheta>1.) sintheta=1.;
00098 
00099 
00100     G4StokesVector beamPol = dp->GetPolarization();
00101 
00102     // determine interaction plane
00103     G4ThreeVector  nInteractionFrame = 
00104       G4PolarizationHelper::GetFrame(dp->GetMomentumDirection(), 
00105                  fParticleChange->GetProposedMomentumDirection());
00106 
00107     // transform polarization into interaction frame
00108      beamPol.InvRotateAz(nInteractionFrame,dp->GetMomentumDirection());
00109 
00110     // calulcate polarization transfer
00111     crossSectionCalculator->SetMaterial(GetCurrentElement()->GetN(),  // number of nucleons
00112                                         GetCurrentElement()->GetZ(),
00113                                         GetCurrentElement()->GetfCoulomb());
00114     crossSectionCalculator->Initialize(lepEnergy0, gamEnergy1, sintheta,
00115                                        beamPol, G4StokesVector::ZERO);
00116 
00117     // deterimine final state polarization
00118     G4StokesVector newBeamPol = crossSectionCalculator->GetPol2();
00119     newBeamPol.RotateAz(nInteractionFrame,
00120         fParticleChange->GetProposedMomentumDirection());
00121     fParticleChange->ProposePolarization(newBeamPol);
00122 
00123     if (num!=1) G4cout<<" WARNING "<<num<<" secondaries in polarized bremsstrahlung not supported!\n"; 
00124     for (G4int i=0; i<num; i++) {
00125       G4StokesVector photonPol = crossSectionCalculator->GetPol3();
00126       photonPol.SetPhoton();
00127       photonPol.RotateAz(nInteractionFrame,(*vdp)[i]->GetMomentumDirection());
00128       (*vdp)[i]->SetPolarization(photonPol.p1(),
00129                                  photonPol.p2(),
00130                                  photonPol.p3());
00131     }
00132   }
00133   return;
00134 }

const G4Element * G4ePolarizedBremsstrahlungModel::SelectedAtom (  )  [inline]

Definition at line 86 of file G4ePolarizedBremsstrahlungModel.hh.

References G4VEmModel::GetCurrentElement().

00087 {
00088   return GetCurrentElement();
00089 }


Field Documentation

G4VPolarizedCrossSection* G4ePolarizedBremsstrahlungModel::crossSectionCalculator [protected]

Definition at line 79 of file G4ePolarizedBremsstrahlungModel.hh.

Referenced by Initialise(), SampleSecondaries(), and ~G4ePolarizedBremsstrahlungModel().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:54 2013 for Geant4 by  doxygen 1.4.7