HighLAND
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
si_syst::ParticleSIPropagator Class Referenceabstract

#include <SecondaryInteractionSystematic.hxx>

Inheritance diagram for si_syst::ParticleSIPropagator:
proton_si::ProtonSIPropagator

Public Member Functions

void Initialize ()
 Initialization.
 
virtual void Propagate (ParticleHistory &, const TVector3 &) const
 Propagates a particle to a given pos filling all the history info.
 
bool IsInitialized ()
 Whether the propagator was initialized.
 
virtual Bool_t InVOI (const TVector3 &) const =0
 Is a point inside a volume of interest: the region where the propagation is relevant.
 
virtual Double_t GetCrossSection (const si_syst::InteractionType &, const Float_t &, const Int_t &, TGeoNode *) const =0
 
Double_t GetCrossSection (const si_syst::InteractionType &type, const ParticleState &state, const Int_t &PDG)
 Same but given the state.
 
virtual Double_t GetCrossSectionError (const si_syst::InteractionType &, const Float_t &, const Int_t &, TGeoNode *) const =0
 
Double_t GetCrossSectionError (const si_syst::InteractionType &type, const ParticleState &state, const Int_t &PDG)
 Same but given the state.
 
virtual Double_t GetReferenceCrossSection (const si_syst::InteractionType &, const Float_t &, const Int_t &, TGeoNode *) const
 
Double_t GetReferenceCrossSection (const si_syst::InteractionType &type, const si_syst::ParticleState &state, const Int_t &PDG)
 Same but given the state.
 
const std::set< si_syst::InteractionType > & GetInteractionTypes () const
 Get interaction types.
 
const std::set< ParticleId::PdgEnum > & GetParticlePDGs () const
 Get particle PDGs.
 
void AddInteractionType (si_syst::InteractionType type)
 Add an interaction type.
 
void AddParticlePDG (ParticleId::PdgEnum pdg)
 Add particle PDG.
 
void SetDetector (const SubDetId::SubDetEnum &det)
 Set detector of interest.
 
SubDetId::SubDetEnum GetDetector () const
 Get detector of interest.
 
void SetComputeReWeightStatus (bool status)
 Whether to calculate correction weight, w.r.t to reference cross-section.
 
bool GetComputeReWeightStatus () const
 Whether to calculate correction weight, w.r.t to reference cross-section.
 

Protected Member Functions

virtual void SetParameters ()=0
 
virtual Double_t DScattCenters (TGeoNode *) const
 

Protected Attributes

Double_t _lengthStepSize
 The step size in terms of length.
 
Double_t _momStepSize
 The step size in terms of monetum.
 
std::set< si_syst::InteractionType_intTypes
 Relevant interaction types to be considered while propagating.
 
std::set< ParticleId::PdgEnum > _particlePDGs
 PDG of relevant particles, keep here for the moment.
 
SubDetId::SubDetEnum _det
 Keep the relevant sub-detector here for the moment.
 
bool _computeReWeightInfo
 Whether to caculate weight for re-weighting (using the reference cross-section)
 

Detailed Description

A class that does the actual propagation of a true track, taking into account and storing the xsec values and uncertainties

Definition at line 278 of file SecondaryInteractionSystematic.hxx.

Member Function Documentation

§ DScattCenters()

Double_t si_syst::ParticleSIPropagator::DScattCenters ( TGeoNode *  node) const
protectedvirtual

Density of scattering centers: n/cm^3 keep virtual if need fine tuning material based

Definition at line 280 of file SecondaryInteractionSystematic.cxx.

280  {
281  //********************************************************************
282 
283  TGeoVolume *volume = node->GetVolume();
284  TGeoMaterial *material = volume->GetMaterial();
285  TGeoMixture *mixture = (TGeoMixture*)material;
286 
287  //Get the atomic number, mass (i.e. molar mass) and weight by mass arrays,
288  //as well as the number of elements.
289  // Double_t* ZArray = mixture->GetZmixt();
290  Double_t* AArray = mixture->GetAmixt();
291  Double_t* WArray = mixture->GetWmixt();
292  Int_t NElts = mixture->GetNelements();
293 
294  //Go through and compute the number of scattering centres of each element per unit
295  //volume. Add them together to get the total number of scattering centres per
296  //unit volume.
297  Double_t result = 0;
298  for(Int_t i = 0; i< NElts; i++)
299  //Extra factor required to convert density to g/cm^3
300  result += (units::Avogadro/AArray[i])*WArray[i]*((1000.0/(6.2415e21))*mixture->GetDensity());
301 
302  //All constituents having now been looped over, return the value.
303  return result;
304 }

§ GetCrossSection()

virtual Double_t si_syst::ParticleSIPropagator::GetCrossSection ( const si_syst::InteractionType ,
const Float_t &  ,
const Int_t &  ,
TGeoNode *   
) const
pure virtual

The function that gives a x-section value given a channel, momentum value, and node

  • particle type so to make it fully general

Implemented in proton_si::ProtonSIPropagator.

§ GetCrossSectionError()

virtual Double_t si_syst::ParticleSIPropagator::GetCrossSectionError ( const si_syst::InteractionType ,
const Float_t &  ,
const Int_t &  ,
TGeoNode *   
) const
pure virtual

The function that gives a x-section value` uncertainty given a channel, momentum value and

  • particle type so to make it fully general

Implemented in proton_si::ProtonSIPropagator.

§ GetReferenceCrossSection()

virtual Double_t si_syst::ParticleSIPropagator::GetReferenceCrossSection ( const si_syst::InteractionType ,
const Float_t &  ,
const Int_t &  ,
TGeoNode *   
) const
inlinevirtual

If one wants to re-weight to a given cross-section Default implementation returns zero

Definition at line 342 of file SecondaryInteractionSystematic.hxx.

342  {
343  std::cout << " si_syst::ParticleSIPropagator::GetReferenceCrossSection() - the function has to be properly implemented " <<
344  " in the derived class if the re-weighting is needed " << std::endl;
345  return 0.;
346  }

The documentation for this class was generated from the following files: