73     theAsymmetryTable(NULL),
 
   74     theTransverseAsymmetryTable(NULL)
 
  138   if (mfp != 
DBL_MAX &&  volumeIsPolarized && !ePolarization.
IsZero()) {
 
  147     G4double lAsymmetry = (*theAsymmetryTable)(idx)->
 
  148                                   GetValue(eEnergy, isOutRange);
 
  149     G4double tAsymmetry = (*theTransverseAsymmetryTable)(idx)->
 
  150                                   GetValue(eEnergy, isOutRange);
 
  154                         volumePolarization*eDirection0;
 
  162     G4double impact = 1. + polZZ*lAsymmetry + (polXX + polYY)*tAsymmetry;
 
  166      G4cout <<
"PV impact ( "<<polXX<<
" , "<<polYY<<
" , "<<polZZ<<
" )"<<
G4endl;
 
  168      G4cout<<
" lAsymmetry= "<<lAsymmetry<<
" ("<<std::fabs(lAsymmetry)-1.<<
")\n";
 
  169      G4cout<<
" tAsymmetry= "<<tAsymmetry<<
" ("<<std::fabs(tAsymmetry)-1.<<
")\n";
 
  192   if (mfp != 
DBL_MAX &&  volumeIsPolarized && !ePolarization.
IsZero()) {
 
  200     G4double lAsymmetry = (*theAsymmetryTable)(idx)->Value(eEnergy);
 
  201     G4double tAsymmetry = (*theTransverseAsymmetryTable)(idx)->Value(eEnergy);
 
  205                         volumePolarization*eDirection0;
 
  213     G4double impact = 1. + polZZ*lAsymmetry + (polXX + polYY)*tAsymmetry;
 
  217      G4cout <<
"PV impact ( "<<polXX<<
" , "<<polYY<<
" , "<<polZZ<<
" )"<<
G4endl;
 
  219      G4cout<<
" lAsymmetry= "<<lAsymmetry<<
" ("<<std::fabs(lAsymmetry)-1.<<
")\n";
 
  220      G4cout<<
" tAsymmetry= "<<tAsymmetry<<
" ("<<std::fabs(tAsymmetry)-1.<<
")\n";
 
  249   for (
size_t j=0 ; j < numOfCouples; j++ ) {
 
  260     for (
size_t i = 0 ; i < bins ; i++ ) {
 
  282   if (
isElectron) {lAsymmetry = tAsymmetry = -1.0;}
 
  303     lAsymmetry=sigma2/sigma0-1.;
 
  304     tAsymmetry=sigma3/sigma0-1.;
 
  306   if (std::fabs(lAsymmetry)>1.) {
 
  307     G4cout<<
" energy="<<energy<<
"\n";
 
  308     G4cout<<
"WARNING lAsymmetry= "<<lAsymmetry<<
" ("<<std::fabs(lAsymmetry)-1.<<
")\n";
 
  310   if (std::fabs(tAsymmetry)>1.) {
 
  311     G4cout<<
" energy="<<energy<<
"\n";
 
  312     G4cout<<
"WARNING tAsymmetry= "<<tAsymmetry<<
" ("<<std::fabs(tAsymmetry)-1.<<
")\n";
 
const G4ThreeVector & GetPolarization() const 
const std::vector< G4double > * GetEnergyCutsVector(size_t pcIdx) const 
G4double MaxKinEnergy() const 
G4bool isElectron(G4int ityp)
G4ePolarizedIonisation(const G4String &name="pol-eIoni")
G4double GetKineticEnergy() const 
CLHEP::Hep3Vector G4ThreeVector
void BuildPhysicsTable(const G4ParticleDefinition &)
const G4DynamicParticle * GetDynamicParticle() const 
G4double ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple *couple, const G4ParticleDefinition &particle, G4double cut, G4double &tasm)
virtual ~G4ePolarizedIonisation()
G4ThreeVector theTargetPolarization
static G4PolarizationManager * GetInstance()
G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
size_t GetVectorLength() const 
void SetFluctModel(G4VEmFluctuationModel *)
G4PhysicsVector * LambdaPhysicsVector(const G4MaterialCutsCouple *, G4double cut)
G4PolarizedMollerBhabhaModel * emModel
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
void SetHighEnergyLimit(G4double)
G4VEmFluctuationModel * FluctModel()
G4GLOB_DLL std::ostream G4cout
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *)
size_t GetTableSize() const 
const G4ThreeVector & GetMomentumDirection() const 
G4double CrossSection(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void PutValue(size_t index, G4double theValue)
G4PhysicsTable * theAsymmetryTable
void SetProcessSubType(G4int)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=0, const G4Region *region=0)
G4double MinKinEnergy() const 
G4double Energy(size_t index) const 
void SetSecondaryParticle(const G4ParticleDefinition *p)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
static G4ProductionCutsTable * GetProductionCutsTable()
static G4Positron * Positron()
G4LogicalVolume * GetLogicalVolume() const 
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const 
G4double energy(const ThreeVector &p, const G4double m)
G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
static G4EmParameters * Instance()
bool IsPolarized(G4LogicalVolume *lVol) const 
void SetTargetPolarization(const G4ThreeVector &pTarget)
void SetEmModel(G4VEmModel *, G4int index=1)
G4VPhysicalVolume * GetVolume() const 
static G4ThreeVector GetParticleFrameY(const G4ThreeVector &)
void insertAt(size_t, G4PhysicsVector *)
G4ParticleDefinition * theElectron
void SetBeamPolarization(const G4ThreeVector &pBeam)
void SetLowEnergyLimit(G4double)
G4ThreeVector G4ParticleMomentum
static G4ThreeVector GetParticleFrameX(const G4ThreeVector &)
const G4ThreeVector & GetVolumePolarization(G4LogicalVolume *lVol) const 
G4VEmFluctuationModel * flucModel
G4PhysicsTable * theTransverseAsymmetryTable
size_t CurrentMaterialCutsCoupleIndex() const