From 29322d151bd5bc7542e75773b775c68a25f56481 Mon Sep 17 00:00:00 2001 From: matta <matta@npt> Date: Mon, 16 Nov 2009 04:45:10 +0000 Subject: [PATCH] * Minor change prevent segmentation fault if there is no target in the set-up in NPS - an empty target is instantiate every time - if the target is empty, the energy loss process is not called --- .../DetectorConfiguration/Riken_65mm.detector | 4 +- Inputs/EventGenerator/10He.reaction | 4 +- NPAnalysis/10He_Riken/Analysis | Bin 50684 -> 55635 bytes .../10He_Riken/include/ObjectManager.hh | 24 +-- NPAnalysis/10He_Riken/src/Analysis.cc | 123 +++++++------- NPDocumentation/NPTool_UserGuide.tex | 27 ++- NPLib/MUST2/TMust2Physics.cxx | 59 +++++-- NPSimulation/include/EventGeneratorBeam.hh | 2 +- .../include/EventGeneratorTransfert.hh | 2 +- .../EventGeneratorTransfertToResonance.hh | 2 +- NPSimulation/include/Target.hh | 160 +++++++++--------- .../src/EventGeneratorTransfertToResonance.cc | 2 +- NPSimulation/src/Target.cc | 72 +++++++- 13 files changed, 299 insertions(+), 182 deletions(-) diff --git a/Inputs/DetectorConfiguration/Riken_65mm.detector b/Inputs/DetectorConfiguration/Riken_65mm.detector index 0855d67ee..5dd3b2d0c 100644 --- a/Inputs/DetectorConfiguration/Riken_65mm.detector +++ b/Inputs/DetectorConfiguration/Riken_65mm.detector @@ -5,10 +5,10 @@ %Material name according to the target library %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -GeneralTarget +%GeneralTarget %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Target - THICKNESS= 10000 + THICKNESS= 1 RADIUS= 45 MATERIAL= CD2 ANGLE= 45 diff --git a/Inputs/EventGenerator/10He.reaction b/Inputs/EventGenerator/10He.reaction index 2c1407b0f..1987df736 100644 --- a/Inputs/EventGenerator/10He.reaction +++ b/Inputs/EventGenerator/10He.reaction @@ -7,7 +7,7 @@ TransfertToResonance Target= 2H Light= 3He Heavy= 10He - ExcitationEnergy= 2.0 + ExcitationEnergy= 0.0 BeamEnergy= 550 BeamEnergySpread= 0 SigmaThetaX= 0.6921330164 @@ -19,7 +19,7 @@ TransfertToResonance ResonanceDecayA= 8 CrossSectionPath= 11Li(d,3He)10He.txt ShootLight= 1 - ShootHeavy= 1 + ShootHeavy= 0 ShootDecayProduct= 0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/NPAnalysis/10He_Riken/Analysis b/NPAnalysis/10He_Riken/Analysis index ef3df396e03189c2958aeb881d7d327c569c9ee1..75f4cb005797b9560b71bcab202eac2dbc49b5fb 100755 GIT binary patch literal 55635 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 Nz!L+^W{m9M{|`*fj)VXJ literal 50684 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�I8Afe+HA*&Y{M(QI$w!$1aI1Ek+Ybh|)7$qi79q!j) z5ICLk#$_4Z0_1y_i5rL3VaUNZ-Kwf~wQw)u_8=Zd`EjFOY?tJ)64MA)@WmKSD#L=h zpf9A>TvJ;YtkbWCsYJ$1RLX%{N8N{rVlI-ra9Nb0fLjSAl!i<6sa{9}I?=YRLYENR zEiK&I9$bb6qFLUW5$0M>OwAtbj_~L_oMOEpt1JTEz-R>WXX>|?cs&!ZzqEUrT=Y(X zrzu5ibRi~JAlzcYGeBBS(0m~_C%$B>87|$hqrll5FM?p#jD4P8u4*b@YuAN~7UP|t z*3T&H!_Br~OK7r2-MG<%RT;fW7SlpXM=YZ_;BK@_bA>$}^f*K2#JO6-jcIqQUIZ7d z1??Wuc~sxh(V^jqcPJRZN*7+PEyc@OE<B-BG&jcfk|_=ID;x9k@(L8J&}iiU0e>39 AiU0rr diff --git a/NPAnalysis/10He_Riken/include/ObjectManager.hh b/NPAnalysis/10He_Riken/include/ObjectManager.hh index c61e480db..ab0d7e99f 100644 --- a/NPAnalysis/10He_Riken/include/ObjectManager.hh +++ b/NPAnalysis/10He_Riken/include/ObjectManager.hh @@ -108,40 +108,40 @@ namespace ENERGYLOSS // 3He Energy Loss EnergyLoss He3TargetWind = EnergyLoss ( "3He_Mylar.txt" , - 1000 , - 3 , + 10000 , + 1 , 3 ); - EnergyLoss He3TargetGaz = EnergyLoss ( "3He_D2solid_1b_26K.txt" , - 1000 , - 3 , + EnergyLoss He3TargetGaz = EnergyLoss ( "3He_D2gaz_1b_26K.txt" , + 10000 , + 1 , 3 ); EnergyLoss He3StripAl = EnergyLoss ( "3He_Al.txt" , - 1000 , - 3 , + 10000 , + 1 , 3 ); EnergyLoss He3StripSi = EnergyLoss ( "3He_Si.txt" , - 1000 , - 3 , + 10000 , + 1 , 3 ); // proton Energy Loss EnergyLoss protonTargetWind = EnergyLoss ( "proton_Mylar.txt" , 1000 , - 3 , + 1 , 1 ); EnergyLoss protonTargetGaz = EnergyLoss ( "proton_D2gaz_1b_26K.txt" , 1000 , - 3 , + 1 , 1 ); EnergyLoss protonStripAl = EnergyLoss ( "proton_Al.txt" , 100 , - 3 , + 1 , 1 ); diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc index 09c9e496b..4015e62a9 100644 --- a/NPAnalysis/10He_Riken/src/Analysis.cc +++ b/NPAnalysis/10He_Riken/src/Analysis.cc @@ -48,6 +48,7 @@ int main(int argc,char** argv) //E lab et Theta lab RootOutput::getInstance()->GetTree()->Branch("ThetaCM",ThetaCM,"ThetaCM[2]/D") ; RootOutput::getInstance()->GetTree()->Branch("ELab",ELab,"ELab[2]/D") ; + RootOutput::getInstance()->GetTree()->Branch("ThetaLab",ThetaLab,"ThetaLab[2]/D") ; RootOutput::getInstance()->GetTree()->Branch("X",X,"X/D[2]") ; RootOutput::getInstance()->GetTree()->Branch("Y",Y,"Y/D[2]") ; @@ -110,7 +111,7 @@ int main(int argc,char** argv) -/* // Target (from initial condition) + // Target (from initial condition) XTarget = Init->GetICPositionX(0); YTarget = Init->GetICPositionY(0); // XTarget = RandomEngine.Gaus(Init->GetICPositionX(0),1); @@ -120,9 +121,11 @@ int main(int argc,char** argv) //// // Must 2 And ThinSi // - for(int hit = 0; hit < M2 -> GetEventMultiplicity() ; hit ++) + //for(int hit = 0; hit < M2 -> GetEventMultiplicity() ; hit ++) + for(int hit = 0; hit < M2 -> Si_E.size() ; hit ++) { - // ELab[hit] = M2 -> GetEnergyDeposit(hit); + ELab[hit] = -1 ; ThetaLab[hit] = -1; + // Get Hit Direction TVector3 HitDirection = M2 -> GetPositionOfInteraction(hit) - TVector3(XTarget,YTarget,0); // Angle between beam and particle @@ -132,67 +135,77 @@ int main(int argc,char** argv) // ANgle between particule and Must2 Si surface double ThetaMM2Surface = ThetaCalculation ( HitDirection , M2 -> GetTelescopeNormal(hit) ); - if(M2 -> GetPositionOfInteraction(hit).Z()>0) + if(M2 -> GetPositionOfInteraction(hit).Z() > 0) { - if(ELab[hit]>-1000 && ThinSi_E>0 ) - if(M2Physics.CsI.size) - { - ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 2*0.4*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); - - - ELab[hit]= He3StripSi.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 20*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); + if( M2 -> CsI_E[hit] == 0 && M2 -> Si_E[hit] > 0) + { + ELab[hit] = M2 -> Si_E[hit] ; + ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 2*0.4*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); - ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 0.4*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); + +// ELab[hit]= He3StripSi.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle +// 20*micrometer , // Target Thickness at 0 degree +// ThetaMM2Surface ); + + if(ThinSi -> Energy.size() > 0)ELab[hit] += ThinSi-> Energy[hit]; + + ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 0.4*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); - ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 15*micrometer , // Target Thickness at 0 degree - ThetaN ); + ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 15*micrometer , // Target Thickness at 0 degree + ThetaN ); - ELab[hit]= He3TargetGaz.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 1.5*mm , // Target Thickness at 0 degree - ThetaN ); + ELab[hit]= He3TargetGaz.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 1.5*mm , // Target Thickness at 0 degree + ThetaN ); - ThetaCM[hit] = myReaction -> EnergyLabToThetaCM( ELab[hit] ) /deg ; - ExcitationEnergy[hit] = myReaction -> ReconstructRelativistic( ELab[hit] , ThetaLab[hit] ) ; - X[hit] = HitDirection . X(); + ThetaCM[hit] = He10Reaction -> EnergyLabToThetaCM( ELab[hit] ) /deg ; + ExcitationEnergy[hit] = He10Reaction -> ReconstructRelativistic( ELab[hit] , ThetaLab[hit] ) ; X[hit] = HitDirection . X(); Y[hit] = HitDirection . Y(); ThetaLab[hit] = ThetaLab[hit] / deg ; } - - else if(ELab[hit]>-1000 ) + + else if(M2 ->CsI_E[hit] > 0 && M2 -> Si_E[hit] > 0) { - if(ELab[hit]>21.66)//CsI are inside a Mylar foil, plus rear alu strip - { - ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 3*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); - ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 0.4*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); - } - ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 0.4*micrometer , // Target Thickness at 0 degree - ThetaMM2Surface ); + ELab[hit]= M2 ->CsI_E[hit] ; - ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 15*micrometer , // Target Thickness at 0 degree - ThetaN ); + ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 3*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); + + ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 0.4*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); + ELab[hit]+= M2 ->Si_E[hit]; - ELab[hit]= He3TargetGaz.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle - 1.5*mm , // Target Thickness at 0 degree - ThetaN ); + ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 0.4*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); + + if(ThinSi -> Energy.size() > 0)ELab[hit] += ThinSi-> Energy[hit]; + + + ELab[hit]= He3StripAl.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 0.4*micrometer , // Target Thickness at 0 degree + ThetaMM2Surface ); + + ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 15*micrometer , // Target Thickness at 0 degree + ThetaN ); + + ELab[hit]= He3TargetGaz.EvaluateInitialEnergy( ELab[hit] , // Energy of the detected particle + 1.5*mm , // Target Thickness at 0 degree + ThetaN ); - ThetaCM[hit]= myReaction -> EnergyLabToThetaCM( ELab[hit] , 1 ) /deg ; - ExcitationEnergy[hit] = myReaction -> ReconstructRelativistic( ELab[hit], ThetaLab[hit] ) ; + ThetaCM[hit]= He10Reaction -> EnergyLabToThetaCM( ELab[hit] ) /deg ; + ExcitationEnergy[hit] = He10Reaction -> ReconstructRelativistic( ELab[hit], ThetaLab[hit] ) ; X[hit] = HitDirection . X(); Y[hit] = HitDirection . Y(); ThetaLab[hit] = ThetaLab[hit] / deg ; @@ -202,7 +215,7 @@ int main(int argc,char** argv) } - else if(M2 -> GetPositionOfInteraction(hit).Z()<0) + /*else if(M2 -> GetPositionOfInteraction(hit).Z()<0) { if(ELab[hit]>-1000 ) @@ -234,19 +247,11 @@ int main(int argc,char** argv) else {ExcitationEnergy[hit]=-100 ; X[hit] = -100 ; Y[hit] = -100 ;ThetaLab[hit]=-100; ThetaCM[hit]=-100 ;} - } + } */ } - // Plastic - for(int yy = 0 ; yy < Plastic->GetEnergySize() ; yy++) - { - if(Plastic->GetPlasticNumber(yy)==1) EPl1[yy]=Plastic->GetEnergy(yy); - else if(Plastic->GetPlasticNumber(yy)==2) EPl2[yy]=Plastic->GetEnergy(yy); - - }*/ - RootOutput::getInstance()->GetTree()->Fill() ; } diff --git a/NPDocumentation/NPTool_UserGuide.tex b/NPDocumentation/NPTool_UserGuide.tex index 08af1c466..1d9e94b71 100755 --- a/NPDocumentation/NPTool_UserGuide.tex +++ b/NPDocumentation/NPTool_UserGuide.tex @@ -92,9 +92,34 @@ It also help to understand what happen during analysis. NPLib is widely build on top of ROOT,GSL and CLHEP (by order of importance), but not on Geant4. \section{the directory layout} - + NPLib is made of several folder, one for each detector basicly and some for other shared object such as reaction and nucleus class. A common makefile is present in the NPLib directory calling the individual make file of every folder. In this folder you will also find a README file and the liblist file, containing a small macro used in NPA and NPS makefile to return the list of avaible librairies. Our phylosophy is to have two class for each detector, inheritted fron the TObject ROOT class so theyr can be put in a TTree. The first one is called the Data class, named following the TDetectorNameData, where T is there to remind the TObject dependance. This Data class hold the raw parameter given by the detector during an experiment, understood before any treatment. NPSimulation will output those kind of raw data, the only difference between a simulated and an experiement data object is the one comming from NPS are already calibrated. The second class is a Physics class, named TDetectorNamePhysics. This class hold the results of the treated Data object, ie after application of threshold, selection of good event, application of calibration,... and so one, depending on your detector. Note that the Physics class also derived from the VDetector class, and therefore can be used in NPA via the DetectorManager class. This system allow your annalysis programm to be more flexible and lisible. Let's have a look to the Directory layout: + + + \begin{itemize} + \item[DummyDetector] Template base for making your own Data and Physics class + \item[AnnularS1] Containing the Data object for the Annular detector "S1" by micron + \item[GASPARD] Data and Physics object associate to the Gamma and Segmented Particule ARray Detector + \item[MUST2] Data and Physics object associate to the MUr a STrip 2 detector + \item[Plastic] Data and Physics object associate to the Plastic scintillator detector + \item[SSSD] Data and Physics object associate to the Single Sided Striped Detector + \item[InitialConditions] Used in NPS to output the initial physics condition of the generated event (Beam interaction position and energy, angle and energy of particule,...) + \item[InteractionCoordinates] Used in NPS to output the true physical point of interaction in the differents detector + \item[CalibrationManager] This class allowed to manage different file and token and associate them to detector + \item[IORoot] Hold the ROOTInput and ROOTOutput classes that allow an easier used of TTRee in NPS and NPA + \item[Tools] A few usefull classes such as Nuclear Reaction kinematics, Nucleus object and Energy Loss + \item[VDetector] Virtual Detector class from wich inherrited all Physics class + \item[include] All header are copy in this folder during compilation + \item[lib] All libraries are copy in this folder during compilation + \end{itemize} + \section{Step by step from TDUMMYDetectorData class} \subsection{step 1} + First, go to your consol and open the NPLib folder, there type \begin{verbatim}make distclean\end{verbatim} + This command will remove all the compilation generated file and only the source will remain. + Copy the DummyDetector folder and rename it, let's say, WonderdullDetector. + Ebter the directory and rename the TDummyDetectorData.h and .cxx with your detector name, you should have now only three file: Makefile, TWonderfullDetectorData.h and TWonderfullDetectorData.cxx + If any other file remain, just remove it. + No open the .h and .cxx file with your favorite editor (gedit or vim for instance). Replace the the DUMMYDetector by your detector name. Just have look in the .h file, the class is very basic, a couple of value are stored in stl vector (allowing smaller tree and increasing speed access). A few methods allowed to set or get those value and to know the size of the different vector. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter[NPSimulation]{NPSimulation} diff --git a/NPLib/MUST2/TMust2Physics.cxx b/NPLib/MUST2/TMust2Physics.cxx index 70b6fcf02..4cd918223 100644 --- a/NPLib/MUST2/TMust2Physics.cxx +++ b/NPLib/MUST2/TMust2Physics.cxx @@ -57,15 +57,23 @@ void TMust2Physics::BuildSimplePhysicalEvent() void TMust2Physics::BuildPhysicalEvent() { + bool check_SILI = false ; + bool check_CSI = false ; + + if( CheckEvent() == 1 ) { vector< TVector2 > couple = Match_X_Y() ; for(unsigned int i = 0 ; i < couple.size() ; i++) { + check_SILI = false ; + check_CSI = false ; + int N = EventData->GetMMStripXEDetectorNbr(couple[i].X()) ; - int X = EventData->GetMMStripXEStripNbr(couple[i].X()) ; - int Y = EventData->GetMMStripXEStripNbr(couple[i].Y()) ; + + int X = EventData->GetMMStripXEStripNbr(couple[i].X()) ; + int Y = EventData->GetMMStripYEStripNbr(couple[i].Y()) ; double Si_X_E = fSi_X_E(EventData , couple[i].X()) ; double Si_Y_E = fSi_Y_E(EventData , couple[i].Y()) ; @@ -95,6 +103,8 @@ void TMust2Physics::BuildPhysicalEvent() SiLi_N.push_back(EventData->GetMMSiLiEPadNbr(j)) ; SiLi_E.push_back(fSiLi_E(EventData , j)) ; SiLi_T.push_back(fSiLi_T(EventData , j)) ; + check_SILI = true ; + } } } @@ -112,10 +122,27 @@ void TMust2Physics::BuildPhysicalEvent() CsI_N.push_back(EventData->GetMMCsIECristalNbr(j)) ; CsI_E.push_back(fCsI_E(EventData , j)) ; CsI_T.push_back(fCsI_T(EventData , j)) ; + check_CSI = true ; } } } } + + + if(!check_SILI) + { + SiLi_N.push_back(0) ; + SiLi_E.push_back(0) ; + SiLi_T.push_back(0) ; + } + + if(!check_CSI) + { + CsI_N.push_back(0) ; + CsI_E.push_back(0) ; + CsI_T.push_back(0) ; + } + } } @@ -872,8 +899,8 @@ void TMust2Physics::AddTelescope( double theta , TVector3 TMust2Physics::GetPositionOfInteraction(int i) { TVector3 Position = TVector3 ( GetStripPositionX( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) , - GetStripPositionY( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) , - GetStripPositionZ( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) ) ; + GetStripPositionY( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) , + GetStripPositionZ( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) ) ; return(Position) ; @@ -881,21 +908,21 @@ TVector3 TMust2Physics::GetPositionOfInteraction(int i) TVector3 TMust2Physics::GetTelescopeNormal( int i) { - TVector3 U = TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) , - GetStripPositionY( TelescopeNumber[i] , 128 , 1 ) , - GetStripPositionZ( TelescopeNumber[i] , 128 , 1 ) ) + TVector3 U = TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) , + GetStripPositionY( TelescopeNumber[i] , 128 , 1 ) , + GetStripPositionZ( TelescopeNumber[i] , 128 , 1 ) ) - - TVector3 ( GetStripPositionX( TelescopeNumber[i] , 1 , 1 ) , - GetStripPositionY( TelescopeNumber[i] , 1 , 1 ) , - GetStripPositionZ( TelescopeNumber[i] , 1 , 1 ) ); + - TVector3 ( GetStripPositionX( TelescopeNumber[i] , 1 , 1 ) , + GetStripPositionY( TelescopeNumber[i] , 1 , 1 ) , + GetStripPositionZ( TelescopeNumber[i] , 1 , 1 ) ); - TVector3 V = TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 128 ) , - GetStripPositionY( TelescopeNumber[i] , 128 , 128 ) , - GetStripPositionZ( TelescopeNumber[i] , 128 , 128 ) ) + TVector3 V = TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 128 ) , + GetStripPositionY( TelescopeNumber[i] , 128 , 128 ) , + GetStripPositionZ( TelescopeNumber[i] , 128 , 128 ) ) - - TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) , - GetStripPositionY( TelescopeNumber[i] , 128 , 1 ) , - GetStripPositionZ( TelescopeNumber[i] , 128 , 1 ) ); + - TVector3 ( GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) , + GetStripPositionY( TelescopeNumber[i] , 128 , 1 ) , + GetStripPositionZ( TelescopeNumber[i] , 128 , 1 ) ); TVector3 Normal = U.Cross(V); diff --git a/NPSimulation/include/EventGeneratorBeam.hh b/NPSimulation/include/EventGeneratorBeam.hh index 04e2cd742..915aa13cc 100644 --- a/NPSimulation/include/EventGeneratorBeam.hh +++ b/NPSimulation/include/EventGeneratorBeam.hh @@ -50,7 +50,7 @@ public: // Inherit from VEventGenerator Class void GenerateEvent(G4Event*, G4ParticleGun*); void InitializeRootOutput(); - void SetTarget(Target* Target) {m_Target = Target;} + void SetTarget(Target* Target) {if(Target!=0)m_Target = Target;} private: // TTree to store initial value of beam and reaction diff --git a/NPSimulation/include/EventGeneratorTransfert.hh b/NPSimulation/include/EventGeneratorTransfert.hh index dde7b3f2d..cfe4b7be6 100644 --- a/NPSimulation/include/EventGeneratorTransfert.hh +++ b/NPSimulation/include/EventGeneratorTransfert.hh @@ -69,7 +69,7 @@ public: // Constructors and Destructors public: // Inherit from VEventGenerator class void ReadConfiguration(string); void GenerateEvent(G4Event*, G4ParticleGun*); - void SetTarget(Target* Target) {m_Target = Target;} + void SetTarget(Target* Target) {if(Target!=0)m_Target = Target;}; private: // Particle Shoot Option diff --git a/NPSimulation/include/EventGeneratorTransfertToResonance.hh b/NPSimulation/include/EventGeneratorTransfertToResonance.hh index 63492f180..eba9c9ef8 100644 --- a/NPSimulation/include/EventGeneratorTransfertToResonance.hh +++ b/NPSimulation/include/EventGeneratorTransfertToResonance.hh @@ -74,7 +74,7 @@ class EventGeneratorTransfertToResonance : public VEventGenerator public: // Inherit from VEventGenerator class void ReadConfiguration(string) ; void GenerateEvent(G4Event*, G4ParticleGun*) ; - void SetTarget(Target* Target) {m_Target = Target;} + void SetTarget(Target* Target) {if(Target!=0)m_Target = Target;}; private: // Particle Shoot Option bool m_ShootLight ; diff --git a/NPSimulation/include/Target.hh b/NPSimulation/include/Target.hh index 3b24daf07..170f7394c 100644 --- a/NPSimulation/include/Target.hh +++ b/NPSimulation/include/Target.hh @@ -43,87 +43,89 @@ using namespace std; - - class Target : public VDetector { -public: - Target(); - - -public: - // Read stream at Configfile to pick-up parameters of detector (Position,...) - // Called in DetecorConstruction::ReadDetextorConfiguration Method - void ReadConfiguration(string Path); - - // Construct detector and inialise sensitive part. - // Called After DetecorConstruction::AddDetector Method - void ConstructDetector(G4LogicalVolume* world); - - // Add Detector branch to the EventTree. - // Called After DetecorConstruction::AddDetector Method - void InitializeRootOutput(); - - // Read sensitive part and fill the Root tree. - // Called at in the EventAction::EndOfEventAvtion - void ReadSensitive(const G4Event* event); - -public: - // method for debug purpose (still to be implemented) - // This method should check if the results of the beam interaction within the target - // (interaction coordinates) are well located inside the target volume - bool IsInsideTarget() {return false;}; - - // Used to calculate the incident beam direction (taking into account - // the emittance) and the vertex of interaction in target - // Also compute the energy lost by the beam in the target before interacting - void CalculateBeamInteraction(double MeanPosX, double SigmaPosX, double MeanPosTheta, double SigmaPosTheta, - double MeanPosY, double SigmaPosY, double MeanPosPhi, double SigmaPosPhi, - double IncidentBeamEnergy, - G4ParticleDefinition* BeamName, - G4ThreeVector &InterCoord, double &AngleEmittanceTheta, double &AngleEmittancePhi, - double &AngleIncidentTheta, double &AngleIncidentPhi, - double &FinalBeamEnergy); - - // Used to simulate beam emmitance effect - void RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double SigmaY, double &X, double &Y, double NumberOfSigma = 10000); - -public: - G4Material* GetMaterialFromLibrary(G4String MaterialName, G4double Temperature = 0, G4double Pressure = 0); - - -public: - G4double GetTargetThickness() {return m_TargetThickness;} - G4Material* GetTargetMaterial() {return m_TargetMaterial;} - G4double GetTargetRadius() {return m_TargetRadius;} - G4double GetTargetAngle() {return m_TargetAngle;} - G4double GetTargetX() {return m_TargetX;} - G4double GetTargetY() {return m_TargetY;} - G4double GetTargetZ() {return m_TargetZ;} - G4int GetTargetNbLayers() {return m_TargetNbLayers;} - - -private: - // Target type : true = normal ; false = cryo - bool m_TargetType; - - // Standard parameter - G4double m_TargetThickness; - G4double m_TargetRadius; - G4double m_TargetAngle; - G4Material* m_TargetMaterial; - G4int m_TargetNbLayers; - - // For Cryo Target - G4double m_TargetTemperature; - G4double m_TargetPressure; - G4double m_WindowsThickness; - G4Material* m_WindowsMaterial; - - // Positioning - G4double m_TargetX; - G4double m_TargetY; - G4double m_TargetZ; + public: + Target(); + ~Target(){}; + + + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + public: + // method for debug purpose (still to be implemented) + // This method should check if the results of the beam interaction within the target + // (interaction coordinates) are well located inside the target volume + bool IsInsideTarget() {return false;}; + + // Used to calculate the incident beam direction (taking into account + // the emittance) and the vertex of interaction in target + // Also compute the energy lost by the beam in the target before interacting + void CalculateBeamInteraction(double MeanPosX, double SigmaPosX, double MeanPosTheta, double SigmaPosTheta, + double MeanPosY, double SigmaPosY, double MeanPosPhi, double SigmaPosPhi, + double IncidentBeamEnergy, + G4ParticleDefinition* BeamName, + G4ThreeVector &InterCoord, double &AngleEmittanceTheta, double &AngleEmittancePhi, + double &AngleIncidentTheta, double &AngleIncidentPhi, + double &FinalBeamEnergy); + + // Used to simulate beam emmitance effect + void RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double SigmaY, double &X, double &Y, double NumberOfSigma = 10000); + + public: + // Return Material from the Target Material Library + G4Material* GetMaterialFromLibrary(G4String MaterialName, G4double Temperature = 0, G4double Pressure = 0); + + // Generate a DEDX file table using the material used in the target + void WriteDEDXTable(G4ParticleDefinition* Particle,G4double Emin,G4double Emax); + + public: + G4double GetTargetThickness() {return m_TargetThickness;} + G4Material* GetTargetMaterial() {return m_TargetMaterial;} + G4double GetTargetRadius() {return m_TargetRadius;} + G4double GetTargetAngle() {return m_TargetAngle;} + G4double GetTargetX() {return m_TargetX;} + G4double GetTargetY() {return m_TargetY;} + G4double GetTargetZ() {return m_TargetZ;} + G4int GetTargetNbLayers() {return m_TargetNbLayers;} + + + private: + // Target type : true = normal ; false = cryo + bool m_TargetType; + + // Standard parameter + G4double m_TargetThickness; + G4double m_TargetRadius; + G4double m_TargetAngle; + G4Material* m_TargetMaterial; + G4int m_TargetNbLayers; + + // For Cryo Target + G4double m_TargetTemperature; + G4double m_TargetPressure; + G4double m_WindowsThickness; + G4Material* m_WindowsMaterial; + + // Positioning + G4double m_TargetX; + G4double m_TargetY; + G4double m_TargetZ; }; #endif diff --git a/NPSimulation/src/EventGeneratorTransfertToResonance.cc b/NPSimulation/src/EventGeneratorTransfertToResonance.cc index c12b8b13f..0990ad3ab 100644 --- a/NPSimulation/src/EventGeneratorTransfertToResonance.cc +++ b/NPSimulation/src/EventGeneratorTransfertToResonance.cc @@ -57,7 +57,7 @@ EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance() //------------- Default Constructor ------------- m_InitConditions = new TInitialConditions() ; m_Reaction = new Reaction() ; - m_Target = 0; + m_Target = new Target(); m_SigmaX = 0 ; m_SigmaY = 0 ; m_SigmaThetaX = 0 ; diff --git a/NPSimulation/src/Target.cc b/NPSimulation/src/Target.cc index af9f4998b..2d9e53ed4 100644 --- a/NPSimulation/src/Target.cc +++ b/NPSimulation/src/Target.cc @@ -28,6 +28,7 @@ // C++ header #include <fstream> #include <limits> + // G4 geometry header #include "G4Tubs.hh" @@ -42,6 +43,8 @@ #include "G4VisAttributes.hh" #include "G4Colour.hh" #include "G4EmCalculator.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" #include "Randomize.hh" using namespace CLHEP ; // NPTool header @@ -480,6 +483,9 @@ void Target::ConstructDetector(G4LogicalVolume* world) } } + + +WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(2, 3, 0.) ,0,300); } // Add Detector branch to the EventTree. @@ -553,20 +559,28 @@ void Target::CalculateBeamInteraction( double MeanPosX, double SigmaPosX, double y0 += m_TargetY; z0 += m_TargetZ; InterCoord = G4ThreeVector(x0, y0, z0); - - G4EmCalculator emCalculator; + if(m_TargetType) { - for (G4int i = 0; i < m_TargetNbLayers; i++) + G4EmCalculator emCalculator; + if(m_TargetThickness!=0) { - G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_TargetMaterial); - G4double de = dedx * EffectiveTargetThicknessBeforeInteraction / m_TargetNbLayers; - IncidentBeamEnergy -= de; + for (G4int i = 0; i < m_TargetNbLayers; i++) + { + G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_TargetMaterial); + G4double de = dedx * EffectiveTargetThicknessBeforeInteraction / m_TargetNbLayers; + IncidentBeamEnergy -= de; + } + } } + + else - { // Windows + { G4EmCalculator emCalculator; + // Windows + if(m_WindowsThickness!=0) for (G4int i = 0; i < m_TargetNbLayers; i++) { G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_WindowsMaterial); @@ -575,6 +589,7 @@ void Target::CalculateBeamInteraction( double MeanPosX, double SigmaPosX, double } // Target + if(m_TargetThickness!=0) for (G4int i = 0; i < m_TargetNbLayers; i++) { G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_TargetMaterial); @@ -607,3 +622,46 @@ void Target::RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double Y = RandGauss::shoot(MeanY, SigmaY); } } + +// Generate a DEDX file table using the material used in the target +void Target::WriteDEDXTable(G4ParticleDefinition* Particle ,G4double Emin,G4double Emax) + { + // Opening hte output file + G4String GlobalPath = getenv("NPTOOL"); + G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + m_TargetMaterial->GetName() + ".G4table"; + + ofstream File ; + File.open(Path) ; + + if(!File) return ; + + File << "Table from Geant4 generate using NPSimulation" << endl + << "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_TargetMaterial->GetName() << endl ; + + G4EmCalculator emCalculator; + + for (G4double E=Emin*MeV; E < Emax*MeV; E+=(Emax-Emin)*MeV/10000.) + { + G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_TargetMaterial); + File << E/MeV << "\t" << dedx/(MeV/um) << endl ; + } + File.close(); + + if(!m_TargetType) + { + G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + m_WindowsMaterial->GetName() + ".G4table"; + File.open(Path) ; + if(!File) return ; + File << "Table from Geant4 generate using NPSimulation" << endl + << "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_TargetMaterial->GetName() << endl ; + + for (G4double E=Emin*MeV; E < Emax*MeV; E+=(Emax-Emin)*MeV/10000.) + { + G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_WindowsMaterial); + File << E/MeV << "\t" << dedx/(MeV/um) << endl ; + } + } + + + File.close(); + } -- GitLab