![]() |
KaliVeda
Toolkit for HIC analysis
|
Base class for detector geometry description, interface to energy-loss calculations.
KVDetector is the base class for the description of all individual detectors in the KaliVeda framework. A detector is defined by the following characteristics:
A detector is created either with the constructor taking the material type as argument:
or using SetMaterial:
or it is created when a ROOT geometry is imported into a KVMultiDetArray object using KVGeoImport.
Two methods are available: one simply calculates the energy lost by the particle in the detector, but does not modify either the particle or the detector (GetELostByParticle()); the other simulates the passage of the particle through the detector, the particle's energy is reduced by the amount lost in the detector's absorbers and the total energy lost in the detector is increased, e.g.:
Several methods are also provided in order to deduce either incident energy, \(E_{inc}\), energy loss \(\Delta E\), or residual energy, \(E_{res}=E_{inc}-\Delta E\), from one of the others. All such methods are summarized in the following table:
| calculate \(E_{inc}\) | calculate \(\Delta E\) | calculate \(E_{res}\) | |
|---|---|---|---|
| from \(E_{inc}\) | - | GetDeltaE() | GetERes() |
| GetELostByParticle() | |||
| from \(\Delta E\) | GetIncidentEnergy() | - | GetEResFromDeltaE() |
| from \(E_{res}\) | GetIncidentEnergyFromERes() | GetDeltaEFromERes() | - |
| GetParticleEIncFromERes() |
For more details on the underlying range tables, see parent class KVMaterial and Energy loss & range calculations in the Users Guide.
For detector geometries based on the ROOT geometry package, the following methods refer to the surface of the first volume constituting the detector crossed from the target (referred to as the "entrance window"):
Definition at line 173 of file KVDetector.h.
#include <KVDetector.h>

Static Public Member Functions | |
| static KVDetector * | MakeDetector (const Char_t *name, Float_t thick) |
Static Public Member Functions inherited from KVMaterial | |
| static KVIonRangeTable * | ChangeRangeTable (const Char_t *name) |
| static KVIonRangeTable * | GetRangeTable () |
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 () |
Static Public Member Functions inherited from TNamed | |
| static TClass * | Class () |
| static const char * | Class_Name () |
| static constexpr Version_t | Class_Version () |
| static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
| static TClass * | Class () |
| static const char * | Class_Name () |
| static constexpr Version_t | Class_Version () |
| static const char * | DeclFileName () |
| static Longptr_t | GetDtorOnly () |
| static Bool_t | GetObjectStat () |
| static void | SetDtorOnly (void *obj) |
| static void | SetObjectStat (Bool_t stat) |
Private Types | |
| enum | { kIsAnalysed = BIT(14) , kActiveSet = BIT(15) , kUnidentifiedParticle = BIT(16) , kIdentifiedParticle = BIT(17) } |
Private Member Functions | |
| void | AddDetectorSignal (KVDetectorSignal *ds) |
| Double_t | ELossActive (Double_t *x, Double_t *par) |
| Double_t | EResDet (Double_t *x, Double_t *par) |
| template<typename AbsorberStack > | |
| Double_t | get_corrected_energy (AbsorberStack *stack, KVNucleus *nuc, Double_t e, Bool_t transmission) |
| TGeoHMatrix * | GetMatrix () const override |
| TVector3 | GetNormalIntoShape () const override |
| TVector3 | GetRandomPointOnSurface () const override |
| TGeoBBox * | GetShape () const override |
| Double_t | GetSurfaceArea (int npoints=100000) const override |
| TVector3 | GetSurfaceCentre () const override |
| TVector3 | GetVolumeCentre () const override |
| Double_t | RangeDet (Double_t *x, Double_t *par) |
| void | remove_signal_for_calibrator (KVCalibrator *K) |
| void | SetMatrix (const TGeoHMatrix *m) override |
| void | SetShape (TGeoBBox *s) override |
| virtual Bool_t | use_signal_for_raw_data_tree (const TString &) const |
Private Attributes | |
| KVList | fAbsorbers |
| list of absorbers making up the detector More... | |
| KVMaterial * | fActiveLayer |
| The active absorber in the detector. More... | |
| KVList * | fCalibrators |
| list of associated calibrator objects More... | |
| Bool_t | fDetecting |
| =kTRUE if detector is "detecting", =kFALSE if not More... | |
| KVUniqueNameList | fDetSignals |
| list of signals associated with detector More... | |
| KVUniqueNameList | fDetSignalsForRawTree |
| list of signals used for raw data TTree More... | |
| TF1 * | fELossF |
| parametric function dE in active layer vs. incident energy More... | |
| TF1 * | fEResF |
| parametric function Eres residual energy after all layers of detector More... | |
| Double_t | fEResforEinc |
| used by GetIncidentEnergy & GetCorrectedEnergy More... | |
| KVPosition | fEWPosition |
| position of entrance window i.e. first volume in detector geometry More... | |
| TString | fFName |
| dynamically generated full name of detector More... | |
| Int_t | fIdentP |
| temporary counters, determine state of identified/unidentified particle flags More... | |
| TString | fNameOfArray |
| name of multidetector array this detector is part of More... | |
| KVGeoDetectorNode | fNode |
| positioning information relative to other detectors More... | |
| KVUniqueNameList | fParentStrucList |
| list of geometry structures which directly contain this detector More... | |
| KVUnownedList | fParticles |
| list of particles hitting detector in an event More... | |
| Bool_t | fPresent |
| =kTRUE if detector is present, =kFALSE if it has been removed More... | |
| TF1 * | fRangeF |
| parametric function range of particles in detector More... | |
| Bool_t | fSimMode |
| =kTRUE when using to simulate detector response, =kFALSE when analysing data More... | |
| Bool_t | fSingleLayer |
| =kTRUE if detector has a single absorber layer More... | |
| Int_t | fUnidentP |
| temporary counters, determine state of identified/unidentified particle flags More... | |
Static Private Attributes | |
| static Int_t | fDetCounter = 0 |
Additional Inherited Members | |
Public Types inherited from KVMaterial | |
| enum | SolType { kEmax , kEmin } |
Public Types inherited from KVBase | |
| enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23) } |
| enum class | GetX_status { ok , above_maximum , below_minimum , at_maximum , at_minimum } |
Public Types inherited from TObject | |
| enum | EDeprecatedStatusBits |
| enum | EStatusBits |
Public Attributes inherited from TObject | |
| kBitMask | |
| kCanDelete | |
| kCannotPick | |
| kHasUUID | |
| kInconsistent | |
| kInvalidObject | |
| kIsOnHeap | |
| kIsReferenced | |
| kMustCleanup | |
| kNoContextMenu | |
| kNotDeleted | |
| kObjInCanvas | |
| kOverwrite | |
| kSingleKey | |
| kWriteDelete | |
| kZombie | |
Protected Member Functions inherited from TObject | |
| virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
| void | MakeZombie () |
Protected Attributes inherited from TNamed | |
| TString | fName |
| TString | fTitle |
Protected Attributes inherited from TObject | |
| kOnlyPrepStep | |
|
private |
| Enumerator | |
|---|---|
| kIsAnalysed | |
| kActiveSet | |
| kUnidentifiedParticle | |
| kIdentifiedParticle | |
Definition at line 183 of file KVDetector.h.
| KVDetector::KVDetector | ( | ) |
default ctor
Definition at line 59 of file KVDetector.cpp.
Create a new detector of a given material and thickness in centimetres (default value = 0.0)
Definition at line 72 of file KVDetector.cpp.
| KVDetector::KVDetector | ( | const Char_t * | gas, |
| const Double_t | thick, | ||
| const Double_t | pressure, | ||
| const Double_t | temperature = 19.0 |
||
| ) |
Create gaseous dteector with given type, linear thickness in cm, pressure in Torr, and temperature in degrees C (default value 19°C).
Definition at line 91 of file KVDetector.cpp.
| KVDetector::KVDetector | ( | const KVDetector & | obj | ) |
copy ctor
Definition at line 109 of file KVDetector.cpp.
|
virtual |
| void KVDetector::AddAbsorber | ( | KVMaterial * | mat | ) |
Add a layer of absorber material to the detector By default, the first layer added is set as the "Active" layer. Call SetActiveLayer to change this.
Definition at line 592 of file KVDetector.cpp.
| Bool_t KVDetector::AddCalibrator | ( | KVCalibrator * | cal, |
| const KVNameValueList & | opts = "" |
||
| ) |
Associate a calibration with this detector.
This will add a new signal to the list of the detector's signals.
Also sets calibrator's name to [detname]_[caltype] where caltype is the type of the KVCalibration object.
| [in] | cal | pointer to KVCalibrator object (must be on heap, i.e. created with new: detector handles deletion) |
| [in] | opts | can be used to pass any extra parameters/options needed by the calibrator. For example, if it contains a parameter ZRange=1-10
then the calibrator will be handled by a KVZDependentCalibratedSignal (handles several calibrators which provide the same output signal, each one is used for a specific range of atomic numbers) |
Definition at line 421 of file KVDetector.cpp.
| KVDetectorSignal * KVDetector::AddDetectorSignal | ( | const KVString & | type | ) |
Add a new signal to the list of detector's signals.
| [in] | type | define the name of the signal to add |
delete{.cpp} the signal object: the detector handles deletionIf the type is "SignalTrace", we add a special KVDetectorSignalTrace object
Definition at line 1834 of file KVDetector.cpp.
|
inlineprivate |
Internal use only.
Add KVDetectorSignal object to list of detector's signals.
Definition at line 287 of file KVDetector.h.
Add a new KVDetectorSignalExpression to this detector
| [in] | type | the name/type of the new signal |
| [in] | _expr | mathematical expression using any of the known signals of the detector |
Definition at line 1880 of file KVDetector.cpp.
| KVDetectorSignalTrace * KVDetector::AddDetectorSignalTrace | ( | ) |
Add a new signal trace (with type "SignalTrace") to the list of detector's signals.
delete{.cpp} the signal object: the detector handles deletion Definition at line 1858 of file KVDetector.cpp.
|
inlinevirtual |
Reimplemented in KVSegmentedDetector.
Definition at line 864 of file KVDetector.h.
Add to the list of particles hitting this detector in an event
Definition at line 424 of file KVDetector.h.
| void KVDetector::AddParentStructure | ( | KVGeoStrucElement * | elem | ) |
Definition at line 1662 of file KVDetector.cpp.
|
inline |
Definition at line 575 of file KVDetector.h.
|
inline |
Definition at line 571 of file KVDetector.h.
Set energy loss(es) etc. to zero
If opt="N":
Reimplemented from KVBase.
Reimplemented in KVFAZIADetector, and KVSegmentedDetector.
Definition at line 550 of file KVDetector.cpp.
|
inline |
clear the list of particles hitting this detector in an event
Definition at line 442 of file KVDetector.h.
copy 'this' to 'obj' The structure of the detector is copied, with new cloned objects for each absorber layer. The active layer is set in the new detector.
Reimplemented from KVBase.
Reimplemented in KVFAZIADetector.
Definition at line 130 of file KVDetector.cpp.
Calculate the energy loss of a charged particle traversing the detector, the particle is slowed down, it is added to the list of all particles hitting the detector.
The apparent energy loss of the particle in the active layer of the detector is set.
If the optional argument 'norm' is given, it is supposed to be a vector normal to the detector, oriented from the origin towards the detector.
In this case the effective thicknesses of the detector's absorbers 'seen' by the particle depending on its direction of motion is used for the calculation.
Note that if the detector is part of an array geometry, GetEntranceWindow().GetNormalIntoShape() returns a TVector3 unit vector which is the normal to the detector.
Reimplemented from KVMaterial.
Definition at line 200 of file KVDetector.cpp.
|
virtual |
Creates and fills a KVDrawable<TGraph> with the punch through energy in MeV vs. Z for the given detector, for Z=1-92. The mass of each nucleus is calculated according to the given mass formula (see KVNucleus).
Definition at line 1596 of file KVDetector.cpp.
|
virtual |
Creates and fills a KVDrawable<TGraph> with the punch through energy in MeV/nucleon vs. Z for the given detector, for Z=1-92. The mass of each nucleus is calculated according to the given mass formula (see KVNucleus).
Definition at line 1621 of file KVDetector.cpp.
Calculates energy loss (in MeV) in active layer of detector, taking into account preceding layers
Arguments are: x[0] is incident energy in MeV Parameters are: par[0] Z of ion par[1] A of ion
Definition at line 967 of file KVDetector.cpp.
Calculates residual energy (in MeV) of particle after traversing all layers of detector. Returned value is -1000 if particle stops in one of the layers of the detector.
Arguments are: x[0] is incident energy in MeV Parameters are: par[0] Z of ion par[1] A of ion
Definition at line 1061 of file KVDetector.cpp.
For particles which stop in the first stage of an identification telescope, we can at least estimate a minimum Z value based on the energy lost in this detector.
This is based on the KVMaterial::GetMaxDeltaE method, giving the maximum energy loss in the active layer of the detector for a given nucleus (A,Z).
The "Zmin" is the Z of the particle which gives a maximum energy loss just greater than that measured in the detector. Particles with Z<Zmin could not lose as much energy and so are excluded.
If ELOSS is not given, we use the current value of GetEnergy() Use 'mass_formula' to change the formula used to calculate the A of the nucleus from its Z. Default is valley of stability value. (see KVNucleus::GetAFromZ).
If the value of ELOSS or GetEnergy() is <=0 we return Zmin=0
Definition at line 897 of file KVDetector.cpp.
Returns kTRUE if detector was hit (fired) in an event
The actual meaning of hit/fired depends on the context and the option string opt.
If the detector is in "simulation mode", i.e. if SetSimMode(kTRUE) has been called, this method returns kTRUE if the calculated energy loss in the active layer is > 0.
In "experimental mode" (i.e. IsSimMode() returns kFALSE), depending on the option:
opt="any" (default): Returns true if ANY of the raw parameters associated with the detector were present in the last handled event opt="all" : Returns true if ALL of the raw parameters associated with the detector were present in the last handled event
Reimplemented in KVFAZIADetector.
Definition at line 461 of file KVDetector.h.
|
inlineprivate |
Definition at line 239 of file KVDetector.h.
|
inline |
Return absorber with given name
Definition at line 328 of file KVDetector.h.
| KVMaterial * KVDetector::GetAbsorber | ( | Int_t | i | ) | const |
Returns pointer to the i-th absorber in the detector (i=0 first absorber, i=1 second, etc.)
Definition at line 608 of file KVDetector.cpp.
|
inlineoverridevirtual |
Get pointer to the "active" layer in the detector, i.e. the one in which energy losses are measured
Reimplemented from KVMaterial.
Definition at line 322 of file KVDetector.h.
|
inline |
Return coordinate transformation matrix to active layer
Definition at line 599 of file KVDetector.h.
|
inline |
Return geometry of active layer
Definition at line 594 of file KVDetector.h.
|
inline |
Return centre of entrance surface of active layer [this is NOT necessarily the same as the entrance window]
Definition at line 583 of file KVDetector.h.
|
inline |
Return centre of the active layer volume
Definition at line 589 of file KVDetector.h.
|
inlinevirtual |
Returns energy loss in detector calculated using available calibration(s)
Definition at line 369 of file KVDetector.h.
|
inline |
Definition at line 869 of file KVDetector.h.
|
inline |
Definition at line 877 of file KVDetector.h.
|
inline |
This method does exactly the same as the method in previous versions of KaliVeda: it returns the vector position of the centre of the surface (entrance) of the "entrance window" of the detector i.e. the first volume encountered
Definition at line 699 of file KVDetector.h.
|
virtual |
| [in] | e | [MeV] energy loss of nucleus in active layer - if not given, we use current value |
| [in] | transmission |
|
It is possible that the measured energy loss in the active layer is greater than the maximum theoretical value calculated from range tables. Apart from the uncertainty in the actual measurement (plus the uncertainty of the detector calibration), for any detector covering a finite solid angle the angles of incidence of particles hitting the detector will have a distribution, with very few (even none) arriving in a direction perpendicular to the detector's surface, i.e. in the direction of the axis along which the detector's nominal thickness is defined.
In this case, the effective thickness of the detector is increased by a factor \(1/\cos\psi\), where \(\psi\) is the angle between the particle's trajectory and the normal to the detector. We take this into account when trying to decide if the measured energy loss is consistent with the nucleus in question, by using a KVMaterialStack.
KVMaterialStack can calculate the minimum value of \(\psi_{\Delta E}\) that would be compatible with a given energy loss (i.e. that for which the maximum possible energy loss is that which was measured): see KVMaterialStack::GetMinimumIncidentAngleForDEMax(). We can then check if such an angle is compatible with the geometry of the detector - GetMaximumMisalignmentAngle() gives the largest possible value, \(\psi_{max}\), for particles impinging on the detector.
If a minimum angle of incidence \(\psi_{\Delta E}\) which is consistent with the geometry can be found, it is stored in the parameters of the reconstructed nucleus with name GetCorrectedEnergy.IncidenceAngle i.e. for any reconstructed nucleus you can do
If \(\psi_{\Delta E}>\psi_{max}\), we use the (apparently impossible) incidence angle in order to calculate the corrected energy, and we add the following warning parameters to the particle, each of which begins with the name of the detector (unlike the previous one):
Reimplemented in KVCsI.
Definition at line 762 of file KVDetector.cpp.
|
inlineoverridevirtual |
For any detector covering a finite solid angle the angles of incidence of particles hitting the detector will have a distribution, with very few (even none) arriving in a direction perpendicular to the detector's surface, i.e. in the direction of the axis along which the detector's nominal thickness is defined.
In this case, the effective thickness of the detector is increased by a factor \(1/\cos\psi\), where \(\psi\) is the angle between the particle's trajectory and the normal to the detector. From the geometry and position of the detector we can calculate the largest possible value, \(\psi_{max}\), for particles impinging on the detector.
Reimplemented from KVPosition.
Definition at line 774 of file KVDetector.h.
|
inlineoverridevirtual |
cosinus of polar angle corresponding to centre of entrance window of detector
Reimplemented from KVPosition.
Definition at line 748 of file KVDetector.h.
Returns energy loss of given nucleus in the active layer of the detector. optimization for single-layer detectors
Reimplemented from KVMaterial.
Definition at line 1262 of file KVDetector.cpp.
Overrides KVMaterial::GetDeltaEFromERes
Calculate energy loss in active layer of detGetAlignedDetector for nucleus (Z,A) having a residual kinetic energy Eres (MeV)
Reimplemented from KVMaterial.
Definition at line 1399 of file KVDetector.cpp.
|
inlinevirtual |
| [in] | type | name/type of signal |
Reimplemented in KVCsI.
Definition at line 543 of file KVDetector.h.
|
inline |
| [in] | type | name/type of signal |
| [in] | params | list of extra parameters possibly required to calculate value of signal can be passed as a string of "param1=value,param2=value,..." parameter/value pairs |
Definition at line 503 of file KVDetector.h.
|
inlineoverridevirtual |
direction corresponding to centre of entrance window
Reimplemented from KVPosition.
Definition at line 724 of file KVDetector.h.
distance from target [cm] to entrance window of detector
Reimplemented from KVPosition.
Definition at line 730 of file KVDetector.h.
Returns incident energy corresponding to maximum energy loss in the active layer of the detector, for a given nucleus.
Reimplemented from KVMaterial.
Definition at line 1234 of file KVDetector.cpp.
Return pointer to TF1 giving energy loss in active layer of detector as function of incident energy, for a given nucleus (Z,A). The TF1::fNpx parameter is taken from environment variable KVDetector.EnergyLoss.Npx
Definition at line 1211 of file KVDetector.cpp.
Calculate the total energy loss of a charged particle traversing the detector.
This does not affect the "stored" energy loss value of the detector nor the energy of the particle.
If the optional argument 'norm' is given, it is supposed to be a vector normal to the detector, oriented from the origin towards the detector.
In this case the effective thicknesses of the detector's absorbers 'seen' by the particle depending on its direction of motion is used for the calculation.
Reimplemented from KVMaterial.
Definition at line 266 of file KVDetector.cpp.
|
inlinevirtual |
Returns either the calibrated energy loss measured in the active layer of the detector, or (if IsSimMode()==kTRUE) the simulated energy losses
Reimplemented in KVPhoswich.
Definition at line 374 of file KVDetector.h.
|
inlineoverridevirtual |
Reimplemented from KVMaterial.
Definition at line 394 of file KVDetector.h.
|
inline |
Returns KVPosition object corresponding to the entrance window volume i.e. the first volume encountered in the detector
Definition at line 693 of file KVDetector.h.
|
virtual |
Return surface area of first layer of detector in cm2.
Definition at line 1142 of file KVDetector.cpp.
Returns residual energy of given nucleus after the detector. Returns 0 if Einc<=0
Reimplemented from KVMaterial.
Definition at line 1293 of file KVDetector.cpp.
|
inlinevirtual |
Definition at line 631 of file KVDetector.h.
Return pointer toTF1 giving residual energy after detector as function of incident energy, for a given nucleus (Z,A). The TF1::fNpx parameter is taken from environment variable KVDetector.ResidualEnergy.Npx
Definition at line 1161 of file KVDetector.cpp.
| KVGroup * KVDetector::GetGroup | ( | ) | const |
Definition at line 1644 of file KVDetector.cpp.
| UInt_t KVDetector::GetGroupNumber | ( | ) |
Definition at line 1653 of file KVDetector.cpp.
|
overridevirtual |
Returns incident energy corresponding to energy loss delta_e in active layer of detector for a given nucleus. If delta_e is not given, the current energy loss in the active layer is used.
By default the solution corresponding to the highest incident energy is returned This is the solution found for Einc greater than the maximum of the dE(Einc) curve. If you want the low energy solution set SolType = KVIonRangeTable::kEmin.
Reimplemented from KVMaterial.
Definition at line 1329 of file KVDetector.cpp.
Overrides KVMaterial::GetIncidentEnergyFromERes
Calculate incident energy of nucleus from residual energy.
Returns -1 if Eres is out of defined range of values
Reimplemented from KVMaterial.
Definition at line 1421 of file KVDetector.cpp.
|
inlinevirtual |
Return a numerical identifier for the detector
Can be overridden in specialised detector classes
Reimplemented in KVINDRADetector, and KVFAZIADetector.
Definition at line 848 of file KVDetector.h.
|
inline |
| [in] | output | name/type of output signal |
| [in] | value | value of output signal |
| [in] | input | name/type of input signal |
| [in] | params | list of extra parameters possibly required to calculate value of signal can be passed as a string of "param1=value,param2=value,..." parameter/value pairs |
Calculate the value of the input signal for a given value of the output signal.
This uses the inverse calibrations of all intermediate signals.
Definition at line 527 of file KVDetector.h.
Returns range of ion in centimetres in this detector, taking into account all layers. Note that for Einc > punch through energy, this range is no longer correct (but still > total thickness of detector).
Reimplemented from KVMaterial.
Definition at line 1559 of file KVDetector.cpp.
|
inline |
Definition at line 333 of file KVDetector.h.
|
inline |
Definition at line 411 of file KVDetector.h.
|
inline |
Definition at line 823 of file KVDetector.h.
|
inline |
This list of 'raw' signals to be used in the TTree filled by runfile_analyser is filled the first time this method is called; that way it can include any signals added by calibrations.
Definition at line 827 of file KVDetector.h.
|
inline |
Definition at line 359 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 204 of file KVDetector.h.
Returns maximum energy loss in the active layer of the detector, for a given nucleus.
Reimplemented from KVMaterial.
Definition at line 1248 of file KVDetector.cpp.
|
inlineoverridevirtual |
For any detector covering a finite solid angle the angles of incidence of particles hitting the detector will have a distribution, with very few (even none) arriving in a direction perpendicular to the detector's surface, i.e. in the direction of the axis along which the detector's nominal thickness is defined.
In this case, the effective thickness of the detector is increased by a factor \(1/\cos\psi\), where \(\psi\) is the angle between the particle's trajectory and the normal to the detector. From the geometry and position of the detector we can calculate the largest possible value, \(\psi_{max}\), for particles impinging on the detector.
Reimplemented from KVPosition.
Definition at line 760 of file KVDetector.h.
|
inline |
Return name of multidetector array this detector belongs to
Definition at line 817 of file KVDetector.h.
|
inline |
Return the number of particles hitting this detector in an event.
Definition at line 448 of file KVDetector.h.
|
inline |
Definition at line 354 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 224 of file KVDetector.h.
|
inline |
This is the axis along which the nominal thicknesses of all the absorbers in the detector are defined.
Definition at line 788 of file KVDetector.h.
|
inline |
Definition at line 337 of file KVDetector.h.
| KVGeoStrucElement * KVDetector::GetParentStructure | ( | const Char_t * | type, |
| const Char_t * | name = "" |
||
| ) | const |
Get parent geometry structure element of given type. Give unique name of structure if more than one element of same type is possible.
Definition at line 1682 of file KVDetector.cpp.
|
overridevirtual |
Calculate the energy of particle 'kvn' before its passage through the detector, based on the current kinetic energy, Z & A of nucleus 'kvn', supposed to be after passing through the detector.
If the optional argument 'norm' is given, it is supposed to be a vector normal to the detector, oriented from the origin towards the detector.
In this case the effective thicknesses of the detector's absorbers 'seen' by the particle depending on its direction of motion is used for the calculation.
Reimplemented from KVMaterial.
Definition at line 301 of file KVDetector.cpp.
|
inlineoverridevirtual |
azimuthal angle [deg.] corresponding to centre of entrance window of detector
Reimplemented from KVPosition.
Definition at line 754 of file KVDetector.h.
Returns energy (in MeV) necessary for ion (Z,A) to punch through all layers of this detector
Reimplemented from KVMaterial.
Definition at line 1574 of file KVDetector.cpp.
|
inlineoverridevirtual |
random angles [deg.] corresponding to point on entrance window
Reimplemented from KVPosition.
Definition at line 718 of file KVDetector.h.
random direction corresponding to point on entrance window
Reimplemented from KVPosition.
Definition at line 712 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 212 of file KVDetector.h.
WARNING: SAME AS KVDetector::GetLinearRange Only linear range in centimetres is calculated for detectors!
Reimplemented from KVMaterial.
Definition at line 1544 of file KVDetector.cpp.
Return pointer toTF1 giving range (in centimetres) in detector as function of incident energy, for a given nucleus (Z,A). The TF1::fNpx parameter is taken from environment variable KVDetector.Range.Npx
Definition at line 1186 of file KVDetector.cpp.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 208 of file KVDetector.h.
|
inlineoverridevirtual |
sinus of polar angle corresponding to centre of entrance window of detector
Reimplemented from KVPosition.
Definition at line 742 of file KVDetector.h.
Returns the smallest maximum energy for which range tables are valid for all absorbers in the detector, and given ion (Z,A)
Definition at line 1445 of file KVDetector.cpp.
Return solid angle [msr] corresponding to the entrance window of the detector
Reimplemented from KVPosition.
Definition at line 706 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 228 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 216 of file KVDetector.h.
|
inlineoverridevirtual |
polar angle [deg.] corresponding to centre of entrance window of detector
Reimplemented from KVPosition.
Definition at line 736 of file KVDetector.h.
Returns calculated total energy loss of ion in ALL layers of the detector. This is just (Einc - GetERes(Z,A,Einc))
Definition at line 1279 of file KVDetector.cpp.
|
inline |
Calculate and return the total thickness in centimetres of ALL absorbers making up the detector, not just the active layer (value returned by GetThickness()).
Definition at line 343 of file KVDetector.h.
|
inlineoverrideprivatevirtual |
Reimplemented from KVPosition.
Definition at line 220 of file KVDetector.h.
| [in] | type | name/type of signal |
Definition at line 552 of file KVDetector.h.
| Bool_t KVDetector::HasSameStructureAs | ( | const KVDetector * | other | ) | const |
Return kTRUE if the two detectors have the same internal structure, i.e.
Definition at line 1803 of file KVDetector.cpp.
Definition at line 565 of file KVDetector.h.
Definition at line 559 of file KVDetector.h.
default initialisations
Definition at line 32 of file KVDetector.cpp.
|
inline |
Definition at line 453 of file KVDetector.h.
| Bool_t KVDetector::IsCalibrated | ( | const KVNameValueList & | params = {} | ) | const |
A detector is considered to be calibrated if it has a signal "Energy" available and if depending on the supplied parameters this signal can be calculated
Definition at line 527 of file KVDetector.cpp.
|
inlinevirtual |
return if the detector is ready to detect or not
Definition at line 666 of file KVDetector.h.
|
inline |
Definition at line 807 of file KVDetector.h.
|
inline |
Returns kTRUE for detectors with several absorber layers
Definition at line 802 of file KVDetector.h.
|
inlinevirtual |
return kTRUE if detector is here and working
Definition at line 676 of file KVDetector.h.
|
inlinevirtual |
return the presence or not of the detector
Definition at line 657 of file KVDetector.h.
|
inlinevirtual |
Reimplemented in KVSegmentedDetector.
Definition at line 860 of file KVDetector.h.
|
inlinevirtual |
Returns simulation mode of detector: IsSimMode()=kTRUE : we are in simulation mode (calculation of energy losses etc.) IsSimMode()=kFALSE: we are analysing/reconstruction experimental data Changes behaviour of Fired(): in simulation mode, Fired() returns kTRUE whenever the energy loss in the active layer is >0
Definition at line 647 of file KVDetector.h.
|
inline |
Returns kTRUE for detectors with a single absorber layer
Definition at line 797 of file KVDetector.h.
|
static |
Static function which will create an instance of the KVDetector-derived class corresponding to 'name' These are defined as 'Plugin' objects in the file $KVROOT/KVFiles/.kvrootrc : [name_of_dataset].detector_type detector_type To use the dataset-dependent plugin, call this method with name = "[name_of_dataset].detector_type" If not, the default plugin will be used first we check if there is a special plugin for the DataSet if not we take the default one
'thickness' is passed as argument to the constructor for the detector plugin check and load plugin library
Definition at line 1102 of file KVDetector.cpp.
Print info on this detector if option="data" the energy loss and raw data are displayed
Reimplemented from KVBase.
Definition at line 338 of file KVDetector.cpp.
Calculates range (in centimetres) of ions in detector as a function of incident energy (in MeV), taking into account all layers of the detector.
Arguments are: x[0] = incident energy in MeV Parameters are: par[0] = Z of ion par[1] = A of ion
Definition at line 1005 of file KVDetector.cpp.
Create detector from text file in 'TEnv' format.
Layer: Gold Gold.Material: Au Gold.AreaDensity: 200.*KVUnits::ug +Layer: Gas1 Gas1.Material: C3F8 Gas1.Thickness: 5.*KVUnitscm Gas1.Pressure: 50.*KVUnits::mbar Gas1.Active: yes +Layer: Si1 Si1.Material: Si Si1.Thickness: 300.*KVUnitsum
Definition at line 1482 of file KVDetector.cpp.
|
private |
Used when a calibrator object is removed or replaced We remove and delete the corresponding output signal from the list of detector signals
Definition at line 662 of file KVDetector.cpp.
| void KVDetector::RemoveAllAbsorbers | ( | ) |
Completely reset the KVDetector as if it had just been created by a call to the default constructor:
Definition at line 631 of file KVDetector.cpp.
|
virtual |
Removes all calibrations associated to this detector: in other words, we delete all the KVCalibrator objects in list fCalibrators.
We also destroy all signals provided by these calibrators
Reimplemented in KVCsI.
Definition at line 684 of file KVDetector.cpp.
|
inline |
Remove from list of particles hitting this detector in an event
Definition at line 431 of file KVDetector.h.
| void KVDetector::RemoveParentStructure | ( | KVGeoStrucElement * | elem | ) |
Definition at line 1671 of file KVDetector.cpp.
| Bool_t KVDetector::ReplaceCalibrator | ( | const Char_t * | type, |
| KVCalibrator * | cal, | ||
| const KVNameValueList & | opts = "" |
||
| ) |
Replace calibrator of given type with the given calibrator object The calibrator object should not be shared with any other detectors: it now belongs to this detector, which will delete it when necessary. If an exising calibrator with the same type is already defined, it will be deleted and removed from the detector's calibrator list
Returns kFALSE in case of problems.
The (optional) KVNameValueList argument can be used to pass any extra parameters/options.
Definition at line 499 of file KVDetector.cpp.
Definition at line 418 of file KVDetector.h.
Set active layer with index (=0, 1, ...)
Definition at line 317 of file KVDetector.h.
|
inline |
Definition at line 312 of file KVDetector.h.
| void KVDetector::SetActiveLayerMatrix | ( | const TGeoHMatrix * | m | ) |
Set ROOT geometry global matrix transformation to coordinate frame of active layer volume.
Definition at line 1702 of file KVDetector.cpp.
Set ROOT geometry shape of active layer volume.
Definition at line 1713 of file KVDetector.cpp.
Definition at line 457 of file KVDetector.h.
Definition at line 671 of file KVDetector.h.
| [in] | type | name/type of signal |
| [in] | val | value to set for signal |
Set value of signal of given type associated with detector
Definition at line 516 of file KVDetector.h.
Set value of energy lost in active layer
Reimplemented in KVPhoswich.
Definition at line 386 of file KVDetector.h.
Reimplemented from KVMaterial.
Definition at line 398 of file KVDetector.h.
| void KVDetector::SetEntranceWindowMatrix | ( | const TGeoHMatrix * | m | ) |
Set ROOT geometry global matrix transformation to coordinate frame of entrance window.
Definition at line 1724 of file KVDetector.cpp.
Set ROOT geometry shape of entrance window.
Definition at line 1735 of file KVDetector.cpp.
Definition at line 627 of file KVDetector.h.
Set material of active layer. If no absorbers have been added to the detector, create and add one (active layer by default)
Reimplemented from KVMaterial.
Definition at line 169 of file KVDetector.cpp.
|
inlineoverrideprivatevirtual |
Make KVPosition methods private to avoid misuse N.B. the inherited KVPosition part of KVDetector is used for the ACTIVE layer of the detector the entrance window is described by member KVPosition fEWPosition
Reimplemented from KVPosition.
Definition at line 196 of file KVDetector.h.
Definition at line 813 of file KVDetector.h.
Definition at line 662 of file KVDetector.h.
| [in] | P | pressure in [Torr] |
For a gaseous detector, set/change the pressure of the active gas layer.
For ROOT geometries, we change the medium/material of the corresponding node in the geometry in order to reflect the change in pressure (gases are represented by different media/materials for each pressure/temperature) so that it will be taken into account for example when filtering simulated data.
Reimplemented from KVMaterial.
Reimplemented in KVChIo.
Definition at line 1910 of file KVDetector.cpp.
Reimplemented from KVPosition.
Definition at line 200 of file KVDetector.h.
Set simulation mode of detector If on=kTRUE (default), we are in simulation mode (calculation of energy losses etc.) If on=kFALSE, we are analysing/reconstruction experimental data Changes behaviour of Fired(): in simulation mode, Fired() returns kTRUE whenever the energy loss in the active layer is >0
Definition at line 638 of file KVDetector.h.
| [in] | T | pressure in [deg. C] |
For a gaseous detector, set/change the temperature of the active gas layer.
For ROOT geometries, we change the medium/material of the corresponding node in the geometry in order to reflect the change in temperature (gases are represented by different media/materials for each pressure/temperature) so that it will be taken into account for example when filtering simulated data.
Reimplemented from KVMaterial.
Definition at line 1941 of file KVDetector.cpp.
Overrides KVMaterial::SetThickness
If ROOT geometry is defined, we modify the DZ thickness of the volume representing this detector in accordance with the new thickness.
This is only implemented for single-layer detectors with the following shapes:
Reimplemented from KVMaterial.
Reimplemented in KVSilicon.
Definition at line 1754 of file KVDetector.cpp.
|
inlineprivatevirtual |
Reimplemented in KVINDRADetector, and KVFAZIADetector.
Definition at line 295 of file KVDetector.h.
|
private |
list of absorbers making up the detector
Definition at line 269 of file KVDetector.h.
|
private |
The active absorber in the detector.
Definition at line 180 of file KVDetector.h.
|
private |
list of associated calibrator objects
Definition at line 267 of file KVDetector.h.
|
staticprivate |
Definition at line 179 of file KVDetector.h.
|
private |
=kTRUE if detector is "detecting", =kFALSE if not
Definition at line 283 of file KVDetector.h.
|
private |
list of signals associated with detector
Definition at line 233 of file KVDetector.h.
|
mutableprivate |
list of signals used for raw data TTree
Definition at line 234 of file KVDetector.h.
|
private |
parametric function dE in active layer vs. incident energy
Definition at line 275 of file KVDetector.h.
|
private |
parametric function Eres residual energy after all layers of detector
Definition at line 276 of file KVDetector.h.
|
private |
used by GetIncidentEnergy & GetCorrectedEnergy
Definition at line 279 of file KVDetector.h.
|
private |
position of entrance window i.e. first volume in detector geometry
Definition at line 176 of file KVDetector.h.
|
private |
dynamically generated full name of detector
Definition at line 266 of file KVDetector.h.
|
private |
temporary counters, determine state of identified/unidentified particle flags
Definition at line 190 of file KVDetector.h.
|
private |
name of multidetector array this detector is part of
Definition at line 181 of file KVDetector.h.
|
private |
positioning information relative to other detectors
Definition at line 178 of file KVDetector.h.
|
private |
list of geometry structures which directly contain this detector
Definition at line 177 of file KVDetector.h.
|
private |
list of particles hitting detector in an event
Definition at line 268 of file KVDetector.h.
|
private |
=kTRUE if detector is present, =kFALSE if it has been removed
Definition at line 282 of file KVDetector.h.
|
private |
parametric function range of particles in detector
Definition at line 277 of file KVDetector.h.
|
private |
=kTRUE when using to simulate detector response, =kFALSE when analysing data
Definition at line 281 of file KVDetector.h.
|
private |
=kTRUE if detector has a single absorber layer
Definition at line 285 of file KVDetector.h.
|
private |
temporary counters, determine state of identified/unidentified particle flags
Definition at line 191 of file KVDetector.h.