Usuario:

Estructura

Storyboard

>Modelo

ID:(1190, 0)


Estructura del programa main

Descripción

El programa main mas simple posible tiene la estructura:

```
int main(int argc, char** argv){

G4RunManager* runManager = new G4RunManager;

MyGeometry* geom = new MyGeometry();
runManager->SetUserInitialization(geom);

MyPhysicsList* physics = new MyPhysicsList();
runManager->SetUserInitialization(physics);

MyPrimaryGeneratorAction* generator = new MyPrimaryGeneratorAction();
runManager->SetUserAction(generator);

runManager->Initialize();

runManager->BeamOn(1);

delete runManager;
return 0;

}
```

en donde:

> se inicializa el control
> se crea la geometría
> se crean las partículas
> se crea el generador de partículas
> se dispara una partícula
> se cierra el programa

ID:(9412, 0)


Creación de la geometría

Descripción

El mínimo para crear la geometría es un volumen, lo que se puede hacer mediante

```
Class MyGeometry : public G4VUserDetectorConstruction{

G4VPhysicalVolume* Construct();

}
```

lo que se hereda de G4VUserDetectorConstruction.

El volumen incluirá todos los restantes volúmenes del modelo y se denomina el 'mundo' o 'world'.

ID:(9411, 0)


Creación de partículas

Descripción

La forma mas fácil para crear las partículas es usar la lista por defecto que trae Gean4 lo que se hace mediante

```
G4VUserPhysicsList* physics = new FTFP_BERT();
runManager->SetUserInitialization(physics);
```

lo que se hereda de G4VUserPhysicsList.

La otra alternativa es la creación a medida del usaurio que debe de incluir el cosntructor de particulas (ConstructParticle()), de procesos (ConstructProcess()) y los cortes (SetCuts()) mediante:

```
class MyPhysics : public G4VUserPhysicsList{

void ConstructParticle();
void ConstructProcess();
void SetCuts();

}
```

ID:(9413, 0)


Gun de partículas

Descripción

Para generar las partículas se crea un generador con

```
class myGenerator : public G4VUserPrimaryGeneratorAction{

void GeneratePrimaries(G4Event*);

}
```

que se hereda de G4VUserPrimaryGeneratorAction y debe implementar GeneratePrimaries(G4Event*).

Las partículas pueden ser generadas por G4ParticleGun sobre el que se pueden definir los parámetros claves por ejemplo como:

```
G4ParticleGun* myGun = new G4ParticleGun(int n_particle = 1);
myGun->SetMomentumDirection(G4ThreeVector(1,0,0));
myGun->SetKineticEnergy(50.*MeV);
myGun->GeneratePrimaryVertex(G4Event* anEvent);
```

ID:(9414, 0)