![]() |
KaliVeda
Toolkit for HIC analysis
|
Calculate elastic scattering spectra in specific detectors of a multidetector array ,.
KVElasticScatter can be used to simulate elastic and inelastic scattering of projectile nuclei in experimental targets, and calculate the energy spectra of the scattered projectile- or target-like nuclei in all detectors on a given trajectory through the array.
To begin, build the geometry of the multidetector array for a given dataset:
Then initialise a KVElasticScatter with the required run number which will be used to define the default kinematics and the target properties (for energy loss calculations before and after the scattering occurs), e.g.
To define the trajectory for the scattering, give the name of a detector in the array:
All particles in the simulation will be scattered into random \(\theta,\phi\) angles corresponding to the direction of these detectors.
Call the Print() method to see the current definitions that will be used by the simulation:
If all is correct, run the simulation for a given number of events by calling:
Afterwards, you can retrieve the histograms of energy loss in each of the detectors on the chosen trajectory using the label (not the type) of each detector:
etc. etc.
In the previous example with a carbon beam and polyethylene target, you can see that of the two possible target nuclei in this compound target, it is the protons which are used by default: this has been defined for the systemm corresponding to the chosen run in the database. If you want to change the target nucleus to use for the kinematics, for example to scatter on carbon nuclei, do
You can call the Print() method at any moment to check the updated details of the simulation:
If the physical target for the chosen run has several layers, by default the scattering will take place in different layers from one event to the next. In this case a different target nucleus can be used for each scattering, depending on the interaction point in the target, if you call:
As you can see above, by default the spectra of energy losses in the different detectors are calculated for the outgoing projectile-like nuclei: to change this, i.e. to calculate for outgoing target-like nuclei, do
As also indicated above, in case there are 2 kinematic solutions for the chosen kinematics and lab angle (detector), by default the high-energy solution corresponding to the most forward centre-of-mass angle solution is used. To change, you can do either
to use the solution for backward centre-of-mass angles, or
to randomly choose, event by event, one of the two solutions according to the ratio of the corresponding (Rutherford scattering) cross-sections.
When multilayer targets are used, the user can restrict the scattering calculation to one specific layer. Energy losses before and after the scattering in the other layers of the target are of course still taken into account. To set the part of the target where scattering takes place use e.g.
with the name of the layer you require (this is normally the name of the element making up the layer - see KVTarget for details).
Calculations can also be performed for inelastic scattering e.g. when either the outgoing projectile- or target-like nucleus is left in an excited state (N.B. we still use the Rutherford elastic scattering cross-section for weighting the energy loss distributions). In order to do this, call
with the excitation energy after inelastic scattering.
Definition at line 190 of file KVElasticScatter.h.
#include <KVElasticScatter.h>

Public Member Functions | |
| KVElasticScatter (Int_t run) | |
| Default constructor. More... | |
| virtual | ~ KVElasticScatter () |
| void | CalculateScattering (Int_t N) |
| Perform scattering 'N' times. More... | |
| TH1F * | GetDepth () |
| Return pointer to histogram of 'depth' of scattering point in target (in mg/cm2) More... | |
| Int_t | GetEbinning (void) |
| Returns the number of bins of the GetEnergy histogram. More... | |
| TH1F * | GetEnergy () |
| Return pointer to energy loss histogram for chosen detector (in MeV) More... | |
| TH1F * | GetEnergy (const Char_t *label) |
| Energy loss in detector with given 'label' through which scattered particle passes. More... | |
| TH1F * | GetEnergy (Int_t index) |
| auto | GetKinematics () |
| Int_t | GetNDets () const |
| Returns the number of detectors crossed by the scattered particle. More... | |
| void | GetTargetNucleusFromTargetLayer (Bool_t yes=kTRUE) |
| TH1F * | GetTheta () |
| Return pointer to polar angle distribution of scattered particle (in degrees) More... | |
| void | Print () const |
| Print details of calculation to be performed. More... | |
| void | SetBeamDirection (const TVector3 &beam_dir) |
| void | SetDetector (const Char_t *det) |
| void | SetDetectorResolution (double fwhm, double eref) |
| void | SetEbinning (Int_t nbins) |
| void | SetExcitation (Double_t ex) |
| void | SetKinematicSolution (KV2Body::kinematic_solution ik) |
| void | SetNucleusOfInterest (KV2Body::nucleus_of_interest noi) |
| void | SetOutGoingProjectileLike (const KVNucleus &opl) |
| void | SetProjectileNucleus (const KVNucleus &pn) |
| void | SetTargetNucleusForScattering (const KVNucleus &tn) |
| void | SetTargetScatteringLayer (const Char_t *name) |
| KVElasticScatter::KVElasticScatter | ( | Int_t | run | ) |
Default constructor.
Definition at line 28 of file KVElasticScatter.cpp.
|
virtual |
Perform scattering 'N' times.
Definition at line 250 of file KVElasticScatter.cpp.
|
inline |
Return pointer to histogram of 'depth' of scattering point in target (in mg/cm2)
Definition at line 314 of file KVElasticScatter.h.
Returns the number of bins of the GetEnergy histogram.
Definition at line 336 of file KVElasticScatter.h.
|
inline |
Return pointer to energy loss histogram for chosen detector (in MeV)
Definition at line 319 of file KVElasticScatter.h.
Energy loss in detector with given 'label' through which scattered particle passes.
Definition at line 415 of file KVElasticScatter.cpp.
Energy loss in any detector through which scattered particle passes.
The index corresponds to the order in which detectors are crossed by the particle, beginning with 0 for the first detector, and ending with (GetNDets()-1)
Definition at line 432 of file KVElasticScatter.cpp.
|
inline |
Definition at line 340 of file KVElasticScatter.h.
|
inline |
Returns the number of detectors crossed by the scattered particle.
Definition at line 331 of file KVElasticScatter.h.
Call with yes=kTRUE if you have a multilayer target with random sampling of interaction point, and you want to calculate the scattering from the different target nucleus in each layer.
Note: this will only work if all layers of the target are single elements (i.e. a single type of nucleus in each layer), not compounds.
Definition at line 290 of file KVElasticScatter.h.
|
inline |
Return pointer to polar angle distribution of scattered particle (in degrees)
Definition at line 324 of file KVElasticScatter.h.
Print details of calculation to be performed.
Definition at line 447 of file KVElasticScatter.cpp.
Use to change alignment of beam (default is {0,0,1})
Definition at line 233 of file KVElasticScatter.h.
Give name of detector towards which elastic scattering will occur.
Definition at line 91 of file KVElasticScatter.cpp.
|
inline |
Use detector resolution (% FWHM) measured for some reference energy [MeV] for calculated spectra.
FWHM for energy E will simply be calculated as sqrt(E/eref)*fwhm
Definition at line 264 of file KVElasticScatter.h.
Set binning of the GetEnergy histogram Default value is 500
Definition at line 166 of file KVElasticScatter.cpp.
To simulate inelastic scattering use this method to set the total excitation energy (in MeV).
This value will be used for all subsequent calculations.
Use SetExcitation(0) to return to elastic scattering.
Definition at line 275 of file KVElasticScatter.h.
|
inline |
Except for projectile-like nuclei in direct kinematics, for almost every other case the kinematics of outgoing nuclei is double-valued, i.e. to each c.m. scattering angle corresponds 2 lab scattering angles, with different energies.
The case with the smallest (most forward) c.m./lab angles is referred to as the 'high energy branch', while the solution at more backward angles has lower energies.
By default we use the high energy branch; you can choose the low energy here.
Definition at line 251 of file KVElasticScatter.h.
|
inline |
Define the the nucleus of interest in the outgoing channel of the reaction
Note that the identity of the outgoing PROJECTILE_LIKE can be changed with method SetOutgoingProjectileLike() which will of course change TARGET_LIKE to conserve mass and charge.
Definition at line 239 of file KVElasticScatter.h.
Definition at line 284 of file KVElasticScatter.h.
change the default projectile for the reaction
Definition at line 306 of file KVElasticScatter.h.
call this method to change the default target nucleus of the kinematics for the run
Definition at line 299 of file KVElasticScatter.h.
For multilayer targets, use this method to choose in which layer the scattering will take place.
If name="", reset any previous choice so that scattering can take place in any layer
Definition at line 141 of file KVElasticScatter.cpp.