Added to SVN repository
This commit is contained in:
parent
b67a2876ac
commit
b98f222ba8
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : AsymCheck.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// ASYMCHECK
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef AsymCheck_h
|
||||
#define AsymCheck_h 1
|
||||
@ -33,11 +55,6 @@ public:
|
||||
|
||||
AsymCheck() ;
|
||||
~AsymCheck() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void UserSteppingAction(const G4Step *theStep);
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : FieldCheck.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// FIELDCHECK
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
#ifndef FieldCheck_h
|
||||
#define FieldCheck_h 1
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : FocalLengthTest.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2005-03-02 09:37
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// FocalLengthTest
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
#ifndef FocalLengthTest_h
|
||||
#define FocalLengthTest_h 1
|
||||
|
||||
|
@ -1,6 +1,64 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRAtRestSpinRotation.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 16:15
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// AT REST SPIN ROTATION
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*The LEMuSRAtRestSpinRotation class contains the implementation of the muon spin
|
||||
*precession in a magnetic field when the muon is at rest.
|
||||
*
|
||||
*To implement a process one should create a particle change object.
|
||||
*
|
||||
*Indeed, in Geant4, a process is simply the change of an old particle to a new
|
||||
*one. Hence, this spin rotation process will just replace the muon by another
|
||||
*one with spin rotated, but same parameters of time, position, etc.
|
||||
*
|
||||
*The particle change object registers all the parameters of the new particle,
|
||||
*like the change in time, the momentum direction, the position, the polarization but also
|
||||
*the type of the particle, which can be changed also as in the muonium formation
|
||||
*process (cf.LEMuSRMUONIUM ).
|
||||
*
|
||||
*At each step of a track Geant4 we check the list possible processes to excecute
|
||||
*(cf. LEMuSRPhysicsList) and will select them according to the priority which was
|
||||
*given by the user and to the state of the particle. Indeed, the user should
|
||||
*indicate if the process should be ran at rest, before and/or after the step.
|
||||
*
|
||||
*
|
||||
*Some processes can be implemented such that the behaviour in different in those
|
||||
*three different cases.
|
||||
*
|
||||
*Hence the class G4VProcess contains three important virtual methods:
|
||||
* -# PreStepDoIt()
|
||||
* -# PostStepDoIt()
|
||||
* -# AtRestDoIt()
|
||||
* .
|
||||
*In the present implementation, we only use the AtRestDoIt() method.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LEMUSRATRESTSPINROTATION_H
|
||||
#define LEMUSRATRESTSPINROTATION_H 1
|
||||
|
||||
|
||||
#include "G4VRestProcess.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
#include "G4MagneticField.hh"
|
||||
@ -11,45 +69,83 @@
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4ParticleChangeForTransport.hh"
|
||||
#include "LEMuSRParticleChangeForSR.hh"
|
||||
|
||||
|
||||
/*!
|
||||
* This class is a public class of the G4VRestProcess class,
|
||||
* which contains virtual methods to execute a process when a particle
|
||||
* is at rest.
|
||||
*/
|
||||
class LEMuSRAtRestSpinRotation : public G4VRestProcess
|
||||
{
|
||||
|
||||
|
||||
public:
|
||||
LEMuSRAtRestSpinRotation(const G4String& processName = "SpinRotationAtRest" );
|
||||
LEMuSRAtRestSpinRotation(G4VRestProcess& );
|
||||
|
||||
virtual ~LEMuSRAtRestSpinRotation();
|
||||
|
||||
static LEMuSRAtRestSpinRotation* GetInstance();
|
||||
private:
|
||||
static LEMuSRAtRestSpinRotation* pointer;
|
||||
|
||||
//! The constructor specifies the process name.
|
||||
LEMuSRAtRestSpinRotation(const G4String& processName = "SpinRotationAtRest" );
|
||||
LEMuSRAtRestSpinRotation(G4VRestProcess& );
|
||||
|
||||
virtual ~LEMuSRAtRestSpinRotation();
|
||||
|
||||
//! Method to return a pointer to the spin rotation process instance.
|
||||
static LEMuSRAtRestSpinRotation* GetInstance();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
//! The pointer to the process
|
||||
/**
|
||||
One can use it to communicate with the process and get information about different parameters
|
||||
*/
|
||||
static LEMuSRAtRestSpinRotation* pointer;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//!The main method to execute the spin precession process.
|
||||
G4VParticleChange* AtRestDoIt(const G4Track& theTrack, const G4Step& theStep);
|
||||
|
||||
// G4Track
|
||||
void RotateSpin(const G4Step&, G4ThreeVector, G4double);
|
||||
|
||||
G4double point[4];
|
||||
G4double B[3], rotation_angle;
|
||||
|
||||
G4double itime, ftime, deltatime;
|
||||
|
||||
|
||||
G4double
|
||||
//! The muon position-time is given to the method GetFieldValue in order to get the magnetic field vector.
|
||||
point[4];
|
||||
G4double
|
||||
//! The magnetic field vector at the point[4] position.
|
||||
B[3],
|
||||
//! The spin rotation angle computed in the RotateSpin method
|
||||
rotation_angle;
|
||||
G4double
|
||||
//! The initial time.
|
||||
itime,
|
||||
//! The final time.
|
||||
ftime,
|
||||
//! The time variation.
|
||||
deltatime;
|
||||
G4ThreeVector SpinDirection;
|
||||
|
||||
|
||||
G4ParticleChange thePParticleChange;
|
||||
G4VParticleChange theVParticleChange;
|
||||
G4ParticleChangeForTransport theTParticleChange;
|
||||
//! The particle change object which stores all the proposed modification of the particle's state.
|
||||
LEMuSRParticleChangeForSR theParticleChange;
|
||||
|
||||
|
||||
const G4Field *mfield;
|
||||
|
||||
|
||||
|
||||
void RotateSpin(const G4Step&, G4ThreeVector, G4double);
|
||||
|
||||
|
||||
inline G4double GetMeanLifeTime(const G4Track&, G4ForceCondition* condition)
|
||||
{
|
||||
*condition = Forced;
|
||||
return DBL_MAX;
|
||||
}
|
||||
G4ThreeVector polar;
|
||||
|
||||
|
||||
|
||||
{
|
||||
*condition = Forced;
|
||||
return DBL_MAX;
|
||||
}
|
||||
|
||||
/*! The particle's polarization vector.*/
|
||||
G4ThreeVector polar;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif
|
||||
|
@ -1,13 +1,44 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRCryoField.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// CRYOFIELD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#include "G4ElectricField.hh"
|
||||
#include"G4ThreeVector.hh"
|
||||
#include"G4ios.hh"
|
||||
/*!
|
||||
* This class is defines homogenous electric field in the cryostat region.
|
||||
* It is obsolete since a field map has been introduces for this region.
|
||||
* Should be removed in the future.
|
||||
*/
|
||||
|
||||
class LEMuSRCryoField : public G4ElectricField
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
/*! This constructor initializes the field for all the sample chamber
|
||||
*/
|
||||
LEMuSRCryoField(G4ThreeVector FieldVector);
|
||||
/*! The constructor initializes the field within the boundary cylinder centered in mcpv_z, radius and length= zmax-zmin
|
||||
*/
|
||||
|
||||
LEMuSRCryoField(G4ThreeVector FieldVector,G4double radius,G4double zmin, G4double zmax,G4double mcpv_z);
|
||||
~LEMuSRCryoField();
|
||||
|
||||
|
@ -1,3 +1,40 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRCryoHit.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// CRYOHIT
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*The LEMuSRCryoHit class defines the Hit object for the Sample Plate. A hit is an elementary
|
||||
*component for the sensitive detection. As soon as particle enters in the specified
|
||||
*volume, a hit object is created and will store any parameter the user wants to
|
||||
*consider.
|
||||
*The hit can then be plotted, printed or registered in a hit collection for further histogramming.
|
||||
*
|
||||
*However, it is not necessary to use hits objects since histograms can be filled
|
||||
*directly from the sensitive detector classes (cf. LEMuSRCryoSD.cc).
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LEMuSRCryoHit_h
|
||||
#define LEMuSRCryoHit_h 1
|
||||
|
||||
|
@ -1,17 +1,56 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRCryoSD.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// CRYOSD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*The sensitive detector classes are the most important to simulate the data acquisition.
|
||||
*The sensitive detector object is attached to the detector in LEMuSRDetectorConstruction.
|
||||
*
|
||||
*During the particle transportation, geant4 will check if the volume where the particle
|
||||
*travels is a sensitive detector (cf. G4Transportation). If this is the case, the method
|
||||
*ProcessHits will be executed.
|
||||
*
|
||||
*In the geant4 standard, the ProcessHit method would create a hit object, fill it with
|
||||
*desired parameters and send it to the corresponding hits collection for histogramming.
|
||||
*
|
||||
*This implementationof the \lemu simulation uses Root for histogramming, and therefore the hit object are not used.
|
||||
*Instead of filling a collection, we directly fill a Root tree with all the data we want.
|
||||
*A new hit structutre has been implemented according to Root format.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LEMuSRCryoSD_h
|
||||
#define LEMuSRCryoSD_h 1
|
||||
|
||||
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
|
||||
#include "LEMuSRCryoHit.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4Run.hh"
|
||||
|
||||
// root histogram classes
|
||||
//! Root histogramming classes
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "TROOT.h"
|
||||
#include "TFile.h"
|
||||
#include "TH1.h"
|
||||
@ -32,18 +71,34 @@ class LEMuSRCryoSD : public G4VSensitiveDetector
|
||||
{
|
||||
public:
|
||||
|
||||
//! The constructor specifies the name.
|
||||
LEMuSRCryoSD(G4String name);
|
||||
~LEMuSRCryoSD();
|
||||
|
||||
//!Initialization of the sensitive detector
|
||||
void Initialize (G4HCofThisEvent* HCE);
|
||||
|
||||
//! The main method for sensitive detection.
|
||||
/*!
|
||||
* This method contains all the operations to perform when a particle is detected in the volume. Note that it is called at each step, which is very important because a single particle can make many hits. For some detectors it is important to detect a particle only once (to avoid multiple counts in histograms).
|
||||
* The CheckCondition method (see later) can be used to segregate unwanted hits. For any good event, the following methods are executed:
|
||||
* -# GetDatas() : to store the parameters.
|
||||
* -# getHit() : to fill the Root hit object with the previous parameters.
|
||||
* -# FillRoot() : to fill the Root tree with the Root hit object.
|
||||
*/
|
||||
G4bool ProcessHits(G4Step* aStep, G4TouchableHistory*ROhist);
|
||||
void EndOfEvent (G4HCofThisEvent* HCE);
|
||||
void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
//! Root method to book a tree.
|
||||
void BookRoot();
|
||||
|
||||
//! Root method to fill a tree.
|
||||
void FillRoot();
|
||||
|
||||
//! Root method to write a tree in a file.
|
||||
void WriteRoot();
|
||||
|
||||
TFile *myFile;
|
||||
@ -57,13 +112,31 @@ public:
|
||||
G4ThreeVector hitpos, hitmom;
|
||||
G4int ID;
|
||||
|
||||
//! Boolean variable set by the CheckCondition method. If condition=true, the hit will be stored in the Root tree.
|
||||
G4bool condition;
|
||||
|
||||
//! Events segregation.
|
||||
/*!
|
||||
* The CheckCondition method is the first called by the ProcessHit method. It will check if the step information should be stored or not. Here, the step is registered when the following conditions are fulfilled:
|
||||
* - The particle is a muon or a muonium
|
||||
* - The particle is in the Sample Holder2 (lv_SAH2, cf. LEMuSRDetectorConstruction.cc)
|
||||
*/
|
||||
G4bool CheckCondition(const G4Step* aStep);
|
||||
|
||||
|
||||
//! Obtaining data on the particle.
|
||||
/*!
|
||||
* The GetDatas() method take useful data from the step:
|
||||
* - Volume, name, spin
|
||||
* - Position, momentum
|
||||
* - Time
|
||||
* - Energy
|
||||
* .
|
||||
* Those data are taken in G4 format i.e. with units.
|
||||
*/
|
||||
void GetDatas(const G4Step* aStep);
|
||||
|
||||
|
||||
//! The Root Hit Structure.
|
||||
typedef struct
|
||||
{
|
||||
Float_t kenergy, tenergy, edeposit;
|
||||
@ -73,7 +146,13 @@ typedef struct
|
||||
Int_t muon,positron,gamma, runid;
|
||||
} cryoHit ;
|
||||
|
||||
//! Root hit object.
|
||||
cryoHit theHit;
|
||||
|
||||
//! Filling the Root hit object.
|
||||
/*!
|
||||
* The getHit() method fills the Root hit object theHit with the data taken in the GetDatas method. As root do not handle units, the user must specify them explicitely. Otherwise, the default \gf units are used.
|
||||
*/
|
||||
void getHit();
|
||||
|
||||
private:
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRDecay.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// LEMUSRDECAY
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRDecay_h
|
||||
#define LEMuSRDecay_h 1
|
||||
|
||||
@ -16,12 +38,19 @@ class LEMuSRDecay : public G4Decay
|
||||
{
|
||||
|
||||
protected: // With Description
|
||||
|
||||
//! The main method for the decay process.
|
||||
/*!
|
||||
* The DecayIt() method returns by pointer a particle-change object,
|
||||
* which has information of daughter particles.
|
||||
*/
|
||||
|
||||
virtual G4VParticleChange* DecayIt(
|
||||
const G4Track& aTrack,
|
||||
const G4Step& aStep
|
||||
);
|
||||
// The DecayIt() method returns by pointer a particle-change object,
|
||||
// which has information of daughter particles.
|
||||
const G4Track& aTrack,
|
||||
const G4Step& aStep
|
||||
);
|
||||
|
||||
//! The particle change object.
|
||||
G4ParticleChangeForDecay pParticleChangeForDecay;
|
||||
// const G4VExtDecayer *m_ExtDecayer;
|
||||
G4double m_RemainderLifeTime;
|
||||
|
@ -1,3 +1,28 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRDepolarize.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 15:17
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// LEMUSRDEPOLARIZE
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
/*!
|
||||
This class was built to depolarize the muon in some materials. It is not used in the simulation and shall probably be removed.
|
||||
*/
|
||||
|
||||
#ifndef LEMuSRDepolarize_h
|
||||
#define LEMuSRDepolarize_h 1
|
||||
@ -15,6 +40,7 @@
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
#include "LEMuSRPrimaryGeneratorAction.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class LEMuSRDepolarize : public G4VDiscreteProcess
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRDetectorConstruction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-06-24 16:24
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,9 +18,27 @@
|
||||
// &
|
||||
// &
|
||||
// DETECTOR CONSTRUCTION.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
/*! In this class the detector geometry is defined according to the following hierarchy:
|
||||
* - Solid Volume
|
||||
* -# The solid shape of the detector element. For example tube, sphere, box etc.
|
||||
* -# It can be defined as a boolean combination of solids.
|
||||
* - Logical Volume
|
||||
* -# The solid volume plus a material, a color, and all other specific parameters.
|
||||
* -# One can define different kind of attributes: visualization attributes, step size limitation, minimal kinetic enery to pursue the tracking of a particle etc. They are called UserAttributes or UserLimits. For more precision please refer to the G4UserLimits class.
|
||||
* -# The sensitive detection is also set in the logical volume: the user should first define a sensitive detector, and then assign it to the logical volume (cf. source code of LEMuSRDetectorConstruction.cc)
|
||||
* - Physical Volume
|
||||
* -# The logical volume and its position inside a mother logical volume.
|
||||
* -# One can also define space transformations (rotation, translation etc.) to position the physical volume in the mother volume.
|
||||
* -# Only the World volume does not need to be given a mother volume.
|
||||
* .
|
||||
* The main method is the virtual method Construct.
|
||||
* For clarity and compilation reasons the implementation code has been shared in the following files:
|
||||
* -# LEMuSRDetectorConstruction.cc
|
||||
* -# LEMuSRMaterials.cc where the materials table is built as well as the different attribute
|
||||
* -# LEMuSRdummydets.cc, which build the dummy detectors. This file should be removed in the future since we notice that the introduction of dummy detectors could influence the results.
|
||||
*/
|
||||
#ifndef LEMuSRDetectorConstruction_H
|
||||
#define LEMuSRDetectorConstruction_H 1
|
||||
|
||||
@ -75,20 +93,55 @@ class LEMuSRDetectorConstruction : public G4VUserDetectorConstruction
|
||||
|
||||
public:
|
||||
// Constructeur et destructeur
|
||||
|
||||
/*! The pointer to the detector instance.*/
|
||||
static LEMuSRDetectorConstruction* theDetector; // un pointeur a l'instance
|
||||
//! Return the detector pointer.
|
||||
/*! This method returns a pointer to the detector instance.*/
|
||||
static LEMuSRDetectorConstruction* GetInstance();
|
||||
|
||||
/*! In the constructor, the detector messenger is instanciated and the pointer to the detector instance is given to the detector messenger.
|
||||
*
|
||||
* The materials table is also defined in the constructor by calling the MaterialsDefinition method.
|
||||
*
|
||||
* Finally, the constructor contains the default initialization of the modifiable variables like the carbon foil thickness, the voltages, the layout of the detector (mcp, cryo, guards on/off etc.). Those parameters can be changed interactively during the simulation via the detector messenger (cf. LEMuSDetectorMessenger).
|
||||
*
|
||||
*/
|
||||
//! Constructor.
|
||||
LEMuSRDetectorConstruction();
|
||||
//! Destructor.
|
||||
~LEMuSRDetectorConstruction();
|
||||
|
||||
|
||||
|
||||
// construction
|
||||
//! Main method.
|
||||
/*! The Construct method contains the implementation of the detector construction. It calls different methods which are in charge of building the different parts of the detector. For example
|
||||
* - lemuMCP2
|
||||
* - lemuCRYO
|
||||
* - lemuAnode
|
||||
* - lemuMCPdet
|
||||
* - lemuSCINT
|
||||
* - lemuLinse3
|
||||
* - lemuTrigger_Detector
|
||||
*.
|
||||
* Some other methods are called to create the different fields
|
||||
* ( anode, electric/magnetic field at the sample etc.).
|
||||
*
|
||||
* As it is a virtual method, its name <I>must not</I> be changed.
|
||||
*
|
||||
* In the source code LEMuSRDetectorContruction.cc, one would notice that the Construct() method returns the result of the lemuDetector() method, where all the implementation is actually done.
|
||||
*/
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
|
||||
//! Implementation of the detector construction procedure (cf. Construct).
|
||||
/*! In this method the Wold volume or Labo is defined as a 2x2x2 m³ room. Then the different contruction methods are called and the sensitive detection for the scintillators, the MCP2 and the sample plate are defined (cf. Construct).
|
||||
*/
|
||||
G4VPhysicalVolume* lemuDetector();
|
||||
|
||||
|
||||
// messenger
|
||||
/*! The pointer to the detector messenger.*/
|
||||
LEMuSRDetectorMessenger* Messenger;
|
||||
|
||||
|
||||
@ -115,7 +168,8 @@ private:
|
||||
|
||||
|
||||
//======= MPC2 =================
|
||||
|
||||
//! MCP2 chamber.
|
||||
/*! This method contructs the MCP2 chamber.*/
|
||||
void lemuMCP2();
|
||||
|
||||
//solids
|
||||
@ -147,6 +201,7 @@ private:
|
||||
G4VPhysicalVolume* pv_GATV;
|
||||
G4VPhysicalVolume* pv_GATS ;
|
||||
|
||||
/*! This method contructs the field of the ring anode.*/
|
||||
void buildAnodeField();
|
||||
|
||||
|
||||
@ -159,7 +214,8 @@ public:
|
||||
|
||||
//=================== ANODE =======================
|
||||
private:
|
||||
|
||||
//! Ring Anode
|
||||
/*! This method contructs the ring anode. The electric field is defined by a field map.*/
|
||||
void lemuANODE();
|
||||
|
||||
// solids
|
||||
@ -187,6 +243,8 @@ private:
|
||||
|
||||
//================ MCP DETECTOR =====================
|
||||
private:
|
||||
//! MCP detector.
|
||||
/*! This method contructs the MCP detector. It is attached to a sensitive detector in the lemuDetector method.*/
|
||||
void lemuMCPdet();
|
||||
|
||||
// solids
|
||||
@ -224,6 +282,8 @@ public:
|
||||
|
||||
//================ CRYOSTAT ======================
|
||||
private:
|
||||
//! Cryostat.
|
||||
/*! This method contructs the sample cryostat. It is attached to a sensitive detector in the lemuDetector method.*/
|
||||
void lemuCRYO();
|
||||
|
||||
// solids
|
||||
@ -281,7 +341,12 @@ private:
|
||||
G4MagneticField* sampleField;
|
||||
|
||||
|
||||
//! Electromagnetic fields in the gate valve chamber and the MCP2 chamber.
|
||||
/*! This method defines the field in the sample region.*/
|
||||
void buildCryoField();
|
||||
|
||||
//! Get new field maps.
|
||||
/*! This method can be enabled via an environment variable in case new field maps are built*/
|
||||
void NEWMAPS();
|
||||
|
||||
public:
|
||||
@ -292,6 +357,8 @@ public:
|
||||
|
||||
//================ LINSE three ======================
|
||||
private:
|
||||
//! Third Lense.
|
||||
/*! This method contructs the third einzel lense. The electric field is defined by a field map.*/
|
||||
void lemuLinse3();
|
||||
|
||||
// solids
|
||||
@ -336,6 +403,11 @@ private:
|
||||
|
||||
//================ TRIGGER DETECTOR ====================
|
||||
private:
|
||||
//! Trigger detector.
|
||||
/*! This method contructs the trigger detector:
|
||||
* - The carbon foil
|
||||
* - The electric fields
|
||||
*/
|
||||
void lemuTrigger_Detector();
|
||||
|
||||
// solids
|
||||
@ -364,6 +436,8 @@ private:
|
||||
|
||||
//================ COMPENSATION GATE ====================
|
||||
private:
|
||||
//! Compensation gate.
|
||||
/*! This method contructs the compensation gate.*/
|
||||
void lemuCGate();
|
||||
|
||||
// solids
|
||||
@ -378,6 +452,8 @@ private:
|
||||
|
||||
//======= INNER/OUTER SCINTILLATOR =================
|
||||
private:
|
||||
//! Scintillators.
|
||||
/*! This method contructs the inner and outer scintillators as four quarter of cynlinders around the MCP2 chamber. The sensitive detection is set in the lemuDetector() method.*/
|
||||
void lemuSCINT();
|
||||
|
||||
|
||||
@ -408,8 +484,9 @@ private:
|
||||
|
||||
|
||||
|
||||
//================ ASYMETRY TEST VOLUMES ================
|
||||
//================ ASYMMETRY TEST VOLUMES ================
|
||||
private:
|
||||
//! Test of asymmetry
|
||||
void lemuAsym();
|
||||
|
||||
// solids
|
||||
@ -424,6 +501,7 @@ private:
|
||||
|
||||
//========= ELECTRIC FIELD TEST VOLUMES ================
|
||||
private:
|
||||
//! Test of electric fields
|
||||
void lemuFieldCheck();
|
||||
// solids
|
||||
G4Tubs* fchk_tube;
|
||||
@ -444,6 +522,8 @@ public:
|
||||
|
||||
//====== MATERIAL DECLARATION =========================
|
||||
private:
|
||||
//! Declaration of materials
|
||||
/*! This method contains the definition of all elements and materials and builds the materials table. It is important to call this method in the contructor because the materials table should be built only once. If this method was called in the Construct method, each modification of the detector would lead to an additional materials table. The consequence is a severe conflict causing a segmentation fault.*/
|
||||
void MaterialsDefinition();
|
||||
|
||||
//materials
|
||||
|
@ -1,3 +1,41 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRDetectorMessenger.hh, v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-20 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// DETECTOR MESSENGER
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
/**
|
||||
* The LEMuSRDetectorMessenger class defines the terminal's commands to operate changes in the detector geometry. The following settings can be personalized:
|
||||
* -# MCP/Sample cryostat geometry
|
||||
* -# Electric Fields on/off
|
||||
* -# Magnetic Fields on/off
|
||||
* -# Sample cryostat grid
|
||||
* -# Sample cryostat guards
|
||||
* -# Electric potentials
|
||||
* -# Carbon foil thickness
|
||||
* -# Maximal step size in field regions
|
||||
* -# Sample holder material
|
||||
* -# Views of the detector
|
||||
* .
|
||||
* Many more can be implemented at will by the user.
|
||||
*/
|
||||
#ifndef LEMuSRDetectorMessenger_h
|
||||
#define LEMuSRDetectorMessenger_h 1
|
||||
|
||||
@ -36,47 +74,71 @@ class LEMuSRDetectorConstruction; //modif
|
||||
|
||||
class LEMuSRDetectorMessenger : public G4UImessenger {
|
||||
public:
|
||||
//! Constructor.
|
||||
/*!
|
||||
* It stores the pointer to the detector provided by LEMuSRDetectorConstruction.
|
||||
* For the command names, refer to the LEMuSRDetectorMessenger.cc file.
|
||||
*/
|
||||
LEMuSRDetectorMessenger(LEMuSRDetectorConstruction*);
|
||||
|
||||
//! Destructor.
|
||||
~LEMuSRDetectorMessenger();
|
||||
|
||||
|
||||
public:
|
||||
//! Applying the modifications.
|
||||
void SetNewValue(G4UIcommand* command, G4String newvalue);
|
||||
|
||||
|
||||
//arguments
|
||||
private:
|
||||
//! Pointer to the detector.
|
||||
LEMuSRDetectorConstruction* theDetector;
|
||||
|
||||
// commands
|
||||
private:
|
||||
|
||||
//! Directory name for the commands: /Detector/
|
||||
|
||||
G4UIdirectory* DetMode;
|
||||
|
||||
//commands with STRING
|
||||
//! Detector with MCP/CRYO
|
||||
G4UIcmdWithAString* SetDetMode ;
|
||||
//! Enable/Disable electric fields
|
||||
G4UIcmdWithAString* SetElField ;
|
||||
//! Enable/Disable grids at sample cryostat
|
||||
G4UIcmdWithAString* SetGrid ;
|
||||
//! Enable/Disable guards at sample cryostat
|
||||
G4UIcmdWithAString* SetGuards ;
|
||||
//! Set the view of the detector (quarter, half, total).
|
||||
/*!
|
||||
* Only for visualization purpose. The total geometry must be loaded to run a simulation.
|
||||
*/
|
||||
G4UIcmdWithAString* SetDetVisualization ;
|
||||
//! The material for the sample holder
|
||||
G4UIcmdWithAString* SetSAHmaterial ;
|
||||
|
||||
//! Would replace the environment variable in order to run any test without recompilation.
|
||||
G4UIcmdWithAString* SetAsymCheck ;
|
||||
G4UIcmdWithAString* SetFieldCheck ;
|
||||
|
||||
//commands with DOUBLE
|
||||
//! Third lens voltage settings
|
||||
G4UIcmdWithADouble* SetThirdLensPotential, *SetCFthk ;
|
||||
//! Maximal step in field regions
|
||||
G4UIcmdWithADouble* SetFieldStepLim ;
|
||||
//! Magnetic field value (will be changed to current)
|
||||
G4UIcmdWithADouble* SetMagField ;
|
||||
|
||||
//! Sample cryostat voltage
|
||||
G4UIcmdWithADouble* SetCryoPotential;
|
||||
|
||||
|
||||
//coomand with 3vector
|
||||
//! Ring anode potential
|
||||
G4UIcmdWith3Vector* SetRAPotential;
|
||||
|
||||
|
||||
|
||||
//! The new detector to build
|
||||
G4VPhysicalVolume* newDetector;
|
||||
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSREMPhysics.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// ElectroMagnetic Physics List
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
// -------------------------------------------
|
||||
// History
|
||||
// first version 12 Nov. 2000 by H.Kurashige
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRElFieldMix.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2005-02-14 15:15
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,8 +18,23 @@
|
||||
// &
|
||||
// &
|
||||
// Electric Field MIX
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
/**
|
||||
* In order to build complex electric fields, the following class has been built.
|
||||
* It allows the superposition of many electric fields recurrently.
|
||||
*
|
||||
* The main reason for this is that the field manager attached to a given volume do not handle such a
|
||||
* superposition. In the case of the sample chamber, this is a big problem because we have to handle
|
||||
* the fields of the ring anode and of the sample cryostat.
|
||||
*
|
||||
* The electric field in the sample region (gate valve chamber + mcp2 chamber) is then the
|
||||
* superposition of the following electric fields:
|
||||
* -# left side of the ring anode
|
||||
* -# right side of the ring anode
|
||||
* -# sample cryostat
|
||||
* .
|
||||
* On the same principle was built the class LEMuSRElMagField.
|
||||
*/
|
||||
#ifndef LEMUSRELECTRICFIELDMIX_H
|
||||
#define LEMUSRELECTRICFIELDMIX_H 1
|
||||
|
||||
@ -43,24 +58,37 @@ class LEMuSRElFieldMix : public G4ElectricField
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
//! Contructor for two field map superposition.
|
||||
LEMuSRElFieldMix( LEMuSRElectricField* E1, LEMuSRElectricField* E2, G4double field1_val, G4double field2_val);
|
||||
|
||||
//! Constructor for two general fields superposition.
|
||||
LEMuSRElFieldMix( G4ElectricField* E1, G4ElectricField* E2, G4double field1_val, G4double field2_val);
|
||||
|
||||
|
||||
|
||||
|
||||
//! Destructor.
|
||||
~LEMuSRElFieldMix();
|
||||
|
||||
void GetFieldValue(const G4double point[4], G4double *Bfield) const;
|
||||
//! Method to return the field at position-time point[4].
|
||||
/*!
|
||||
* As an electric field superposition is linear, the GetFieldValue method simply ask each input field
|
||||
* for its value at the given position-time and returns as a field value the weighted sum of the
|
||||
* two answers.
|
||||
*/
|
||||
void GetFieldValue(const G4double point[4], G4double*) const;
|
||||
|
||||
void Test();
|
||||
|
||||
public:
|
||||
G4double coef1, coef2;
|
||||
// LEMuSRElectricField* field1, *field2;
|
||||
G4ElectricField* field1, *field2;
|
||||
|
||||
//! Input field 1.
|
||||
G4ElectricField* field1;
|
||||
//! Input field 2.
|
||||
G4ElectricField* field2;
|
||||
|
||||
//! Weight for input field 1.
|
||||
G4double coef1;
|
||||
//! Weight for input field 2.
|
||||
G4double coef2;
|
||||
|
||||
|
||||
};
|
||||
|
@ -1,3 +1,43 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRElMagField.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// ElectroMagnetic Field
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
/**
|
||||
* In order to build complex electromagnetic fields, the following class has been built.
|
||||
* It allows the superposition of an electric field and a magnetic field.
|
||||
*
|
||||
* The main reason for this is that the field manager attached to a given volume do not handle such a
|
||||
* superposition. In the case of the sample chamber, this is a big problem because we have to handle
|
||||
* the electric fields of the ring anode and of the sample cryostat as well as the magnetic field over the sample.
|
||||
*
|
||||
* The electromagnetic field in the sample region (gate valve chamber + mcp2 chamber) is then the
|
||||
* superposition of the following fields:
|
||||
* -# electric field for left side of the ring anode
|
||||
* -# electric field for right side of the ring anode
|
||||
* -# electric field for sample cryostat
|
||||
* -# magnetic field for sample region
|
||||
* .
|
||||
* On the same principle was built the class LEMuSRElFieldMix
|
||||
*/
|
||||
|
||||
#ifndef LEMUSRELECTRICMAGFIELD_H
|
||||
#define LEMUSRELECTRICMAGFIELD_H 1
|
||||
|
||||
|
@ -1,29 +1,69 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRElMag_SpinEqRhs.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// ElectroMagnetic Spin Equation
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
/**
|
||||
* This class defines the motion equation to use to calculate the evolution of a
|
||||
* particle in an electromagnetic field. The derivatives vector is calculated for
|
||||
* the electric field, and for the magnetic field, taking into account the spin precession
|
||||
* and the time evolution.
|
||||
*/
|
||||
|
||||
#ifndef LEMuSRELMAG_SPIN_EQRHS
|
||||
#define LEMuSRELMAG_SPIN_EQRHS
|
||||
#define LEMuSRELMAG_SPIN_EQRHS 1
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4Mag_EqRhs.hh"
|
||||
#include "G4SteppingManager.hh" // Include from 'tracking'
|
||||
#include "G4TrackingManager.hh" // Include from 'tracking'
|
||||
#include "LEMuSRTrackingAction.hh"
|
||||
#include "LEMuSRSteppingAction.hh"
|
||||
#include "G4EventManager.hh"
|
||||
#include "G4TrackingManager.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4ParticleDefinition.hh" // Include from 'tracking'
|
||||
|
||||
|
||||
|
||||
class G4MagneticField;
|
||||
|
||||
|
||||
class LEMuSRElMag_SpinEqRhs : public G4Mag_EqRhs
|
||||
{
|
||||
public: // with description
|
||||
|
||||
//! Constructor.
|
||||
LEMuSRElMag_SpinEqRhs( G4MagneticField* MagField );
|
||||
//! Destructor.
|
||||
~LEMuSRElMag_SpinEqRhs();
|
||||
// Constructor and destructor. No actions.
|
||||
|
||||
//! Set constant particle parameters
|
||||
void SetChargeMomentumMass(G4double particleCharge, // in e+ units
|
||||
G4double MomentumXc,
|
||||
G4double mass);
|
||||
|
||||
//! Calculate derivatives.
|
||||
void EvaluateRhsGivenB( const G4double y[],
|
||||
const G4double B[3],
|
||||
G4double dydx[] ) const;
|
||||
// Given the value of the magnetic field B, this function
|
||||
// Given the value of the electromagnetic field B, this function
|
||||
// calculates the value of the derivative dydx.
|
||||
|
||||
private:
|
||||
@ -35,7 +75,10 @@ class LEMuSRElMag_SpinEqRhs : public G4Mag_EqRhs
|
||||
G4double E;
|
||||
G4double gamma, m_mass;
|
||||
G4double beta;
|
||||
G4double cst;
|
||||
G4double cst;
|
||||
|
||||
G4double oldomegac; //for debugging :: to remove
|
||||
|
||||
};
|
||||
|
||||
#endif /* LEMuSRELMAG_SPIN_EQRHS */
|
||||
#endif
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRElectricField.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,35 @@
|
||||
// &
|
||||
// &
|
||||
// Electric Field
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
/**
|
||||
* The goal of the LEMuSRElectricField class is to read field maps generated by
|
||||
* COMSOL Multiphysics.
|
||||
* \image html field.gif Example of a field map generated using COMSOL.
|
||||
* Those field maps are shared into three ascii files, one per field component,
|
||||
* in the format (x y z B_i).
|
||||
* LEMuSRElectricField reads those files and store them in an array.
|
||||
* Some important parameters must be specified to read a field map:
|
||||
* -# <b> The number of points</b> along each axis which was defined in COMSOL
|
||||
* before exporting the maps.
|
||||
* - It is very important to check that the number of points do not
|
||||
* exceed the size of the array defined in LEMuSRElectricField.hh
|
||||
* -# <b> The unit of the map</b>, which is an important parameter because the
|
||||
* default distance unit in COMSOL is the meter.
|
||||
* - A different unit has an influence
|
||||
* on the coordinates reading, but also on the actual field value which has to
|
||||
* be scaled consequently.
|
||||
* -# The voltage to use because field maps are calculated for 1kV potential.
|
||||
* The user should indicate the actual voltage to multiply the fields values.
|
||||
* -# The offset along z axis, in case the map is not centered on the actual
|
||||
* postition of the field. This is the case for the third lense field for example:
|
||||
* the map is centered on (0, 0, 0) and the center or the lens is at (0, 0, -567mm).
|
||||
* .
|
||||
* The field maps can be very heavy files and reading them can cost a lot of time.
|
||||
* For this reason, it is possible to write the field map array in a single file
|
||||
* after the first reading.
|
||||
*/
|
||||
|
||||
#ifndef LEMUSRELECTRICFIELD_H
|
||||
#define LEMUSRELECTRICFIELD_H 1
|
||||
@ -42,20 +70,28 @@ class LEMuSRElectricField : public G4ElectricField
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
//! Constructor from three field maps
|
||||
LEMuSRElectricField(G4double fieldval,const char* Xfile,
|
||||
const char* Yfile,
|
||||
const char* Zfile,G4String map_length_unit,
|
||||
G4double Offset, G4double nx, G4double ny, G4double nz);//offset must be entered in millimeter
|
||||
|
||||
//! Contructor from a single field map
|
||||
LEMuSRElectricField(G4double fieldval,const char* file,G4String map_length_unit,
|
||||
G4double Offset, G4double nx, G4double ny, G4double nz);
|
||||
|
||||
|
||||
~LEMuSRElectricField();
|
||||
|
||||
//! Returns the field value at Point[4] space-time coordinate.
|
||||
/*!
|
||||
* This method is in charge of returning the field value for a given position.
|
||||
* It scales the field array according to the unit and interpolates the field
|
||||
* value from the cube surrounding Point[4].
|
||||
*/
|
||||
void GetFieldValue(const G4double Point[4], G4double *Bfield) const;
|
||||
|
||||
|
||||
//! Debugging test.
|
||||
void Test();
|
||||
|
||||
public:
|
||||
@ -66,13 +102,25 @@ public:
|
||||
// std::vector< std::vector< std::vector< G4double > > > yField;
|
||||
// std::vector< std::vector< std::vector< G4double > > > zField;
|
||||
|
||||
//! Bx, By, Bz, for all x positions
|
||||
G4double xField[90][90][201];
|
||||
//! Bx, By, Bz, for all y positions
|
||||
G4double yField[90][90][201];
|
||||
//! Bx, By, Bz, for all z positions
|
||||
G4double zField[90][90][201];
|
||||
// The physical limits of the defined region
|
||||
|
||||
//! The physical limits of the defined region
|
||||
G4double minx, maxx, miny, maxy, minz, maxz;
|
||||
|
||||
G4double dx, dy, dz, zOffset, nx,ny,nz, FieldVal;
|
||||
G4double
|
||||
//! Number of divisions along axis.
|
||||
nx,ny,nz,
|
||||
//! Offset along propagation axis
|
||||
zOffset,
|
||||
//! Actual voltage value.
|
||||
FieldVal;
|
||||
|
||||
//! Unit of the field map.
|
||||
G4String map_unit;
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// GEANT4 tag $Name$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
//
|
||||
// class LEMuSREqMagElectricField
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSREventAction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,10 +18,12 @@
|
||||
// &
|
||||
// &
|
||||
// EVENT ACTION.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§////
|
||||
|
||||
//
|
||||
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
/*!
|
||||
* The role of the event action is to take special actions at the beginning or at the end of each event. It can be used for histogramming, plotting trajectories, or any other useful actions.
|
||||
*
|
||||
* It can be used to initialized the hits collections for the sensitive detection. In \lemu simulation, we finally did not really use the event action.
|
||||
*/
|
||||
#ifndef LEMuSREventAction_h
|
||||
#define LEMuSREventAction_h 1
|
||||
|
||||
@ -48,10 +50,14 @@ class G4Event;
|
||||
class LEMuSREventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
//! Constructor.
|
||||
LEMuSREventAction();
|
||||
//! Destructor.
|
||||
~LEMuSREventAction();
|
||||
public: // with description
|
||||
//! Actions to take at the beginnig of the event
|
||||
void BeginOfEventAction(const G4Event* anEvent);
|
||||
//! Actions to take at the end of the event
|
||||
void EndOfEventAction(const G4Event* anEvent);
|
||||
|
||||
void SetDrawFlag (G4String val) {drawFlag = val;};
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRGeneralPhysics.hh , v 1.1
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-24 16:33
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// GENERAL PHYSICS
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
// History
|
||||
// first version 12 Nov. 2000 by H.Kurashige
|
||||
// ------------------------------------------------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
// $Id$
|
||||
// GEANT4 tag $Name$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
|
@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// GEANT4 tag $Name$
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-03 $
|
||||
//
|
||||
//------------- G4MultipleScattering52 physics process --------------------------
|
||||
// by Laszlo Urban, March 2001
|
||||
@ -49,9 +49,9 @@
|
||||
|
||||
// class description
|
||||
//
|
||||
// The class simulates the multiple scattering for any kind
|
||||
// of charged particle.
|
||||
//
|
||||
/** The class simulates the multiple scattering for any kind
|
||||
* of charged particle.
|
||||
*/
|
||||
// class description - end
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
@ -1,3 +1,24 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRMUONIUM.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 16:15
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// AT REST SPIN ROTATION
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
|
||||
#ifndef LEMuSRMUONIUM_h
|
||||
#define LEMuSRMUONIUM_h 1
|
||||
@ -18,17 +39,37 @@
|
||||
#include "yields.h"
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
/*!
|
||||
* LEMuSRMUONIUM class defines the muonium formation process in the carbon foil according
|
||||
* to yields from Gonin's paper Sci. Rev. Instrum. 65 (3), 648-652 (1994).
|
||||
*
|
||||
* \image html yields3.gif The muonium formation yields.
|
||||
*
|
||||
* The main parameters are the thickness of the foil and the energy of the muon. For a given
|
||||
* energy, a corresponding proportion of the muons will be converted into muonium.
|
||||
* Concretely, the muon will be killed and replace by a muonium with same properties of time,
|
||||
* energy, momentum, position etc.
|
||||
*
|
||||
* This process is executed at the end of a step, i.e. the muon is converted into muonium after
|
||||
* flying through the carbon foil.
|
||||
*cf. yields.h, gonin.cc.
|
||||
*/
|
||||
class LEMuSRMUONIUM : public G4VDiscreteProcess
|
||||
|
||||
{
|
||||
public: // with description
|
||||
//! \ct
|
||||
LEMuSRMUONIUM(const G4String& name="Muformation" ,
|
||||
G4ProcessType aType = fElectromagnetic );
|
||||
|
||||
|
||||
//! \dt
|
||||
~LEMuSRMUONIUM();
|
||||
|
||||
G4VParticleChange* PostStepDoIt(
|
||||
//! Main method.
|
||||
/*!
|
||||
*The muonium formation process is executed at the end of a step.
|
||||
*/
|
||||
G4VParticleChange* PostStepDoIt(
|
||||
const G4Track& ,
|
||||
const G4Step&
|
||||
);
|
||||
@ -39,7 +80,9 @@ class LEMuSRMUONIUM : public G4VDiscreteProcess
|
||||
|
||||
|
||||
|
||||
//! Condition for process application (step object).
|
||||
G4bool CheckCondition( const G4Step& aStep);
|
||||
//! Condition for process application (step pointer).
|
||||
G4bool CheckCondition( const G4Step* aStep);
|
||||
|
||||
|
||||
@ -48,8 +91,10 @@ class LEMuSRMUONIUM : public G4VDiscreteProcess
|
||||
G4ThreeVector hitpos, hitmom;
|
||||
G4int ID;
|
||||
|
||||
//! \cbv
|
||||
G4bool condition;
|
||||
|
||||
|
||||
void GetDatas( const G4Step* aStep);
|
||||
// model parameters
|
||||
G4ParticleTable* particleTable;
|
||||
@ -59,7 +104,8 @@ class LEMuSRMUONIUM : public G4VDiscreteProcess
|
||||
G4double rnd;
|
||||
G4DynamicParticle *DP;
|
||||
|
||||
G4VParticleChange fParticleChange;
|
||||
//! The particle change object.
|
||||
G4VParticleChange fParticleChange;
|
||||
|
||||
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRMUONIUMScatt.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 16:15
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// MUONIUMScatt
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
|
||||
|
||||
#ifndef LEMuSRMUONIUMScatt_h
|
||||
#define LEMuSRMUONIUMScatt_h 1
|
||||
@ -16,31 +38,53 @@
|
||||
#include "G4DynamicParticle.hh"
|
||||
#include "LEMuSRPrimaryGeneratorAction.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4MagneticField.hh"
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
/*!
|
||||
* LEMuSRMUONIUMScatt class defines the muonium scattering process. It is a very basic model
|
||||
* since we assume the muonium loose its electron as soon as it enters a material
|
||||
* (other than vauum).
|
||||
*
|
||||
* Moreover, the spin precession of the muonium in flight is also implemented in this clss.
|
||||
*/
|
||||
class LEMuSRMUONIUMScatt : public G4VDiscreteProcess
|
||||
|
||||
{
|
||||
public: // with description
|
||||
//! \ct
|
||||
LEMuSRMUONIUMScatt(const G4String& name="Muscatt" ,
|
||||
G4ProcessType aType = fGeneral );
|
||||
|
||||
|
||||
//! \dt
|
||||
~LEMuSRMUONIUMScatt();
|
||||
|
||||
//! \mm The actions are taken at the end of the step.
|
||||
G4VParticleChange* PostStepDoIt(
|
||||
const G4Track& ,
|
||||
const G4Step&
|
||||
);
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition
|
||||
);
|
||||
|
||||
|
||||
|
||||
//! The condition to apply the process.
|
||||
G4bool CheckCondition( const G4Step& aStep);
|
||||
G4bool CheckCondition( const G4Step* aStep);
|
||||
|
||||
|
||||
G4String p_name, vname;
|
||||
@ -61,13 +105,18 @@ class LEMuSRMUONIUMScatt : public G4VDiscreteProcess
|
||||
G4ParticleChange fParticleChange;
|
||||
|
||||
|
||||
G4ThreeVector RotateSpinIfMag( const G4Track& , const G4Step&);
|
||||
G4double point[3], B[6];
|
||||
G4double itime, gtime, ftime,deltatime;
|
||||
G4ThreeVector polar;
|
||||
G4ThreeVector RotateSpin(const G4Step&, G4ThreeVector, G4double);
|
||||
|
||||
|
||||
|
||||
void PrepareSecondary(const G4Track&);
|
||||
G4Track* aSecondary;
|
||||
|
||||
void InitializeSecondaries(const G4Track&);
|
||||
void InitializeSecondaries(const G4Track&);
|
||||
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// GEANT4 tag $Name$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
//
|
||||
// class G4Mag_SpinEqRhs
|
||||
@ -42,6 +42,10 @@
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4Mag_EqRhs.hh"
|
||||
#include "G4SteppingManager.hh" // Include from 'tracking'
|
||||
#include "G4TrackingManager.hh" // Include from 'tracking'
|
||||
#include "LEMuSRTrackingAction.hh"
|
||||
#include "LEMuSRSteppingAction.hh"
|
||||
|
||||
class G4MagneticField;
|
||||
|
||||
@ -56,12 +60,14 @@ class LEMuSRMag_SpinEqRhs : public G4Mag_EqRhs
|
||||
void SetChargeMomentumMass(G4double particleCharge, // in e+ units
|
||||
G4double MomentumXc,
|
||||
G4double mass);
|
||||
|
||||
void EvaluateRhsGivenB( const G4double y[],
|
||||
|
||||
//! Calculation of the derivatives
|
||||
/*! Given the value of the magnetic field B, this function
|
||||
* calculates the value of the derivative dydx.
|
||||
*/
|
||||
void EvaluateRhsGivenB( const G4double y[],
|
||||
const G4double B[3],
|
||||
G4double dydx[] ) const;
|
||||
// Given the value of the magnetic field B, this function
|
||||
// calculates the value of the derivative dydx.
|
||||
|
||||
private:
|
||||
|
||||
@ -72,6 +78,10 @@ class LEMuSRMag_SpinEqRhs : public G4Mag_EqRhs
|
||||
G4double E;
|
||||
G4double gamma;
|
||||
G4double beta;
|
||||
G4double m_mass;
|
||||
|
||||
LEMuSRTrackingAction* theTrackingAction;
|
||||
G4double oldomegac; //to remove
|
||||
};
|
||||
|
||||
#endif /* LEMuSRMAG_SPIN_EQRHS */
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRMagneticField.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// Magnetic Field
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#include "G4UniformMagField.hh"
|
||||
#include"G4ThreeVector.hh"
|
||||
#include"G4ios.hh"
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRMcpHit.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// MCP HITS
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRMcpHit_h
|
||||
#define LEMuSRMcpHit_h 1
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSRMcpSD.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// MCP SD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRMcpSD_h
|
||||
#define LEMuSRMcpSD_h 1
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRMuonDecayChannel.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO based on G4MuonDecayChannel $Id$
|
||||
// DATE : 2004-07-13 11:15
|
||||
//
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,9 +18,49 @@
|
||||
// &
|
||||
// &
|
||||
// MUON DECAY CHANNEL.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§////
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
/**
|
||||
* The LEMuSRMuonDecayChannel class contains the implementation of the asymmetric muon decay. The process is applicable to muon (positive or negative) and muonium.
|
||||
*
|
||||
* It was inspired from the G4MuonDecayChannel method, which did not take into account the spin polarization of the muon.
|
||||
*
|
||||
* One should notice that recent versions of Geant4 feature a G4MuonDecayChannelWithSpin class, whose role is identical to the class we are describing.
|
||||
*
|
||||
* The two caracteristics of this process are
|
||||
* - The Michel spectrum for e+ energy distribution
|
||||
* \image html michel.gif Michel's Spectrum.
|
||||
* - The cardioidal angular distribution as a function of the positron energy
|
||||
* \image html kardio.gif Cardioid.
|
||||
* .
|
||||
* The angular direction of the positron emission is in relation with the energy of
|
||||
* the positron.
|
||||
* The more energy the positron has, the smaller the angle of emission with respect
|
||||
* to the muon spin is. The V-A theory predicts the positron rate to be
|
||||
* \f[ \mbox{d}\Gamma^2(w,\theta)= \frac{1}{\tau n(w)\left[1+ D(w)cos\theta \right]}\mbox{d}w \mbox{d}(\cos \theta),\f]
|
||||
* \f$w\f$ being the ratio between the energy of the emitted positron and the
|
||||
* maximal energy, and \f$\theta\f$ the angle between the muon spin and the
|
||||
* positron momentum.
|
||||
*
|
||||
* The distribution \f$n(w)\f$ along energy is given by the Michel's spectrum
|
||||
* \f[ n(w)= w^2(3-2w)\f] and the asymmetric factor is given by
|
||||
* \f[D(w) = \frac{2w-1}{3-2w}.\f] We assume, here, that the muons are fully
|
||||
* polarized.
|
||||
*
|
||||
* The distribution along energies becomes, for \f$\Theta=0\f$,
|
||||
* \f[n(w)+n(w)D(w)= 2w^2\f]
|
||||
* and for \f$\Theta = \pi\f$,
|
||||
* \f[n(w)-n(w)D(w)= 4(w^2-w^3)\f]
|
||||
*
|
||||
* The asymmetry can be derived integrating the rate \f$d\Gamma^2\f$,
|
||||
* and one should get
|
||||
* \f[A(w_{min}, \Theta_0) = \frac{1+\cos\Theta_0}{6}\frac{1+2w_{min}^3-3w_{min}^4}{1-2w_{min}^3+w_{min}^4}\f]
|
||||
* where \f$\Theta_0\f$ is the opening angle of the solid angle.
|
||||
* This means that if one select all positron energies, \f$w_{min}\simeq 0\f$
|
||||
* - \f$A \simeq\frac{1}{3}\f$ for small solid angles
|
||||
* - \f$A \simeq\frac{1}{6}\f$ for large solid angles
|
||||
|
||||
*/
|
||||
|
||||
#ifndef LEMuSRMuonDecayChannel_h
|
||||
#define LEMuSRMuonDecayChannel_h 1
|
||||
@ -38,18 +78,12 @@ class LEMuSRMuonDecayChannel : public G4VDecayChannel
|
||||
{
|
||||
|
||||
// Class Decription
|
||||
//
|
||||
// To do list::
|
||||
// Find muon polarization
|
||||
// Compute the positron angle distribution
|
||||
// Compute the positron energy as a function of angle distribution
|
||||
// Remove G4MuonDecayChannel in decay table and add this new one
|
||||
|
||||
public:
|
||||
//Constructors
|
||||
//!Constructor.
|
||||
LEMuSRMuonDecayChannel(const G4String& theParentName,
|
||||
G4double theBR);
|
||||
// Destructor
|
||||
//! Destructor.
|
||||
~LEMuSRMuonDecayChannel();
|
||||
|
||||
static LEMuSRMuonDecayChannel* pointer;
|
||||
@ -59,18 +93,24 @@ public:
|
||||
void finalize();
|
||||
|
||||
public: // With Description
|
||||
//! \mm
|
||||
virtual G4DecayProducts *DecayIt(G4double);
|
||||
HepRandomEngine* theEngine;
|
||||
G4ThreeVector emomdir;
|
||||
|
||||
//! Angles.
|
||||
G4double alpha,sinalpha, cosalpha, delta, sindelta, cosdelta;
|
||||
//! Sines and cosines.
|
||||
G4double costheta, sintheta, phi, sinphi, cosphi, theta;
|
||||
|
||||
inline G4double GetTheta(){return theta;};
|
||||
inline G4double GetPhi(){return phi;};
|
||||
|
||||
|
||||
|
||||
//! Polarized decay
|
||||
/*!
|
||||
* Gets the muon polarization and launch the Decay it method.
|
||||
*/
|
||||
G4DecayProducts *DecayItPolarized(G4double,G4ThreeVector polar);
|
||||
|
||||
|
||||
|
@ -1,7 +1,25 @@
|
||||
|
||||
// History
|
||||
// first version 12 Nov. 2000 by H.Kurashige
|
||||
// ------------------------------------------------------------
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRMuonPhysics.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2006-01-19 16:15
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// MuonPhysics
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
|
||||
|
||||
#ifndef LEMuSRMuonPhysics_h
|
||||
#define LEMuSRMuonPhysics_h 1
|
||||
@ -35,59 +53,69 @@
|
||||
|
||||
#include"G4VMuEnergyLoss.hh"
|
||||
|
||||
|
||||
/*!
|
||||
* This class defines the interations and processes to take into account when
|
||||
* simulating muon particles. It is registered by the main LEMuSRPhysicsList
|
||||
* class.
|
||||
*/
|
||||
class LEMuSRMuonPhysics : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
//!\ct
|
||||
LEMuSRMuonPhysics(const G4String& name="muon");
|
||||
virtual ~LEMuSRMuonPhysics();
|
||||
//!\dt
|
||||
virtual ~LEMuSRMuonPhysics();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
virtual void ConstructParticle();
|
||||
/*! This method will be invoked in the Construct() method.
|
||||
each particle type will be instantiated.*/
|
||||
virtual void ConstructParticle();
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
virtual void ConstructProcess();
|
||||
/*! This method will be invoked in the Construct() method.
|
||||
each physics process will be instantiated and
|
||||
registered to the process manager of each particle type.*/
|
||||
virtual void ConstructProcess();
|
||||
|
||||
protected:
|
||||
// Muon physics
|
||||
//! Muon physics
|
||||
G4MuIonisation fMuPlusIonisation;
|
||||
//! Multiple scattering
|
||||
G4MultipleScattering fMuoniumMultipleScattering;
|
||||
//! Multiple Scattering including Meyer'Algorithm: LEMuSRMSC
|
||||
LEMuSRMSC fMuPlusMultipleScattering;
|
||||
G4MuBremsstrahlung fMuPlusBremsstrahlung ;
|
||||
G4MuPairProduction fMuPlusPairProduction;
|
||||
//! Muonium scattering: LEMuSRMUONIUMScatt
|
||||
LEMuSRMUONIUMScatt fMuoniumScatt;
|
||||
//! Muonium formation: LEMuSRMUONIUM
|
||||
LEMuSRMUONIUM fMuFormation;
|
||||
//! Depolarization process (not used yet)
|
||||
LEMuSRDepolarize fDepolarization;
|
||||
|
||||
|
||||
|
||||
G4MuIonisation fMuMinusIonisation;
|
||||
G4MultipleScattering fMuMinusMultipleScattering;
|
||||
G4MuBremsstrahlung fMuMinusBremsstrahlung ;
|
||||
G4MuPairProduction fMuMinusPairProduction;
|
||||
|
||||
G4MuonMinusCaptureAtRest fMuMinusCaptureAtRest;
|
||||
G4MuIonisation fMuMinusIonisation;
|
||||
G4MultipleScattering fMuMinusMultipleScattering;
|
||||
G4MuBremsstrahlung fMuMinusBremsstrahlung ;
|
||||
G4MuPairProduction fMuMinusPairProduction;
|
||||
G4MuonMinusCaptureAtRest fMuMinusCaptureAtRest;
|
||||
|
||||
|
||||
//! Decay Process from \lemu: LEMuSRDecay
|
||||
#ifdef ASYM_USE_LEMU
|
||||
LEMuSRDecay fDecayProcess;
|
||||
#else
|
||||
//! Decay Process from \gf
|
||||
G4Decay fDecayProcess;
|
||||
//! Decay Process with Spin from \gf
|
||||
G4DecayWithSpin fSDecayProcess;
|
||||
#endif
|
||||
|
||||
//! Spin Precession Process At Rest: LEMuSRAtRestSpinRotation
|
||||
LEMuSRAtRestSpinRotation fMuAtRestSpinRotation;
|
||||
|
||||
// Tau physics
|
||||
G4MultipleScattering fTauPlusMultipleScattering;
|
||||
G4hIonisation fTauPlusIonisation;
|
||||
|
||||
G4MultipleScattering fTauMinusMultipleScattering;
|
||||
G4hIonisation fTauMinusIonisation;
|
||||
//! Tau physics
|
||||
G4MultipleScattering fTauPlusMultipleScattering;
|
||||
G4hIonisation fTauPlusIonisation;
|
||||
G4MultipleScattering fTauMinusMultipleScattering;
|
||||
G4hIonisation fTauMinusIonisation;
|
||||
|
||||
};
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSROScintHit.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// Outer SCINT HITS
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSROScintHit_h
|
||||
#define LEMuSROScintHit_h 1
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID :LEMuSROScintSD.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-17 10:20
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// Outer SCINT SD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSROScintSD_h
|
||||
#define LEMuSROScintSD_h 1
|
||||
|
||||
|
@ -1,9 +1,34 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRParticleChangeForSR.hh , v 1.2b
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-20 10:36
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// PARTICLE CHANGE FOR SPIN ROTATION
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRParticleChangeForSR_h
|
||||
#define LEMuSRParticleChangeForSR_h 1
|
||||
|
||||
#include "G4ParticleChangeForTransport.hh"
|
||||
|
||||
|
||||
/*!
|
||||
* This class defines the particle change object for the spin rotation process.
|
||||
* cf. LEMuSRAtRestSpinRotation
|
||||
*/
|
||||
class LEMuSRParticleChangeForSR : public G4ParticleChangeForTransport
|
||||
{
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRParticleGun.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-20 10:48
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// PARTICLE GUN
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRParticleGun_h
|
||||
#define LEMuSRParticleGun_h 1
|
||||
|
||||
@ -8,24 +30,40 @@
|
||||
class LEMuSRParticleGunMessenger;
|
||||
#include"G4ParticleGunMessenger.hh"
|
||||
|
||||
/*!
|
||||
* The LEMuSRParticleGun is the class which stores the initial settings of the particles.
|
||||
* Its interplay with the LEMuSRPrimaryGeneratorAction (PGA) is very strong.
|
||||
* Indeed, the particle gun object is instanciated and initialized in the PGA.
|
||||
*
|
||||
* After this initialization, the PGA calls the particle gun's GeneratePrimaryVertex method
|
||||
* to create an event with the defined initial conditions.
|
||||
*
|
||||
* As an image one can think that the PGA loads the gun with some defined particles,
|
||||
* set the shooting energy, aims and fires. Hence the name.
|
||||
*/
|
||||
class LEMuSRParticleGun: public G4ParticleGun
|
||||
{
|
||||
public:
|
||||
//!\ct
|
||||
LEMuSRParticleGun();
|
||||
//!\dt
|
||||
~LEMuSRParticleGun();
|
||||
|
||||
|
||||
//! Creates the first event.
|
||||
void GeneratePrimaryVertex(G4Event* evt);
|
||||
|
||||
//! Assign a decay time
|
||||
inline void SetDecayTime(G4double d) {decaytime = d;}
|
||||
|
||||
G4double decaytime;
|
||||
|
||||
|
||||
protected:
|
||||
//! Default initialization of the gun.
|
||||
void SetInitialValues();
|
||||
|
||||
private:
|
||||
//! Messenger
|
||||
LEMuSRParticleGunMessenger* theMessenger;
|
||||
G4ParticleGunMessenger* Messenger;
|
||||
|
||||
|
@ -1,5 +1,29 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRParticleGunMessenger.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-20 10:48
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// PARTICLE GUN MESSENGER
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
#ifndef LEMUSRPARTICLEGUNMESSENGER
|
||||
#define LEMUSRPARTICLEGUNMESSENGER
|
||||
#define LEMUSRPARTICLEGUNMESSENGER 1
|
||||
|
||||
class LEMuSRParticleGun;
|
||||
class G4ParticleTable;
|
||||
@ -15,10 +39,23 @@ class G4UIcmdWithAnInteger;
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
/**
|
||||
* The LEMuSRParticleGunMessenger class defines the terminal's commands to operate changes in the initial conditions of the muon beam. The following settings can be personalized:
|
||||
* -# particle to shoot
|
||||
* -# initial direction of the momentum
|
||||
* -# initial energy
|
||||
* -# initial position
|
||||
* -# initial polarization
|
||||
* .
|
||||
* The directory lemuGun/ is completed in the LEMuSRPgaMessenger class. There one can find commands
|
||||
* for shooting particles randomly, with specified energy distribution etc.
|
||||
*/
|
||||
class LEMuSRParticleGunMessenger : public G4UImessenger
|
||||
{
|
||||
public:
|
||||
//!ct
|
||||
LEMuSRParticleGunMessenger(LEMuSRParticleGun* gun);
|
||||
//! dt
|
||||
~LEMuSRParticleGunMessenger();
|
||||
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRPgaMessenger.cc , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-16 09:12
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// PRIMARY GENERATOR ACTION MESSENGER
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef LEMUSRPGAMESSENGER_H
|
||||
@ -36,27 +36,57 @@ class G4UIcmdWithAnInteger;
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
/**
|
||||
* The LEMuSRPgaMessenger class is the completion of the LEMuSRParticleGunMessenger
|
||||
* class which defines the terminal's commands to operate changes in the initial
|
||||
* conditions of the muon beam.
|
||||
*
|
||||
* The commands directory lemuGun/ is completed with commands
|
||||
* to shoot particles randomely and to specify the energy distribution etc.
|
||||
*/
|
||||
class LEMuSRPgaMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
LEMuSRPgaMessenger(LEMuSRPrimaryGeneratorAction* thPGA);
|
||||
~LEMuSRPgaMessenger();
|
||||
//!\ct
|
||||
LEMuSRPgaMessenger(LEMuSRPrimaryGeneratorAction* thPGA);
|
||||
//!\dt
|
||||
~LEMuSRPgaMessenger();
|
||||
|
||||
public:
|
||||
//! \mm
|
||||
void SetNewValue(G4UIcommand * command,G4String newValues);
|
||||
|
||||
private:
|
||||
//! Pointer to the LEMuSRPrimaryGeneratorAction object.
|
||||
LEMuSRPrimaryGeneratorAction * lemuPGA;
|
||||
|
||||
private: //commands
|
||||
//! Directory of the commands.
|
||||
G4UIdirectory * pgaDirectory;
|
||||
//! Set particle energy.
|
||||
G4UIcmdWithAString *setRndEnergy;
|
||||
//! Set the particle type.
|
||||
G4UIcmdWithAString *setMuonium;
|
||||
//! Unusedx
|
||||
G4UIcmdWithoutParameter *reset;
|
||||
G4UIcmdWith3Vector *posCmd, *momCmd, *scaCmd, *scbCmd, *scgCmd, *setEGauss;
|
||||
G4UIcmdWith3Vector
|
||||
//! Set Gun Position (fixed).
|
||||
*posCmd,
|
||||
//! Set Momentum Direction.
|
||||
*momCmd,
|
||||
//! Set Square Scan.
|
||||
*scaCmd,
|
||||
//! Set Circular Scan.
|
||||
*scbCmd,
|
||||
//! Set Gaussian Scan.
|
||||
*scgCmd,
|
||||
//! Set Gaussian Energy Distribution.
|
||||
*setEGauss;
|
||||
//! Set Energy Value.
|
||||
G4UIcmdWithADouble *setEnergy;
|
||||
// Set Energy Offset.
|
||||
G4UIcmdWithADouble *setKEoffset;
|
||||
// Set Particle's Charge (not implemented).
|
||||
G4UIcmdWithADouble *setCharge;
|
||||
|
||||
|
||||
|
@ -1,17 +1,56 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRPhysicsList.hh , v 1.1
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-24 16:33
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// PHYSICS LIST
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRPhysicsList_h
|
||||
#define LEMuSRPhysicsList_h 1
|
||||
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
/*!
|
||||
* The physics list class is the mandatory class which registers all the particles
|
||||
* and processes taken into account by the simulation.
|
||||
* As their number is quite high, the physics list has been organized in a
|
||||
* modular way, meaning its effective implementation is shared in different files.
|
||||
* Hence, the LEMuSRPhysicsList class registers the different physics lists from the
|
||||
* following files:
|
||||
* - LEMuSREMPhysics
|
||||
* - LEMuSRMuonPhysics
|
||||
* - LEMuSRIonPhysics
|
||||
* - LEMuSRHadronPhysics
|
||||
* - LEMuSRGeneralPhysics
|
||||
* .
|
||||
* cf. @ref physicsref
|
||||
*/
|
||||
class LEMuSRPhysicsList: public G4VModularPhysicsList
|
||||
{
|
||||
public:
|
||||
//! Constructor.
|
||||
LEMuSRPhysicsList();
|
||||
//!\dt
|
||||
virtual ~LEMuSRPhysicsList();
|
||||
|
||||
public:
|
||||
// SetCuts()
|
||||
//! Cuts.
|
||||
virtual void SetCuts();
|
||||
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRPrimaryGeneratorAction.hh , v 1.3
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-09-16 09:12
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,10 +18,9 @@
|
||||
// &
|
||||
// &
|
||||
// PRIMARY GENERATOR ACTION
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef LEMuSRPrimaryGeneratorAction_h
|
||||
#define LEMuSRPrimaryGeneratorAction_h 1
|
||||
@ -54,37 +53,76 @@ class G4Event;
|
||||
|
||||
|
||||
// LEMuSRPrimaryGeneratorAction CLASS DEFINITION
|
||||
/*!
|
||||
* The initial parameters of the particle(s) to simulate are given in the
|
||||
* LEMuSRPrimaryGeneratorAction class. This mandatory class work in interplay
|
||||
* with the LEMuSRParticleGun to create each new event of the simulation.
|
||||
*
|
||||
* An event is the track of one particle and all the particles created during its
|
||||
* evolution in the detector, by decay, scattering or any other kind of process.
|
||||
* cf. \ref pga.
|
||||
*/
|
||||
|
||||
class LEMuSRPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
// Constructor & Destructor
|
||||
public:
|
||||
//!\ct
|
||||
LEMuSRPrimaryGeneratorAction();
|
||||
//!\dt
|
||||
~LEMuSRPrimaryGeneratorAction();
|
||||
|
||||
|
||||
|
||||
//! Pointer to the instance.
|
||||
static LEMuSRPrimaryGeneratorAction* thePGA;
|
||||
//! Returns the pointer to the instance.
|
||||
static LEMuSRPrimaryGeneratorAction* GetPGA();
|
||||
|
||||
|
||||
// Event generation method
|
||||
//!\mm
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
//! Selection of the beam profile.
|
||||
void GetScanningMode(G4int scan_mode);
|
||||
|
||||
private:
|
||||
//! Particle gun pointer.
|
||||
LEMuSRParticleGun* lemuParticleGun;
|
||||
public:
|
||||
double rndenergy;
|
||||
G4double decaytime, energy;
|
||||
G4double
|
||||
//! Particle's decay time.
|
||||
decaytime,
|
||||
//! Energy of the particle.
|
||||
energy;
|
||||
HepRandomEngine * theEngine;
|
||||
|
||||
G4double X, Y, Z,momX, momY, momZ, m_xrange, m_yrange;
|
||||
G4double
|
||||
//! Position of the gun.
|
||||
X, Y, Z,
|
||||
//! Momentum of the initial particle.
|
||||
momX, momY, momZ,
|
||||
//! Scanning parameters.
|
||||
m_xrange, m_yrange;
|
||||
|
||||
//! Scaning parameters.
|
||||
G4int m_counterx, m_nbxsteps, m_countery, m_nbysteps, scan, gauss;
|
||||
//! Scanning parameters.
|
||||
G4double radius, angle, mean, stddev, sc_mean, sc_stddev;
|
||||
//! Scanning parameters
|
||||
G4double circ;
|
||||
//! Scanning parameters.
|
||||
G4bool rnd;
|
||||
//! Pointer to the messenger.
|
||||
LEMuSRPgaMessenger* messenger;
|
||||
|
||||
G4double charge, ke_offset;
|
||||
G4double
|
||||
//! Particle's charge.
|
||||
charge,
|
||||
//! Energy offset (3.73 keV by default) to take into account the acceleration at the carbon foil.
|
||||
ke_offset;
|
||||
|
||||
//! Particle's name.
|
||||
G4String pname;
|
||||
|
||||
//===============================
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : LEMuSRRNDMAGField.hh , v 1.2
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-08-20 10:48
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// RND MAG FIELD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#include "G4UniformMagField.hh"
|
||||
#include"G4ThreeVector.hh"
|
||||
#include"G4ios.hh"
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRRunAction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// RUN ACTION.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
@ -45,7 +45,11 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4Run;
|
||||
|
||||
/*!
|
||||
* This class registers the actions to take at the beginning of a run.
|
||||
* It has been imlpemented to enable the user interface.
|
||||
* cf \ref runaction.
|
||||
*/
|
||||
class LEMuSRRunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
@ -53,7 +57,9 @@ class LEMuSRRunAction : public G4UserRunAction
|
||||
~LEMuSRRunAction();
|
||||
|
||||
public:
|
||||
//! \ct
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
//! \dt
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
};
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRScintHit.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-12 16:15
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// INNER SCINT HIT
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRScintHit_h
|
||||
#define LEMuSRScintHit_h 1
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRScintSD.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-12 16:15
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// INNER SCINT SD
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRScintSD_h
|
||||
#define LEMuSRScintSD_h 1
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRStackingAction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// STACKING ACTION.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef LEMuSRStackingAction_H
|
||||
#define LEMuSRStackingAction_H 1
|
||||
@ -32,6 +32,10 @@ class G4Track;
|
||||
#include "LEMuSRScintHit.hh"
|
||||
class LEMuSRStackingActionMessenger;
|
||||
|
||||
/*!
|
||||
* The role of the stacking action is to select the tracks to register or not.
|
||||
* Because of its architecture the \lemu simulation does not need to use a stacking action( cf. \ref Useraction).
|
||||
*/
|
||||
class LEMuSRStackingAction : public G4UserStackingAction
|
||||
{
|
||||
public:
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRStackingActionMessenger.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// STACKING ACTION MESSENGER
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef LEMuSRStackingActionMessenger_h
|
||||
#define LEMuSRStackingActionMessenger_h 1
|
||||
@ -9,6 +31,10 @@ class G4UIcmdWithADoubleAndUnit;
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
|
||||
/*!
|
||||
* Messenger clas for the stacking action (unused).
|
||||
*/
|
||||
class LEMuSRStackingActionMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
@ -1,10 +1,10 @@
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRSteppingAction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
@ -18,7 +18,7 @@
|
||||
// &
|
||||
// &
|
||||
// STEPPING ACTION.HH
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
|
||||
@ -32,6 +32,15 @@
|
||||
#include "LEMuSRVisManager.hh"
|
||||
#include "LEMuSRDetectorConstruction.hh"
|
||||
|
||||
/*!
|
||||
* The role of the stepping action is to take special actions
|
||||
* before or after a step.
|
||||
* Two importants methods can be implemented at will by the user,
|
||||
* the PreUserTrackingAction and the PostUserTrackingAction. Those two methods are
|
||||
* virtual methods and their names must not be changed.
|
||||
* One can use the tracking action for histogramming, but also to act on the tracked
|
||||
* particles, to get/print information, or even to delete useless tracks etc.( cf. \ref Useraction).
|
||||
*/
|
||||
|
||||
class LEMuSRSteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
|
@ -1,3 +1,26 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRTrackingAction.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// TRACKING ACTION.CC
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef LEMuSRTrackingAction_h
|
||||
#define LEMuSRTrackingAction_h 1
|
||||
#include "G4DynamicParticle.hh"
|
||||
@ -17,8 +40,19 @@
|
||||
#include "TClonesArray.h"
|
||||
#include "TStopwatch.h"
|
||||
#include "LEMuSRCryoHit.hh"
|
||||
#include "G4SteppingManager.hh" // Include from 'tracking'
|
||||
#include "G4TrackingManager.hh" // Include from 'tracking'
|
||||
|
||||
|
||||
/*!
|
||||
* The role of the tracking action is to take special actions
|
||||
* before or after a track.
|
||||
* Two importants methods can be implemented at will by the user,
|
||||
* the PreUserTrackingAction and the PostUserTrackingAction. Those two methods are
|
||||
* virtual methods and their names must not be changed.
|
||||
* One can use the tracking action for histogramming, but also to act on the tracked
|
||||
* particles, to get/print information, or even to delete useless tracks etc.( cf. \ref Useraction).
|
||||
*/
|
||||
|
||||
class LEMuSRTrackingAction : public G4UserTrackingAction {
|
||||
|
||||
@ -29,7 +63,8 @@ class LEMuSRTrackingAction : public G4UserTrackingAction {
|
||||
void PostUserTrackingAction(const G4Track*);
|
||||
|
||||
void Collect_datas(const G4Track*);
|
||||
|
||||
static LEMuSRTrackingAction* GetInstance();
|
||||
static LEMuSRTrackingAction* pointer;
|
||||
|
||||
// TROOT eventTree;
|
||||
Int_t nevent , comp , split , write , hfill , read ,arg4, arg5 ;
|
||||
@ -38,6 +73,11 @@ class LEMuSRTrackingAction : public G4UserTrackingAction {
|
||||
TBranch *b;
|
||||
TH1D *hEnergy, *hTime, *hAngle, *hAngle2;
|
||||
|
||||
G4TrackingManager* tMgr;
|
||||
|
||||
G4double GyroMagRatio;
|
||||
G4double GyroMagFactor;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : LEMuSRVisManager.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2004-07-07 11:15
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// VIS MANAGER
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef LEMuSRVisManager_h
|
||||
#define LEMuSRVisManager_h 1
|
||||
|
@ -1,4 +1,4 @@
|
||||
///§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION
|
||||
//
|
||||
// ID : TDCheck.hh , v 1.2
|
||||
|
@ -1,3 +1,42 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : MEYER.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2005-04
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// MEYER
|
||||
/*
|
||||
fIRST IMPLEMENTATION BY ANLSEM,H. IN FORTRAN
|
||||
C++ CONVERSION T.K.PARAISO 04-2005
|
||||
|
||||
!!! IMPORTANT !!!
|
||||
|
||||
Notice:
|
||||
Tables definition changes between FORTRAN and C++:
|
||||
1/ Fortran indices start at 1 and C++ indices start at 0
|
||||
2/ Tables are defined as table[column][row] in Fortran
|
||||
table[row][column] in c++
|
||||
|
||||
usefull reference
|
||||
http://gershwin.ens.fr/vdaniel/Doc-Locale/Langages-Program-Scientific/Fortran/Tutorial/arrays.htm
|
||||
|
||||
*/
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
|
||||
#ifndef meyer_h
|
||||
#define meyer_h 1
|
||||
|
||||
|
@ -1,3 +1,29 @@
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
|
||||
// LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION
|
||||
// ID : YIELDS.hh , v 1.0
|
||||
// AUTHOR: Taofiq PARAISO
|
||||
// DATE : 2005-04
|
||||
//
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
//
|
||||
// & &&&&&&&&&& &&&&&&& &&&&&&&&
|
||||
// & & && && & &&
|
||||
// & & & & & & &&
|
||||
// & &&&&&&& & & &&&&&& &&&&&&&&
|
||||
// & & & && & & &&
|
||||
// & & && & & && && & &
|
||||
// &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & &&
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// &
|
||||
// YIELDS
|
||||
/*
|
||||
fIRST IMPLEMENTATION BY ANLSEM,H. IN FORTRAN
|
||||
C++ CONVERSION T.K.PARAISO 04-2005
|
||||
*/
|
||||
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|
||||
|
||||
#ifndef Yields_h
|
||||
#define Yield_h 1
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user