Skip to content
Snippets Groups Projects
Commit b38c6cfe authored by matta's avatar matta
Browse files

* Updating NPLib read me

parent 26434e3b
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@ TransfertToResonance
ResonanceDecayA= 8
CrossSectionPath= 11Li(d,3He)10He.txt
ShootLight= 1
ShootHeavy= 0
ShootHeavy= 1
ShootDecayProduct= 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -107,6 +107,9 @@ int main(int argc,char** argv)
myDetector -> BuildPhysicalEvent() ;
////
/* // Target (from initial condition)
XTarget = Init->GetICPositionX(0);
YTarget = Init->GetICPositionY(0);
......
......@@ -38,9 +38,14 @@
\chapter[NPTool]{NPTool}
\section {Introduction}
NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally. Because each experiment is differents, people get used to exchange code and modified it to their needs. What NPT do is provinding an (try to be) universal framework so user can add their own functionnalities and share it with their collaborators. Geant4 and ROOT are now popular toolkit among the community, that's why NPTool use them widely and try to give a step by step process to use them efficiently.
NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally.
Because each experiment is differents, people get used to exchange code and modified it to their needs.
What NPT do is provinding an (try to be) universal framework so user can add their own functionnalities and share it with their collaborators.
Geant4 and ROOT are now popular toolkit among the community, that's why NPTool use them widely and try to give a step by step process to use them efficiently.
In NPTool analysis and simulation are linked together. The proposed way of working is to generate an experiment like set of data and then annalysing with the future analysis code. Working this way help saving time by doing the biggest part of the analysis work in advance. It also help to understand what happen during analysis.
In NPTool analysis and simulation are linked together. The proposed way of working is to generate an experiment like set of data and then annalysing with the future analysis code.
Working this way help saving time by doing the biggest part of the analysis work in advance.
It also help to understand what happen during analysis.
\begin{figure}[!htbp]
\centering
......@@ -57,7 +62,9 @@ In NPTool analysis and simulation are linked together. The proposed way of worki
\section{The directory layout}
NPTool come with a specific directory layout. The different make file and source are made to use this layout, using the environment variable. Here is the standard layout:
NPTool come with a specific directory layout.
The different make file and source are made to use this layout, using the environment variable.
Here is the standard layout:
\begin{itemize}
\item[-] NPLib : hold the libraries used both in NPA and NPS (NB: those librairies can be use in your own independant code if you need)
\item[-] NPSimulation : hold the NPSimulation code
......
......@@ -64,7 +64,6 @@ TPlasticPhysics::~TPlasticPhysics()
void TPlasticPhysics::Clear()
{
DetectorNumber .clear() ;
StripNumber .clear() ;
Energy .clear() ;
Time .clear() ;
}
......@@ -240,7 +239,6 @@ void TPlasticPhysics::BuildSimplePhysicalEvent()
{
DetectorNumber .push_back( EventData->GetPlasticNumber(i) ) ;
StripNumber .push_back( EventData->GetPlasticNumber(i) ) ;
Energy .push_back(
CalibrationManager::getInstance()->ApplyCalibration( "Plastic/Detector" + itoa( EventData->GetPlasticNumber(i) ) +"_E",
......
......@@ -43,7 +43,6 @@ class TPlasticPhysics : public TObject, public NPA::VDetector
public: // Calibrated Data
vector<UShort_t> DetectorNumber ;
vector<UShort_t> StripNumber ;
vector<Double_t> Energy ;
vector<Double_t> Time ;
......
......@@ -70,7 +70,11 @@ VI) InteractionCoordinates
output TTree of the G4 simulation.
VII) CalibrationManager
This directory includes one library:
libCalibrationManager.so
This folder contain the the class object for managing calibration file.
A caliration manager singleton is instantiate in NPAnalysis project.
VIII) DummyDetector
This directory includes one library:
libDUMMYDetector.so
......@@ -114,3 +118,7 @@ XI) GASPARD
obtained from NPSimulation. This library is *only* used by NPAnalysis.
XII) VDetector
This directory includes one library:
libVDetector.so
VDetector is a virtual class used for analysis purpose. It comes with several standards method definition called in analysis programm automatically.
Those method need to be implemented for each detector inheritted from the VDetector class.
......@@ -62,6 +62,7 @@ Reaction::Reaction()
fThetaCM = 0;
fExcitation = 0;
fQValue = 0;
initializePrecomputeVariable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
......@@ -113,6 +114,7 @@ void Reaction::SetEveryThing(string name1, string name2, string name3, string na
CrossSectionSize = CrossSectionBuffer.size();
CrossSection = new double[CrossSectionSize] ;
for(int i = 0 ; i <CrossSectionSize ; i++ ) CrossSection[i] = CrossSectionBuffer[i];
initializePrecomputeVariable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
......@@ -136,33 +138,6 @@ void Reaction::KineRelativistic(double &ThetaLab3, double &EnergieLab3,
// 2-body relativistic kinematics: direct + inverse
// EnergieLab3,4 : lab energy in MeV of the 2 ejectiles
// ThetaLab3,4 : angles in rad
double m1 = fNoy1->Mass();
double m2 = fNoy2->Mass();
double m3 = fNoy3->Mass();
double m4 = fNoy4->Mass() + fExcitation;
// center-of-mass velocity
double WtotLab = (fBeamEnergy + m1) + m2;
double P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
double B = P1 / WtotLab;
double G = 1 / sqrt(1 - pow(B,2));
// total energy of the ejectiles in the center-of-mass
double W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
/ (2 * G * WtotLab);
double W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
/ (2 * G * WtotLab);
// velocity of the ejectiles in the center-of-mass
double beta3cm = sqrt(1 - pow(m3,2)/pow(W3cm,2));
double beta4cm = sqrt(1 - pow(m4,2)/pow(W4cm,2));
// double gamma3cm = 1 / sqrt(1 - pow(beta3cm,2));
// double gamma4cm = 1 / sqrt(1 - pow(beta4cm,2));
// Constants of the kinematics
double K3 = B / beta3cm;
double K4 = B / beta4cm;
// case of inverse kinematics
double theta = fThetaCM;
......@@ -194,11 +169,6 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
// EnergyLab in MeV
// ThetaLab in rad
double m1 = fNoy1->Mass() ;
double m2 = fNoy2->Mass() ;
double m3 = fNoy3->Mass() ;
double m4 = fNoy4->Mass() ;
double P1 = sqrt(2*m1*fBeamEnergy+(fBeamEnergy*fBeamEnergy)) ;
double P3 = sqrt(2*m3*EnergyLab+(EnergyLab*EnergyLab)) ;
double P4 = sqrt(P1*P1+P3*P3-(2*P1*P3*cos(ThetaLab))) ;
......@@ -234,11 +204,7 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
double Reaction::EnergyLabToThetaCM( double EnergyLab , double ExcitationEnergy ) const
{
if(ExcitationEnergy == -500) ExcitationEnergy = fExcitation;
double m1 = fNoy1->Mass() ;
double m2 = fNoy2->Mass() ;
double m3 = fNoy3->Mass() ;
double m4 = (fNoy4->Mass()+ExcitationEnergy) ;
double E1 = (fBeamEnergy+m1) ;
double E3 = (EnergyLab+m3) ;
......@@ -398,7 +364,34 @@ void Reaction::ReadConfigurationFile(string Path)
}
void Reaction::initializePrecomputeVariable()
{
m1 = fNoy1->Mass();
m2 = fNoy2->Mass();
m3 = fNoy3->Mass();
m4 = fNoy4->Mass() + fExcitation;
// center-of-mass velocity
WtotLab = (fBeamEnergy + m1) + m2;
P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
B = P1 / WtotLab;
G = 1 / sqrt(1 - pow(B,2));
// total energy of the ejectiles in the center-of-mass
W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
/ (2 * G * WtotLab);
W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
/ (2 * G * WtotLab);
// velocity of the ejectiles in the center-of-mass
beta3cm = sqrt(1 - pow(m3,2)/pow(W3cm,2));
beta4cm = sqrt(1 - pow(m4,2)/pow(W4cm,2));
// Constants of the kinematics
K3 = B / beta3cm;
K4 = B / beta4cm;
}
......
......@@ -63,26 +63,54 @@ namespace NPL
double fThetaCM ; // Center-of-mass angle in radian
double fExcitation ; // Excitation energy in MeV
double* CrossSection ; // Differential CrossSection
int CrossSectionSize ; // Size of array containing Differention CrossSection
int CrossSectionSize ; // Size of array containing Differention CrossSection
public:
// Getters and Setters
void SetBeamEnergy (double efais) {fBeamEnergy = efais;}
void SetThetaCM (double angle) {fThetaCM = angle;}
void SetExcitation (double exci) {fExcitation = exci;}
double GetBeamEnergy() const {return fBeamEnergy;}
double GetThetaCM() const {return fThetaCM;}
double GetExcitation() const {return fExcitation;}
double GetQValue() const {return fQValue;}
Nucleus* GetNucleus1() const {return fNoy1;}
Nucleus* GetNucleus2() const {return fNoy2;}
Nucleus* GetNucleus3() const {return fNoy3;}
Nucleus* GetNucleus4() const {return fNoy4;}
double* GetCrossSection() const {return CrossSection;}
double GetBeamEnergy() const {return fBeamEnergy;}
double GetThetaCM() const {return fThetaCM;}
double GetExcitation() const {return fExcitation;}
double GetQValue() const {return fQValue;}
Nucleus* GetNucleus1() const {return fNoy1;}
Nucleus* GetNucleus2() const {return fNoy2;}
Nucleus* GetNucleus3() const {return fNoy3;}
Nucleus* GetNucleus4() const {return fNoy4;}
double* GetCrossSection() const {return CrossSection;}
int GetCrossSectionSize() const {return CrossSectionSize;}
// Kinematics //
private: // intern precompute variable
void initializePrecomputeVariable();
double m1 ;
double m2 ;
double m3 ;
double m4 ;
// center-of-mass velocity
double WtotLab ;
double P1 ;
double B ;
double G ;
// total energy of the ejectiles in the center-of-mass
double W3cm ;
double W4cm ;
// velocity of the ejectiles in the center-of-mass
double beta3cm ;
double beta4cm ;
// Constants of the kinematics
double K3 ;
double K4 ;
public: // Kinematics
// Compute ThetaLab and EnergyLab for product of reaction
void KineRelativistic( double &ThetaLab3 ,
double &EnergieLab3 ,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment