Usuario:


Estructura

Storyboard

>Modelo

ID:(1190, 0)



Estructura del programa main

Descripción

>Top


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

>Top


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

>Top


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

>Top


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)