77 theAsymmetryTable(NULL),
78 theTransverseAsymmetryTable(NULL)
89 if (theAsymmetryTable) {
91 delete theAsymmetryTable;
93 if (theTransverseAsymmetryTable) {
95 delete theTransverseAsymmetryTable;
104 isInitialised =
true;
132 if (theAsymmetryTable) {
144 if (!volumeIsPolarized || mfp ==
DBL_MAX)
return mfp;
155 G4cout <<
" Polarization " << positronPolarization <<
G4endl;
156 G4cout <<
" MaterialPol. " << electronPolarization <<
G4endl;
164 G4double lAsymmetry = (*theAsymmetryTable)(idx)->
165 GetValue(positronEnergy, isOutRange);
166 G4double tAsymmetry = (*theTransverseAsymmetryTable)(idx)->
167 GetValue(positronEnergy, isOutRange);
169 G4double polZZ = positronPolarization.
z()*
170 electronPolarization*positronDirection0;
171 G4double polXX = positronPolarization.
x()*
173 G4double polYY = positronPolarization.
y()*
176 G4double impact = 1. + polZZ*lAsymmetry + (polXX + polYY)*tAsymmetry;
182 G4cout <<
" Asymmetry: " << lAsymmetry <<
", " << tAsymmetry <<
G4endl;
183 G4cout <<
" PolProduct: " << polXX <<
", " << polYY <<
", " << polZZ <<
G4endl;
199 if (theAsymmetryTable) {
211 if (!volumeIsPolarized || mfp ==
DBL_MAX)
return mfp;
222 G4cout <<
" Polarization " << positronPolarization <<
G4endl;
223 G4cout <<
" MaterialPol. " << electronPolarization <<
G4endl;
231 G4double lAsymmetry = (*theAsymmetryTable)(idx)->
232 GetValue(positronEnergy, isOutRange);
233 G4double tAsymmetry = (*theTransverseAsymmetryTable)(idx)->
234 GetValue(positronEnergy, isOutRange);
236 G4double polZZ = positronPolarization.
z()*
237 electronPolarization*positronDirection0;
238 G4double polXX = positronPolarization.
x()*
240 G4double polYY = positronPolarization.
y()*
243 G4double impact = 1. + polZZ*lAsymmetry + (polXX + polYY)*tAsymmetry;
249 G4cout <<
" Asymmetry: " << lAsymmetry <<
", " << tAsymmetry <<
G4endl;
250 G4cout <<
" PolProduct: " << polXX <<
", " << polYY <<
", " << polZZ <<
G4endl;
278 G4cout<<
" annih-numOfCouples="<<numOfCouples<<
"\n";
279 for(
size_t i=0; i<numOfCouples; ++i) {
280 G4cout<<
"annih- "<<i<<
"/"<<numOfCouples<<
"\n";
281 if (!theAsymmetryTable)
break;
283 if (theAsymmetryTable->
GetFlag(i)) {
284 G4cout<<
" building pol-annih ... \n";
340 lAsymmetry=sigma2/sigma0-1.;
341 tAsymmetry=sigma3/sigma0-1.;
353 G4cout <<
" Polarized model for annihilation into 2 photons"
375 G4ThreeVector direction (sinTeta*std::cos(phi), sinTeta*std::sin(phi), cosTeta);