Message: Re: Correlated polarized photons in GEANT4 Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Feedback Re: Correlated polarized photons in GEANT4 

Forum: Electromagnetic Processes
Re: Question Correlated polarized photons in GEANT4 (Estela Suarez)
Date: Jul 23, 13:25
From: Gumplinger Peter <Gumplinger Peter>

Hello Estela,

> I've tried to launch a photon in one direction, and when it is detected in my

> detector, to launch the second one from the initial point with opposite

> momentum and perpendicular polarization. The problem is that those two photons

> are not really correlated, and G4 treats them as completely independent photons

> (so the polarization that I get as a result is not correct).

Why do you say that 'the polarization that you get as a result of the above procedure is not correct'? In fact, you can immediately start always generating two photons with opposite direction and perpendicular polarization. If the first photon is not detected, don't bother simulating the second photon.

Reading my "Feynman Lecture III" chapter 18-3 'The annihilation of positronium' I conclude that you need to simulate the photons such that the linear polarization of photon 2 is always perpendicular to that of photon 1 (i.e. "So there is a unit probability that if you get a photon in your x-polarized detector, the other guy will get a photon in his y-polarized detector."). Thus, for each annihilation event you pick the linear polarization of photon 1 at random phi in a plane perpendicular to its momentum, but you then always fix the linear polarization of photon 2 to be +-90 degrees from it.

You need to implement code like:

                // Generate random photon direction

                G4double cost = 1. - 2.*G4UniformRand();

                G4double sint = sqrt((1.-cost)*(1.+cost));

                G4double phi = twopi*G4UniformRand();

                G4double sinp = sin(phi);

                G4double cosp = cos(phi);

                G4double px = sint*cosp;

                G4double py = sint*sinp;

                G4double pz = cost;

                // Create photon momentum direction vector

                G4ParticleMomentum photonMomentum(px, py, pz);

                // Determine polarization of new photon

                G4double sx = cost*cosp;

                G4double sy = cost*sinp;

                G4double sz = -sint;

                G4ThreeVector photonPolarization(sx, sy, sz);

                G4ThreeVector perp = photonMomentum.cross(photonPolarization);

                phi = twopi*G4UniformRand();

                sinp = sin(phi);

                cosp = cos(phi);

                photonPolarization = cosp * photonPolarization + sinp * perp;

                photonPolarization = photonPolarization.unit();

                // Generate two gammas:

               particleGun->SetParticleMomentumDirection(photonMomentum);

               particleGun->SetParticlePolarization(photonPolarization);

               particleGun->SetParticleEnergy(photonEnergy);

               particleGun->GeneratePrimaryVertex(anEvent);

               particleGun->SetParticleMomentumDirection(-photonMomentum);

               photonPolarization =

                           photonMomentum.cross(photonPolarization).unit();

               particleGun->SetParticlePolarization(photonPolarization);

               particleGun->GeneratePrimaryVertex(anEvent);

Best regards, Peter

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 Feedback: Re: Correlated polarized photons in GEANT4   (Estela Suarez - Jul 24, 00:01)
(_ Idea: Re: Correlated polarized photons in GEANT4   (Vladimir Ivanchenko - Jul 26, 10:51)
 Add Message Add Message
to: "Re: Correlated polarized photons in GEANT4"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]