You are on page 1of 19

Simulao de um chuveiro

electromagntico produzido por um


foto
Projecto de Fsica Computacional

Francisco Matos 84384


Patrcia Manso 79026
Instituto Superior Tcnico
Mestrado Integrado em Engenharia Fsica e Tecnolgica
Fsica Computacional

Contedo
# Introduo

Objectivos e Mtodos
Principais Interaces

# Organizao do cdigo

Estrutura de Classes
Particle
Photon
ElectronFamily
Electron
Positron
Material and Aluminium
Programa Principal:
projecto.cpp

# Principais problemas/desafios
# Solues de eficincia
# Resultados

Displays
Histogramas
Distribuies
Comparao com valores
tericos

# Concluses

1 / 18

Introduo - Objectivos e Mtodos


# Simulao de cascatas de partculas
electromagnticas, num meio
material de alumnio, iniciadas por
fotes de alta energia
# Utilizao de mtodos de
Monte-Carlo
# Gerao aleatria de diferentes
elementos integrantes da cascata:
Livre percurso das partculas at
interao
Caracterizao em energia e
direco de propagao das
partculas resultantes
2 / 18

Introduo - Principais Interaces

#
#
#
#

Produo de pares electro-positro foto


Radiao de travagem ou de Bremsstrahlung electro/positro
Choques inelsticos com electres do meio electro/positro
Aniquilao positro

3 / 18

Organizao do cdigo - Estrutura de Classes

Particle

Photon

Material

ElectronFamily

Electron

Aluminium

Positron

4 / 18

Organizao do cdigo - Particle


Alguns dos membros da classe
protected :
TVector3 p;
TVector3 ip ;
TVector3 fp ;
double Ei ;
double E ;

//
//
//
//
//

momento
posio
posio
energia
energia

linear
inicial
final
inicial em eV
final em eV

public :
virtual Particle * Same () const = 0;
virtual void SetP ( TVector3 pOriginal ,
const double Energy , const double
polar , const double azimuthal ) = 0;
bool isInZ ( const double z) const ;
virtual double GetEnZ ( const double z)
const = 0;
TVector3 GetIPosition () const { return ip
;};
TVector3 SetPosition ( TVector3 & pos ) { ip
= fp = pos ; return pos ;};
virtual bool isPhoton () const = 0;
virtual void Propagate ( vector < Particle
* >* , const Material *) = 0;

Data members caracterizam a partcula


em momento, posio e energia.
Mtodos:
# Same - retorna uma partcula do
mesmo tipo
# SetP - define o vector momento linear
de uma nova partcula a partir de uma
existente
# isInZ - avalia se partcula passa em z
# GetEnZ - retorna energia em z

# isPhoton/isElectron/isPositron - avalia
se partcula de determinado tipo
# Propagate - propaga a partcula atravs
das interaes a ela associadas
# Outros mtodos - construtor, destrutor,
mtodos Get e Set, definio de
constantes
5 / 18

Organizao do cdigo - Photon: public Particle


Alguns dos membros da classe
public :
Particle * Same () const { return new
Photon () ;};
void SetP ( TVector3 pOriginal , const
double Energy , const double polar ,
const double azimuthal );
double GetEnZ ( const double z) const ;
bool isPhoton () const { return true ;};
static double CrossSectionEPP ( const
Material * M);
static double GenEPPDistance ( const
Material *M);
void Propagate ( vector < Particle * >* , const
Material *) ;
private :
void PropagateEPP ( vector < Particle * >* v
, const Material * M , const double
r );

Todos os data members so herdados de


Particle. Mtodos:
# Same, SetP, GetEnZ - agora
implementadas
# isPhoton/isElectron/isPositron isPhoton retorna TRUE e as restantes
FALSE
# Propagate - propaga a partcula por
produo de pares apenas
# PropagateEPP - mtodo de propagao
do foto por produo de pares
# Outros mtodos - construtores,
geradores aleatrios (ex:
GenEPPDistance), funes auxiliares
(ex: CrossSectionEPP), definio de
constantes
6 / 18

Organizao do cdigo - ElectronFamily: public Particle


Alguns dos membros da classe
public :
void SetP ( TVector3 pOriginal , const
double Energy , const double polar ,
const double azimuthal );
double GetEnZ ( const double z) const ;
static double CrossSectionFR ( const
Material * M , const double E);
static double GenFRDistance ( const
Material *M , const double E);
protected :
void PropagateFR ( vector < Particle * >* v ,
const Material * M , const double r);
unsigned int PropagateEL ( const Material *
M , const double r);
double EnLostIon ; // energia perdida
entre interaes
private :
static double SectionFR ( const Material *
M , const double E , const double W);

Novo data member criado, EnLostIon, os


restantes so herdados. Mtodos:
# SetP, GetEnZ - implementadas

# CrossSectionFR - mtodo para clculo


da seco eficaz total de
Bremmstrahlung (integrao)
# PropagateFR - mtodo de propagao
da partcula por emisso de fotes de
Bremmstrahlung
# PropagateEL - mtodo de propagao
da partcula por perda de energia (no
se criam novas partculas)
# Outros mtodos - construtores,
geradores aleatrios (ex:
GenFRDistance), funes auxiliares
(ex: SectionFR), definio de
constantes
# .cpp inclui funes auxiliares

7 / 18

Organizao do cdigo - Electron: public ElectronFamily


Alguns dos membros da classe
public :
Particle * Same () const { return new
Electron () ;};
bool isElectron () const { return true ;};
void Propagate ( vector < Particle * >* , const
Material *) ;
double f ( const double gamma ) const ;

Todos os data members so herdados de


ElectronFamily. Mtodos:
# Same - retorna novo objecto Electron

# isPhoton/isElectron/isPositron isElectron retorna TRUE e as restantes


FALSE
# Propagate - propaga o eletro por
emisso de fotes de Bremmstrahlung
e por perda de energia
# Outros mtodos - construtores, funes
auxiliares (ex: f, agora implementada)

8 / 18

Organizao do cdigo - Positron: public ElectronFamily


Alguns dos membros da classe
public :
Particle * Same () const { return new
Positron () ;};
bool isPositron () const { return true ;};
static double CrossSectionPA ( const
double E);
static double GenPADistance ( const
Material *M , const double E);
void Propagate ( vector < Particle * >* v ,
const Material * M);
private :
void PropagatePA ( vector < Particle * >* v ,
const Material * M , const double r);

Todos os data members so herdados de


ElectronFamily. Mtodos:
# Same - retorna novo objecto Positron

# isPhoton/isElectron/isPositron isPositron retorna TRUE e as restantes


FALSE
# PropagatePA - mtodo de propagao
da partcula por aniquilao do
positro
# Propagate - propaga o positro por
emisso de fotes de Bremmstrahlung,
por perda de energia e por aniquilao
do positro
# Outros mtodos - construtores,
geradores aleatrios (ex:
GenPADistance), funes auxiliares
(ex: CrossSectionPA)
9 / 18

Organizao do cdigo - Programa Principal: projecto.cpp

# Declarao e inicializao
de variveis
# for principal para interao
das energias dos fotes
iniciais
# Criao dos fotes iniciais
# Criao dos Canvas

# Criao e Draw dos


displays (TLine)
# Criao e preenchimento
dos histogramas

# Print para ficheiros dos


resultados para cada
energia
# Libertao da memria
(fim do for principal
# Criao e Draw dos
grficos dos resultados
finais e distribuies
# Print para ficheiros

# Libertao de memria
10 / 18

Principais problemas e solues


Principais desafios:
# Integrao e gerao de
aleatrios da distribuio
da energia de
Bremmstrahlung.
Solues:
Utilizar integrao de
Simpson adaptativa
(diminui intervalo de
integrao at erro ser
inferior a um dado), em
vez de
aceitao-rejeio,
Utilizar funo auxiliar
1/x.

Questes por melhorar:


# Gerao mais eficiente dos
ngulos da produo de
pares e de
Bremmstrahlung
(encontrar funo
distribuio auxiliar)
Melhorias feitas na eficincia:
# Utilizao de funes
auxiliares aproximadas das
distribuies

11 / 18

Resultados - Displays e Histogramas


Foto de 1GeV, 250 amostras.

z (cm)

Electron

Positron

0.8

100

Electron

Positron

100

80

Particle Number

z (cm)

Particle Number
Photon

y (cm)

Longitudinal Profile
Photon

x (cm)

Electromagnetic Shower

12

10

0.6
80

1
60

0.4

60
0

40

0.2
1

20
0

0.2

0.3
0.2
0.1

40
4

(c

20

0.2

0.6

0.2

0.8

x (c

m)

0.4
0

40

60

80

100

120
z (cm)

N
4.5

3.5

0
0

20

Total Energy
Electrons

40

60

80

100

120

x (cm)

Electrons + Positrons Number

Photon Number

20

5
5

140 160
z (cm)

Particle Deposition (Energy)


Photons

1000

Electrons
Positrons

Positrons

E (MeV)

0.4

E (MeV)

0
0.1
0.2
0.3
0.4

Photons

Electrons
Positrons

800
4
3
5

600
3

2.5
4
2

400

2
1.5

2
1
1

0
0

200

0.5

20

40

60

80

100

120

140

160
z (cm)

0
0

20

40

60

80

100

120

140

160
z (cm)

0
0

20

40

60

80

100

120

140 160
z (cm)

0
0

20

40

60

80

100

120

140 160
z (cm)

12 / 18

Resultados - Displays e Histogramas


Foto de 5GeV, 75 amostras.

Electron

z (cm)

120

Positron

Particle Number

5
500

Electron

Positron

Photon

z (cm)

Particle Number

y (cm)

Longitudinal Profile
Photon

x (cm)

Electromagnetic Shower

50

400

40

300

30

200

20

100

10

100
2
80

0
1

60
0
40

20

0
2
0
0.5
1
1.5

2.5 2

1.5 1

0.5

0.5

1.5

x (c

m)

3
0

40

60

80

100

120
z (cm)

30

Electrons

20

40

60

80

100

120

140

160
z (cm)

Particle Deposition (Energy)


Photons

5000

16

Photons

22
20

Electrons
Positrons

Positrons
4000

14

25

0
0

Total Energy

18

0
x (cm)

Electrons + Positrons Number

Photon Number

20

5
5

E (MeV)

(c

E (MeV)

0.5

Electrons
Positrons

18
16

12
14

20

3000
10
12

15

10
2000
8

6
10

6
4

1000

5
2

0
0

20

40

60

80

100

120

140

160
z (cm)

0
0

20

40

60

80

100

120

140

160
z (cm)

0
0

20

40

60

80

100

120 140

160
z (cm)

0
0

20

40

60

80

100 120

140

160
z (cm)

13 / 18

Resultados - Distribuies
Foto de 1GeV, 250 amostras.

14 / 18

Resultados - Distribuies
Foto de 5GeV, 75 amostras.

15 / 18

Resultados Finais

16 / 18

Resultados Finais
Pair Production Angle Distribution

Pair Production Energy Fraction Distribution


5 MeV
50 MeV

160

500 MeV
140

Bremsstrahlung Energy Fraction Distribution


5 MeV

4000

500 MeV

3500

5 GeV

60

1500

40

1000

5 GeV

400

2000

80

500 MeV

500

2500

100

50 MeV
600

5 GeV
3000

120

5 MeV

50 MeV

300

200

0
0

100

500

20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

0
0

Bremsstrahlung Angle Distribution

1.5

2.5

0
0

500 MeV

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

50 MeV

5 MeV
50 MeV

350

500 MeV

600

5 GeV

0.9

Positron Annihilation Angle Distribution


5 MeV

700

50 MeV

400

3
(rad)

Positron Annihilation Energy Fraction Distribution

5 MeV
500

0.5

5 GeV

500 MeV
300

5 GeV

500
250
300

400
200
300

150

200
200

100

100
100

0
0

0.5

1.5

2.5

3
(rad)

0
0

50

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

0
0

0.5

1.5

2.5

3
(rad)

17 / 18

Concluses
Embora alguns dos valores obtidos ficassem aqum do
esperado, a simulao foi bem conseguida.
Este tipo de programa til para extrao de informao
de detectores, embora seja possivelmente necessria a
implementao de interaes adicionais para resolver
discrepncias existentes.

18 / 18

You might also like