KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches

Detailed Description

Base class for detector geometry description.

KVDetector is the base class for the description of all individual detectors in the KaliVeda framework. A detector is defined by the following characteristics:

  • it is composed of one or more absorber layers in which the energy loss of charged particles can be measured or calculated, described by KVMaterial objects;
  • it has a single active layer in which energy losses may be associated to data read out from some electronics/DAQ system via objects of the KVDetectorSignal class;
  • it can be attributed KVCalibrator objects used to transform raw KVDetectorSignal data into calibrated KVCalibratedSignal data;
  • it can have spacial dimensions and position (parent class KVPosition), when it is part of a KVMultiDetArray (array of detectors) deduced from a ROOT geometry description using class KVGeoImport:
    • in this case, each KVDetector is associated with a node (KVGeoDetectorNode) in the geometry;
    • each node is part of one or more trajectories (KVGeoDNTrajectory) which describe the possible flight paths of particles through the detectors of the array;
    • the trajectories allow to describe the spacial relationships between the different detectors of the array ("in front", "behind"), from which \(\Delta E-E\) telescopes (KVIDTelescope) can be deduced which group pairs of adjacent detectors along the trajectories;
    • each detector is also the first node of a trajectory leading back towards the target (KVReconNucTrajectory) which is used in event reconstruction (KVEventReconstructor, KVGroupReconstructor) to determine the trajectory of reconstructed nuclei (KVReconstructedNucleus) starting from the detectors the furthest from the target which are fired in each event read from the raw data (KVRawDataReconstructor).

Example 1: defining a detector

KVDetector chio("Myl", 2.5*KVUnits::um); //first layer - 2.5 micron mylar window
KVMaterial *gas = new KVMaterial("C3F8", 5.*KVUnits::cm, 50.0*KVUnits::mbar);
chio.AddAbsorber(gas); //second layer - 5cm of C3F8 gas at 50mbar pressure
chio.SetActiveLayer(gas); //make gas layer "active"
KVMaterial *win = new KVMaterial("Myl",2.5*KVUnits::um); //exit window
chio.AddAbsorber(win);
chio.Print("all");
KVDetector : Det_1
KVMaterial: Myl (Mylar)
Thickness 0.00025 cm
Area density 0.00034875 g/cm**2
-----------------------------------------------
Z = 4.54545 atomic mass = 8.72727
Density = 1.395 g/cm**3
-----------------------------------------------
### ACTIVE LAYER ###
KVMaterial: C3F8 (Octofluoropropane)
Pressure 37.5031 torr
Thickness 5 cm
Area density 0.00193476 g/cm**2
-----------------------------------------------
Z = 8.18182 atomic mass = 17.0909
Density = 0.000386953 g/cm**3
-----------------------------------------------
####################
KVMaterial: Myl (Mylar)
Thickness 0.00025 cm
Area density 0.00034875 g/cm**2
-----------------------------------------------
Z = 4.54545 atomic mass = 8.72727
Density = 1.395 g/cm**3
-----------------------------------------------
--- Detector belongs to the following Identification Telescopes:
OBJ: KVList KVSeqCollection_158 Extended version of ROOT TList : 0
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t win
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t g
Base class for detector geometry description.
Definition KVDetector.h:160
KVDetector()
default ctor
Extended TList class which owns its objects by default.
Definition KVList.h:28
Description of physical materials used to construct detectors & targets; interface to range tables.
Definition KVMaterial.h:94
KVMaterial()
default ctor
RooCmdArg Extended(bool flag=true)
const long double um
Definition KVUnits.h:68
const long double cm
Definition KVUnits.h:66
const long double mbar
Definition KVUnits.h:81

Example 2: Simulate detection of a charged particle in a detector

KVNucleus xe("129Xe", 50.0); // 50 MeV/nucleon 129Xe ion
chio.DetectParticle(&xe);
chio.GetEnergyLoss()
(double) 48.309654 // energy loss in gas (active) layer
xe.GetEnergy()
(double) 6380.9388 // kinetic energy of 129Xe after detector
50*129 - xe.GetEnergy() - chio.GetEnergyLoss()
(double) 20.751563 // energy lost in Mylar windows
chio.GetIncidentEnergy(54,129,chio.GetEnergyLoss())
(double) 6450.0000 // deduce incident energy from dE - corrected for Mylar
chio.GetIncidentEnergyFromERes(54,129,xe.GetEnergy())
(double) 6450.0000 // deduce incident energy from Eres - corrected for Mylar
Description of properties and kinematics of atomic nuclei.
Definition KVNucleus.h:126

Important note on detector positions, angles, solid angle, distances etc.

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"):

double Double_t
void GetRandomAngles(Double_t &th, Double_t &ph, Option_t *t="isotropic")
Definition KVDetector.h:726
Double_t GetSinTheta() const
Definition KVDetector.h:750
Double_t GetSolidAngle() const
Definition KVDetector.h:714
Double_t GetTheta() const
Definition KVDetector.h:744
Double_t GetPhi() const
Definition KVDetector.h:762
TVector3 GetDirection()
Definition KVDetector.h:732
Double_t GetDistance() const
Definition KVDetector.h:738
const TVector3 GetCentreOfEntranceWindow() const
Definition KVDetector.h:707
TVector3 GetRandomDirection(Option_t *t="isotropic")
Definition KVDetector.h:720
Double_t GetCosTheta() const
Definition KVDetector.h:756
Examples
ExampleRawAnalysis.cpp.

Definition at line 160 of file KVDetector.h.

#include <KVDetector.h>

Inheritance diagram for KVDetector:

Public Member Functions

 KVDetector ()
 default ctor
 
 KVDetector (const Char_t *type, const Float_t thick=0.0)
 Create a new detector of a given material and thickness in centimetres (default value = 0.0)
 
 KVDetector (const KVDetector &)
 copy ctor
 
virtual ~KVDetector ()
 
void AddAbsorber (KVMaterial *)
 
Bool_t AddCalibrator (KVCalibrator *cal, const KVNameValueList &opts="")
 
KVDetectorSignalAddDetectorSignal (const KVString &type)
 
Bool_t AddDetectorSignalExpression (const KVString &type, const KVString &_expr)
 
void AddHit (KVNucleus *part)
 
virtual void AddIDTelescope (TObject *idt)
 Add ID telescope to list of telescopes to which detector belongs.
 
void AddParentStructure (KVGeoStrucElement *elem)
 
virtual void AddToGeometry ()
 
Bool_t BelongsToIdentifiedParticle () const
 
Bool_t BelongsToUnidentifiedParticle () const
 
virtual void Clear (Option_t *opt="")
 
void ClearHits ()
 
virtual void Copy (TObject &obj) const
 
virtual void DeduceACQParameters (KVEvent *, KVNumberList &)
 
virtual void DetectParticle (KVNucleus *, TVector3 *norm=0)
 
virtual TGraphDrawPunchThroughEnergyVsZ (Int_t massform=KVNucleus::kBetaMass)
 
virtual TGraphDrawPunchThroughEsurAVsZ (Int_t massform=KVNucleus::kBetaMass)
 
virtual Int_t FindZmin (Double_t ELOSS=-1., Char_t mass_formula=-1)
 
virtual Bool_t Fired (Option_t *opt="any") const
 
KVMaterialGetAbsorber (const Char_t *name) const
 
KVMaterialGetAbsorber (Int_t i) const
 Returns pointer to the i-th absorber in the detector (i=0 first absorber, i=1 second, etc.)
 
KVMaterialGetActiveLayer () const
 
TGeoHMatrixGetActiveLayerMatrix () const
 
TGeoBBoxGetActiveLayerShape () const
 
TVector3 GetActiveLayerSurfaceCentre () const
 
TVector3 GetActiveLayerVolumeCentre () const
 
virtual TListGetAlignedDetectors (UInt_t direction=1)
 
KVListGetAlignedIDTelescopes ()
 
virtual const Char_tGetArrayName ()
 
virtual Double_t GetCalibratedEnergy () const
 
KVCalibratorGetCalibrator (const Char_t *name, const Char_t *type) const
 
KVCalibratorGetCalibrator (const Char_t *type) const
 
const TVector3 GetCentreOfEntranceWindow () const
 
virtual Double_t GetCorrectedEnergy (KVNucleus *, Double_t e=-1., Bool_t transmission=kTRUE)
 
Double_t GetCosTheta () const
 
virtual Double_t GetDeltaE (Int_t Z, Int_t A, Double_t Einc)
 
virtual Double_t GetDeltaEFromERes (Int_t Z, Int_t A, Double_t Eres)
 
virtual Double_t GetDepthInTelescope () const
 
virtual KVDetectorSignalGetDetectorSignal (const KVString &type) const
 
Double_t GetDetectorSignalValue (const KVString &type, const KVNameValueList &params="") const
 
TVector3 GetDirection ()
 
Double_t GetDistance () const
 
virtual Double_t GetEIncOfMaxDeltaE (Int_t Z, Int_t A)
 
virtual TF1GetELossFunction (Int_t Z, Int_t A)
 
virtual Double_t GetELostByParticle (KVNucleus *, TVector3 *norm=0)
 
virtual Double_t GetEnergy () const
 
virtual Double_t GetEnergyLoss () const
 
const KVPositionGetEntranceWindow () const
 
virtual Double_t GetEntranceWindowSurfaceArea ()
 Return surface area of first layer of detector in cm2.
 
virtual Double_t GetERes (Int_t Z, Int_t A, Double_t Einc)
 
virtual Double_t GetEResAfterDetector () const
 
virtual TF1GetEResFunction (Int_t Z, Int_t A)
 
Double_t GetGain () const
 
virtual TGeoVolumeGetGeoVolume ()
 
KVGroupGetGroup () const
 
UInt_t GetGroupNumber ()
 
KVListGetHits () const
 Return the list of particles hitting this detector in an event.
 
KVListGetIDTelescopes ()
 
virtual Double_t GetIncidentEnergy (Int_t Z, Int_t A, Double_t delta_e=-1.0, enum SolType type=kEmax)
 
virtual Double_t GetIncidentEnergyFromERes (Int_t Z, Int_t A, Double_t Eres)
 
virtual Int_t GetIndex () const
 
Double_t GetInverseDetectorSignalValue (const KVString &output, Double_t value, const KVString &input, const KVNameValueList &params="") const
 
virtual Double_t GetLinearRange (Int_t Z, Int_t A, Double_t Einc)
 
KVListGetListOfAbsorbers () const
 
KVListGetListOfCalibrators () const
 
const KVSeqCollectionGetListOfDetectorSignals () const
 
const Char_tGetMaterialName () const
 
virtual Double_t GetMaxDeltaE (Int_t Z, Int_t A)
 
const Char_tGetNameOfArray () const
 
Int_t GetNHits () const
 Return the number of particles hitting this detector in an event.
 
KVGeoDetectorNodeGetNode ()
 
Int_t GetNumberOfAbsorberLayers () const
 
KVGeoStrucElementGetParentStructure (const Char_t *type, const Char_t *name="") const
 
virtual Double_t GetParticleEIncFromERes (KVNucleus *, TVector3 *norm=0)
 
Double_t GetPhi () const
 
virtual Double_t GetPunchThroughEnergy (Int_t Z, Int_t A)
 
void GetRandomAngles (Double_t &th, Double_t &ph, Option_t *t="isotropic")
 
TVector3 GetRandomDirection (Option_t *t="isotropic")
 
virtual Double_t GetRange (Int_t Z, Int_t A, Double_t Einc)
 
virtual TF1GetRangeFunction (Int_t Z, Int_t A)
 
UShort_t GetSegment () const
 
Double_t GetSinTheta () const
 
virtual Double_t GetSmallestEmaxValid (Int_t Z, Int_t A)
 
Double_t GetSolidAngle () const
 
TListGetTelescopesForIdentification ()
 
Double_t GetTheta () const
 
virtual Double_t GetTotalDeltaE (Int_t Z, Int_t A, Double_t Einc)
 
Double_t GetTotalThicknessInCM ()
 
virtual void GetVerticesInOwnFrame (TVector3 *, Double_t, Double_t)
 
Bool_t HasDetectorSignal (const KVString &type) const
 
Bool_t HasSameStructureAs (const KVDetector *) const
 
void IncrementIdentifiedParticles (Int_t n=1)
 
void IncrementUnidentifiedParticles (Int_t n=1)
 
void init ()
 default initialisations
 
Bool_t IsAnalysed ()
 
Bool_t IsCalibrated () const
 
Bool_t IsCalibrated (const KVNameValueList &params) const
 
virtual Bool_t IsDetecting () const
 
virtual Bool_t IsOK () const
 
virtual Bool_t IsPresent () const
 
virtual Bool_t IsSimMode () const
 
Bool_t IsSingleLayer () const
 
virtual void Print (Option_t *option="") const
 
virtual void ReadDefinitionFromFile (const Char_t *)
 
virtual void RemoveCalibrators ()
 
void RemoveHit (KVNucleus *part)
 
void RemoveParentStructure (KVGeoStrucElement *elem)
 
Bool_t ReplaceCalibrator (const Char_t *type, KVCalibrator *cal, const KVNameValueList &opts="")
 
virtual void Reset (Option_t *opt="")
 
void ResetAlignedDetectors (UInt_t direction=1)
 
void SetActiveLayer (KVMaterial *actif)
 
void SetActiveLayerMatrix (const TGeoHMatrix *)
 Set ROOT geometry global matrix transformation to coordinate frame of active layer volume.
 
void SetActiveLayerShape (TGeoBBox *)
 Set ROOT geometry shape of active layer volume.
 
void SetAnalysed (Bool_t b=kTRUE)
 
void SetDetecting (Bool_t yes=kTRUE)
 
void SetDetectorSignalValue (const KVString &type, Double_t val) const
 
virtual void SetEnergy (Double_t e) const
 
virtual void SetEnergyLoss (Double_t e) const
 
void SetEntranceWindowMatrix (const TGeoHMatrix *)
 Set ROOT geometry global matrix transformation to coordinate frame of entrance window.
 
void SetEntranceWindowShape (TGeoBBox *)
 Set ROOT geometry shape of entrance window.
 
virtual void SetEResAfterDetector (Double_t e)
 
void SetGain (Double_t gain)
 
virtual void SetMaterial (const Char_t *type)
 
void SetNameOfArray (const TString &n)
 
void SetPresent (Bool_t yes=kTRUE)
 
virtual void SetSegment (UShort_t s)
 
virtual void SetSimMode (Bool_t on=kTRUE)
 
void SetThickness (Double_t thick)
 
- Public Member Functions inherited from KVMaterial
 KVMaterial ()
 default ctor
 
 KVMaterial (const Char_t *gas, const Double_t thick, const Double_t pressure, const Double_t temperature=19.0)
 
 KVMaterial (const Char_t *type, const Double_t thick=0.0)
 Create material with given type and linear thickness in cm.
 
 KVMaterial (const KVMaterial &)
 Copy ctor.
 
 KVMaterial (Double_t area_density, const Char_t *type)
 Create material with given area density in \(g/cm^{2}\) and given type.
 
virtual ~KVMaterial ()
 Destructor.
 
virtual TGeoVolumeGetAbsGeoVolume () const
 
Double_t GetAreaDensity () const
 
Double_t GetDensity () const
 
Double_t GetEffectiveAreaDensity (TVector3 &norm, TVector3 &direction)
 
Double_t GetEffectiveThickness (TVector3 &norm, TVector3 &direction)
 
Double_t GetEmaxValid (Int_t Z, Int_t A)
 
virtual Double_t GetEResFromDeltaE (Int_t Z, Int_t A, Double_t dE=-1.0, enum SolType type=kEmax)
 
virtual TGeoMediumGetGeoMedium (const Char_t *="")
 
virtual TGraphGetGraphOfDeltaEVsE (const KVNucleus &nuc, Int_t npts, Double_t Emin, Double_t Emax)
 
Double_t GetMass () const
 
virtual Double_t GetPressure () const
 
virtual Double_t GetTemperature () const
 
virtual Double_t GetThickness () const
 
Double_t GetZ () const
 
void init ()
 
Bool_t IsGas () const
 
Bool_t IsIsotopic () const
 
Bool_t IsNat () const
 
virtual void SetAbsGeoVolume (TGeoVolume *v)
 
void SetAreaDensity (Double_t dens)
 
void SetMass (Int_t a)
 
virtual void SetPressure (Double_t)
 
virtual void SetTemperature (Double_t)
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor.
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type.
 
 KVBase (const KVBase &)
 copy ctor
 
virtual ~KVBase ()
 
const Char_tGetLabel () const
 
UInt_t GetNumber () const
 
UInt_t GetNumberOfObjects () const
 
virtual TObjectGetObject () const
 
virtual const Char_tGetType () const
 
Bool_t HasLabel () const
 
virtual Bool_t IsCalled (const Char_t *name) const
 
Bool_t IsLabelled (const Char_t *l) const
 
virtual Bool_t IsType (const Char_t *typ) const
 
virtual void List ()
 
KVBaseoperator= (const KVBase &)
 copy assignment operator
 
Double_t ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 
void Clear (Option_t *option="") override
 
TObjectClone (const char *newname="") const override
 
Int_t Compare (const TObject *obj) const override
 
void Copy (TObject &named) const override
 
virtual void FillBuffer (char *&buffer)
 
const char * GetName () const override
 
const char * GetTitle () const override
 
ULong_t Hash () const override
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 
TNamedoperator= (const TNamed &rhs)
 
void Print (Option_t *option="") const override
 
virtual void SetName (const char *name)
 
virtual void SetNameTitle (const char *name, const char *title)
 
virtual void SetTitle (const char *title="")
 
virtual Int_t Sizeof () const
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 
 TObject (const TObject &object)
 
virtual ~TObject ()
 
void AbstractMethod (const char *method) const
 
virtual void AppendPad (Option_t *option="")
 
virtual void Browse (TBrowser *b)
 
ULong_t CheckedHash ()
 
virtual const char * ClassName () const
 
virtual void Delete (Option_t *option="")
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 
virtual void Draw (Option_t *option="")
 
virtual void DrawClass () const
 
virtual TObjectDrawClone (Option_t *option="") const
 
virtual void Dump () const
 
virtual void Error (const char *method, const char *msgfmt,...) const
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 
virtual TObjectFindObject (const char *name) const
 
virtual TObjectFindObject (const TObject *obj) const
 
virtual Option_tGetDrawOption () const
 
virtual const char * GetIconName () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 
virtual Bool_t HandleTimer (TTimer *timer)
 
Bool_t HasInconsistentHash () const
 
virtual void Info (const char *method, const char *msgfmt,...) const
 
virtual Bool_t InheritsFrom (const char *classname) const
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 
virtual void Inspect () const
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 
virtual Bool_t IsEqual (const TObject *obj) const
 
virtual Bool_t IsFolder () const
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 
virtual Bool_t Notify ()
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *vp)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, void *vp)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 
virtual void Paint (Option_t *option="")
 
virtual void Pop ()
 
virtual Int_t Read (const char *name)
 
virtual void RecursiveRemove (TObject *obj)
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 
virtual void SetDrawOption (Option_t *option="")
 
virtual void SetUniqueID (UInt_t uid)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 
- Public Member Functions inherited from KVPosition
 KVPosition ()
 
 KVPosition (Double_t thmin, Double_t thmax, Double_t phmin, Double_t phmax, Double_t dist=0.0)
 
virtual ~KVPosition ()
 
Double_t GetAzimuthalWidth (Double_t phmin=-1., Double_t phimax=-1.) const
 
void GetCornerCoordinates (TVector3 *, Double_t=0)
 
void GetCornerCoordinatesInOwnFrame (TVector3 *, Double_t=0)
 
Double_t GetPhiMax () const
 
Double_t GetPhiMin () const
 
TRotation GetRandomIsotropicRotation ()
 
Double_t GetThetaMax () const
 
Double_t GetThetaMin () const
 
void GetWidthsFromDimension (Double_t lin_dim)
 
void init ()
 default initialiser
 
Bool_t IsAlignedWith (KVPosition *pos)
 kTRUE if one of the two solid angle elements is completely contained within the other.
 
Bool_t IsAzimuthallyWiderThan (KVPosition *pos)
 
Bool_t IsInPhiRange (const Double_t phi)
 
Bool_t IsInPolarRange (const Double_t theta)
 kTRUE if given angle theta is within the polar range of this solid angle element
 
Bool_t IsOverlappingWith (KVPosition *pos)
 kTRUE if there is at least partial overlap between two solid angle elements
 
Bool_t IsSmallerThan (KVPosition *pos)
 kTRUE if "this" is entirely contained within "pos"
 
Bool_t ROOTGeo () const
 Returns kTRUE if ROOT geometry is used, kFALSE if not.
 
virtual void SetAzimuthalAngle (Double_t ph)
 
virtual void SetAzimuthalMinMax (Double_t min, Double_t max)
 Set min and max azimuthal angles and calculate (mean) phi.
 
virtual void SetAzimuthalWidth (Double_t aw)
 
void SetDistance (Double_t d)
 
void SetPhi (Double_t p)
 
void SetPhiMinMax (Double_t min, Double_t max)
 
virtual void SetPolarAngle (Double_t th)
 
virtual void SetPolarMinMax (Double_t min, Double_t max)
 Set min and max polar angles and calculate (mean) theta.
 
virtual void SetPolarWidth (Double_t pw)
 
void SetTheta (Double_t t)
 

Static Public Member Functions

static KVDetectorMakeDetector (const Char_t *name, Float_t thick)
 
- Static Public Member Functions inherited from KVMaterial
static KVIonRangeTableChangeRangeTable (const Char_t *name)
 
static KVIonRangeTableGetRangeTable ()
 
- Static Public Member Functions inherited from KVBase
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values.
 
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 Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_tFindFile (const Char_t *search, TString &wfil)
 
static const Char_tGetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetDATABASEFilePath ()
 
static const Char_tGetDATADIRFilePath (const Char_t *namefile="")
 
static Bool_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval)
 
static const Char_tGetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval)
 
static Double_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval)
 
static const Char_tGetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.)
 
static const Char_tGetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetKVBuildDate ()
 Returns KaliVeda build date.
 
static const Char_tGetKVBuildDir ()
 Returns top-level directory used for build.
 
static const Char_tGetKVBuildTime ()
 Returns KaliVeda build time.
 
static const Char_tGetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...)
 
static const Char_tGetKVBuildUser ()
 Returns username of person who performed build.
 
static const Char_tGetKVSourceDir ()
 Returns top-level directory of source tree used for build.
 
static const Char_tGetKVVersion ()
 Returns KaliVeda version string.
 
static const Char_tGetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetListOfPlugins (const Char_t *base)
 
static const Char_tGetListOfPluginURIs (const Char_t *base)
 
static const Char_tGetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_tGetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_tgitBranch ()
 Returns git branch of sources.
 
static const Char_tgitCommit ()
 Returns last git commit of sources.
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandlerLoadPlugin (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.
 
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_tWorkingDirectory ()
 
- Static Public Member Functions inherited from TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
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)
 
TGeoHMatrixGetMatrix () const
 
Double_t GetMisalignmentAngle () const
 
TVector3 GetRandomPointOnSurface () const
 
TGeoBBoxGetShape () const
 
Double_t GetSurfaceArea (int npoints=100000) const
 
TVector3 GetSurfaceCentre () const
 
TVector3 GetSurfaceNormal () const
 
TVector3 GetVolumeCentre () const
 
Double_t RangeDet (Double_t *x, Double_t *par)
 
void remove_signal_for_calibrator (KVCalibrator *K)
 
void SetMatrix (const TGeoHMatrix *m)
 
void SetShape (TGeoBBox *s)
 

Private Attributes

KVListfAbsorbers
 list of absorbers making up the detector
 
KVMaterialfActiveLayer
 The active absorber in the detector.
 
TListfAlignedDetectors [2]
 stores lists of aligned detectors in both directions
 
KVListfCalibrators
 list of associated calibrator objects
 
Int_t fCalWarning
 just a counter so that missing calibrator warning is given only once
 
Double_t fDepthInTelescope
 used to store depth of detector in parent telescope
 
Bool_t fDetecting
 =kTRUE if detector is "detecting", =kFALSE if not
 
KVUniqueNameList fDetSignals
 list of signals associated with detector
 
TF1fELossF
 parametric function dE in active layer vs. incident energy
 
TF1fEResF
 parametric function Eres residual energy after all layers of detector
 
Double_t fEResforEinc
 used by GetIncidentEnergy & GetCorrectedEnergy
 
KVPosition fEWPosition
 position of entrance window i.e. first volume in detector geometry
 
TString fFName
 dynamically generated full name of detector
 
Double_t fGain
 gain of amplifier
 
Int_t fIdentP
 temporary counters, determine state of identified/unidentified particle flags
 
KVListfIDTelAlign
 list of ID telescopes made of this detector and all aligned detectors placed in front of it
 
TListfIDTele4Ident
 list of ID telescopes used for particle ID
 
KVListfIDTelescopes
 list of ID telescopes to which detector belongs
 
TString fNameOfArray
 name of multidetector array this detector is part of
 
KVGeoDetectorNode fNode
 positioning information relative to other detectors
 
KVUniqueNameList fParentStrucList
 list of geometry structures which directly contain this detector
 
KVListfParticles
 list of particles hitting detector in an event
 
Bool_t fPresent
 =kTRUE if detector is present, =kFALSE if it has been removed
 
TF1fRangeF
 parametric function range of particles in detector
 
UShort_t fSegment
 used in particle reconstruction
 
Bool_t fSimMode
 =kTRUE when using to simulate detector response, =kFALSE when analysing data
 
Bool_t fSingleLayer
 =kTRUE if detector has a single absorber layer
 
Double_t fTotThickness
 used to store value calculated by GetTotalThicknessInCM
 
Int_t fUnidentP
 temporary counters, determine state of identified/unidentified particle flags
 

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) }
 
- 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
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
kIsAnalysed 
kActiveSet 
kUnidentifiedParticle 
kIdentifiedParticle 

Definition at line 173 of file KVDetector.h.

Constructor & Destructor Documentation

◆ KVDetector() [1/3]

KVDetector::KVDetector ( )

default ctor

Definition at line 76 of file KVDetector.cpp.

◆ KVDetector() [2/3]

KVDetector::KVDetector ( const Char_t type,
const Float_t  thick = 0.0 
)

Create a new detector of a given material and thickness in centimetres (default value = 0.0)

Definition at line 89 of file KVDetector.cpp.

◆ KVDetector() [3/3]

KVDetector::KVDetector ( const KVDetector obj)

copy ctor

Definition at line 106 of file KVDetector.cpp.

◆ ~KVDetector()

KVDetector::~KVDetector ( )
virtual

Definition at line 151 of file KVDetector.cpp.

Member Function Documentation

◆ AddAbsorber()

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 630 of file KVDetector.cpp.

◆ AddCalibrator()

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.

Parameters
[in]calpointer 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, e.g. 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)

Returns
kFALSE in case of problems (non-existent input signal for calibrator, output signal not defined for calibrator), otherwise kTRUE

Definition at line 478 of file KVDetector.cpp.

◆ AddDetectorSignal() [1/2]

KVDetectorSignal * KVDetector::AddDetectorSignal ( const KVString type)
inline

Add a new signal to the list of detector's signals.

Parameters
[in]typedefine the name of the signal to add
Returns
pointer to the new signal object
Note
do not delete{.cpp} the signal object: the detector handles deletion

Definition at line 790 of file KVDetector.h.

◆ AddDetectorSignal() [2/2]

void KVDetector::AddDetectorSignal ( KVDetectorSignal ds)
inlineprivate

Internal use only.

Add KVDetectorSignal object to list of detector's signals.

Definition at line 261 of file KVDetector.h.

◆ AddDetectorSignalExpression()

Bool_t KVDetector::AddDetectorSignalExpression ( const KVString type,
const KVString _expr 
)

Add a new KVDetectorSignalExpression to this detector

Parameters
[in]typethe name/type of the new signal
[in]_exprmathematical expression using any of the known signals of the detector
Note
If the expression is not valid, no signal will be created and method returns kFALSE.

Definition at line 2157 of file KVDetector.cpp.

◆ AddHit()

void KVDetector::AddHit ( KVNucleus part)
inline

Add to the list of particles hitting this detector in an event

Definition at line 405 of file KVDetector.h.

◆ AddIDTelescope()

void KVDetector::AddIDTelescope ( TObject idt)
virtual

Add ID telescope to list of telescopes to which detector belongs.

Definition at line 723 of file KVDetector.cpp.

◆ AddParentStructure()

void KVDetector::AddParentStructure ( KVGeoStrucElement elem)

Definition at line 1995 of file KVDetector.cpp.

◆ AddToGeometry()

void KVDetector::AddToGeometry ( )
virtual

Construct and position a TGeoVolume shape to represent this detector in the current geometry managed by gGeoManager.

Adding the detector to the geometry requires:

  • to construct a 'mother' volume (TGeoArb8) defined by the (theta-min/max, phi-min/max) and the total thickness of the detector (all layers)
  • to construct and position volumes (TGeoArb8) for each layer of the detector inside the 'mother' volume
  • to position 'mother' inside the top-level geometry

gGeoManager must point to current instance of geometry manager.

Definition at line 1304 of file KVDetector.cpp.

◆ BelongsToIdentifiedParticle()

Bool_t KVDetector::BelongsToIdentifiedParticle ( ) const
inline

Definition at line 575 of file KVDetector.h.

◆ BelongsToUnidentifiedParticle()

Bool_t KVDetector::BelongsToUnidentifiedParticle ( ) const
inline

Definition at line 571 of file KVDetector.h.

◆ Clear()

void KVDetector::Clear ( Option_t opt = "")
virtual

Set energy loss(es) etc. to zero If opt="N" we do not reset acquisition parameters/raw detector signals

Reimplemented from KVMaterial.

Reimplemented in KVFAZIADetector.

Definition at line 597 of file KVDetector.cpp.

◆ ClearHits()

void KVDetector::ClearHits ( )
inline

clear the list of particles hitting this detector in an event

Definition at line 430 of file KVDetector.h.

◆ Copy()

void KVDetector::Copy ( TObject obj) const
virtual

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 KVMaterial.

Reimplemented in KVFAZIADetector.

Definition at line 127 of file KVDetector.cpp.

◆ DeduceACQParameters()

virtual void KVDetector::DeduceACQParameters ( KVEvent ,
KVNumberList  
)
inlinevirtual

Reimplemented in KVChIo, KVCsI, and KVSilicon.

Definition at line 688 of file KVDetector.h.

◆ DetectParticle()

void KVDetector::DetectParticle ( KVNucleus kvp,
TVector3 norm = 0 
)
virtual

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. Do nothing if particle has zero (or -ve) energy.

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 203 of file KVDetector.cpp.

◆ DrawPunchThroughEnergyVsZ()

TGraph * KVDetector::DrawPunchThroughEnergyVsZ ( Int_t  massform = KVNucleus::kBetaMass)
virtual

Creates and fills a 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 1929 of file KVDetector.cpp.

◆ DrawPunchThroughEsurAVsZ()

TGraph * KVDetector::DrawPunchThroughEsurAVsZ ( Int_t  massform = KVNucleus::kBetaMass)
virtual

Creates and fills a 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 1954 of file KVDetector.cpp.

◆ ELossActive()

Double_t KVDetector::ELossActive ( Double_t x,
Double_t par 
)
private

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 981 of file KVDetector.cpp.

◆ EResDet()

Double_t KVDetector::EResDet ( Double_t x,
Double_t par 
)
private

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 1075 of file KVDetector.cpp.

◆ FindZmin()

Int_t KVDetector::FindZmin ( Double_t  ELOSS = -1.,
Char_t  mass_formula = -1 
)
virtual

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 907 of file KVDetector.cpp.

◆ Fired()

virtual Bool_t KVDetector::Fired ( Option_t opt = "any") const
inlinevirtual

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.

Examples
ExampleRawAnalysis.cpp.

Definition at line 451 of file KVDetector.h.

◆ GetAbsorber() [1/2]

KVMaterial * KVDetector::GetAbsorber ( const Char_t name) const
inline

Return absorber with given name

Definition at line 296 of file KVDetector.h.

◆ GetAbsorber() [2/2]

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 646 of file KVDetector.cpp.

◆ GetActiveLayer()

KVMaterial * KVDetector::GetActiveLayer ( ) const
inlinevirtual

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 290 of file KVDetector.h.

◆ GetActiveLayerMatrix()

TGeoHMatrix * KVDetector::GetActiveLayerMatrix ( ) const
inline

Return coordinate transformation matrix to active layer

Definition at line 602 of file KVDetector.h.

◆ GetActiveLayerShape()

TGeoBBox * KVDetector::GetActiveLayerShape ( ) const
inline

Return geometry of active layer

Definition at line 597 of file KVDetector.h.

◆ GetActiveLayerSurfaceCentre()

TVector3 KVDetector::GetActiveLayerSurfaceCentre ( ) const
inline

Return centre of entrance surface of active layer [this is NOT necessarily the same as the entrance window]

Definition at line 586 of file KVDetector.h.

◆ GetActiveLayerVolumeCentre()

TVector3 KVDetector::GetActiveLayerVolumeCentre ( ) const
inline

Return centre of the active layer volume

Definition at line 592 of file KVDetector.h.

◆ GetAlignedDetectors()

TList * KVDetector::GetAlignedDetectors ( UInt_t  direction = 1)
virtual

Returns list of detectors (including this one) which are in geometrical aligment with respect to the target position (assuming this detector is part of a multidetector array described by KVMultiDetArray).

By default the list is in the order starting from this detector and going towards the target (direction=KVGroup::kBackwards). Call with argument direction=KVGroup::kForwards to have the list of detectors in the order "seen" by a particle flying out from the target and arriving in this detector.

If this detector is not part of a KVMultiDetArray (i.e. we have no information on its geometrical relation to other detectors), we return 0x0.

The list pointers are stored in member variable fAlignedDetectors[] for rapid retrieval, the lists will be deleted with this detector.

See KVGroup::GetAlignedDetectors for more details.

Definition at line 1838 of file KVDetector.cpp.

◆ GetAlignedIDTelescopes()

KVList * KVDetector::GetAlignedIDTelescopes ( )

Return list of all ID telescopes containing detectors placed in front of this one. temporary kludge during transition to trajectory-based reconstruction ROOT-geometry-based detectors will not have fIDTelAlign filled

Definition at line 737 of file KVDetector.cpp.

◆ GetArrayName()

const Char_t * KVDetector::GetArrayName ( )
virtual

This method is called by KVASMultiDetArray::MakeListOfDetectors after the array geometry has been defined (i.e. all detectors have been placed in the array). The string returned by this method is used to set the name of the detector.

Override this method in child classes in order to define a naming convention for specific detectors of the array.

By default we return the same name as KVDetector::GetName

Reimplemented in KVINDRADetector, KVPhoswich, KVSi75, and KVSiLi.

Definition at line 439 of file KVDetector.cpp.

◆ GetCalibratedEnergy()

virtual Double_t KVDetector::GetCalibratedEnergy ( ) const
inlinevirtual

Returns energy loss in detector calculated using available calibration(s)

Definition at line 344 of file KVDetector.h.

◆ GetCalibrator() [1/2]

KVCalibrator * KVDetector::GetCalibrator ( const Char_t name,
const Char_t type 
) const
inline

Definition at line 815 of file KVDetector.h.

◆ GetCalibrator() [2/2]

KVCalibrator * KVDetector::GetCalibrator ( const Char_t type) const
inline

Definition at line 823 of file KVDetector.h.

◆ GetCentreOfEntranceWindow()

const TVector3 KVDetector::GetCentreOfEntranceWindow ( ) const
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 707 of file KVDetector.h.

◆ GetCorrectedEnergy()

Double_t KVDetector::GetCorrectedEnergy ( KVNucleus nuc,
Double_t  e = -1.,
Bool_t  transmission = kTRUE 
)
virtual

Returns the total energy loss in the detector for a given nucleus including inactive absorber layers. e = energy loss in active layer (if not given, we use current value) transmission = kTRUE (default): the particle is assumed to emerge with a non-zero residual energy Eres after the detector. = kFALSE: the particle is assumed to stop in the detector.

WARNING: if transmission=kTRUE, and if the residual energy after the detector is known (i.e. measured in a detector placed after this one), you should first call SetEResAfterDetector(Eres); before calling this method. Otherwise, especially for heavy ions, the correction may be false for particles which are just above the punch-through energy.

WARNING 2: if measured energy loss in detector active layer is greater than maximum possible theoretical value for given nucleus' Z & A, this may be because the A was not measured but calculated from Z and hence could be false, or perhaps there was an (undetected) pile-up of two or more particles in the detector. In this case we return the uncorrected energy measured in the active layer and we add the following parameters to the particle (in nuc->GetParameters()):

GetCorrectedEnergy.Warning = 1 GetCorrectedEnergy.Detector = [name] GetCorrectedEnergy.MeasuredDE = [value] GetCorrectedEnergy.MaxDE = [value] GetCorrectedEnergy.Transmission = 0 or 1 GetCorrectedEnergy.ERES = [value]

Reimplemented in KVCsI.

Definition at line 811 of file KVDetector.cpp.

◆ GetCosTheta()

Double_t KVDetector::GetCosTheta ( ) const
inlinevirtual

cosinus of polar angle corresponding to centre of entrance window of detector

Reimplemented from KVPosition.

Definition at line 756 of file KVDetector.h.

◆ GetDeltaE()

Double_t KVDetector::GetDeltaE ( Int_t  Z,
Int_t  A,
Double_t  Einc 
)
virtual

Overrides KVMaterial::GetDeltaE Returns energy loss of given nucleus in the active layer of the detector. optimization for single-layer detectors

Reimplemented from KVMaterial.

Reimplemented in KVSilicon.

Definition at line 1533 of file KVDetector.cpp.

◆ GetDeltaEFromERes()

Double_t KVDetector::GetDeltaEFromERes ( Int_t  Z,
Int_t  A,
Double_t  Eres 
)
virtual

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 1677 of file KVDetector.cpp.

◆ GetDepthInTelescope()

virtual Double_t KVDetector::GetDepthInTelescope ( ) const
inlinevirtual

Definition at line 310 of file KVDetector.h.

◆ GetDetectorSignal()

virtual KVDetectorSignal * KVDetector::GetDetectorSignal ( const KVString type) const
inlinevirtual
Parameters
[in]typename/type of signal
Returns
pointer to the signal with given type if defined for detector
Warning
If no such signal defined, returns nullptr

Reimplemented in KVCsI.

Definition at line 533 of file KVDetector.h.

◆ GetDetectorSignalValue()

Double_t KVDetector::GetDetectorSignalValue ( const KVString type,
const KVNameValueList params = "" 
) const
inline
Parameters
[in]typename/type of signal
[in]paramslist of extra parameters possibly required to calculate value of signal can be passed as a string of "param1=value,param2=value,..." parameter/value pairs
Returns
value of signal of given type associated with detector
Note
Some signals require the necessary calibrators to be present & initialised
If the signal is not available, returns 0.
Examples
ExampleRawAnalysis.cpp.

Definition at line 493 of file KVDetector.h.

◆ GetDirection()

TVector3 KVDetector::GetDirection ( )
inlinevirtual

direction corresponding to centre of entrance window

Reimplemented from KVPosition.

Definition at line 732 of file KVDetector.h.

◆ GetDistance()

Double_t KVDetector::GetDistance ( void  ) const
inlinevirtual

distance from target [cm] to entrance window of detector

Reimplemented from KVPosition.

Definition at line 738 of file KVDetector.h.

◆ GetEIncOfMaxDeltaE()

Double_t KVDetector::GetEIncOfMaxDeltaE ( Int_t  Z,
Int_t  A 
)
virtual

Overrides KVMaterial::GetEIncOfMaxDeltaE 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 1501 of file KVDetector.cpp.

◆ GetELossFunction()

TF1 * KVDetector::GetELossFunction ( Int_t  Z,
Int_t  A 
)
virtual

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

Reimplemented in KVSilicon.

Definition at line 1477 of file KVDetector.cpp.

◆ GetELostByParticle()

Double_t KVDetector::GetELostByParticle ( KVNucleus kvp,
TVector3 norm = 0 
)
virtual

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 its ACQData, 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 276 of file KVDetector.cpp.

◆ GetEnergy()

virtual Double_t KVDetector::GetEnergy ( ) const
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 349 of file KVDetector.h.

◆ GetEnergyLoss()

virtual Double_t KVDetector::GetEnergyLoss ( ) const
inlinevirtual

Reimplemented from KVMaterial.

Definition at line 369 of file KVDetector.h.

◆ GetEntranceWindow()

const KVPosition & KVDetector::GetEntranceWindow ( ) const
inline

Returns KVPosition object corresponding to the entrance window volume i.e. the first volume encountered in the detector

Definition at line 701 of file KVDetector.h.

◆ GetEntranceWindowSurfaceArea()

Double_t KVDetector::GetEntranceWindowSurfaceArea ( )
virtual

Return surface area of first layer of detector in cm2.

Definition at line 1360 of file KVDetector.cpp.

◆ GetERes()

Double_t KVDetector::GetERes ( Int_t  Z,
Int_t  A,
Double_t  Einc 
)
virtual

Overrides KVMaterial::GetERes Returns residual energy of given nucleus after the detector. Returns 0 if Einc<=0

Reimplemented from KVMaterial.

Definition at line 1566 of file KVDetector.cpp.

◆ GetEResAfterDetector()

virtual Double_t KVDetector::GetEResAfterDetector ( ) const
inlinevirtual

Definition at line 634 of file KVDetector.h.

◆ GetEResFunction()

TF1 * KVDetector::GetEResFunction ( Int_t  Z,
Int_t  A 
)
virtual

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 1427 of file KVDetector.cpp.

◆ GetGain()

Double_t KVDetector::GetGain ( ) const
inline

Definition at line 847 of file KVDetector.h.

◆ GetGeoVolume()

TGeoVolume * KVDetector::GetGeoVolume ( )
virtual

Construct a TGeoVolume shape to represent this detector in the current geometry managed by gGeoManager.

Making the volume requires:

  • to construct a 'mother' volume (TGeoArb8) defined by the (theta-min/max, phi-min/max) and the total thickness of the detector (all layers)
  • to construct and position volumes (TGeoArb8) for each layer of the detector inside the 'mother' volume. Each layer is represented by a TGeoArb8 whose two parallel faces correspond to the front and back surfaces of the layer.

If the detector is composed of a single absorber, we do not create a superfluous "mother" volume.

gGeoManager must point to current instance of geometry manager.

Definition at line 1211 of file KVDetector.cpp.

◆ GetGroup()

KVGroup * KVDetector::GetGroup ( ) const

Definition at line 1977 of file KVDetector.cpp.

◆ GetGroupNumber()

UInt_t KVDetector::GetGroupNumber ( )

Definition at line 1986 of file KVDetector.cpp.

◆ GetHits()

KVList * KVDetector::GetHits ( ) const
inline

Return the list of particles hitting this detector in an event.

Definition at line 426 of file KVDetector.h.

◆ GetIDTelescopes()

KVList * KVDetector::GetIDTelescopes ( )
inline

Return list of IDTelescopes to which detector belongs

Definition at line 551 of file KVDetector.h.

◆ GetIncidentEnergy()

Double_t KVDetector::GetIncidentEnergy ( Int_t  Z,
Int_t  A,
Double_t  delta_e = -1.0,
enum SolType  type = kEmax 
)
virtual

Overrides KVMaterial::GetIncidentEnergy 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.

WARNING: calculating the incident energy of a particle using only the dE in a detector is ambiguous, as in general (and especially for very heavy ions) the maximum of the dE curve occurs for Einc greater than the punch-through energy, therefore it is not always true to assume that if the particle does not stop in the detector the required solution is that for type=KVIonRangeTable::kEmax. For a range of energies between punch-through and dE_max, the required solution is still that for type=KVIonRangeTable::kEmin. If the residual energy of the particle is unknown, there is no way to know which is the correct solution.

WARNING 2 If the given energy loss in the active layer is greater than the maximum theoretical dE for given Z & A, (dE > GetMaxDeltaE(Z,A)) then we return a NEGATIVE incident energy corresponding to the maximum, GetEIncOfMaxDeltaE(Z,A)

Reimplemented from KVMaterial.

Definition at line 1605 of file KVDetector.cpp.

◆ GetIncidentEnergyFromERes()

Double_t KVDetector::GetIncidentEnergyFromERes ( Int_t  Z,
Int_t  A,
Double_t  Eres 
)
virtual

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 1699 of file KVDetector.cpp.

◆ GetIndex()

virtual Int_t KVDetector::GetIndex ( ) const
inlinevirtual

Return a numerical identifier for the detector

Can be overridden in specialised detector classes

Reimplemented in KVFAZIADetector, and KVINDRADetector.

Examples
ExampleCorrelationAnalysis.cpp.

Definition at line 803 of file KVDetector.h.

◆ GetInverseDetectorSignalValue()

Double_t KVDetector::GetInverseDetectorSignalValue ( const KVString output,
Double_t  value,
const KVString input,
const KVNameValueList params = "" 
) const
inline
Parameters
[in]outputname/type of output signal
[in]valuevalue of output signal
[in]inputname/type of input signal
[in]paramslist 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.

Note
If the output signal is not defined, or if input & output are not related, this returns 0.

Definition at line 517 of file KVDetector.h.

◆ GetLinearRange()

Double_t KVDetector::GetLinearRange ( Int_t  Z,
Int_t  A,
Double_t  Einc 
)
virtual

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 1894 of file KVDetector.cpp.

◆ GetListOfAbsorbers()

KVList * KVDetector::GetListOfAbsorbers ( ) const
inline

Definition at line 301 of file KVDetector.h.

◆ GetListOfCalibrators()

KVList * KVDetector::GetListOfCalibrators ( ) const
inline

Definition at line 386 of file KVDetector.h.

◆ GetListOfDetectorSignals()

const KVSeqCollection & KVDetector::GetListOfDetectorSignals ( ) const
inline

Definition at line 786 of file KVDetector.h.

◆ GetMaterialName()

const Char_t * KVDetector::GetMaterialName ( ) const
inline

Definition at line 331 of file KVDetector.h.

◆ GetMatrix()

TGeoHMatrix * KVDetector::GetMatrix ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 194 of file KVDetector.h.

◆ GetMaxDeltaE()

Double_t KVDetector::GetMaxDeltaE ( Int_t  Z,
Int_t  A 
)
virtual

Overrides KVMaterial::GetMaxDeltaE Returns maximum energy loss in the active layer of the detector, for a given nucleus.

Reimplemented from KVMaterial.

Definition at line 1517 of file KVDetector.cpp.

◆ GetMisalignmentAngle()

Double_t KVDetector::GetMisalignmentAngle ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 222 of file KVDetector.h.

◆ GetNameOfArray()

const Char_t * KVDetector::GetNameOfArray ( ) const
inline

Return name of multidetector array this detector belongs to

Definition at line 780 of file KVDetector.h.

◆ GetNHits()

Int_t KVDetector::GetNHits ( ) const
inline

Return the number of particles hitting this detector in an event.

Definition at line 436 of file KVDetector.h.

◆ GetNode()

KVGeoDetectorNode * KVDetector::GetNode ( )
inline

Definition at line 326 of file KVDetector.h.

◆ GetNumberOfAbsorberLayers()

Int_t KVDetector::GetNumberOfAbsorberLayers ( ) const
inline

Definition at line 305 of file KVDetector.h.

◆ GetParentStructure()

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 2015 of file KVDetector.cpp.

◆ GetParticleEIncFromERes()

Double_t KVDetector::GetParticleEIncFromERes ( KVNucleus kvp,
TVector3 norm = 0 
)
virtual

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 328 of file KVDetector.cpp.

◆ GetPhi()

Double_t KVDetector::GetPhi ( ) const
inlinevirtual

azimuthal angle [deg.] corresponding to centre of entrance window of detector

Reimplemented from KVPosition.

Definition at line 762 of file KVDetector.h.

◆ GetPunchThroughEnergy()

Double_t KVDetector::GetPunchThroughEnergy ( Int_t  Z,
Int_t  A 
)
virtual

Returns energy (in MeV) necessary for ion (Z,A) to punch through all layers of this detector

Reimplemented from KVMaterial.

Definition at line 1909 of file KVDetector.cpp.

◆ GetRandomAngles()

void KVDetector::GetRandomAngles ( Double_t th,
Double_t ph,
Option_t t = "isotropic" 
)
inlinevirtual

random angles [deg.] corresponding to point on entrance window

Reimplemented from KVPosition.

Definition at line 726 of file KVDetector.h.

◆ GetRandomDirection()

TVector3 KVDetector::GetRandomDirection ( Option_t t = "isotropic")
inlinevirtual

random direction corresponding to point on entrance window

Reimplemented from KVPosition.

Definition at line 720 of file KVDetector.h.

◆ GetRandomPointOnSurface()

TVector3 KVDetector::GetRandomPointOnSurface ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 202 of file KVDetector.h.

◆ GetRange()

Double_t KVDetector::GetRange ( Int_t  Z,
Int_t  A,
Double_t  Einc 
)
virtual

WARNING: SAME AS KVDetector::GetLinearRange Only linear range in centimetres is calculated for detectors!

Reimplemented from KVMaterial.

Definition at line 1879 of file KVDetector.cpp.

◆ GetRangeFunction()

TF1 * KVDetector::GetRangeFunction ( Int_t  Z,
Int_t  A 
)
virtual

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 1452 of file KVDetector.cpp.

◆ GetSegment()

UShort_t KVDetector::GetSegment ( ) const
inline

used in reconstruction of particles

Definition at line 830 of file KVDetector.h.

◆ GetShape()

TGeoBBox * KVDetector::GetShape ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 198 of file KVDetector.h.

◆ GetSinTheta()

Double_t KVDetector::GetSinTheta ( ) const
inlinevirtual

sinus of polar angle corresponding to centre of entrance window of detector

Reimplemented from KVPosition.

Definition at line 750 of file KVDetector.h.

◆ GetSmallestEmaxValid()

Double_t KVDetector::GetSmallestEmaxValid ( Int_t  Z,
Int_t  A 
)
virtual

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 1724 of file KVDetector.cpp.

◆ GetSolidAngle()

Double_t KVDetector::GetSolidAngle ( void  ) const
inlinevirtual

Return solid angle [msr] corresponding to the entrance window of the detector

Reimplemented from KVPosition.

Definition at line 714 of file KVDetector.h.

◆ GetSurfaceArea()

Double_t KVDetector::GetSurfaceArea ( int  npoints = 100000) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 218 of file KVDetector.h.

◆ GetSurfaceCentre()

TVector3 KVDetector::GetSurfaceCentre ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 206 of file KVDetector.h.

◆ GetSurfaceNormal()

TVector3 KVDetector::GetSurfaceNormal ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 214 of file KVDetector.h.

◆ GetTelescopesForIdentification()

TList * KVDetector::GetTelescopesForIdentification ( )

Returns list of identification telescopes to be used in order to try to identify particles stopping in this detector. This is the same as GetAlignedIDTelescopes but only including the telescopes of which this detector is a member.

Definition at line 762 of file KVDetector.cpp.

◆ GetTheta()

Double_t KVDetector::GetTheta ( ) const
inlinevirtual

polar angle [deg.] corresponding to centre of entrance window of detector

Reimplemented from KVPosition.

Definition at line 744 of file KVDetector.h.

◆ GetTotalDeltaE()

Double_t KVDetector::GetTotalDeltaE ( Int_t  Z,
Int_t  A,
Double_t  Einc 
)
virtual

Returns calculated total energy loss of ion in ALL layers of the detector. This is just (Einc - GetERes(Z,A,Einc))

Definition at line 1551 of file KVDetector.cpp.

◆ GetTotalThicknessInCM()

Double_t KVDetector::GetTotalThicknessInCM ( )
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 315 of file KVDetector.h.

◆ GetVerticesInOwnFrame()

void KVDetector::GetVerticesInOwnFrame ( TVector3 corners,
Double_t  depth,
Double_t  layer_thickness 
)
virtual

This will fill the array corners[8] with the coordinates of the vertices of the front (corners[0],...,corners[3]) & back (corners[4],...,corners[7]) sides of the volume representing either a single absorber or the whole detector.

depth = depth of detector/absorber inside the KVTelescope it belongs to (in centimetres) layer_thickness = thickness of absorber/detector (in centimetres)

Positioning information is taken from the KVTelescope to which this detector belongs; if this is not the case, nothing will be done. relative distance to back of detector

Definition at line 1166 of file KVDetector.cpp.

◆ GetVolumeCentre()

TVector3 KVDetector::GetVolumeCentre ( ) const
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 210 of file KVDetector.h.

◆ HasDetectorSignal()

Bool_t KVDetector::HasDetectorSignal ( const KVString type) const
inline
Parameters
[in]typename/type of signal
Returns
kTRUE if signal with given type is defined for detector
Examples
ExampleRawAnalysis.cpp.

Definition at line 542 of file KVDetector.h.

◆ HasSameStructureAs()

Bool_t KVDetector::HasSameStructureAs ( const KVDetector other) const

Return kTRUE if the two detectors have the same internal structure, i.e.

  • the same number of absorber layers
  • in the same order
  • with the same material & thickness

Definition at line 2126 of file KVDetector.cpp.

◆ IncrementIdentifiedParticles()

void KVDetector::IncrementIdentifiedParticles ( Int_t  n = 1)
inline

Definition at line 565 of file KVDetector.h.

◆ IncrementUnidentifiedParticles()

void KVDetector::IncrementUnidentifiedParticles ( Int_t  n = 1)
inline

Definition at line 559 of file KVDetector.h.

◆ init()

void KVDetector::init ( void  )

default initialisations

Definition at line 38 of file KVDetector.cpp.

◆ IsAnalysed()

Bool_t KVDetector::IsAnalysed ( )
inline

Definition at line 443 of file KVDetector.h.

◆ IsCalibrated() [1/2]

Bool_t KVDetector::IsCalibrated ( ) const
inline

A detector is considered to be calibrated if it has a signal "Energy" available

Definition at line 390 of file KVDetector.h.

◆ IsCalibrated() [2/2]

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 580 of file KVDetector.cpp.

◆ IsDetecting()

virtual Bool_t KVDetector::IsDetecting ( ) const
inlinevirtual

return if the detector is ready to detect or not

Definition at line 672 of file KVDetector.h.

◆ IsOK()

virtual Bool_t KVDetector::IsOK ( ) const
inlinevirtual

return kTRUE if detector is here and working

Definition at line 682 of file KVDetector.h.

◆ IsPresent()

virtual Bool_t KVDetector::IsPresent ( ) const
inlinevirtual

return the presence or not of the detector

Definition at line 663 of file KVDetector.h.

◆ IsSimMode()

virtual Bool_t KVDetector::IsSimMode ( ) const
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 653 of file KVDetector.h.

◆ IsSingleLayer()

Bool_t KVDetector::IsSingleLayer ( ) const
inline

Returns kTRUE for detectors with a single absorber layer

Definition at line 770 of file KVDetector.h.

◆ MakeDetector()

KVDetector * KVDetector::MakeDetector ( const Char_t name,
Float_t  thickness 
)
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 1116 of file KVDetector.cpp.

◆ Print()

void KVDetector::Print ( Option_t opt = "") const
virtual

Print info on this detector if option="data" the energy loss and raw data are displayed

Reimplemented from KVMaterial.

Definition at line 364 of file KVDetector.cpp.

◆ RangeDet()

Double_t KVDetector::RangeDet ( Double_t x,
Double_t par 
)
private

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 1019 of file KVDetector.cpp.

◆ ReadDefinitionFromFile()

void KVDetector::ReadDefinitionFromFile ( const Char_t envrc)
virtual

Create detector from text file in 'TEnv' format.

Example:

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 1761 of file KVDetector.cpp.

◆ remove_signal_for_calibrator()

void KVDetector::remove_signal_for_calibrator ( KVCalibrator K)
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 678 of file KVDetector.cpp.

◆ RemoveCalibrators()

void KVDetector::RemoveCalibrators ( )
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 700 of file KVDetector.cpp.

◆ RemoveHit()

void KVDetector::RemoveHit ( KVNucleus part)
inline

Remove from list of particles hitting this detector in an event

Definition at line 417 of file KVDetector.h.

◆ RemoveParentStructure()

void KVDetector::RemoveParentStructure ( KVGeoStrucElement elem)

Definition at line 2004 of file KVDetector.cpp.

◆ ReplaceCalibrator()

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 552 of file KVDetector.cpp.

◆ Reset()

virtual void KVDetector::Reset ( Option_t opt = "")
inlinevirtual

Definition at line 399 of file KVDetector.h.

◆ ResetAlignedDetectors()

void KVDetector::ResetAlignedDetectors ( UInt_t  direction = 1)

Definition at line 1867 of file KVDetector.cpp.

◆ SetActiveLayer()

void KVDetector::SetActiveLayer ( KVMaterial actif)
inline

Definition at line 285 of file KVDetector.h.

◆ SetActiveLayerMatrix()

void KVDetector::SetActiveLayerMatrix ( const TGeoHMatrix m)

Set ROOT geometry global matrix transformation to coordinate frame of active layer volume.

Definition at line 2035 of file KVDetector.cpp.

◆ SetActiveLayerShape()

void KVDetector::SetActiveLayerShape ( TGeoBBox s)

Set ROOT geometry shape of active layer volume.

Definition at line 2046 of file KVDetector.cpp.

◆ SetAnalysed()

void KVDetector::SetAnalysed ( Bool_t  b = kTRUE)
inline

Definition at line 447 of file KVDetector.h.

◆ SetDetecting()

void KVDetector::SetDetecting ( Bool_t  yes = kTRUE)
inline

Definition at line 677 of file KVDetector.h.

◆ SetDetectorSignalValue()

void KVDetector::SetDetectorSignalValue ( const KVString type,
Double_t  val 
) const
inline
Parameters
[in]typename/type of signal
[in]valvalue to set for signal

Set value of signal of given type associated with detector

Note
Only to be used with raw detector signals (i.e. not expressions, not calibrated signals)

Definition at line 506 of file KVDetector.h.

◆ SetEnergy()

virtual void KVDetector::SetEnergy ( Double_t  e) const
inlinevirtual

Set value of energy lost in active layer

Reimplemented in KVPhoswich.

Definition at line 361 of file KVDetector.h.

◆ SetEnergyLoss()

virtual void KVDetector::SetEnergyLoss ( Double_t  e) const
inlinevirtual

Reimplemented from KVMaterial.

Definition at line 373 of file KVDetector.h.

◆ SetEntranceWindowMatrix()

void KVDetector::SetEntranceWindowMatrix ( const TGeoHMatrix m)

Set ROOT geometry global matrix transformation to coordinate frame of entrance window.

Definition at line 2057 of file KVDetector.cpp.

◆ SetEntranceWindowShape()

void KVDetector::SetEntranceWindowShape ( TGeoBBox s)

Set ROOT geometry shape of entrance window.

Definition at line 2068 of file KVDetector.cpp.

◆ SetEResAfterDetector()

virtual void KVDetector::SetEResAfterDetector ( Double_t  e)
inlinevirtual

Definition at line 630 of file KVDetector.h.

◆ SetGain()

void KVDetector::SetGain ( Double_t  gain)
inline

Definition at line 842 of file KVDetector.h.

◆ SetMaterial()

void KVDetector::SetMaterial ( const Char_t type)
virtual

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 177 of file KVDetector.cpp.

◆ SetMatrix()

void KVDetector::SetMatrix ( const TGeoHMatrix m)
inlineprivatevirtual

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 186 of file KVDetector.h.

◆ SetNameOfArray()

void KVDetector::SetNameOfArray ( const TString n)
inline

Definition at line 776 of file KVDetector.h.

◆ SetPresent()

void KVDetector::SetPresent ( Bool_t  yes = kTRUE)
inline

Definition at line 668 of file KVDetector.h.

◆ SetSegment()

void KVDetector::SetSegment ( UShort_t  s)
inlinevirtual

set segmentation level - used in reconstruction of particles

Reimplemented in KVINDRADetector.

Definition at line 836 of file KVDetector.h.

◆ SetShape()

void KVDetector::SetShape ( TGeoBBox s)
inlineprivatevirtual

Reimplemented from KVPosition.

Definition at line 190 of file KVDetector.h.

◆ SetSimMode()

virtual void KVDetector::SetSimMode ( Bool_t  on = kTRUE)
inlinevirtual

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 644 of file KVDetector.h.

◆ SetThickness()

void KVDetector::SetThickness ( Double_t  thick)
virtual

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 a simple shape.

Reimplemented from KVMaterial.

Reimplemented in KVINDRADetector, and KVSilicon.

Definition at line 2084 of file KVDetector.cpp.

Member Data Documentation

◆ fAbsorbers

KVList* KVDetector::fAbsorbers
private

list of absorbers making up the detector

Definition at line 236 of file KVDetector.h.

◆ fActiveLayer

KVMaterial* KVDetector::fActiveLayer
private

The active absorber in the detector.

Definition at line 167 of file KVDetector.h.

◆ fAlignedDetectors

TList* KVDetector::fAlignedDetectors[2]
private

stores lists of aligned detectors in both directions

Definition at line 253 of file KVDetector.h.

◆ fCalibrators

KVList* KVDetector::fCalibrators
private

list of associated calibrator objects

Definition at line 234 of file KVDetector.h.

◆ fCalWarning

Int_t KVDetector::fCalWarning
private

just a counter so that missing calibrator warning is given only once

Definition at line 239 of file KVDetector.h.

◆ fDepthInTelescope

Double_t KVDetector::fDepthInTelescope
private

used to store depth of detector in parent telescope

Definition at line 242 of file KVDetector.h.

◆ fDetCounter

Int_t KVDetector::fDetCounter = 0
staticprivate

Definition at line 166 of file KVDetector.h.

◆ fDetecting

Bool_t KVDetector::fDetecting
private

=kTRUE if detector is "detecting", =kFALSE if not

Definition at line 257 of file KVDetector.h.

◆ fDetSignals

KVUniqueNameList KVDetector::fDetSignals
private

list of signals associated with detector

Definition at line 227 of file KVDetector.h.

◆ fELossF

TF1* KVDetector::fELossF
private

parametric function dE in active layer vs. incident energy

Definition at line 248 of file KVDetector.h.

◆ fEResF

TF1* KVDetector::fEResF
private

parametric function Eres residual energy after all layers of detector

Definition at line 249 of file KVDetector.h.

◆ fEResforEinc

Double_t KVDetector::fEResforEinc
private

used by GetIncidentEnergy & GetCorrectedEnergy

Definition at line 252 of file KVDetector.h.

◆ fEWPosition

KVPosition KVDetector::fEWPosition
private

position of entrance window i.e. first volume in detector geometry

Definition at line 163 of file KVDetector.h.

◆ fFName

TString KVDetector::fFName
private

dynamically generated full name of detector

Definition at line 233 of file KVDetector.h.

◆ fGain

Double_t KVDetector::fGain
private

gain of amplifier

Definition at line 238 of file KVDetector.h.

◆ fIdentP

Int_t KVDetector::fIdentP
private

temporary counters, determine state of identified/unidentified particle flags

Definition at line 180 of file KVDetector.h.

◆ fIDTelAlign

KVList* KVDetector::fIDTelAlign
private

list of ID telescopes made of this detector and all aligned detectors placed in front of it

Definition at line 169 of file KVDetector.h.

◆ fIDTele4Ident

TList* KVDetector::fIDTele4Ident
private

list of ID telescopes used for particle ID

Definition at line 170 of file KVDetector.h.

◆ fIDTelescopes

KVList* KVDetector::fIDTelescopes
private

list of ID telescopes to which detector belongs

Definition at line 168 of file KVDetector.h.

◆ fNameOfArray

TString KVDetector::fNameOfArray
private

name of multidetector array this detector is part of

Definition at line 171 of file KVDetector.h.

◆ fNode

KVGeoDetectorNode KVDetector::fNode
private

positioning information relative to other detectors

Definition at line 165 of file KVDetector.h.

◆ fParentStrucList

KVUniqueNameList KVDetector::fParentStrucList
private

list of geometry structures which directly contain this detector

Definition at line 164 of file KVDetector.h.

◆ fParticles

KVList* KVDetector::fParticles
private

list of particles hitting detector in an event

Definition at line 235 of file KVDetector.h.

◆ fPresent

Bool_t KVDetector::fPresent
private

=kTRUE if detector is present, =kFALSE if it has been removed

Definition at line 256 of file KVDetector.h.

◆ fRangeF

TF1* KVDetector::fRangeF
private

parametric function range of particles in detector

Definition at line 250 of file KVDetector.h.

◆ fSegment

UShort_t KVDetector::fSegment
private

used in particle reconstruction

Definition at line 237 of file KVDetector.h.

◆ fSimMode

Bool_t KVDetector::fSimMode
private

=kTRUE when using to simulate detector response, =kFALSE when analysing data

Definition at line 255 of file KVDetector.h.

◆ fSingleLayer

Bool_t KVDetector::fSingleLayer
private

=kTRUE if detector has a single absorber layer

Definition at line 259 of file KVDetector.h.

◆ fTotThickness

Double_t KVDetector::fTotThickness
private

used to store value calculated by GetTotalThicknessInCM

Definition at line 241 of file KVDetector.h.

◆ fUnidentP

Int_t KVDetector::fUnidentP
private

temporary counters, determine state of identified/unidentified particle flags

Definition at line 181 of file KVDetector.h.