KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVElasticCountRates Class Reference

Detailed Description

Calculate elastic scattering count rates in multidetector arrays.

Created by KVClassFactory on Fri Nov 20 2015 Author: John Frankland

Use this class to calculate the count rates & energy losses of elastically scattered nuclei in the detectors of a multidetector array. It is assumed that the following global pointers have been initialised before using this class:

  • gMultiDetArray
    - points to object describing multidetector array
  • gExpDB
    - points to database of run-dependent information for experimental dataset

In other words, we assume that the user has chosen a dataset on which she wants to work:

gDataSetManager->GetDataSet("name_of_dataset")->cd()

and then initialised the description of the experimental configuration for the dataset:

KVMultiDetArray::MakeMultiDetector(gDataSet->GetName())

Setting up the calculation

Create a new elastic scattering object defining angular range in which to perform calculation:

KVElasticCountRates ecr(2,45,0,360)

Then call the following methods in any order in order to set up the calculation:

  • ecr.SetProjectile(...)
  • ecr.SetRun(...)

The SetRun(...) method uses the experimental database in order to determine the target for the run, detector state (gas pressures etc.).

Multilayer targets

When multilayer targets are used, the user can restrict the scattering calculation to one specific component of the target, i.e. the scattering takes place between the projectile and one of the nuclei of the specified 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

ecr.SetTargetScatteringLayer(...)

with the name of the layer you require (this is normally the name of the element making up the layer - see KVTarget class for details).

Inelastic scattering

Calculations can also be performed for inelastic scattering i.e. when the target 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

ecr.SetTargetExcitedState(...)

with the energy of the excited state of the target after scattering.

Running the calculation, obtaining the results

To perform the calculation, do:

ecr.CaclulateScattering(10000)

Make sure the number of sampled points (default=10000) is large enough for accurate determination of count rates. At the end of calculation, we print infos for all detectors hit by elastic particles, these are the count rates for a nominal beam intensity of 10**7 particles per second, the mean energy loss in the detector, the total integrated cross-section per detector in barn, the number of particles per second per unit area hitting each detector, and the total energy per second per unit area deposited in each detector:

kaliveda [3] esa.CalculateScattering(10000)
SI_0101  :  N=  204.42/sec.    <E>=  890.3 MeV   Tot.Xsec=6.687E+01 barn    fluence=2.711E+01/sec./cm**2     dissip.=2.413E+04 MeV/sec./cm**2
SI_0201  :  N=   61.37/sec.    <E>=  709.7 MeV   Tot.Xsec=2.008E+01 barn    fluence=1.413E+01/sec./cm**2     dissip.=1.002E+04 MeV/sec./cm**2
SI_0301  :  N=   15.29/sec.    <E>=  706.4 MeV   Tot.Xsec=5.002E+00 barn    fluence=2.390E+00/sec./cm**2     dissip.=1.688E+03 MeV/sec./cm**2
SI_0401  :  N=    6.33/sec.    <E>=  699.2 MeV   Tot.Xsec=2.070E+00 barn    fluence=1.582E+00/sec./cm**2     dissip.=1.106E+03 MeV/sec./cm**2

If you want to see the count rates for a different beam intensity, call

ecr.PrintResults(5.e+06)</pr>

For each detector hit we fill three histograms:

 OBJ: TH1F  SI_0223  Eloss in SI_0223 : 0 at: 0x10898980
 OBJ: TH1F  SI_0223_dW  Solid angle of SI_0223 : 0 at: 0x10899540
 OBJ: TH2F  SI_0223_map Map of SI_0223 : 0 at: 0x10e2e7d0
Each histogram can be obtained using
ecr.GetHistos().FindObject("SI_0223_map")
The different informations for each detector can be obtained using
kaliveda [7] ecr.GetDetector("SI_0201").count_rate
(double)6.13702995974404857e+01
kaliveda [8] ecr.GetDetector("SI_0201").mean_energy
(double)7.09659910827807721e+02
kaliveda [9] ecr.GetDetector("SI_0201").intXsec
(double)2.00758282694385635e+01
See KVElasticCountRate class for details.
Warning
The values returned correspond to the last beam intensity value given to PrintResults().

Definition at line 150 of file KVElasticCountRates.h.

#include <KVElasticCountRates.h>

Public Member Functions

 KVElasticCountRates (Double_t theta_min=0, Double_t theta_max=180, Double_t phi_min=0, Double_t phi_max=360, const TVector3 &beam_dir={0, 0, 1})
 Default constructor.
 
virtual ~KVElasticCountRates ()
 Destructor.
 
void CalculateScattering (Int_t N=10000)
 
void FillHistograms (KVNameValueList *)
 
TH1FGetDepth ()
 
KVElasticCountRate GetDetector (const std::string &name)
 
Int_t GetEbinning (void)
 
const KVHashListGetHistos () const
 
TH1FGetTheta ()
 
void PrintResults (Double_t beam_intensity=1.e+07)
 Print mean energy deposit & counting rate for given beam intensity in particles per second.
 
KVNameValueList PutResultsInList (Double_t beam_intensity=1.e+07)
 Print mean energy deposit & counting rate for given beam intensity in particles per second.
 
void SetEbinning (Int_t nbins=500)
 
void SetProjectile (const Char_t *nuc, Double_t e_sur_a)
 Set projectile and beam energy [MeV/nucleon] & direction.
 
void SetRun (Int_t run)
 Set detector parameters, target, etc. for run.
 
void SetTargetExcitedState (Double_t ex)
 
void SetTargetScatteringLayer (const Char_t *name)
 

Private Attributes

KVPosition fAngularRange
 angular range in which to scatter
 
Double_t fAtomicDensity
 number of atoms per barn (10^-24 cm2) in target
 
TVector3 fBeamDirection
 beam direction vector
 
Int_t fBinE
 Number of bins of the Energy histogram.
 
TH1FfDepth
 depth of scattering point in target
 
Double_t fEnergy
 energy of projectile
 
Double_t fExx
 excited state of target nucleus
 
TH2FfGlobalMap
 global map of cross-section vs. theta vs. phi
 
KVHashList fHistos
 histograms for all hit detectors
 
Int_t fIntLayer
 index of interaction layer in multilayer target
 
KV2BodyfKinematics
 kinematics calculation
 
Bool_t fMultiLayer
 kTRUE for multilayer target
 
Double_t fNtirages
 
KVNucleus fProj
 scattered nucleus
 
std::map< std::string, KVElasticCountRatefRates
 
KVTargetfTarget
 target for current run
 
TH1FfTheta
 angle of scattered particle
 
Double_t fVolume
 volume factor for MC integration
 
Double_t phi
 
Double_t theta
 
Double_t xsec
 

Constructor & Destructor Documentation

◆ KVElasticCountRates()

KVElasticCountRates::KVElasticCountRates ( Double_t  theta_min = 0,
Double_t  theta_max = 180,
Double_t  phi_min = 0,
Double_t  phi_max = 360,
const TVector3 beam_dir = {0, 0, 1} 
)

Default constructor.

Definition at line 35 of file KVElasticCountRates.cpp.

◆ ~KVElasticCountRates()

KVElasticCountRates::~KVElasticCountRates ( )
virtual

Destructor.

Definition at line 68 of file KVElasticCountRates.cpp.

Member Function Documentation

◆ CalculateScattering()

void KVElasticCountRates::CalculateScattering ( Int_t  N = 10000)

Perform scattering 'N' times for current values of particle Z, A and energy, target excited state, and detector. Print out for each hit detector the mean energy loss & counting rate for a beam intensity of 10**7 pps

Definition at line 161 of file KVElasticCountRates.cpp.

◆ FillHistograms()

void KVElasticCountRates::FillHistograms ( KVNameValueList dets)

parse the list dets fill histograms with energy loss for all detectors clear the detector energy losses delete the list

Definition at line 310 of file KVElasticCountRates.cpp.

◆ GetDepth()

TH1F * KVElasticCountRates::GetDepth ( )
inline

Return pointer to histogram of 'depth' of scattering point in target (in mg/cm2)

Definition at line 201 of file KVElasticCountRates.h.

◆ GetDetector()

KVElasticCountRate KVElasticCountRates::GetDetector ( const std::string &  name)
inline

Definition at line 229 of file KVElasticCountRates.h.

◆ GetEbinning()

Int_t KVElasticCountRates::GetEbinning ( void  )
inline

Returns the number of bins of the GetEnergy histogram

Definition at line 213 of file KVElasticCountRates.h.

◆ GetHistos()

const KVHashList & KVElasticCountRates::GetHistos ( ) const
inline

Definition at line 221 of file KVElasticCountRates.h.

◆ GetTheta()

TH1F * KVElasticCountRates::GetTheta ( )
inline

Return pointer to polar angle distribution of scattered particle (in degrees)

Definition at line 207 of file KVElasticCountRates.h.

◆ PrintResults()

void KVElasticCountRates::PrintResults ( Double_t  beam_intensity = 1.e+07)

Print mean energy deposit & counting rate for given beam intensity in particles per second.

Definition at line 409 of file KVElasticCountRates.cpp.

◆ PutResultsInList()

KVNameValueList KVElasticCountRates::PutResultsInList ( Double_t  beam_intensity = 1.e+07)

Print mean energy deposit & counting rate for given beam intensity in particles per second.

Definition at line 450 of file KVElasticCountRates.cpp.

◆ SetEbinning()

void KVElasticCountRates::SetEbinning ( Int_t  nbins = 500)

Set the number of bins of the GetEnergy() histogram Default value is 500; this function has to be called before using CalculateScattering.

Definition at line 145 of file KVElasticCountRates.cpp.

◆ SetProjectile()

void KVElasticCountRates::SetProjectile ( const Char_t nuc,
Double_t  e_sur_a 
)

Set projectile and beam energy [MeV/nucleon] & direction.

Definition at line 103 of file KVElasticCountRates.cpp.

◆ SetRun()

void KVElasticCountRates::SetRun ( Int_t  run)

Set detector parameters, target, etc. for run.

Definition at line 85 of file KVElasticCountRates.cpp.

◆ SetTargetExcitedState()

void KVElasticCountRates::SetTargetExcitedState ( Double_t  ex)
inline

To simulate inelastic scattering i.e. where the target nucleus is left in an excited state, use this method to set the excitation energy (in MeV). This value will be used for all subsequent calculations. Use SetTargetExcitedState(0) to return to elastic scattering.

Definition at line 192 of file KVElasticCountRates.h.

◆ SetTargetScatteringLayer()

void KVElasticCountRates::SetTargetScatteringLayer ( const Char_t name)

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 120 of file KVElasticCountRates.cpp.

Member Data Documentation

◆ fAngularRange

KVPosition KVElasticCountRates::fAngularRange
private

angular range in which to scatter

Definition at line 160 of file KVElasticCountRates.h.

◆ fAtomicDensity

Double_t KVElasticCountRates::fAtomicDensity
private

number of atoms per barn (10^-24 cm2) in target

Definition at line 165 of file KVElasticCountRates.h.

◆ fBeamDirection

TVector3 KVElasticCountRates::fBeamDirection
private

beam direction vector

Definition at line 172 of file KVElasticCountRates.h.

◆ fBinE

Int_t KVElasticCountRates::fBinE
private

Number of bins of the Energy histogram.

Definition at line 155 of file KVElasticCountRates.h.

◆ fDepth

TH1F* KVElasticCountRates::fDepth
private

depth of scattering point in target

Definition at line 152 of file KVElasticCountRates.h.

◆ fEnergy

Double_t KVElasticCountRates::fEnergy
private

energy of projectile

Definition at line 157 of file KVElasticCountRates.h.

◆ fExx

Double_t KVElasticCountRates::fExx
private

excited state of target nucleus

Definition at line 175 of file KVElasticCountRates.h.

◆ fGlobalMap

TH2F* KVElasticCountRates::fGlobalMap
private

global map of cross-section vs. theta vs. phi

Definition at line 154 of file KVElasticCountRates.h.

◆ fHistos

KVHashList KVElasticCountRates::fHistos
private

histograms for all hit detectors

Definition at line 177 of file KVElasticCountRates.h.

◆ fIntLayer

Int_t KVElasticCountRates::fIntLayer
private

index of interaction layer in multilayer target

Definition at line 173 of file KVElasticCountRates.h.

◆ fKinematics

KV2Body* KVElasticCountRates::fKinematics
private

kinematics calculation

Definition at line 162 of file KVElasticCountRates.h.

◆ fMultiLayer

Bool_t KVElasticCountRates::fMultiLayer
private

kTRUE for multilayer target

Definition at line 170 of file KVElasticCountRates.h.

◆ fNtirages

Double_t KVElasticCountRates::fNtirages
private

Definition at line 169 of file KVElasticCountRates.h.

◆ fProj

KVNucleus KVElasticCountRates::fProj
private

scattered nucleus

Definition at line 158 of file KVElasticCountRates.h.

◆ fRates

std::map<std::string, KVElasticCountRate> KVElasticCountRates::fRates
private

Definition at line 179 of file KVElasticCountRates.h.

◆ fTarget

KVTarget* KVElasticCountRates::fTarget
private

target for current run

Definition at line 164 of file KVElasticCountRates.h.

◆ fTheta

TH1F* KVElasticCountRates::fTheta
private

angle of scattered particle

Definition at line 153 of file KVElasticCountRates.h.

◆ fVolume

Double_t KVElasticCountRates::fVolume
private

volume factor for MC integration

Definition at line 166 of file KVElasticCountRates.h.

◆ phi

Double_t KVElasticCountRates::phi
private

Definition at line 168 of file KVElasticCountRates.h.

◆ theta

Double_t KVElasticCountRates::theta
private

Definition at line 168 of file KVElasticCountRates.h.

◆ xsec

Double_t KVElasticCountRates::xsec
private

Definition at line 167 of file KVElasticCountRates.h.