KaliVeda
Toolkit for HIC analysis
KVRangeTableGeoNavigator Class Reference

Detailed Description

Propagate particles through array geometry calculating energy losses.

Given a valid ROOT geometry, we propagate the particles of an event and, every time a particle traverses a volume made of a TGeoMaterial with a name corresponding to a material known by this range table, we calculate the energy loss of the particle, and store it in the particle's list of parameters in the form

"DE:[detector name]" = [energy lost in volume]

In the case of multilayer detectors, [detector name] is replaced by [detector name]/[layer name].

Example of use

In this case the geometry is made up of 3-layer Ionisation Chamber detectors (window + gas + window), with an ACTIVE gas layer, and single-layer Silicon detectors placed behind the IC.

KVEvent* evt = new KVEvent();
KVNucleus* nuc = evt->AddParticle();
Double_t theta = gRandom->Uniform(0,30);
Double_t phi = gRandom->Uniform(0,360);
nuc->SetZAandE(1,1,200); nuc->SetTheta(theta); nuc->SetPhi(phi);
rtgn.PropagateEvent(evt);
evt->Print();
KVEvent with 1 particles :
------------------------------------
KVNameValueList::EventParameters : Parameters associated with an event (0x3739f10)
KVNucleus Z=1 A=1 E*=0
KVParticle mass=938.783 Theta=14.017 Phi=44.7553 KE=199.73
KVNameValueList::ParticleParameters : Parameters associated with a particle in an event (0x37b3510)
<DE:CHIO_3/WINDOW_1=0.00151169>
<DE:CHIO_3/ACTIVE_GAS_1=0.00123736>
<DE:CHIO_3/WINDOW_2=0.00151169>
<DE:SI_1_5=0.265778>
void Print(Option_t *option="") const override
Definition: KVBase.cpp:412
Abstract base class container for multi-particle events.
Definition: KVEvent.h:67
virtual KVParticle * AddParticle()=0
void PropagateEvent(KVEvent *, TVector3 *TheOrigin=0)
static KVIonRangeTable * GetRangeTable()
Definition: KVMaterial.cpp:158
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:108
void SetZAandE(Int_t z, Int_t a, Double_t ekin)
Set atomic number, mass number, and kinetic energy in MeV.
Definition: KVNucleus.cpp:738
Base class for relativistic kinematics of massive particles.
Definition: KVParticle.h:396
void SetTheta(Double_t theta)
Definition: KVParticle.h:696
void SetPhi(Double_t phi)
Definition: KVParticle.h:700
Propagate particles through array geometry calculating energy losses.

Definition at line 55 of file KVRangeTableGeoNavigator.h.

#include <KVRangeTableGeoNavigator.h>

Inheritance diagram for KVRangeTableGeoNavigator:

Public Member Functions

 KVRangeTableGeoNavigator (TGeoManager *g, KVIonRangeTable *r)
 
Bool_t CheckIonForRangeTable (Int_t Z, Int_t A)
 
Double_t GetCutOffKEForPropagation () const
 
void ParticleEntersNewVolume (KVNucleus *) override
 
void PropagateParticle (KVNucleus *, TVector3 *TheOrigin=0) override
 We start a new track to represent the particle's trajectory through the array. More...
 
void SetCutOffKEForPropagation (Double_t e)
 
- Public Member Functions inherited from KVGeoNavigator
 KVGeoNavigator (TGeoManager *)
 Constructor. Call with pointer to geometry. More...
 
virtual ~KVGeoNavigator ()
 Destructor. More...
 
void AbsorbDetectorPaths (KVGeoNavigator *GN)
 
const TClonesArray & CurrentStructures () const
 
void DrawTracks (KVNumberList *=nullptr)
 
void ExtractDetectorNameFromPath (KVString &)
 
TGeoVolume * GetCurrentDetectorNameAndVolume (KVString &, Bool_t &, Bool_t &segmented)
 
TGeoNode * GetCurrentDetectorNode () const
 
const TGeoHMatrix * GetCurrentMatrix () const
 Returns pointer to internal copy of current global transformation matrix. More...
 
TGeoNode * GetCurrentNode () const
 
TString GetCurrentPath () const
 
TGeoVolume * GetCurrentVolume () const
 
const Char_t * GetDetectorNameFormat () const
 
const TVector3 & GetEntryPoint () const
 
const TVector3 & GetExitPoint () const
 
TGeoManager * GetGeometry () const
 
Bool_t GetNameCorrespondance (const Char_t *, TString &)
 
Double_t GetStepSize () const
 
Int_t GetTrackID () const
 
void IncrementTrackID ()
 
Bool_t IsTracking () const
 
void PrintDetectorPaths ()
 
void PropagateEvent (KVEvent *, TVector3 *TheOrigin=0)
 
void ResetTrackID (Int_t id=0)
 
void SetDetectorNameFormat (const Char_t *fmt)
 
void SetNameCorrespondanceList (const Char_t *)
 
void SetNameCorrespondanceList (const TEnv *)
 copy TEnv of name correspondances More...
 
void SetStopPropagation (Bool_t stop=kTRUE)
 
void SetStructureNameFormat (const Char_t *type, const Char_t *fmt)
 
void SetTracking (Bool_t on=kTRUE)
 
Bool_t StopPropagation () const
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor. More...
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type. More...
 
 KVBase (const KVBase &)
 copy ctor More...
 
void Clear (Option_t *opt="") override
 Clear object properties : name, type/title, number, label. More...
 
void Copy (TObject &) const override
 Make a copy of this object. More...
 
const Char_t * GetLabel () const
 
UInt_t GetNumber () const
 
virtual TObject * GetObject () const
 
virtual const Char_t * GetType () const
 
Bool_t HasLabel () const
 
Bool_t IsCalled (const Char_t *name, bool case_insensitive=false) const
 
Bool_t IsLabelled (const Char_t *l, bool case_insensitive=false) const
 
Bool_t IsType (const Char_t *typ, bool case_insensitive=false) const
 
virtual void List ()
 
KVBase & operator= (const KVBase &)
 copy assignment operator More...
 
void Print (Option_t *option="") const override
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 

Additional Inherited Members

- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
enum class  GetX_status {
  ok , above_maximum , below_minimum , at_maximum ,
  at_minimum
}
 
- Static Public Member Functions inherited from KVBase
static std::optional< TString > AbsoluteUnixPath (const TString &)
 
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values. More...
 
static void BackupFileWithDate (const Char_t *path)
 
static void CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
 
static void Deprecated (const char *method, const char *advice)
 
static Bool_t FindClassSourceFiles (const KVString &class_name, KVString &imp_file, KVString &dec_file, const KVString &dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_t * FindFile (const Char_t *search, TString &wfil)
 
static const Char_t * GetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetDATABASEFilePath ()
 
static const Char_t * GetDATADIRFilePath (const Char_t *namefile="")
 
template<typename ValType >
static ValType GetDataSetEnv (const KVString &dataset, const KVString &type, const ValType &defval={})
 
static const Char_t * GetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) More...
 
static const Char_t * GetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetKVBuildDate ()
 Returns KaliVeda build date. More...
 
static const Char_t * GetKVBuildDir ()
 Returns top-level directory used for build. More...
 
static const Char_t * GetKVBuildTime ()
 Returns KaliVeda build time. More...
 
static const Char_t * GetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More...
 
static const Char_t * GetKVBuildUser ()
 Returns username of person who performed build. More...
 
static int GetKVMajorVersion ()
 
static int GetKVMinorVersion ()
 
static int GetKVPatchVersion ()
 
static const Char_t * GetKVSourceDir ()
 Returns top-level directory of source tree used for build. More...
 
static const Char_t * GetKVVersion ()
 Returns KaliVeda version string. More...
 
static const Char_t * GetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetListOfPlugins (const Char_t *base)
 
static const Char_t * GetListOfPluginURIs (const Char_t *base)
 
static const Char_t * GetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_t * GetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_t * gitBranch ()
 Returns git branch of sources. More...
 
static const Char_t * gitCommit ()
 Returns last git commit of sources. More...
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsEnvInit ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandler * LoadPlugin (const Char_t *base, const Char_t *uri="0")
 
static Bool_t OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="")
 
static void OpenTempFile (TString &base, std::ofstream &fp)
 
static void PrintSplashScreen ()
 Prints welcome message and infos on version etc. More...
 
static Double_t ProtectedGetX (const TF1 &func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={})
 
static Double_t ProtectedGetX (const TF1 *func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={})
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
 
static const Char_t * WorkingDirectory ()
 

Constructor & Destructor Documentation

◆ KVRangeTableGeoNavigator()

KVRangeTableGeoNavigator::KVRangeTableGeoNavigator ( TGeoManager *  g,
KVIonRangeTable *  r 
)
inline

Definition at line 71 of file KVRangeTableGeoNavigator.h.

Member Function Documentation

◆ CheckIonForRangeTable()

Bool_t KVRangeTableGeoNavigator::CheckIonForRangeTable ( Int_t  Z,
Int_t  A 
)
inline

Return kTRUE if current range tables can handle ion

Definition at line 87 of file KVRangeTableGeoNavigator.h.

◆ GetCutOffKEForPropagation()

Double_t KVRangeTableGeoNavigator::GetCutOffKEForPropagation ( ) const
inline

Definition at line 79 of file KVRangeTableGeoNavigator.h.

◆ ParticleEntersNewVolume()

void KVRangeTableGeoNavigator::ParticleEntersNewVolume ( KVNucleus *  part)
overridevirtual

Overrides method in KVGeoNavigator base class. Every time a particle enters a new volume, we check the material to see if it is known (i.e. contained in the range table fRangeTable). If so, then we calculate the energy loss of the particle in this volume, reduce the particle's energy accordingly, and, if the energy falls below a certain cut-off (default 1.e-3 MeV; can be modified with SetCutOffKEForPropagation(Double_t) ), we stop the propagation.

The (cumulated) energy losses in the active layers of all hit detectors are updated with the energy lost by this particle

Reimplemented from KVGeoNavigator.

Definition at line 34 of file KVRangeTableGeoNavigator.cpp.

◆ PropagateParticle()

void KVRangeTableGeoNavigator::PropagateParticle ( KVNucleus *  part,
TVector3 *  TheOrigin = 0 
)
overridevirtual

We start a new track to represent the particle's trajectory through the array.

Reimplemented from KVGeoNavigator.

Definition at line 170 of file KVRangeTableGeoNavigator.cpp.

◆ SetCutOffKEForPropagation()

void KVRangeTableGeoNavigator::SetCutOffKEForPropagation ( Double_t  e)
inline

Definition at line 75 of file KVRangeTableGeoNavigator.h.