diff --git a/Inputs/EventGenerator/132Sndp.reaction b/Inputs/EventGenerator/132Sndp.reaction index 3da1777b7da2c56f49120b1174a1616bf2b9590d..72598b481c356b15625ede5ee548b97869f59c62 100644 --- a/Inputs/EventGenerator/132Sndp.reaction +++ b/Inputs/EventGenerator/132Sndp.reaction @@ -15,8 +15,11 @@ Transfert SigmaY= 0 SigmaThetaX= 0 SigmaPhiY= 0 - CrossSectionPath= 132Sndp_10A_MeV_2f7_ZR_FRC.lis + CrossSectionPath= sn132dp_gs_10AMeV.txt +% CrossSectionPath= 132Sndp_10A_MeV_2f7_ZR_FRC.lis % CrossSectionPath= flat.txt + HalfOpenAngleMin= 0 + HalfOpenAngleMax= 180 ShootLight= 1 ShootHeavy= 0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx index 67e172b552a7ba285f78399aacb975d413f44449..65a1c54a87d3ffdc068a506ed13165147a0d4864 100644 --- a/NPLib/Physics/NPReaction.cxx +++ b/NPLib/Physics/NPReaction.cxx @@ -56,30 +56,32 @@ Reaction::Reaction() { //------------- Default Constructor ------------- - fNuclei1 = new Nucleus() ; - fNuclei2 = new Nucleus() ; - fNuclei3 = new Nucleus() ; - fNuclei4 = new Nucleus() ; - fBeamEnergy = 0 ; - fThetaCM = 0 ; - fExcitationLight = 0 ; - fExcitationHeavy = 0 ; - fQValue = 0 ; - initializePrecomputeVariable() ; + fNuclei1 = new Nucleus(); + fNuclei2 = new Nucleus(); + fNuclei3 = new Nucleus(); + fNuclei4 = new Nucleus(); + fBeamEnergy = 0; + fThetaCM = 0; + fExcitationLight = 0; + fExcitationHeavy = 0; + fQValue = 0; + fCrossSectionAngleMin = 0; + fCrossSectionAngleMax = 180; + initializePrecomputeVariable(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -Reaction::Reaction(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy ,string Path) +Reaction::Reaction(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy ,string Path, double CSThetaMin, double CSThetaMax) { - SetEveryThing( name1, name2, name3, name4, BeamEnergy, ExcitationEnergyLight, ExcitationEnergyHeavy, Path) ; + SetEveryThing( name1, name2, name3, name4, BeamEnergy, ExcitationEnergyLight, ExcitationEnergyHeavy, Path, CSThetaMin, CSThetaMax); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Reaction::SetEveryThing(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path) +void Reaction::SetEveryThing(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path, double CSThetaMin, double CSThetaMax) { //------------- Constructor with nuclei names and beam energy ------------ @@ -122,16 +124,25 @@ void Reaction::SetEveryThing(string name1, string name2, string name3, string na } double CSBuffer,AngleBuffer; - vector<double> CrossSectionBuffer ; - - while(!CSFile.eof()) - { - CSFile >> AngleBuffer; - CSFile >> CSBuffer; - double CSFinal = CSBuffer*sin(AngleBuffer*deg); - CrossSectionBuffer.push_back(CSFinal); + vector<double> CrossSectionBuffer; + double thetamin = 200; + double thetamax = -10; + while(!CSFile.eof()) { + CSFile >> AngleBuffer; + CSFile >> CSBuffer; + // only treat angular range defined by user + if (AngleBuffer < CSThetaMin || AngleBuffer > CSThetaMax) continue; + double CSFinal = CSBuffer*sin(AngleBuffer*deg); + CrossSectionBuffer.push_back(CSFinal); + // determine theta min and max + if (AngleBuffer < thetamin) thetamin = AngleBuffer; + if (AngleBuffer > thetamax) thetamax = AngleBuffer; } - + + // set theta min and max values + fCrossSectionAngleMin = thetamin; + fCrossSectionAngleMax = thetamax; + CSFile.close(); CrossSectionSize = CrossSectionBuffer.size(); CrossSection = new double[CrossSectionSize] ; @@ -277,6 +288,7 @@ void Reaction::ReadConfigurationFile(string Path) ////////Reaction Setting needs/////// string Beam, Target, Heavy, Light, CrossSectionPath ; double BeamEnergy = 0 , ExcitationEnergyLight = 0, ExcitationEnergyHeavy = 0; + double CSHalfOpenAngleMin = 0, CSHalfOpenAngleMax = 0; bool ReadingStatus = false ; bool check_Beam = false ; bool check_Target = false ; @@ -376,6 +388,18 @@ void Reaction::ReadConfigurationFile(string Path) cout << "Cross Section File: " << CrossSectionPath << endl ; } + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMin=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMin = atof(DataBuffer.c_str()) * deg; + cout << "HalfOpenAngleMin " << CSHalfOpenAngleMin / deg << " degree" << endl; + } + + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMax=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMax = atof(DataBuffer.c_str()) * deg; + cout << "HalfOpenAngleMax " << CSHalfOpenAngleMax / deg << " degree" << endl; + } + /////////////////////////////////////////////////// // If no Transfert Token and no comment, toggle out @@ -390,7 +414,7 @@ void Reaction::ReadConfigurationFile(string Path) } } - SetEveryThing(Beam, Target, Light, Heavy,BeamEnergy,ExcitationEnergyLight, ExcitationEnergyHeavy,CrossSectionPath); + SetEveryThing(Beam, Target, Light, Heavy,BeamEnergy,ExcitationEnergyLight, ExcitationEnergyHeavy,CrossSectionPath, CSHalfOpenAngleMin, CSHalfOpenAngleMax); ReactionFile.close(); } diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h index 0ce4cce5cfdc91e21ea7b4d5d272e7bdc7c65098..781822ee74debc7753028f1e8a4fd508735d42e1 100644 --- a/NPLib/Physics/NPReaction.h +++ b/NPLib/Physics/NPReaction.h @@ -49,11 +49,11 @@ namespace NPL public: // Constructors and Destructors Reaction(); - Reaction(string name1, string name2, string name3, string name4, double BeamEnergy , double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path); + Reaction(string name1, string name2, string name3, string name4, double BeamEnergy , double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path, double CSThetaMin = 0, double CSThetaMax = 180); ~Reaction(); public: // Various Method - void SetEveryThing(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path) ; + void SetEveryThing(string name1, string name2, string name3, string name4, double BeamEnergy, double ExcitationEnergyLight, double ExcitationEnergyHeavy, string Path, double CSThetaMin, double CSThetaMax); void ReadConfigurationFile(string Path); private: @@ -69,6 +69,8 @@ namespace NPL double fExcitationHeavy; // Excitation energy in MeV double* CrossSection; // Differential CrossSection int CrossSectionSize; // Size of array containing Differention CrossSection + double fCrossSectionAngleMin; // Minimum angle of the differential cross-section given by the user + double fCrossSectionAngleMax; // Maximum angle of the differential cross-section given by the user public: // Getters and Setters @@ -86,6 +88,8 @@ namespace NPL Nucleus* GetNucleus4() const {return fNuclei4;} double* GetCrossSection() const {return CrossSection;} int GetCrossSectionSize() const {return CrossSectionSize;} + double GetCrossSectionAngleMin() const {return fCrossSectionAngleMin;} + double GetCrossSectionAngleMax() const {return fCrossSectionAngleMax;} private: // intern precompute variable void initializePrecomputeVariable(); diff --git a/NPSimulation/include/EventGeneratorTransfert.hh b/NPSimulation/include/EventGeneratorTransfert.hh index b1676d2e848f8fdf6b27ff8daf7be7433ee1454d..c9db4789b4dcacb3baa093095d00f7378979f5e7 100644 --- a/NPSimulation/include/EventGeneratorTransfert.hh +++ b/NPSimulation/include/EventGeneratorTransfert.hh @@ -44,82 +44,88 @@ using namespace NPL ; class EventGeneratorTransfert : public VEventGenerator { -public: // Constructors and Destructors - // Default constructor used to allocate memory - EventGeneratorTransfert(); - - // This is the constructor to be used - EventGeneratorTransfert( string name1 , // Beam nuclei - string name2 , // Target nuclei - string name3 , // Product of reaction - string name4 , // Product of reaction - double BeamEnergy , // Beam Energy - double ExcitationEnergyLight , // Excitation of Light Nuclei - double ExcitationEnergyHeavy , // Excitation of Heavy Nuclei - double BeamEnergySpread , - double SigmaX , - double SigmaY , - double SigmaThetaX , - double SigmaPhiY , - bool ShootLight , - bool ShootHeavy , - string Path ); // Path of the differentiel Cross Section - - // Default Destructor - virtual ~EventGeneratorTransfert(); - - -public: // Inherit from VEventGenerator class - void ReadConfiguration(string); - void GenerateEvent(G4Event*, G4ParticleGun*); - void SetTarget(Target* Target) ; - - -private: // Particle Shoot Option - bool m_ShootLight; - bool m_ShootHeavy; - - -private: // Target Parameter - Target* m_Target; - - -private: // Reaction and CrossSection Shoot - Reaction* m_Reaction; - - -private: // Beam Parameters - double m_BeamEnergy; - double m_BeamEnergySpread; - double m_SigmaX; - double m_SigmaY; - double m_SigmaThetaX; - double m_SigmaPhiY; - - -private: // TTree to store initial value of beam and reaction - TInitialConditions* m_InitConditions; - - - // Other methods - void Print() const; - void InitializeRootOutput(); - - void SetEverything( string name1 , // Beam nuclei - string name2 , // Target nuclei - string name3 , // Product of reaction - string name4 , // Product of reaction - double BeamEnergy , // Beam Energy - double ExcitationEnergyLight , // Excitation of Light Nuclei - double ExcitationEnergyHeavy , // Excitation of Heavy Nuclei - double BeamEnergySpread , - double SigmaX , - double SigmaY , - double SigmaThetaX , - double SigmaPhiY , - bool ShootLight , - bool ShootHeavy , - string Path ); // Path of the differentiel Cross Section + public: // Constructors and Destructors + // Default constructor used to allocate memory + EventGeneratorTransfert(); + + // This is the constructor to be used + EventGeneratorTransfert(string name1 , // Beam nuclei + string name2 , // Target nuclei + string name3 , // Product of reaction + string name4 , // Product of reaction + double BeamEnergy , // Beam Energy + double ExcitationEnergyLight , // Excitation of Light Nuclei + double ExcitationEnergyHeavy , // Excitation of Heavy Nuclei + double BeamEnergySpread , + double SigmaX , + double SigmaY , + double SigmaThetaX , + double SigmaPhiY , + bool ShootLight , + bool ShootHeavy , + string Path, + double CSThetaMin, + double CSThetaMax); // Path of the differentiel Cross Section + + // Default Destructor + virtual ~EventGeneratorTransfert(); + + + public: // Inherit from VEventGenerator class + void ReadConfiguration(string); + void GenerateEvent(G4Event*, G4ParticleGun*); + void SetTarget(Target* Target) ; + + + private: // Particle Shoot Option + bool m_ShootLight; + bool m_ShootHeavy; + + + private: // Target Parameter + Target* m_Target; + + + private: // Reaction and CrossSection Shoot + Reaction* m_Reaction; + G4double m_HalfOpenAngleMin; // Min Half open angle of the source + G4double m_HalfOpenAngleMax; // Max Half open angle of the source + + + private: // Beam Parameters + double m_BeamEnergy; + double m_BeamEnergySpread; + double m_SigmaX; + double m_SigmaY; + double m_SigmaThetaX; + double m_SigmaPhiY; + + + private: // TTree to store initial value of beam and reaction + TInitialConditions* m_InitConditions; + + + // Other methods + void Print() const; + void InitializeRootOutput(); + + void SetEverything(string name1 , // Beam nuclei + string name2 , // Target nuclei + string name3 , // Product of reaction + string name4 , // Product of reaction + double BeamEnergy , // Beam Energy + double ExcitationEnergyLight , // Excitation of Light Nuclei + double ExcitationEnergyHeavy , // Excitation of Heavy Nuclei + double BeamEnergySpread , + double SigmaX , + double SigmaY , + double SigmaThetaX , + double SigmaPhiY , + bool ShootLight , + bool ShootHeavy , + string Path, + double CSThetaMin, + double CSThetaMax); // Path of the differentiel Cross Section }; #endif diff --git a/NPSimulation/include/EventGeneratorTransfertToResonance.hh b/NPSimulation/include/EventGeneratorTransfertToResonance.hh index 5557b49aa98a39c8218acbad468b5a78c7912a5d..8b2b5e941420022154824467ad627bda469c51ab 100644 --- a/NPSimulation/include/EventGeneratorTransfertToResonance.hh +++ b/NPSimulation/include/EventGeneratorTransfertToResonance.hh @@ -69,7 +69,9 @@ class EventGeneratorTransfertToResonance : public VEventGenerator bool ShootLight , bool ShootHeavy , bool ShootDecayProduct , - string Path ); //Path of the differentiel Cross Section + string Path , + double CSThetaMin , + double CSThetaMax); //Path of the differentiel Cross Section // Default Destructor virtual ~EventGeneratorTransfertToResonance(); @@ -141,7 +143,9 @@ class EventGeneratorTransfertToResonance : public VEventGenerator bool ShootLight , bool ShootHeavy , bool ShootDecayProduct , - string Path ); //Path of the differentiel Cross Section + string Path , + double CSThetaMin , + double CSThetaMax); //Path of the differentiel Cross Section }; #endif diff --git a/NPSimulation/src/EventGeneratorTransfert.cc b/NPSimulation/src/EventGeneratorTransfert.cc index 517e6bb73d459996b0c81657f37d6d1afcf82dd0..c7207bf29d40fee9e0d7df8433f3a05ae514ec0c 100644 --- a/NPSimulation/src/EventGeneratorTransfert.cc +++ b/NPSimulation/src/EventGeneratorTransfert.cc @@ -49,20 +49,21 @@ using namespace CLHEP; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... EventGeneratorTransfert::EventGeneratorTransfert() + : m_ShootLight(0), + m_ShootHeavy(0), + m_Target(0), + m_Reaction(new Reaction), + m_HalfOpenAngleMin(0), + m_HalfOpenAngleMax(180), + m_BeamEnergy(0), + m_BeamEnergySpread(0), + m_SigmaX(0), + m_SigmaY(0), + m_SigmaThetaX(0), + m_SigmaPhiY(0), + m_InitConditions(new TInitialConditions) { //------------- Default Constructor ------------- - m_InitConditions = new TInitialConditions(); - m_Reaction = new Reaction(); - m_Target = 0; - - m_BeamEnergy = 0; - m_BeamEnergySpread = 0; - m_SigmaX = 0; - m_SigmaY = 0; - m_SigmaThetaX = 0; - m_SigmaPhiY = 0; - m_ShootLight = 0; - m_ShootHeavy = 0; } @@ -98,7 +99,9 @@ EventGeneratorTransfert::EventGeneratorTransfert( string name1 double SigmaPhiY , bool ShootLight , bool ShootHeavy , - string Path ) // Path of the differentiel Cross Section + string Path , + double CSThetaMin , + double CSThetaMax) // Path of the differentiel Cross Section { SetEverything( name1, name2, @@ -114,7 +117,9 @@ EventGeneratorTransfert::EventGeneratorTransfert( string name1 SigmaPhiY, ShootLight, ShootHeavy, - Path); + Path, + CSThetaMin, + CSThetaMax); } @@ -149,6 +154,7 @@ void EventGeneratorTransfert::ReadConfiguration(string Path) string Beam, Target, Heavy, Light, CrossSectionPath ; G4double BeamEnergy = 0 , ExcitationEnergyLight = 0, ExcitationEnergyHeavy = 0; G4double BeamEnergySpread = 0 , SigmaX = 0 , SigmaY = 0 , SigmaThetaX = 0 , SigmaPhiY=0; + G4double CSHalfOpenAngleMin = 0, CSHalfOpenAngleMax = 180; bool ShootLight = false ; bool ShootHeavy = false ; @@ -283,6 +289,18 @@ void EventGeneratorTransfert::ReadConfiguration(string Path) G4cout << "Cross Section File: " << CrossSectionPath << G4endl ; } + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMin=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMin = atof(DataBuffer.c_str()) * deg; + G4cout << "HalfOpenAngleMin " << CSHalfOpenAngleMin / deg << " degree" << G4endl; + } + + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMax=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMax = atof(DataBuffer.c_str()) * deg; + G4cout << "HalfOpenAngleMax " << CSHalfOpenAngleMax / deg << " degree" << G4endl; + } + else if (DataBuffer.compare(0, 11, "ShootLight=") == 0) { check_ShootLight = true ; ReactionFile >> DataBuffer; @@ -331,7 +349,9 @@ void EventGeneratorTransfert::ReadConfiguration(string Path) SigmaPhiY, ShootLight, ShootHeavy, - CrossSectionPath); + CrossSectionPath, + CSHalfOpenAngleMin/deg, + CSHalfOpenAngleMax/deg); ReactionFile.close(); } @@ -440,7 +460,7 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa // Angles RandGeneral CrossSectionShoot(m_Reaction->GetCrossSection(), m_Reaction->GetCrossSectionSize()); - G4double ThetaCM = CrossSectionShoot.shoot() * (180*deg); + G4double ThetaCM = (m_Reaction->GetCrossSectionAngleMin() + CrossSectionShoot.shoot() * (m_Reaction->GetCrossSectionAngleMax() - m_Reaction->GetCrossSectionAngleMin())) * deg; G4double phi = RandFlat::shoot() * 2*pi; // write angles to ROOT file m_InitConditions->SetICEmittedAngleThetaCM(ThetaCM / deg); @@ -537,17 +557,21 @@ void EventGeneratorTransfert::SetEverything(string name1, // Beam double SigmaPhiY, bool ShootLight, bool ShootHeavy, - string Path) + string Path, + double CSThetaMin, + double CSThetaMax) { - m_Reaction = new Reaction(name1, name2, name3, name4, BeamEnergy, ExcitationEnergyLight, ExcitationEnergyHeavy, Path); - - m_BeamEnergy = BeamEnergy; - m_BeamEnergySpread = BeamEnergySpread; - m_SigmaX = SigmaX; - m_SigmaY = SigmaY; - m_SigmaThetaX = SigmaThetaX; - m_SigmaPhiY = SigmaPhiY; - m_ShootLight = ShootLight; - m_ShootHeavy = ShootHeavy; + m_Reaction = new Reaction(name1, name2, name3, name4, BeamEnergy, ExcitationEnergyLight, ExcitationEnergyHeavy, Path, CSThetaMin, CSThetaMax); + + m_BeamEnergy = BeamEnergy; + m_BeamEnergySpread = BeamEnergySpread; + m_SigmaX = SigmaX; + m_SigmaY = SigmaY; + m_SigmaThetaX = SigmaThetaX; + m_SigmaPhiY = SigmaPhiY; + m_ShootLight = ShootLight; + m_ShootHeavy = ShootHeavy; + m_HalfOpenAngleMin = CSThetaMin; + m_HalfOpenAngleMax = CSThetaMax; } diff --git a/NPSimulation/src/EventGeneratorTransfertToResonance.cc b/NPSimulation/src/EventGeneratorTransfertToResonance.cc index c03be291d69ce013c0e28d6a716483e688e1bc73..dd4c1a3d5c4d6fb702a2c57590f6e68ece460ab0 100644 --- a/NPSimulation/src/EventGeneratorTransfertToResonance.cc +++ b/NPSimulation/src/EventGeneratorTransfertToResonance.cc @@ -102,7 +102,9 @@ EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance( string bool ShootLight, bool ShootHeavy, bool ShootDecayProduct, - string Path) + string Path, + double CSThetaMin, + double CSThetaMax) { //------------- Constructor with nuclei names and beam energy ------------ @@ -124,7 +126,9 @@ EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance( string ShootLight, ShootHeavy, ShootDecayProduct, - Path); + Path, + CSThetaMin, + CSThetaMax); m_EventWeight = 0; @@ -153,6 +157,7 @@ void EventGeneratorTransfertToResonance::ReadConfiguration(string Path) string Beam, Target, Heavy, Light, CrossSectionPath ; G4double BeamEnergy = 0, ExcitationEnergyLight = 0, ExcitationEnergyHeavy = 0; G4double BeamEnergySpread = 0 , SigmaX = 0 , SigmaY = 0 , SigmaThetaX = 0 , SigmaPhiY=0, ResonanceWidth = 0 ,ResonanceDecayZ = 0 , ResonanceDecayA = 0 ; + G4double CSHalfOpenAngleMin = 0; G4double CSHalfOpenAngleMax = 180; bool ShootLight = false ; bool ShootHeavy = false ; bool ShootDecayProduct = false ; @@ -313,6 +318,18 @@ void EventGeneratorTransfertToResonance::ReadConfiguration(string Path) G4cout << "Cross Section File: " << CrossSectionPath << G4endl ; } + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMin=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMin = atof(DataBuffer.c_str()) * deg; + G4cout << "HalfOpenAngleMin " << CSHalfOpenAngleMin / deg << " degree" << G4endl; + } + + else if (DataBuffer.compare(0, 17, "HalfOpenAngleMax=") == 0) { + ReactionFile >> DataBuffer; + CSHalfOpenAngleMax = atof(DataBuffer.c_str()) * deg; + G4cout << "HalfOpenAngleMax " << CSHalfOpenAngleMax / deg << " degree" << G4endl; + } + else if (DataBuffer.compare(0, 11, "ShootLight=") == 0) { check_ShootLight = true ; ReactionFile >> DataBuffer; @@ -374,7 +391,9 @@ void EventGeneratorTransfertToResonance::ReadConfiguration(string Path) ShootLight, ShootHeavy, ShootDecayProduct, - CrossSectionPath); + CrossSectionPath, + CSHalfOpenAngleMin, + CSHalfOpenAngleMax); ReactionFile.close(); } @@ -494,7 +513,7 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part ///////////////////////////////////////////////////////////////// // Angles RandGeneral CrossSectionShoot(m_Reaction->GetCrossSection(), m_Reaction->GetCrossSectionSize()); - G4double ThetaCM = CrossSectionShoot.shoot() * (180*deg); + G4double ThetaCM = (m_Reaction->GetCrossSectionAngleMin() + CrossSectionShoot.shoot() * (m_Reaction->GetCrossSectionAngleMax() - m_Reaction->GetCrossSectionAngleMin())) * deg; G4double phi = RandFlat::shoot() * 2*pi; // write angles to ROOT file m_InitConditions->SetICEmittedAngleThetaCM(ThetaCM / deg); @@ -769,7 +788,9 @@ void EventGeneratorTransfertToResonance::SetEverything( string name1, bool ShootLight, bool ShootHeavy, bool ShootDecayProduct, - string Path) + string Path, + double CSThetaMin, + double CSThetaMax) { //------------- Constructor with nuclei names and beam energy ------------ @@ -780,7 +801,9 @@ void EventGeneratorTransfertToResonance::SetEverything( string name1, BeamEnergy, ExcitationLight, ExcitationHeavy, - Path) ; + Path, + CSThetaMin, + CSThetaMax) ; m_BeamEnergy = BeamEnergy; m_BeamEnergySpread = BeamEnergySpread;