change reactionConfig.txt, inlcude upstreama and downstream reaction

This commit is contained in:
Ryan Tang 2024-02-15 14:09:29 -05:00
parent 80a23ee689
commit 3a0dba08da
11 changed files with 244 additions and 208 deletions

View File

@ -53,6 +53,18 @@ TGraph * TrapezoidFilter(TGraph * trace, int baseLineEnd = 80, int riseTime = 10
return trapezoid;
}
bool isEmptyOrSpaces(const std::string& str) {
if (str.empty()) {
return true;
}
for (char c : str) {
if (!std::isspace(c)) {
return false;
}
}
return true;
}
std::vector<std::string> SplitStr(std::string tempLine, std::string splitter, int shift = 0){
std::vector<std::string> output;

View File

@ -97,7 +97,7 @@ public:
bool LoadDetectorGeo(TString fileName, bool verbose = true);
bool LoadDetectorGeo(TMacro * macro, bool verbose = true);
void PrintDetGeo( bool printAll = true) const;
void Print( bool printAll = true) const;
private:
@ -138,7 +138,11 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){
for( int i = 0 ; i < numLine; i++){
std::vector<std::string> str = AnalysisLib::SplitStr(macro->GetListOfLines()->At(i)->GetName(), " ");
std::string line = macro->GetListOfLines()->At(i)->GetName();
if( AnalysisLib::isEmptyOrSpaces(line) ) continue;
std::vector<std::string> str = AnalysisLib::SplitStr(line, " ");
// printf("%3d | %s\n", i, str[0].c_str());
@ -150,20 +154,20 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){
}
if( detFlag == 0 ){
if ( i == 0 ) {
if ( detLine == 0 ) {
Bfield = atof(str[0].c_str());
BfieldSign = Bfield > 0 ? 1: -1;
}
if ( i == 1 ) BfieldTheta = atof(str[0].c_str());
if ( i == 2 ) bore = atof(str[0].c_str());
if ( i == 3 ) recoilPos = atof(str[0].c_str());
if ( i == 4 ) recoilInnerRadius = atof(str[0].c_str());
if ( i == 5 ) recoilOuterRadius = atof(str[0].c_str());
if ( i == 6 ) isCoincidentWithRecoil = str[0] == "false" ? false: true;
if ( i == 7 ) recoilPos1 = atof(str[0].c_str());
if ( i == 8 ) recoilPos2 = atof(str[0].c_str());
if ( i == 9 ) elumPos1 = atof(str[0].c_str());
if ( i == 10 ) elumPos2 = atof(str[0].c_str());
if ( detLine == 1 ) BfieldTheta = atof(str[0].c_str());
if ( detLine == 2 ) bore = atof(str[0].c_str());
if ( detLine == 3 ) recoilPos = atof(str[0].c_str());
if ( detLine == 4 ) recoilInnerRadius = atof(str[0].c_str());
if ( detLine == 5 ) recoilOuterRadius = atof(str[0].c_str());
if ( detLine == 6 ) isCoincidentWithRecoil = str[0] == "false" ? false: true;
if ( detLine == 7 ) recoilPos1 = atof(str[0].c_str());
if ( detLine == 8 ) recoilPos2 = atof(str[0].c_str());
if ( detLine == 9 ) elumPos1 = atof(str[0].c_str());
if ( detLine == 10 ) elumPos2 = atof(str[0].c_str());
}
if( detFlag == 1){
@ -177,7 +181,6 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){
if ( detLine == 7 ) array1.detFaceOut = str[0] == "Out" ? true : false;
if ( detLine == 8 ) array1.mDet = atoi(str[0].c_str());
if ( detLine >= 9 ) array1.pos.push_back(atof(str[0].c_str()));
detLine ++;
}
if( detFlag == 2){
@ -192,30 +195,29 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){
if ( detLine == 8 ) array2.detFaceOut = str[0] == "Out" ? true : false;
if ( detLine == 9 ) array2.mDet = atoi(str[0].c_str());
if ( detLine >= 10 ) array2.pos.push_back(atof(str[0].c_str()));
detLine ++;
}
detLine ++;
}
array1.DeduceAbsolutePos();
array2.DeduceAbsolutePos();
zMin = array1.zMin;
zMax = array1.zMax;
if( use2ndArray) {
array2.DeduceAbsolutePos();
zMax = TMath::Min(array1.zMax, array2.zMax);
zMin = TMath::Min(array1.zMin, array2.zMin);
}
if( verbose ) PrintDetGeo(false);
if( verbose ) Print(false);
return true;
}
inline void DetGeo::PrintDetGeo(bool printAll) const{
inline void DetGeo::Print(bool printAll) const{
printf("=====================================================\n");
printf(" B-field: %8.2f T, Theta : %6.2f deg \n", Bfield, BfieldTheta);
@ -223,22 +225,13 @@ inline void DetGeo::PrintDetGeo(bool printAll) const{
printf(" +---- field angle != 0 is not supported!!! \n");
}
printf(" Recoil detector pos: %8.2f mm, radius: %6.2f - %6.2f mm \n", recoilPos, recoilInnerRadius, recoilOuterRadius);
if( printAll ){
printf("------------------------------------- Detector Position \n");
array1.PrintArray();
if( use2ndArray){
printf("--------------------------------- 2nd Detector Position \n");
array2.PrintArray();
}
}else{
if( use2ndArray){
printf("--------------------------------- 2nd Detector Position \n");
array2.PrintArray();
}else{
printf("------------------------------------- Detector Position \n");
array1.PrintArray();
}
printf("------------------------------------- Detector Position \n");
array1.PrintArray();
if( printAll || use2ndArray){
printf("--------------------------------- 2nd Detector Position \n");
array2.PrintArray();
}
if( elumPos1 != 0 || elumPos2 != 0 || recoilPos1 != 0 || recoilPos2 != 0){

View File

@ -13,6 +13,33 @@
#include "AnalysisLib.h"
struct Recoil {
unsigned short lightA, lightZ;
unsigned short heavyA, heavyZ;
std::string lightStoppingPowerFile = ""; ///stopping_power_for_light_recoil
std::string heavyStoppingPowerFile = ""; ///stopping_power_for_heavy_recoil
bool isDecay = false; ///isDacay
unsigned short decayA = 0; ///decayNucleus_A
unsigned short decayZ = 0; ///decayNucleus_Z
void Print() const {
printf(" light : A = %3d, Z = %2d \n", lightA, lightZ);
printf(" heavy : A = %3d, Z = %2d \n", heavyA, heavyZ);
printf(" light stopping file : %s \n", lightStoppingPowerFile.c_str());
printf(" heavy stopping file : %s \n", heavyStoppingPowerFile.c_str());
printf(" is simulate decay : %s \n", isDecay ? "Yes" : "No");
if( isDecay ){
printf(" heavy decay : A = %d, Z = %d \n", decayA, decayZ);
}
}
};
class ReactionConfig {
public:
@ -21,11 +48,8 @@ public:
ReactionConfig(TMacro * macro){ LoadReactionConfig(macro);}
~ReactionConfig(){}
int beamA, beamZ;
int targetA, targetZ;
int recoilLightA, recoilLightZ;
int recoilHeavyA, recoilHeavyZ;
unsigned short beamA, beamZ;
float beamEx; ///excitation_energy_of_A[MeV]
float beamEnergy; ///MeV/u
float beamEnergySigma; ///beam-energy_sigma_in_MeV/u
float beamAngle; ///beam-angle_in_mrad
@ -33,18 +57,16 @@ public:
float beamX; ///x_offset_of_Beam_in_mm
float beamY; ///y_offset_of_Beam_in_mm
int numEvents; ///number_of_Event_being_generated
unsigned short targetA, targetZ;
bool isTargetScattering; ///isTargetScattering
float targetDensity; ///target_density_in_g/cm3
float targetThickness; ///targetThickness_in_cm
std::string beamStoppingPowerFile; ///stopping_power_for_beam
std::string recoilLightStoppingPowerFile; ///stopping_power_for_light_recoil
std::string recoilHeavyStoppingPowerFile; ///stopping_power_for_heavy_recoil
bool isDecay; ///isDacay
int heavyDecayA; ///decayNucleus_A
int heavyDecayZ; ///decayNucleus_Z
Recoil recoil1, recoil2;
int numEvents; ///number_of_Event_being_generated
bool isRedo; ///isReDo
std::vector<float> beamEx; ///excitation_energy_of_A[MeV]
void SetReactionSimple(int beamA, int beamZ,
int targetA, int targetZ,
@ -53,7 +75,7 @@ public:
bool LoadReactionConfig(TString fileName);
bool LoadReactionConfig(TMacro * macro);
void PrintReactionConfig() const;
void Print() const;
private:
@ -67,10 +89,11 @@ inline void ReactionConfig::SetReactionSimple(int beamA, int beamZ,
this->beamZ = beamZ;
this->targetA = targetA;
this->targetZ = targetZ;
this->recoilLightA = recoilA;
this->recoilLightZ = recoilZ;
recoilHeavyA = this->beamA + this->targetA - recoilLightA;
recoilHeavyZ = this->beamZ + this->targetZ - recoilLightZ;
this->recoil1.lightA = recoilA;
this->recoil1.lightZ = recoilZ;
recoil1.heavyA = this->beamA + this->targetA - recoil1.lightA;
recoil1.heavyZ = this->beamZ + this->targetZ - recoil1.lightZ;
beamEnergy = beamEnergy_AMeV;
beamEnergySigma = 0;
@ -101,93 +124,113 @@ inline bool ReactionConfig::LoadReactionConfig(TMacro * macro){
if( macro == NULL ) return false;
int recoilFlag = 0;
int recoilLine = 0;
int numLine = macro->GetListOfLines()->GetSize();
for( int i = 0; i < numLine; i ++){
std::vector<std::string> str =AnalysisLib::SplitStr(macro->GetListOfLines()->At(i)->GetName(), " ");
std::string line = macro->GetListOfLines()->At(i)->GetName();
if( AnalysisLib::isEmptyOrSpaces(line) ) continue;
///printf("%d | %s\n", i, str[0].c_str());
std::vector<std::string> str =AnalysisLib::SplitStr(line, " ");
// printf("%d |%s|%d|%d\n", i, str[0].c_str(), recoilFlag, recoilLine);
if( str[0].find_first_of("#") == 0 ) break;
if( i == 0 ) beamA = atoi(str[0].c_str());
if( i == 1 ) beamZ = atoi(str[0].c_str());
if( i == 2 ) targetA = atoi(str[0].c_str());
if( i == 3 ) targetZ = atoi(str[0].c_str());
if( i == 4 ) recoilLightA = atoi(str[0].c_str());
if( i == 5 ) recoilLightZ = atoi(str[0].c_str());
if( i == 6 ) beamEnergy = atof(str[0].c_str());
if( i == 7 ) beamEnergySigma = atof(str[0].c_str());
if( i == 8 ) beamAngle = atof(str[0].c_str());
if( i == 9 ) beamAngleSigma = atof(str[0].c_str());
if( i == 10 ) beamX = atof(str[0].c_str());
if( i == 11 ) beamY = atof(str[0].c_str());
if( i == 12 ) numEvents = atoi(str[0].c_str());
if( i == 13 ) {
if( str[0].compare("false") == 0 ) isTargetScattering = false;
if( str[0].compare("true") == 0 ) isTargetScattering = true;
}
if( i == 14 ) targetDensity = atof(str[0].c_str());
if( i == 15 ) targetThickness = atof(str[0].c_str());
if( i == 16 ) beamStoppingPowerFile = str[0];
if( i == 17 ) recoilLightStoppingPowerFile = str[0];
if( i == 18 ) recoilHeavyStoppingPowerFile = str[0];
if( i == 19 ) {
if( str[0].compare("false") == 0 ) isDecay = false;
if( str[0].compare("true") == 0 ) isDecay = true;
}
if( i == 20 ) heavyDecayA = atoi(str[0].c_str());
if( i == 21 ) heavyDecayZ = atoi(str[0].c_str());
if( i == 22 ) {
if( str[0].compare("false") == 0 ) isRedo = false;
if( str[0].compare("true" ) == 0 ) isRedo = true;
if( str[0].find("####") != std::string::npos ) break;
if( str[0].find("#===") != std::string::npos ) {
recoilFlag ++;
recoilLine = 0;
continue;
}
if( i >= 23) {
beamEx.push_back( atof(str[0].c_str()) );
if( recoilFlag == 0 ){
if( recoilLine == 0 ) beamA = atoi(str[0].c_str());
if( recoilLine == 1 ) beamZ = atoi(str[0].c_str());
if( recoilLine == 2 ) beamEx = atoi(str[0].c_str());
if( recoilLine == 3 ) beamEnergy = atof(str[0].c_str());
if( recoilLine == 4 ) beamEnergySigma = atof(str[0].c_str());
if( recoilLine == 5 ) beamAngle = atof(str[0].c_str());
if( recoilLine == 6 ) beamAngleSigma = atof(str[0].c_str());
if( recoilLine == 7 ) beamX = atof(str[0].c_str());
if( recoilLine == 8 ) beamY = atof(str[0].c_str());
if( recoilLine == 9 ) targetA = atoi(str[0].c_str());
if( recoilLine == 10 ) targetZ = atoi(str[0].c_str());
if( recoilLine == 11 ) isTargetScattering = str[0].compare("true") == 0 ? true: false;
if( recoilLine == 12 ) targetDensity = atof(str[0].c_str());
if( recoilLine == 13 ) targetThickness = atof(str[0].c_str());
if( recoilLine == 14 ) beamStoppingPowerFile = str[0];
if( recoilLine == 15 ) numEvents = atoi(str[0].c_str());
if( recoilLine == 16 ) isRedo = str[0].compare("true" ) == 0 ? true : false;
}
if( recoilFlag == 1 ){
if( recoilLine == 0 ) recoil1.lightA = atoi(str[0].c_str());
if( recoilLine == 1 ) recoil1.lightZ = atoi(str[0].c_str());
if( recoilLine == 2 ) recoil1.lightStoppingPowerFile = str[0];
if( recoilLine == 3 ) recoil1.heavyStoppingPowerFile = str[0];
if( recoilLine == 4 ) recoil1.isDecay = str[0].compare("true") == 0 ? true : false;
if( recoilLine == 5 ) recoil1.decayA = atoi(str[0].c_str());
if( recoilLine == 6 ) recoil1.decayZ = atoi(str[0].c_str());
}
if( recoilFlag == 2 ){
if( recoilLine == 0 ) recoil2.lightA = atoi(str[0].c_str());
if( recoilLine == 1 ) recoil2.lightZ = atoi(str[0].c_str());
if( recoilLine == 2 ) recoil2.lightStoppingPowerFile = str[0];
if( recoilLine == 3 ) recoil2.heavyStoppingPowerFile = str[0];
if( recoilLine == 4 ) recoil2.isDecay = str[0].compare("true") == 0 ? true : false;
if( recoilLine == 5 ) recoil2.decayA = atoi(str[0].c_str());
if( recoilLine == 6 ) recoil2.decayZ = atoi(str[0].c_str());
}
recoilLine ++;
}
recoilHeavyA = beamA + targetA - recoilLightA;
recoilHeavyZ = beamZ + targetZ - recoilLightZ;
recoil1.heavyA = beamA + targetA - recoil1.lightA;
recoil1.heavyZ = beamZ + targetZ - recoil1.lightZ;
recoil2.heavyA = beamA + targetA - recoil2.lightA;
recoil2.heavyZ = beamZ + targetZ - recoil2.lightZ;
return true;
}
inline void ReactionConfig::PrintReactionConfig() const{
inline void ReactionConfig::Print() const{
printf("=====================================================\n");
printf(" beam : A = %3d, Z = %2d \n", beamA, beamZ);
printf(" target : A = %3d, Z = %2d \n", targetA, targetZ);
printf(" light : A = %3d, Z = %2d \n", recoilLightA, recoilLightZ);
printf("number of Simulation Events : %d \n", numEvents);
printf(" is Redo until hit array : %s \n", isRedo ? "Yes" : "No");
printf("------------------------------ Beam\n");
printf(" beam : A = %3d, Z = %2d, Ex = %.2f MeV\n", beamA, beamZ, beamEx);
printf(" beam Energy : %.2f +- %.2f MeV/u, dE/E = %5.2f %%\n", beamEnergy, beamEnergySigma, beamEnergySigma/beamEnergy);
printf(" Angle : %.2f +- %.2f mrad\n", beamAngle, beamAngleSigma);
printf(" offset : (x,y) = (%.2f, %.2f) mmm \n", beamX, beamY);
printf("##### number of Simulation Events : %d \n", numEvents);
printf("------------------------------ Target\n");
printf(" target : A = %3d, Z = %2d \n", targetA, targetZ);
printf(" is target scattering : %s \n", isTargetScattering ? "Yes" : "No");
if(isTargetScattering){
printf(" target density : %.f g/cm3\n", targetDensity);
printf(" thickness : %.f cm\n", targetThickness);
printf(" beam stopping file : %s \n", beamStoppingPowerFile.c_str());
printf(" recoil light stopping file : %s \n", recoilLightStoppingPowerFile.c_str());
printf(" recoil heavy stopping file : %s \n", recoilHeavyStoppingPowerFile.c_str());
}
printf(" is simulate decay : %s \n", isDecay ? "Yes" : "No");
if( isDecay ){
printf(" heavy decay : A = %d, Z = %d \n", heavyDecayA, heavyDecayZ);
}
printf(" is Redo until hit array : %s \n", isRedo ? "Yes" : "No");
printf("------------------------------ Recoil-1\n"); recoil1.Print();
printf("------------------------------ Recoil-2\n"); recoil2.Print();
printf(" beam Ex : %.2f MeV \n", beamEx[0]);
for( int i = 1; i < (int) beamEx.size(); i++){
printf(" %.2f MeV \n", beamEx[i]);
}
printf("=====================================================\n");
}

View File

@ -30,9 +30,9 @@ public:
targetA, targetZ,
recoilA, recoilZ, beamEnergy_AMeV);
}
TransferReaction(string reactionConfigFile){
TransferReaction(string configFile){
Inititization();
SetReactionFromFile(reactionConfigFile);
SetReactionFromFile(configFile);
}
~TransferReaction();
@ -49,12 +49,12 @@ public:
void SetExA(double Ex);
void SetExB(double Ex);
void SetReactionFromFile(string reactionConfigFile);
void SetReactionFromFile(string configFile);
TString GetReactionName();
TString GetReactionName_Latex();
ReactionConfig GetRectionConfig() { return reactionConfig;}
ReactionConfig GetRectionConfig() { return config;}
double GetMass_A() const {return mA + ExA;}
double GetMass_a() const {return ma;}
@ -85,7 +85,7 @@ public:
private:
ReactionConfig reactionConfig;
ReactionConfig config;
string nameA, namea, nameb, nameB;
double thetaIN, phiIN;
@ -119,7 +119,7 @@ void TransferReaction::Inititization(){
Setb(1,1);
SetB(13,6);
TA = 6;
T = TA * reactionConfig.beamA;
T = TA * config.beamA;
ExA = 0;
ExB = 0;
@ -141,8 +141,8 @@ TransferReaction::~TransferReaction(){
void TransferReaction::SetA(int A, int Z, double Ex = 0){
Isotope temp (A, Z);
mA = temp.Mass;
reactionConfig.beamA = A;
reactionConfig.beamZ = Z;
config.beamA = A;
config.beamZ = Z;
ExA = Ex;
nameA = temp.Name;
isReady = false;
@ -152,8 +152,8 @@ void TransferReaction::SetA(int A, int Z, double Ex = 0){
void TransferReaction::Seta(int A, int Z){
Isotope temp (A, Z);
ma = temp.Mass;
reactionConfig.targetA = A;
reactionConfig.targetZ = Z;
config.targetA = A;
config.targetZ = Z;
namea = temp.Name;
isReady = false;
isBSet = false;
@ -161,8 +161,8 @@ void TransferReaction::Seta(int A, int Z){
void TransferReaction::Setb(int A, int Z){
Isotope temp (A, Z);
mb = temp.Mass;
reactionConfig.recoilLightA = A;
reactionConfig.recoilLightZ = Z;
config.recoil1.lightA = A;
config.recoil1.lightZ = Z;
nameb = temp.Name;
isReady = false;
isBSet = false;
@ -170,8 +170,8 @@ void TransferReaction::Setb(int A, int Z){
void TransferReaction::SetB(int A, int Z){
Isotope temp (A, Z);
mB = temp.Mass;
reactionConfig.recoilHeavyA = A;
reactionConfig.recoilHeavyZ = Z;
config.recoil1.heavyA = A;
config.recoil1.heavyZ = Z;
nameB = temp.Name;
isReady = false;
isBSet = true;
@ -179,7 +179,7 @@ void TransferReaction::SetB(int A, int Z){
void TransferReaction::SetIncidentEnergyAngle(double KEA, double theta, double phi){
this->TA = KEA;
this->T = TA * reactionConfig.beamA;
this->T = TA * config.beamA;
this->thetaIN = theta;
this->phiIN = phi;
isReady = false;
@ -189,15 +189,15 @@ void TransferReaction::SetReactionSimple(int beamA, int beamZ,
int targetA, int targetZ,
int recoilA, int recoilZ, float beamEnergy_AMeV){
reactionConfig.SetReactionSimple(beamA, beamZ,
config.SetReactionSimple(beamA, beamZ,
targetA, targetZ,
recoilA, recoilZ, beamEnergy_AMeV);
SetA(reactionConfig.beamA, reactionConfig.beamZ);
Seta(reactionConfig.targetA, reactionConfig.targetZ);
Setb(reactionConfig.recoilLightA, reactionConfig.recoilLightZ);
SetB(reactionConfig.recoilHeavyA, reactionConfig.recoilHeavyZ);
SetIncidentEnergyAngle(reactionConfig.beamEnergy, 0, 0);
SetA(config.beamA, config.beamZ);
Seta(config.targetA, config.targetZ);
Setb(config.recoil1.lightA, config.recoil1.lightZ);
SetB(config.recoil1.heavyA, config.recoil1.heavyZ);
SetIncidentEnergyAngle(config.beamEnergy, 0, 0);
CalReactionConstant();
@ -213,20 +213,20 @@ void TransferReaction::SetExB(double Ex){
isReady = false;
}
void TransferReaction::SetReactionFromFile(string reactionConfigFile){
void TransferReaction::SetReactionFromFile(string configFile){
if( reactionConfig.LoadReactionConfig(reactionConfigFile) ){
if( config.LoadReactionConfig(configFile) ){
SetA(reactionConfig.beamA, reactionConfig.beamZ);
Seta(reactionConfig.targetA, reactionConfig.targetZ);
Setb(reactionConfig.recoilLightA, reactionConfig.recoilLightZ);
SetB(reactionConfig.recoilHeavyA, reactionConfig.recoilHeavyZ);
SetIncidentEnergyAngle(reactionConfig.beamEnergy, 0, 0);
SetA(config.beamA, config.beamZ);
Seta(config.targetA, config.targetZ);
Setb(config.recoil1.lightA, config.recoil1.lightZ);
SetB(config.recoil1.heavyA, config.recoil1.heavyZ);
SetIncidentEnergyAngle(config.beamEnergy, 0, 0);
CalReactionConstant();
}else{
printf("cannot read file %s.\n", reactionConfigFile.c_str());
printf("cannot read file %s.\n", configFile.c_str());
isReady = false;
}
@ -260,9 +260,9 @@ TString TransferReaction::GetReactionName_Latex(){
void TransferReaction::CalReactionConstant(){
if( !isBSet){
reactionConfig.recoilHeavyA = reactionConfig.beamA + reactionConfig.targetA - reactionConfig.recoilLightA;
reactionConfig.recoilHeavyZ = reactionConfig.beamZ + reactionConfig.targetZ - reactionConfig.recoilLightZ;
Isotope temp (reactionConfig.recoilHeavyA, reactionConfig.recoilHeavyZ);
config.recoil1.heavyA = config.beamA + config.targetA - config.recoil1.lightA;
config.recoil1.heavyZ = config.beamZ + config.targetZ - config.recoil1.lightZ;
Isotope temp (config.recoil1.heavyA, config.recoil1.heavyZ);
mB = temp.Mass;
isBSet = true;
}
@ -355,7 +355,7 @@ std::pair<double, double> TransferReaction::CalExThetaCM(double e, double z, dou
double mass = mb;
double massB = mB;
double y = e + mass;
double slope = 299.792458 * reactionConfig.recoilLightZ * abs(Bfield) / TMath::TwoPi() * beta / 1000.; // MeV/mm;
double slope = 299.792458 * config.recoil1.lightZ * abs(Bfield) / TMath::TwoPi() * beta / 1000.; // MeV/mm;
double alpha = slope/beta;
double G = alpha * gamma * beta * perpDist ;
double Z = alpha * gamma * beta * z;

View File

@ -381,12 +381,12 @@ void MyMainFrame::OpenFile(int ID){
if ( ID == 6 ) fileName = "../working/DWBA2.out";
if ( ID == 7 ) fileName = "../working/DWBA2.Xsec.txt";
}else{
if ( ID == 1 ) fileName = "../working/reactionConfig1.txt";
if ( ID == 2 ) fileName = "../working/Ex1.txt";
if ( ID == 3 ) fileName = "../working/DWBA1";
if ( ID == 5 ) fileName = "../working/DWBA1.in";
if ( ID == 6 ) fileName = "../working/DWBA1.out";
if ( ID == 7 ) fileName = "../working/DWBA1.Xsec.txt";
if ( ID == 1 ) fileName = "../working/reactionConfig.txt";
if ( ID == 2 ) fileName = "../working/Ex.txt";
if ( ID == 3 ) fileName = "../working/DWBA";
if ( ID == 5 ) fileName = "../working/DWBA.in";
if ( ID == 6 ) fileName = "../working/DWBA.out";
if ( ID == 7 ) fileName = "../working/DWBA.Xsec.txt";
}
if ( ID == 4 ) fileName = "../working/Check_Simulation_Config.txt";
if ( ID == 8 ) fileName = isoFileName;
@ -494,12 +494,12 @@ void MyMainFrame::Command(int ID) {
if( ID == 1 ){
string basicConfig = "reactionConfig1.txt";
string basicConfig = "reactionConfig.txt";
string heliosDetGeoFile = "detectorGeo.txt";
string excitationFile = "Ex1.txt"; //when no file, only ground state
string excitationFile = "Ex.txt"; //when no file, only ground state
TString ptolemyRoot = ""; // when no file, use isotropic distribution of thetaCM
TString saveFileName = "transfer1.root";
TString filename = "reaction1.dat"; //when no file, no output
TString saveFileName = "transfer.root";
TString filename = "reaction.dat"; //when no file, no output
if( withDWBA->GetState() ) {
ptolemyRoot = "DWBA1.root";
@ -538,7 +538,7 @@ void MyMainFrame::Command(int ID) {
if( isUse2ndArray ){
Check_Simulation("transfer2.root");
}else{
Check_Simulation("transfer1.root");
Check_Simulation("transfer.root");
}
statusLabel->SetText(" Run Simulation first.");
}

View File

@ -1,6 +0,0 @@
//Ex relative_xsec SF sigma_in_MeV
//<--- use "//" for line comment
0.000 1.0 1.0 0.0100
//4.400 1.0 1.0 0.0100
//4.600 1.0 1.0 0.0100
#============_End_of_file

View File

@ -1,6 +1,8 @@
-3.00 //Bfield_[T]
0.00 //Bfield_direction_to_z-axis_[deg]_should_not_use
462.5 //bore_[mm]
1000 //recoil_position_+_for_downstream_[mm]
10.0 //inner_radius_of_recoil_detector_[mm]
40.2 //outter_radius_of_recoil_detector_[mm]
@ -9,6 +11,7 @@ false //is_coincident_with_recoil
0 //Recoil_2_position_[mm]
0.00 //Elum_1_position_[mm]_(just_another_recoil_detector_but_for_light_recoil)
0.00 //Elum_2_position_[mm]_when_Elum=0_disable_tree_branch
#===============1st_Array
11.5 //distance_from_axis_[mm]
10.0 //width_of_detector_[mm]
@ -24,7 +27,8 @@ Out //detector_facing_Out_or_In
117.9
176.8
235.8 //5th_det
290.0
294.0
#===============2nd_Array
false //is_2nd_array_exist_is_use_for_Simulation
11.5 //distance_from_axis_[mm]
@ -42,4 +46,5 @@ Out //detector_facing_Out_or_In
176.8
235.8 //5th_det
290.0
################## end of file

View File

@ -0,0 +1,39 @@
32 //beam_A
14 //beam_Z
0.0 //excitation_energy_of_beam[MeV]
8.8 //beam-energy_in_MeV/u
0.000 //beam-energy_sigma_in_MeV/u
0.000 //beam-angle_in_mrad
0.000 //beam-emittance_in_mrad
0.00 //x_offset_of_Beam_in_mm
0.00 //y_offset_of_Beam_in_mm
2 //target_A
1 //target_Z
false //isTargetScattering
0.913 //target_density_in_g/cm3
2.2e-4 //targetThickness_in_cm
../SRIM/20F_in_CD2.txt //stopping_power_for_beam
100000 //number_of_Event_being_generated
false //Redo_until_hit_array=all_events_hit_array
#=====reaction_for_1st_Array
1 //recoil_light_A
1 //recoil-light_Z
../SRIM/3H_in_CD2.txt //stopping_power_for_light_recoil
../SRIM/19F_in_CD2.txt //stopping_power_for_heavy_recoil
false //isDacay
32 //decayNucleus_A
14 //decayNucleus_Z
#=====_reaction_for_2nd_Array_use_ony_when_2nd_array_used
3 //recoil_light_A
2 //recoil-light_Z
../SRIM/3H_in_CD2.txt //stopping_power_for_light_recoil
../SRIM/19F_in_CD2.txt //stopping_power_for_heavy_recoil
false //isDacay
32 //decayNucleus_A
14 //decayNucleus_Z
################## end of file

View File

@ -1,25 +0,0 @@
32 //beam_A
14 //beam_Z
2 //target_A
1 //target_Z
1 //recoil_light_A
1 //recoil-light_Z
8.8 //beam-energy_in_MeV/u
0.000 //beam-energy_sigma_in_MeV/u
0.000 //beam-angle_in_mrad
0.000 //beam-emittance_in_mrad
0.00 //x_offset_of_Beam_in_mm
0.00 //y_offset_of_Beam_in_mm
10000 //number_of_Event_being_generated
false //isTargetScattering
0.913 //target_density_in_g/cm3
2.2e-4 //targetThickness_in_cm
../SRIM/20F_in_CD2.txt //stopping_power_for_beam
../SRIM/3H_in_CD2.txt //stopping_power_for_light_recoil
../SRIM19F_in_CD2.txt //stopping_power_for_heavy_recoil
false //isDacay
32 //decayNucleus_A
14 //decayNucleus_Z
false //isReDo
0.0 //List_of_excitation_energy_of_A[MeV]
#===== end of file

View File

@ -1,25 +0,0 @@
16 //beam_A
8 //beam_Z
2 //target_A
1 //target_Z
1 //recoil_light_A
1 //recoil-light_Z
10.0 //beam-energy_in_MeV/u
0.000 //beam-energy_sigma_in_MeV/u
0.000 //beam-angle_in_mrad
0.000 //beam-emittance_in_mrad
0.00 //x_offset_of_Beam_in_mm
0.00 //y_offset_of_Beam_in_mm
100000 //number_of_Event_being_generated
false //isTargetScattering
0.913 //target_density_in_g/cm3
2.2e-4 //targetThickness_in_cm
../SRIM/20F_in_CD2.txt //stopping_power_for_beam
../SRIM/3H_in_CD2.txt //stopping_power_for_light_recoil
../SRIM19F_in_CD2.txt //stopping_power_for_heavy_recoil
false //isDacay
32 //decayNucleus_A
14 //decayNucleus_Z
false //isReDo
0.0 //List_of_excitation_energy_of_A[MeV]
#===== end of file