KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Attributes | Static Private Attributes | List of all members
KVIDTelescope Class Reference

Base class for all detectors or associations of detectors in array which can identify charged particles.

Charged particle identification is handled by KVIDTelescope and derived classes. A KVIDTelescope is an association of one or more detectors which is capable of particle identification. Although initially conceived in terms of \(\Delta E\)- \(E\) two-stage telescopes, the identification method can be quite different.

Visualising Identification (ID) Grids & Maps

Identification in such 'telescopes' is often associated with a 'grid' or set of graphical cuts permitting to associate the informations measured in the 'telescope' with certain types of particles. For any class derived from KVIDTelescope, the identification grid (base class: KVIDGraph), if one exists, can be obtained and visualised using :

idtelescope->GetIDGrid()->Draw();

Note that if no grid has been defined for the telescope, GetIDGrid() returns a null pointer, so you should only use the previous method if you are absolutely sure that the ID telescope in question has a grid.

Visualising identifications based on fitted functionals

The identification functionals devised by L. Tassan-Got and defined in KVTGIDFunctions can be visualised as identification grids for classes having KVTGIDManager as a base class. In this case a grid can be created and drawn using :

KVIDGrid* g = idtelescope->GetTGIDGrid("name_of_functional", max_X_coord_of_lines);
g->Draw();
Abstract base class for 2D identification grids in e.g. (dE,E) maps.
Definition: KVIDGrid.h:73
const long double g
masses
Definition: KVUnits.h:72

You should keep a pointer to the grid because it is the user's responsibility to delete it after use.

Setting identification parameters

The method SetIdentificationParameters() will be used by the KVMultiDetArray to which this telescope belongs in order to set the parameters of all telescopes of this type in the array. By default, this method looks for the file with name given by the environment variable

[dataset name].IdentificationParameterFile.[telescope label]: [filename]

which is assumed to contain identification grids. The file will be read in by gIDGridManager and the grids added to its list.

Definition at line 83 of file KVIDTelescope.h.

Classes

struct  GraphCoords
 

Public Types

enum  {
  kCalibStatus_OK , kCalibStatus_Calculated , kCalibStatus_NoCalibrations , kCalibStatus_Multihit ,
  kCalibStatus_Coherency
}
 status of particle calibration after Calibrate(KVReconstructedNucleus*) is called More...
 
enum  { kMeanDE_OK , kMeanDE_XtooSmall , kMeanDE_XtooLarge , kMeanDE_NoIdentifier }
 status codes for GetMeanDEFromID More...
 
- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
- Public Types inherited from TObject
enum  EDeprecatedStatusBits
 
enum  EStatusBits
 

Public Member Functions

 KVIDTelescope ()
 
virtual void AddDetector (KVDetector *d)
 
KVIDGridCalculateDeltaE_EGrid (const KVNameValueList &AperZ, Int_t npoints=30, Double_t xfactor=1.)
 
KVIDGridCalculateDeltaE_EGrid (const KVNumberList &Zrange, Int_t deltaMasse, Int_t npoints, Double_t lifetime=-10, UChar_t massformula=0, Double_t xfactor=1.)
 
KVIDGridCalculateDeltaE_EGrid (TH2 *haa_zz, Bool_t Zonly, Int_t npoints)
 
virtual void CalculateParticleEnergy (KVReconstructedNucleus *nuc)
 
virtual Bool_t CanIdentify (Int_t Z, Int_t)
 
void CheckIdentificationBilan (const TString &system)
 Set status of ID Telescope for given system. More...
 
virtual Bool_t CheckTheoreticalIdentificationThreshold (KVNucleus *, Double_t=0.0)
 
virtual Int_t GetCalibStatus () const
 
const Char_tGetDefaultIDGridClass ()
 
KVDetectorGetDetector (const Char_t *name) const
 Return a pointer to the detector in the telescope with the name "name". More...
 
KVDetectorGetDetector (UInt_t n) const
 
KVString GetDetectorLabelsForGridCoord (const KVString &axis) const
 
UInt_t GetDetectorRank (const KVDetector *kvd) const
 
const KVListGetDetectors () const
 
KVGroupGetGroup () const
 
UInt_t GetGroupNumber ()
 
virtual UShort_t GetIDCode ()
 
KVIDGraphGetIDGrid ()
 
KVIDGraphGetIDGrid (const Char_t *)
 
KVIDGraphGetIDGrid (Int_t)
 Return pointer to grid using position in list. First grid has index = 1. More...
 
void GetIDGridCoords (Double_t &X, Double_t &Y, KVIDGraph *grid, Double_t x=-1, Double_t y=-1)
 
Double_t GetIDGridXCoord (KVIDGraph *) const
 
Double_t GetIDGridYCoord (KVIDGraph *) const
 
virtual Double_t GetIDMapX (Option_t *opt="")
 
virtual Double_t GetIDMapY (Option_t *opt="")
 
const KVListGetListOfIDGrids () const
 
virtual Double_t GetMeanDEFromID (Int_t &status, Int_t Z, Int_t A=-1, Double_t Eres=-1.0)
 
virtual Double_t GetPedestalX (Option_t *opt="")
 
virtual Double_t GetPedestalY (Option_t *opt="")
 
UInt_t GetSize () const
 
Bool_t HasDetector (const KVDetector *d) const
 
Bool_t HasMassID () const
 
virtual Bool_t Identify (KVIdentificationResult *, Double_t x=-1., Double_t y=-1.)
 
void init ()
 default init More...
 
virtual void Initialize (void)
 
Bool_t IsIndependent () const
 
virtual Bool_t IsReadyForID ()
 
void LoadIdentificationParameters (const Char_t *filename, const KVMultiDetArray *multidet)
 This method add to the gIDGridManager list the identification grids. More...
 
virtual TGraphMakeIDLine (KVNucleus *nuc, Double_t Emin, Double_t Emax, Double_t Estep=0.0)
 
virtual void Print (Option_t *opt="") const
 
void ReadIdentificationParameterFiles (const Char_t *filename, const KVMultiDetArray *multidet)
 
virtual void RemoveGrids ()
 
virtual void RemoveIdentificationParameters ()
 
void SetGroup (KVGroup *kvg)
 
void SetHasMassID (Bool_t yes=kTRUE)
 
virtual void SetIDCode (UShort_t c)
 
virtual Bool_t SetIdentificationParameters (const KVMultiDetArray *)
 
virtual void SetIdentificationStatus (KVReconstructedNucleus *)
 
void SetIDGrid (KVIDGraph *)
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor. More...
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type. More...
 
 KVBase (const KVBase &)
 copy ctor More...
 
virtual ~ KVBase ()
 
virtual void Clear (Option_t *opt="")
 Clear object properties : name, type/title, number, label. More...
 
virtual void Copy (TObject &) const
 Make a copy of this object. More...
 
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 More...
 
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 ()
 
virtual TObjectClone (const char *newname="") const
 
virtual Int_t Compare (const TObject *obj) const
 
virtual void FillBuffer (char *&buffer)
 
virtual const char * GetName () const
 
virtual const char * GetTitle () const
 
virtual ULong_t Hash () const
 
virtual Bool_t IsSortable () const
 
virtual void ls (Option_t *option="") const
 
TNamedoperator= (const TNamed &rhs)
 
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
 
- 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=0)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 
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)
 
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)
 
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)
 
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=0, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 

Static Public Member Functions

static KVIDTelescopeMakeIDTelescope (const Char_t *name)
 
static void OpenIdentificationBilan (const TString &path)
 Open IdentificationBilan.dat file with given path. More...
 
- 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. 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 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.) More...
 
static const Char_tGetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetKVBuildDate ()
 Returns KaliVeda build date. More...
 
static const Char_tGetKVBuildDir ()
 Returns top-level directory used for build. More...
 
static const Char_tGetKVBuildTime ()
 Returns KaliVeda build time. More...
 
static const Char_tGetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More...
 
static const Char_tGetKVBuildUser ()
 Returns username of person who performed build. More...
 
static const Char_tGetKVSourceDir ()
 Returns top-level directory of source tree used for build. More...
 
static const Char_tGetKVVersion ()
 Returns KaliVeda version string. More...
 
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. More...
 
static const Char_tgitCommit ()
 Returns last git commit of sources. More...
 
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. More...
 
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 TObject
static Longptr_t GetDtorOnly ()
 
static Bool_t GetObjectStat ()
 
static void SetDtorOnly (void *obj)
 
static void SetObjectStat (Bool_t stat)
 

Protected Types

enum  { kMassID = BIT(15) , kReadyForID = BIT(16) }
 

Protected Member Functions

void addLineToGrid (KVIDGrid *gg, int zz, int aa, int npoints)
 
KVDetectorSignalGetSignalFromGridVar (const KVString &var, const KVString &axe, KVString &det_labels)
 
KVIDGridnewGrid (bool onlyZ)
 
void SetLabelFromURI (const Char_t *uri)
 
- 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

Int_t fCalibStatus
 temporary variable holding status code for last call to Calibrate(KVReconstructedNucleus*) More...
 
KVUnownedList fDetectors
 list of detectors in telescope More...
 
std::unordered_map< KVIDGraph *, GraphCoordsfGraphCoords
 X/Y coordinates from detector signals for ID maps. More...
 
KVGroupfGroup
 group to which telescope belongs More...
 
KVUnownedList fIDGrids
 identification grid(s) More...
 
std::unique_ptr< KVParticleConditionfMassIDValidity
 may be used to limit mass identification to certain Z and/or A range More...
 
KVList fMultiDetExpressions
 used to clean up any multi-detector signal expressions generated to calculate X/Y coordinates More...
 
- Protected Attributes inherited from KVBase
TString fLabel
 label for the object More...
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

Private Attributes

UShort_t fIDCode
 general id code corresponding to correct identification by this type of telescope More...
 

Static Private Attributes

static TEnvfgIdentificationBilan = nullptr
 

Additional Inherited Members

- Public Attributes inherited from TObject
 kBitMask
 
 kCanDelete
 
 kCannotPick
 
 kHasUUID
 
 kInconsistent
 
 kInvalidObject
 
 kIsOnHeap
 
 kIsReferenced
 
 kMustCleanup
 
 kNoContextMenu
 
 kNotDeleted
 
 kObjInCanvas
 
 kOverwrite
 
 kSingleKey
 
 kWriteDelete
 
 kZombie
 

#include <KVIDTelescope.h>

Inheritance diagram for KVIDTelescope:
Inheritance graph
[legend]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
kMassID 
kReadyForID 

Definition at line 93 of file KVIDTelescope.h.

◆ anonymous enum

anonymous enum

status of particle calibration after Calibrate(KVReconstructedNucleus*) is called

Enumerator
kCalibStatus_OK 
kCalibStatus_Calculated 
kCalibStatus_NoCalibrations 
kCalibStatus_Multihit 
kCalibStatus_Coherency 

Definition at line 119 of file KVIDTelescope.h.

◆ anonymous enum

anonymous enum

status codes for GetMeanDEFromID

Enumerator
kMeanDE_OK 
kMeanDE_XtooSmall 
kMeanDE_XtooLarge 
kMeanDE_NoIdentifier 

Definition at line 248 of file KVIDTelescope.h.

Constructor & Destructor Documentation

◆ KVIDTelescope()

KVIDTelescope::KVIDTelescope ( )

Definition at line 51 of file KVIDTelescope.cpp.

Member Function Documentation

◆ AddDetector()

void KVIDTelescope::AddDetector ( KVDetector d)
virtual

Add a detector to the telescope.

Detectors must be added in the order they will be hit by impinging particles, with the last detector being the one particles stopped in the telescope will stop in. i.e. dE1, dE2, ..., Eres

Update name of telescope to "ID_[name of 1st detector]_[name of 2nd detector]_ ... _[name of last detector]"

Reimplemented in KVFAZIAIDTelescope.

Definition at line 222 of file KVIDTelescope.cpp.

◆ addLineToGrid()

void KVIDTelescope::addLineToGrid ( KVIDGrid idgrid,
int  zz,
int  aa,
int  npoints 
)
protected

loop over energy first find : ****E1 = energy at which particle passes 1st detector and starts to enter in the 2nd one**** E2 = energy at which particle passes the 2nd detector then perform npoints calculations between these two energies and use these to construct a KVIDZALine

Definition at line 809 of file KVIDTelescope.cpp.

◆ CalculateDeltaE_EGrid() [1/3]

KVIDGrid * KVIDTelescope::CalculateDeltaE_EGrid ( const KVNameValueList AperZ,
Int_t  npoints = 30,
Double_t  xfactor = 1. 
)

Create a dE-E grid (energy loss in detector 1 versus residual energy in detector 2) for a given list of isotopes

  • AperZ : list of A for each Z. (ex: "1=1-3,2=3-4 5,3=6-8,4=7 9-12"...)
  • npoints : number of points in each generated line
  • xfactor : scales the detector 2 thickness to prolongate the lines

Definition at line 1586 of file KVIDTelescope.cpp.

◆ CalculateDeltaE_EGrid() [2/3]

KVIDGrid * KVIDTelescope::CalculateDeltaE_EGrid ( const KVNumberList Zrange,
Int_t  deltaA,
Int_t  npoints,
Double_t  lifetime = -10,
UChar_t  massformula = 0,
Double_t  xfactor = 1. 
)

Create a dE-E grid (energy loss in detector 1 versus residual energy in detector 2) for a given list of isotopes

  • Zrange : list of element for which we create lines
  • deltaA : number of isotopes generated for each Z around massformula (ex: deltaA=1, Aref-1 Aref Aref+1)
  • npoints : number of points in each generated line
  • lifetime: remove isotopes with lifetime lower than this value
  • xfactor : scales the detector 2 thickness to prolongate the lines

Definition at line 1627 of file KVIDTelescope.cpp.

◆ CalculateDeltaE_EGrid() [3/3]

KVIDGrid * KVIDTelescope::CalculateDeltaE_EGrid ( TH2 haa_zz,
Bool_t  Zonly,
Int_t  npoints 
)

Create a dE-E grid (energy loss in detector 1 versus residual energy in detector 2) for a given list of isotopes

  • haa_zz : lines will be generated for A,Z filled with 1 in this histogram
  • Zonly : if true, generate only one line per Z with the (Z) of the histogram
  • npoints : number of points in each generated line

Definition at line 1671 of file KVIDTelescope.cpp.

◆ CalculateParticleEnergy()

void KVIDTelescope::CalculateParticleEnergy ( KVReconstructedNucleus nuc)
virtual

The energy of each particle is calculated as follows:

E = dE_1 + dE_2 + ... + dE_N

dE_1, dE_2, ... = energy losses measured in each detector through which the particle has passed (or stopped, in the case of dE_N). These energy losses are corrected for (Z,A)-dependent effects such as pulse-heigth defect in silicon detectors, losses in windows of gas detectors, etc.

Whenever possible, the energy loss for fired detectors which are uncalibrated or not functioning is calculated. In this case the status returned by GetCalibStatus() will be KVIDTelescope::kCalibStatus_Calculated. If none of the detectors is calibrated, the particle's energy cannot be calculated & the status will be KVIDTelescope::kCalibStatus_NoCalibrations. Otherwise, the status code will be KVIDTelescope::kCalibStatus_OK. status code

Definition at line 1375 of file KVIDTelescope.cpp.

◆ CanIdentify()

virtual Bool_t KVIDTelescope::CanIdentify ( Int_t  Z,
Int_t   
)
inlinevirtual

Used for filtering simulations Returns kTRUE if this telescope is theoretically capable of identifying a given nucleus, without considering thresholds etc. By default this method returns true for Z>0, i.e. all KVIDTelescopes are in principle dE-E telescopes used to identify charged ions.

Reimplemented in KVIDCsI, KVIDINDRACsI, KVIDChIoSi, KVIDChIoCsI, and KVFAZIAIDCsI.

Definition at line 269 of file KVIDTelescope.h.

◆ CheckIdentificationBilan()

void KVIDTelescope::CheckIdentificationBilan ( const TString system)

Set status of ID Telescope for given system.

Definition at line 1920 of file KVIDTelescope.cpp.

◆ CheckTheoreticalIdentificationThreshold()

Bool_t KVIDTelescope::CheckTheoreticalIdentificationThreshold ( KVNucleus ION,
Double_t  EINC = 0.0 
)
virtual

Return kTRUE if energy of ION is > minimum incident energy required for identification This theoretical limit is defined here to be the incident energy for which the dE in the first detector of a dE-E telescope is maximum. If EINC>0 it is assumed to be the energy of the ion just before the first detector (case where ion would have to pass other detectors before reaching this telescope).

If this is not a dE-E telescope, we return kTRUE by default.

Reimplemented in KVIDChIoSi, KVIDChIoCsI, and KVFAZIAIDSiPSA.

Definition at line 1807 of file KVIDTelescope.cpp.

◆ GetCalibStatus()

virtual Int_t KVIDTelescope::GetCalibStatus ( ) const
inlinevirtual

When called just after CalculateParticleEnergy(KVReconstructedNucleus*) this method returns a status code which is one of KVIDTelescope::kCalibStatus_OK, : fine, OK, all detectors calculated and functioning properly KVIDTelescope::kCalibStatus_Calculated, : one or more detectors not calibrated/functioning, energy loss calculated KVIDTelescope::kCalibStatus_NoCalibrations : no calibrations available for any detectors

Definition at line 176 of file KVIDTelescope.h.

◆ GetDefaultIDGridClass()

const Char_t * KVIDTelescope::GetDefaultIDGridClass ( )

Returns name of default ID grid class for this ID telescope. This is defined in a .kvrootrc configuration file by one of the following: KVIDTelescope.DefaultGrid: KVIDTelescope.DefaultGrid.[type]: where [type] is the type of this identification telescope (which is given by the character string returned by method GetLabel()... sorry :( ) If no default grid is defined for the specific type of this telescope, the default defined by KVIDTelescope.DefaultGrid is used.

Definition at line 1562 of file KVIDTelescope.cpp.

◆ GetDetector() [1/2]

KVDetector * KVIDTelescope::GetDetector ( const Char_t name) const

Return a pointer to the detector in the telescope with the name "name".

Definition at line 286 of file KVIDTelescope.cpp.

◆ GetDetector() [2/2]

KVDetector* KVIDTelescope::GetDetector ( UInt_t  n) const
inline

returns the nth detector in the telescope structure

Definition at line 134 of file KVIDTelescope.h.

◆ GetDetectorLabelsForGridCoord()

KVString KVIDTelescope::GetDetectorLabelsForGridCoord ( const KVString axis) const

Returns a comma-separated list of the labels of the detectors used to determine the "x" or "y" coordinates of the identification grid(s)

If there is more than 1 grid and the list is not the same for all grids, prints a warning message.

Parameters
[in]axisname of grid axis i.e. "x", "X", "y" or "Y" (case insensitive)

Definition at line 944 of file KVIDTelescope.cpp.

◆ GetDetectorRank()

UInt_t KVIDTelescope::GetDetectorRank ( const KVDetector kvd) const
inline

returns position (1=front, 2=next, etc.) detector in the telescope structure returns 0 if detector not found in telescope

Definition at line 151 of file KVIDTelescope.h.

◆ GetDetectors()

const KVList* KVIDTelescope::GetDetectors ( ) const
inline

Definition at line 130 of file KVIDTelescope.h.

◆ GetGroup()

KVGroup * KVIDTelescope::GetGroup ( ) const

Definition at line 302 of file KVIDTelescope.cpp.

◆ GetGroupNumber()

UInt_t KVIDTelescope::GetGroupNumber ( )

Definition at line 321 of file KVIDTelescope.cpp.

◆ GetIDCode()

virtual UShort_t KVIDTelescope::GetIDCode ( )
inlinevirtual

return the general identification code (can be a bitmask) for particles correctly identified with this type of ID telescope

Definition at line 255 of file KVIDTelescope.h.

◆ GetIDGrid() [1/3]

KVIDGraph * KVIDTelescope::GetIDGrid ( )

Return the first in the list of identification grids used by this telescope (this is for backwards compatibility with ID telescopes which had only one grid).

Definition at line 984 of file KVIDTelescope.cpp.

◆ GetIDGrid() [2/3]

KVIDGraph * KVIDTelescope::GetIDGrid ( const Char_t label)

Return pointer to grid using "label" to search in list of grids associated to this telescope.

Definition at line 1014 of file KVIDTelescope.cpp.

◆ GetIDGrid() [3/3]

KVIDGraph * KVIDTelescope::GetIDGrid ( Int_t  index)

Return pointer to grid using position in list. First grid has index = 1.

Definition at line 997 of file KVIDTelescope.cpp.

◆ GetIDGridCoords()

void KVIDTelescope::GetIDGridCoords ( Double_t X,
Double_t Y,
KVIDGraph grid,
Double_t  x = -1,
Double_t  y = -1 
)
inline

Returns coordinates to be used in grid (defined by VARX/Y parameters of grid).

If x!=-1 or y!=-1, their value(s) is(are) used instead of whatever current value of the detector signals defined by VARX/Y

Definition at line 206 of file KVIDTelescope.h.

◆ GetIDGridXCoord()

Double_t KVIDTelescope::GetIDGridXCoord ( KVIDGraph g) const

Return value of X coordinate to be used with the given ID grid This corresponds to whatever was given as parameter "VARX" for the grid

Definition at line 1070 of file KVIDTelescope.cpp.

◆ GetIDGridYCoord()

Double_t KVIDTelescope::GetIDGridYCoord ( KVIDGraph g) const

Return value of Y coordinate to be used with the given ID grid This corresponds to whatever was given as parameter "VARY" for the grid

Definition at line 1086 of file KVIDTelescope.cpp.

◆ GetIDMapX()

Double_t KVIDTelescope::GetIDMapX ( Option_t opt = "")
virtual

Definition at line 1026 of file KVIDTelescope.cpp.

◆ GetIDMapY()

Double_t KVIDTelescope::GetIDMapY ( Option_t opt = "")
virtual

Definition at line 1101 of file KVIDTelescope.cpp.

◆ GetListOfIDGrids()

const KVList* KVIDTelescope::GetListOfIDGrids ( ) const
inline

Definition at line 192 of file KVIDTelescope.h.

◆ GetMeanDEFromID()

Double_t KVIDTelescope::GetMeanDEFromID ( Int_t status,
Int_t  Z,
Int_t  A = -1,
Double_t  Eres = -1.0 
)
virtual

Returns the Y-axis value in the 2D identification map containing isotope (Z,A) corresponding to either the given X-axis/Eres value or the current X-axis value given by GetIDGridXCoord() If no mass information is available, just give Z.

In this (default) implementation this means scanning the ID grids associated with this telescope until we find an identification line Z or (Z,A), and then interpolating the Y-coordinate for the current X-coordinate value.

Status variable can take one of following values:

KVIDTelescope::kMeanDE_OK all OK KVIDTelescope::kMeanDE_XtooSmall X-coordinate is smaller than smallest X-coordinate of ID line KVIDTelescope::kMeanDE_XtooLarge X-coordinate is larger than largest X-coordinate of ID line KVIDTelescope::kMeanDE_NoIdentifie No identifier found for Z or (Z,A)

Definition at line 1750 of file KVIDTelescope.cpp.

◆ GetPedestalX()

Double_t KVIDTelescope::GetPedestalX ( Option_t opt = "")
virtual

Returns the pedestal associated with the 2nd detector of the telescope, optionally depending on the given option string. By default this returns 0, and should be overridden in specific implementations.

Definition at line 1039 of file KVIDTelescope.cpp.

◆ GetPedestalY()

Double_t KVIDTelescope::GetPedestalY ( Option_t opt = "")
virtual

Returns the pedestal associated with the 1st detector of the telescope, optionally depending on the given option string. By default this returns 0, and should be overridden in specific implementations.

Definition at line 1055 of file KVIDTelescope.cpp.

◆ GetSignalFromGridVar()

KVDetectorSignal * KVIDTelescope::GetSignalFromGridVar ( const KVString var,
const KVString axe,
KVString det_labels 
)
protected

Deduce & return pointer to detector signal from grid VARX/VARY parameter

To be valid, grid VARX/Y parameters should be set using mathematical expressions which use the following references to detector signals for the telescope:

[signal name]
OR [det_label]::[signal name]

where

[signal_name] = name of a signal defined for 1 of the detectors of the telescope
[det_label] = optional detector label i.e. string returned by
KVDetector::GetLabel() method for detector
const Char_t * GetLabel() const
Definition: KVBase.h:198
auto * a

If [det_label] is not given, we assume for VARX the last (E) detector, while for VARY we assume the first (dE) detector. If this telescope has only one detector, we use it for both variables.

To see all available signals for a detector, use

const KVSeqCollection & GetListOfDetectorSignals() const
Definition: KVDetector.h:785

Example

Imagine a telescope which combines 2 detectors, with labels SI and CSI (in that order, i.e. SI is the dE detector, CSI is the residual energy detector). The following cases are valid:

VARX = Energy : use 'Energy' signal of CSI detector (default for VARX)
VARY = ADC : use 'ADC' signal of SI detector (default for VARY)
VARY = CSI::Energy : use 'Energy' signal of CSI detector (overrides default for VARY, SI)
VARX = (Q3-Q3Fast)/(0.8*Q3) : uses 'Q3' and 'Q3Fast' signals of CSI detector (default for VARX)
VARY = 1.5*SI::ADC - CSI::Q3Fast/CSI::Q3 : combination of signals from both detectors

The 'det_labels' string will be filled with a comma-separated list of the labels of each detector used in the expressions.

Note
if any signals are not defined, they will be evaluated as zero

Definition at line 634 of file KVIDTelescope.cpp.

◆ GetSize()

UInt_t KVIDTelescope::GetSize ( ) const
inline

returns number of detectors in telescope

Definition at line 158 of file KVIDTelescope.h.

◆ HasDetector()

Bool_t KVIDTelescope::HasDetector ( const KVDetector d) const
inline

return true if detector is part of telescope

Definition at line 146 of file KVIDTelescope.h.

◆ HasMassID()

Bool_t KVIDTelescope::HasMassID ( ) const
inline

Returns kTRUE if this telescope is capable of identifying particles' mass (A) as well as their charge (Z).

Definition at line 223 of file KVIDTelescope.h.

◆ Identify()

Bool_t KVIDTelescope::Identify ( KVIdentificationResult idr,
Double_t  x = -1.,
Double_t  y = -1. 
)
virtual

Default identification method.

Works for ID telescopes for which one or more identification grids are defined, each with VARX/VARY parameters corresponding to a KVDetectorSignal or KVDetectorSignalExpression associated with one or other of the detectors constituting the telescope.

For identifications using more than one grid, the default behaviour is to try identification with each grid in turn until a successful identification is obtained. The order in which the grids should be tried should be specified by a variable with the following format:

[Dataset].[Array Name].[ID type].GridOrder: [Grid1],[Grid2],...
int type
RooCmdArg Name(const char *name)
const char * Array

where the name of each grid is given as "VARY_VARX". If no variable defining the order is found, the grids will be tried in the order they were found in the file containing the grids for this telescope.

The KVIdentificationResult is first Clear()ed; then it is filled with IDtype = GetType() of this identification telescope, IDattempted = true, and the results of the identification procedure.

Reimplemented in KVIDSiCsI, KVIDINDRACsI, KVIDChIoSi, KVFAZIAIDSiCsI_FAZIASYM, KVFAZIAIDSiCsI, and KVFAZIAIDCsI.

Definition at line 442 of file KVIDTelescope.cpp.

◆ init()

void KVIDTelescope::init ( void  )

default init

Definition at line 62 of file KVIDTelescope.cpp.

◆ Initialize()

void KVIDTelescope::Initialize ( void  )
virtual

Default initialisation for ID telescopes. If telescope has at least 1 grid then it is ready to identify particles after initialising the grid(s) (kReadyForID=true); otherwise kReadyForID is set to kFALSE, unless the current dataset (if defined) has been declared to have no associated identification/calibration parameters, in which case kReadyForID is by default set to kTRUE (for filtering simulations).

In order to enable mass identification for certain telescopes without a dedicated implementation (e.g. for simulating array response), put the following lines in your .kvrootrc:

[dataset].[telescope label].MassID: yes

If you want to limit mass identification to certain values of Z and/or A, add the following line:

[dataset].[telescope label].MassID.Validity: [expression]

where [expression] is some valid C++ boolean expression involving Z and/or A, for example

[dataset].[telescope label].MassID.Validity: (Z>3)&&(A<20)

For identifications using more than one grid, the default behaviour is to try identification with each grid in turn until a successful identification is obtained. The order in which the grids should be tried should be specified by a variable with the following format:

[Dataset].[telescope label].GridOrder: [Grid1],[Grid2],...

Reimplemented in KVIDCsI, KVIDChIoCsI, KVIDSiCsI, KVIDINDRACsI, KVIDChIoSi, KVFAZIAIDSiPSA, and KVFAZIAIDSiCsI_FAZIASYM.

Definition at line 103 of file KVIDTelescope.cpp.

◆ IsIndependent()

Bool_t KVIDTelescope::IsIndependent ( ) const
inline

Returns kTRUE is this identification can be made independently of any other telescopes/detectors in the group/array etc. This is the case if

  • the identification is made with a single detector e.g. fast-slow id in Cesium Iodide
  • for a dE-E telescope, if only one trajectory passes through both detectors

Definition at line 279 of file KVIDTelescope.h.

◆ IsReadyForID()

virtual Bool_t KVIDTelescope::IsReadyForID ( )
inlinevirtual

Returns kTRUE if telescope has been correctly initialised for identification. Test after Initialize() method has been called.

Definition at line 238 of file KVIDTelescope.h.

◆ LoadIdentificationParameters()

void KVIDTelescope::LoadIdentificationParameters ( const Char_t filename,
const KVMultiDetArray multidet 
)

This method add to the gIDGridManager list the identification grids.

Definition at line 1292 of file KVIDTelescope.cpp.

◆ MakeIDLine()

TGraph * KVIDTelescope::MakeIDLine ( KVNucleus nuc,
Double_t  Emin,
Double_t  Emax,
Double_t  Estep = 0.0 
)
virtual

For a given nucleus, generate a TGraph representing the line in the deltaE-E plane of the telescope which can be associated with nuclei of this (A,Z) with total incident energies between the two limits. NOTE: if there are other absorbers/detectors placed before this telescope, the energy losses of the particle in these will be taken into account. If the step in energy is not given, it is taken equal to 100 equal steps between min and max. The TGraph should be deleted by the user after use.

Definition at line 338 of file KVIDTelescope.cpp.

◆ MakeIDTelescope()

KVIDTelescope * KVIDTelescope::MakeIDTelescope ( const Char_t uri)
static

Static function which will create an instance of the KVIDTelescope-derived class corresponding to 'name' These are defined as 'Plugin' objects in the file $KVROOT/KVFiles/.kvrootrc :

# The KVMultiDetArray::GetIDTelescopes(KVDetector*de, KVDetector*e) method uses these plugins to
# create KVIDTelescope instances adapted to the specific array geometry and detector types.
# For each pair of detectors we look for a plugin with one of the following names:
# [name_of_dataset].de_detector_type[de detector thickness]-e_detector_type[de detector thickness]
# Each characteristic in [] brackets may or may not be present in the name; first we test for names
# with these characteristics, then all combinations where one or other of the characteristics is not present.
# In addition, we first test all combinations which begin with [name_of_dataset].
# The first plugin found in this order will be used.
# In addition, if for one of the two detectors there is a plugin called
# [name_of_dataset].de_detector_type[de detector thickness]
# [name_of_dataset].e_detector_type[e detector thickness]
# then we add also an instance of this 1-detector identification telescope.

Definition at line 1144 of file KVIDTelescope.cpp.

◆ newGrid()

KVIDGrid * KVIDTelescope::newGrid ( bool  onlyZ)
protected

Definition at line 781 of file KVIDTelescope.cpp.

◆ OpenIdentificationBilan()

void KVIDTelescope::OpenIdentificationBilan ( const TString path)
static

Open IdentificationBilan.dat file with given path.

Definition at line 1907 of file KVIDTelescope.cpp.

◆ Print()

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

print out telescope structure if opt="fired" only fired detectors are printed

Reimplemented from KVBase.

Definition at line 253 of file KVIDTelescope.cpp.

◆ ReadIdentificationParameterFiles()

void KVIDTelescope::ReadIdentificationParameterFiles ( const Char_t filename,
const KVMultiDetArray multidet 
)

In the case where the identification grids are stored in several files, this method parse the file found with the following environment variable:

[dataset name].IdentificationParameterList.[telescope label]: [filename]

which contains the list of files containing the identification grids.

Definition at line 1265 of file KVIDTelescope.cpp.

◆ RemoveGrids()

void KVIDTelescope::RemoveGrids ( )
virtual

Remove all identification grids for this ID telescope Grids are not deleted as this is handled by gIDGridManager

Definition at line 1114 of file KVIDTelescope.cpp.

◆ RemoveIdentificationParameters()

void KVIDTelescope::RemoveIdentificationParameters ( )
virtual

Remove identification parameters from telescope in such a way that they can subsequently be reset e.g. with a new version. This is used by KVMultiDetArray::UpdateIdentifications. Child classes with specific SetIdentificationParameters methods should also redefine this method in order to remove (destroy) cleanly the objects created in SetIdentificationParameters.

This default method takes the list of grids associated to the telescope, and for each one: 1) checks if it is still in the gIDGridManager's list 2) if yes, delete the grid and remove it from gIDGridManager

Definition at line 1325 of file KVIDTelescope.cpp.

◆ SetGroup()

void KVIDTelescope::SetGroup ( KVGroup kvg)

Definition at line 312 of file KVIDTelescope.cpp.

◆ SetHasMassID()

void KVIDTelescope::SetHasMassID ( Bool_t  yes = kTRUE)
inline

Definition at line 216 of file KVIDTelescope.h.

◆ SetIDCode()

virtual void KVIDTelescope::SetIDCode ( UShort_t  c)
inlinevirtual

used by KVMultiDetArray to set the id code for each type of identification telescope

Definition at line 262 of file KVIDTelescope.h.

◆ SetIdentificationParameters()

Bool_t KVIDTelescope::SetIdentificationParameters ( const KVMultiDetArray multidet)
virtual

Initialise the identification parameters (grids, etc.) of ALL identification telescopes of this kind (label) in the multidetector array. Therefore this method need only be called once, and not called for each telescope. The kind/label (returned by GetLabel) of the telescope corresponds to the URI used to find the plugin class in $KVROOT/KVFiles/.kvrootrc. By default, this method looks for the file with name given by the environment variable

[dataset name].IdentificationParameterList.[telescope label]: [filename]

which is assumed to contain the list of files containing the identification grids.

If not such envionment variable is found, the method looks for another one:

[dataset name].IdentificationParameterFile.[telescope label]: [filename]

which is assumed to contain identification grids.

Definition at line 1216 of file KVIDTelescope.cpp.

◆ SetIdentificationStatus()

void KVIDTelescope::SetIdentificationStatus ( KVReconstructedNucleus n)
virtual

For filtering simulations Set the n->IsZMeasured() and n->IsAMeasured() status of the particle In principle this depends on whether this telescope provides mass identification or not, but this may depend on the particle's energy. If A was not measured, it will be replaced with a value calculated from whatever mass formula is used for the particle.

In order to enable mass identification for certain telescopes without a dedicated implementation (e.g. for simulating array response), put the following lines in your .kvrootrc:

[dataset].[telescope label].MassID: yes

If you want to limit mass identification to certain values of Z and/or A, add the following line:

[dataset].[telescope label].MassID.Validity: [expression]

where [expression] is some valid C++ boolean expression involving Z and/or A, for example

[dataset].[telescope label].MassID.Validity: (Z>3)&&(A<20)

Then this expression will be tested here in order to determine particle identification status

Reimplemented in KVIDINDRACsI, KVFAZIAIDTelescope, KVFAZIAIDSiCsI_FAZIASYM, and KVFAZIAIDSiPSA.

Definition at line 1854 of file KVIDTelescope.cpp.

◆ SetIDGrid()

void KVIDTelescope::SetIDGrid ( KVIDGraph grid)

Add an identification grid to the list of grids used by this telescope.

If the grid's VARX and VARY parameters are set and contain the names of valid detector signals (see formatting rules below) they will be used by GetIDGridXCoord() and GetIDGridYCoord() to return the coordinates needed to perform particle identification using the grid.

The name of the grid is set to "VARY_VARX" (just the signal names, not the detector label part - see below). This value will be stored in the KVIdentificationResult corresponding to an attempted identification of a KVReconstructedNucleus by this grid.

VARX/VARY Formatting

To be valid, grid VARX/Y parameters should be set as follows:

[signal name]
or [det_label]::[signal name]

where

[det_label] (optional) = detector label i.e. string returned by KVDetector::GetLabel()
method for detector. By default, VARX is assumed to be the Eres detector
or last detector and VARY the DE detector or first detector
[signal_name] = name of a signal defined for the detector, possibly depending
on availability of calibration
To see all available signals for a detector, use

Definition at line 530 of file KVIDTelescope.cpp.

◆ SetLabelFromURI()

void KVIDTelescope::SetLabelFromURI ( const Char_t uri)
protected

PRIVATE METHOD Sets label of telescope based on URI of plugin describing child class for this telescope

Definition at line 1186 of file KVIDTelescope.cpp.

Member Data Documentation

◆ fCalibStatus

Int_t KVIDTelescope::fCalibStatus
protected

temporary variable holding status code for last call to Calibrate(KVReconstructedNucleus*)

Definition at line 97 of file KVIDTelescope.h.

◆ fDetectors

KVUnownedList KVIDTelescope::fDetectors
protected

list of detectors in telescope

Definition at line 90 of file KVIDTelescope.h.

◆ fgIdentificationBilan

TEnv * KVIDTelescope::fgIdentificationBilan = nullptr
staticprivate

Definition at line 86 of file KVIDTelescope.h.

◆ fGraphCoords

std::unordered_map<KVIDGraph*, GraphCoords> KVIDTelescope::fGraphCoords
mutableprotected

X/Y coordinates from detector signals for ID maps.

Definition at line 108 of file KVIDTelescope.h.

◆ fGroup

KVGroup* KVIDTelescope::fGroup
protected

group to which telescope belongs

Definition at line 91 of file KVIDTelescope.h.

◆ fIDCode

UShort_t KVIDTelescope::fIDCode
private

general id code corresponding to correct identification by this type of telescope

Definition at line 87 of file KVIDTelescope.h.

◆ fIDGrids

KVUnownedList KVIDTelescope::fIDGrids
protected

identification grid(s)

Definition at line 92 of file KVIDTelescope.h.

◆ fMassIDValidity

std::unique_ptr<KVParticleCondition> KVIDTelescope::fMassIDValidity
protected

may be used to limit mass identification to certain Z and/or A range

Definition at line 100 of file KVIDTelescope.h.

◆ fMultiDetExpressions

KVList KVIDTelescope::fMultiDetExpressions
protected

used to clean up any multi-detector signal expressions generated to calculate X/Y coordinates

Definition at line 109 of file KVIDTelescope.h.


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