20#include "KVMaterial.h"
21#include "KVDetector.h"
22#include "KVTelescope.h"
23#include "KVIDTelescope.h"
25#include "KVIDINDRACsI.h"
26#include "KVIDChIoSi.h"
27#include "KVIDChIoCsI.h"
28#include "KVIDChIoSi75.h"
29#include "KVIDSi75SiLi.h"
30#include "KVIDPhoswich.h"
37#include "KVDetectorEvent.h"
38#include "KVNucleusEvent.h"
40#include "INDRAGeometryBuilder.h"
42#include "KVGeoNavigator.h"
43#ifdef WITH_BUILTIN_GRU
44#include <KVGANILDataReader.h>
46#include <KVDBChIoPressures.h>
47#include <KVGeoImport.h>
48#include <KVRangeTableGeoNavigator.h>
49#include <KVRawDataReader.h>
51#include "KVMFMDataFileReader.h"
52#include "MFMEbyedatFrame.h"
54#include "MFMMesytecMDPPFrame.h"
55#include "mesytec_buffer_reader.h"
58#include "KVINDRAGroupReconstructor.h"
183 path =
"indra-struct.env";
193 while (!lruns.
End()) {
199 Info(
"BuildGeometry",
"Additional geometry for run=%d in file #%s#",
fCurrentRun, path.
Data());
202 Warning(
"BuildGeometry",
"fichier %s inconnu", path.
Data());
233 Info(
"BuildLayer",
"Building layer %d:%s", number,
name);
236 while (!rings.
End()) {
254 Info(
"BuildRing",
"Building ring %d (%s)", number, prefix);
268 phi_min = (phi_min < 0. ? phi_min + 360. : phi_min);
269 dphi = (dphi < 0. ? 360. / ntel : dphi);
272 phi_max = (phi_max > 360. ? phi_max - 360. : phi_max);
277 UInt_t counter = num_first;
278 for (
int i = 0; i < ntel; i++) {
281 phi = (phi + dphi > 360. ? (phi + dphi - 360.) : (phi + dphi));
305 telescopes.
Begin(
" ");
307 while (!telescopes.
End()) {
317 detectors.
Begin(
" ");
319 while (!detectors.
End()) {
321 detector.
Begin(
"()");
670 if (
type >= Phos_R &&
type <= Phos_T) {
671 sprintf(nom_det,
"PHOS_%02d", mod);
678 else if (
type >= ChIo_GG &&
type <= ChIo_T) {
679 sprintf(nom_det,
"CI_%02d%02d", cou, mod);
683 else if (
type >= Si_GG &&
type <= Si_T) {
684 sprintf(nom_det,
"SI_%02d%02d", cou, mod);
688 else if (
type >= SiLi_GG &&
type <= SiLi_T) {
689 sprintf(nom_det,
"SILI_%02d", cou);
693 else if (
type >= Si75_GG &&
type <= Si75_T) {
694 sprintf(nom_det,
"SI75_%02d", cou);
698 else if (
type >= CsI_R &&
type <= CsI_T) {
699 sprintf(nom_det,
"CSI_%02d%02d", cou, mod);
720 if (
de->InheritsFrom(
"KVSiLi") &&
e->InheritsFrom(
"KVCsI")) {
744 const TString etalon_numbers[] = {
"1002",
"1102",
"1202",
"1304",
"1403",
"1503",
"1602",
"1702"};
751 if (de_type ==
"PHOS") {
761 if (csi_id_name_fmt.
Contains(
"R_L")) {
773 if (e_type ==
"SILI" || e_type ==
"SI75") {
811 std::string lab(param_name);
812 sig_type = lab.substr(lab.rfind(
'_') + 1);
815 sig_type = param_name;
896 if (!db->
FindCalibFile(
"Pressures", fullpath,
"INDRA"))
return;
897 Info(
"ReadChIoPressures()",
"Reading INDRA ChIo pressures used during runs...");
899 auto pressure_table = db->
AddTable(
"INDRA.ChIo Pressures",
"INDRA ChIo gas pressures");
901 KVString the_chios[] = {
"CI_02",
"CI_04",
"CI_06",
"CI_08",
"CI_13"};
906 pressure_sets.
Begin(
" ");
907 while (!pressure_sets.
End()) {
908 auto pressure_set = pressure_sets.
Next();
919 for (
auto& chio : the_chios) {
921 if ((P = env.
GetValue(
Form(
"%s.%s", pressure_set.Data(), chio.Data()), 0.0)) > 0.0) {
926 pressure_table->AddRecord(dbp);
952 TIter next_ps(param_list);
955 Error(
"SetChIoPressures",
956 "GetListOfChIo() returns null list pointer");
959 cout <<
"--> Setting ChIo pressures" << endl;
960 TIter next_chio(chios);
963 cout <<
" Ring 2/3: " << kvps->
966 cout <<
" Ring 4/5: " << kvps->
969 cout <<
" Ring 6/7: " << kvps->
972 cout <<
" Ring 8/12: " << kvps->
975 cout <<
" Ring 13/17: " << kvps->
977 while ((kvd = (
KVChIo*) next_chio())) {
978 if (!strcmp(kvd->
GetType(),
"CI")) {
1015#ifdef WITH_BUILTIN_GRU
1079 for (
int i = 0; i <
f.GetNbItems(); ++i) {
1080 f.GetDataItem(i, lab, val);
1089 std::vector<TString> names;
1090 for (
int i = 0; i < npars; ++i) {
1092 if (
name.EndsWith(
"_UP")) names.push_back(
name);
1095 for (std::vector<TString>::iterator it = names.begin(); it != names.end(); ++it) {
1101 UInt_t par32 = (par_up << 16) + par;
1129 Error(
"SetIDCodeForIDTelescope",
"Request for telescope name=%s of unknown class=%s",
1192 Info(
"SetPinLasersForCsI",
"Setting correspondance CsI-PinLaser using file %s.",
1196 line.ReadLine(pila_file);
1197 while (pila_file.good()) {
1198 if (!
line.BeginsWith(
"#")) {
1207 line.ReadLine(pila_file);
1212 Info(
"SetPinLasersForCsI",
"File %s not found. Correspondance Csi-PinLaser is unknown.",
1383 Error(
"CreateROOTGeometry",
"gIndra has to be build first");
1393 Info(
"CreateROOTGeometry",
"Scanning geometry shapes and matrices...");
1408 Info(
"CreateROOTGeometry",
"Volume checking for %s", det->
GetName());
1411 for (
Double_t TH = theta0 - 0.5; TH <= theta0 + 0.5; TH += 0.1) {
1412 for (
Double_t PH = phi0 - 10; PH <= phi0 + 10; PH += 1) {
1423 Info(
"CreateROOTGeometry",
"Volume checking failed for : %s", det->
GetName());
1433 Info(
"CreateROOTGeometry",
"Trajectory checking for %s", det->
GetName());
1436 for (
Double_t TH = theta0 - 0.5; TH <= theta0 + 0.5; TH += 0.1) {
1437 for (
Double_t PH = phi0 - 10; PH <= phi0 + 10; PH += 1) {
1452 Info(
"CreateROOTGeometry",
"ROOT geometry initialised for %d/%d detectors", nrootgeo,
GetDetectors()->GetEntries());
1457 while ((
d = (
KVDetector*)it()))
d->GetNode()->RehashLists();
1505 if (
g->GetDetectorByType(
"SILI") ||
g->GetDetectorByType(
"SI75"))
1509 if (
id->GetRingNumber() < 10) {
1548 if (!
l.GetBoolValue(
"INDRA.MESYTEC") && !
l.GetBoolValue(
"INDRA.EBYEDAT")) {
1554 int N =
l.GetNpar();
1555 for (
int i = 0; i <
N; ++i) {
1559 if (
name.BeginsWith(
"ACQPAR")) {
1561 int dots =
name.GetNValues(
".");
1565 if (
name.Next() !=
"INDRA")
continue;
1566 std::string parname(
name.Next());
1570 if (parname.find(
'_') !=
kNPOS) {
1572 detname = parname.substr(0, parname.rfind(
'_'));
1573 sig_type = parname.substr(parname.rfind(
'_') + 1);
1621 if (
r->GetDataFormat() ==
"MFM") {
1624 Info(
"InitialiseRawDataReading",
"Setting Mesytec crate config for run %d, raw run number=%d",
1628 if (channel_conf_list !=
"") {
1631 Fatal(
"InitialiseRawDataReading",
1632 "Could not open file containing names of Mesytec channel config for each run: %s",
1637 while (!files.
End()) {
1640 if (runlist.
Contains(
r->GetRunNumberReadFromFile())) {
1642 Info(
"InitialiseRawDataReading",
"Using file %s for raw run number %d",
1643 next_file.
Data(),
r->GetRunNumberReadFromFile());
1652 Fatal(
"InitialiseRawDataReading",
1653 "Name of file containing names of Mesytec channel config for each run should be defined in dataset variable %s.MesytecChannelsConf",
1665Bool_t KVINDRA::handle_raw_data_event_mfmframe_mesytec_mdpp(
const MFMMesytecMDPPFrame& f)
1675 mesytec::module::set_data_type_alias(
"qdc_long",
"TotLight");
1676 mesytec::module::set_data_type_alias(
"qdc_short",
"R");
1677 mesytec::module::set_data_type_alias(
"tdc",
"T");
1678 mesytec::module::set_data_type_alias(
"adc",
"ADC");
1684 mfmfilereader->GetMesytecBufferReader().read_event_in_buffer(
1685 (
const uint8_t*)
f.GetPointUserData(),
f.GetBlobSize(),
1686#ifdef MESYTEC_DATA_NO_MDPP_NAMESPACE
1687#ifdef MESYTEC_DATA_BUFFER_READER_CALLBACK_WITH_EVENT_AND_SETUP
1688 [ = ](
const mesytec::event & evt,
const mesytec::experimental_setup & setup) {
1690 [ = ](
const mesytec::event & evt) {
1693 [ = ](
const mesytec::mdpp::event & evt) {
1695#ifndef MESYTEC_DATA_BUFFER_READER_CALLBACK_WITH_EVENT_AND_SETUP
1696 auto& setup = mfmfilereader->GetMesytecBufferReader().get_setup();
1699#ifdef MESYTEC_DATA_NO_PUBLIC_MEMBERS
1700 for (
auto& mdat : evt.get_module_data()) {
1701 auto mod_id = mdat.get_module_id();
1703 for (
auto& mdat : evt.modules) {
1704 auto mod_id = mdat.module_id;
1706 auto& current_module = setup.get_module(mod_id);
1707 if (current_module.is_mdpp_module()) {
1709#ifdef MESYTEC_DATA_NO_PUBLIC_MEMBERS
1710 for (
auto& voie : mdat.get_channel_data()) {
1711 KVString detname(setup.get_detector(mod_id, voie.get_channel_number()));
1712 KVString sig_type(current_module.get_data_type_name(voie.get_data_type()));
1713 Double_t sig_data = voie.get_data();
1715 for (
auto& voie : mdat.
data) {
1716 KVString detname(setup.get_detector(mod_id, voie.channel));
1724 else if (current_module.is_mvlc_scaler()) {
1728#ifdef MESYTEC_DATA_NO_PUBLIC_MEMBERS
1729 if (mdat.get_channel_data().size() == 4) {
1731 if (mdat.data.size() == 4) {
1735#ifdef MESYTEC_DATA_NO_PUBLIC_MEMBERS
1736 for (
auto& d : mdat.get_channel_data())
x += ((uint64_t)
d.get_data_word()) << (16 * (i++));
1738 for (
auto& d : mdat.
data)
x += ((uint64_t)
d.data_word) << (16 * (i++));
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
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 TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
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
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 TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Build INDRA geometry from Huguet CAO infos.
void Build(Bool_t withTarget=kTRUE, Bool_t closeGeometry=kTRUE)
void MakeListOfDetectors()
void CalculateGroupsFromGeometry()
virtual void SetNumber(UInt_t num)
virtual void SetType(const Char_t *str)
static const Char_t * GetDataSetEnv(const Char_t *dataset, const Char_t *type, const Char_t *defval)
virtual Bool_t IsCalled(const Char_t *name) const
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
virtual const Char_t * GetType() const
Ionisation chamber detectors of the INDRA multidetector array.
virtual Double_t GetPressure() const
virtual void SetPressure(Double_t P)
CsI(Tl) scintillation detectors of the INDRA multidetector array.
void SetPinLaser(Int_t n)
CHIO pressure parameters.
virtual void SetPressure(UInt_t n, Float_t pressure)
virtual Float_t GetPressure(UInt_t chio_number)
virtual KVRList * GetLinks(const Char_t *key) const
Returns the list of records linked to this record in table "key".
Description of an experimental run in database ,,.
virtual Bool_t AddTable(KVDBTable *table)
const Char_t * GetDataSetEnv(const Char_t *type, const Char_t *defval="") const
TString GetFullPathToDataSetFile(const Char_t *filename)
Bool_t OpenDataSetFile(const Char_t *filename, std::ifstream &file)
List of hit groups in a multidetector array.
Base class for detector geometry description.
void SetNameOfArray(const TString &n)
static KVDetector * MakeDetector(const Char_t *name, Float_t thick)
KVList * GetAlignedIDTelescopes()
KVGeoDetectorNode * GetNode()
Double_t GetTheta() const
void SetDetecting(Bool_t yes=kTRUE)
GANIL VXI/VME 16 bit (maximum) EBYEDAT acquisition parameter.
Base class to describe database of an experiment ,,.
const KVNumberList & GetRunList() const
virtual void LinkRecordToRunRange(KVDBRecord *rec, UInt_t first_run, UInt_t last_run)
Bool_t FindCalibFile(const Char_t *type, TString &fullpath, const TString &array_name="") const
Reads GANIL acquisition files (EBYEDAT)
const KVSeqCollection & GetFiredDataParameters() const
Path taken by particles through multidetector geometry.
Bool_t ContainsAll(const TCollection *l) const
KVGeoDetectorNode * GetNodeInFront(const KVGeoDetectorNode *n) const
KVGeoDetectorNode * GetNodeAt(Int_t i) const
KVSeqCollection * AccessIDTelescopeList()
KVDetector * GetDetector() const
Int_t GetNDetsInFront() const
Returns number of detectors directly in front of this one.
Import detector array described by ROOT geometry and set up corresponding KVMultiDetArray object.
void SetLastDetector(KVDetector *)
void PropagateEvent(KVEvent *, TVector3 *TheOrigin=0)
void AbsorbDetectorPaths(KVGeoNavigator *GN)
void SetNameCorrespondanceList(const Char_t *)
void SetOwnsDetectors(Bool_t yes=kTRUE)
KVGeoStrucElement * GetStructure(const Char_t *name) const
KVDetector * GetDetector(const Char_t *name) const
Return detector in this structure with given name.
virtual void Add(KVBase *)
const KVSeqCollection * GetDetectors() const
Base class for particle reconstruction in one group of a detector array.
static KVGroupReconstructor * Factory(const TString &plugin="")
Group of detectors which can be treated independently of all others in array.
Extended version of ROOT THashList.
Base class for all detectors or associations of detectors in array which can identify charged particl...
virtual void SetIDCode(UShort_t c)
KVDetector * GetDetector(UInt_t n) const
const KVList * GetDetectors() const
Base class for detectors of INDRA array.
UInt_t GetRingNumber() const
KVINDRADetector * GetChIo() const
static TString CSI_ID_TYPE
Base class for telescopes in INDRA array.
INDRA multidetector array geometry.
Bool_t fEbyedatData
set to true when VME/VXI acquisition system is used
virtual void Build(Int_t run=-1)
void InitialiseRawDataReading(KVRawDataReader *)
virtual KVChIo * GetChIoOf(const Char_t *detname)
void handle_ebyedat_raw_data_parameter(const char *param_name, uint16_t val)
KVINDRATelescope * BuildTelescope(const Char_t *prefix, Int_t mod)
virtual Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &)
void CreateROOTGeometry()
KVHashList * fChIo
List Of ChIo of INDRA.
KVHashList * GetListOfSi() const
void SetRawDataFromReconEvent(KVNameValueList &)
KVINDRATriggerInfo * GetTriggerInfo()
void SetPinLasersForCsI()
void copy_fired_parameters_to_recon_param_list()
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const
virtual void SetGroupsAndIDTelescopes()
KVHashList * GetListOfPhoswich() const
Int_t GetIDTelescopes(KVDetector *, KVDetector *, TCollection *)
KVHashList * GetListOfCsI() const
KVINDRATriggerInfo * fSelecteur
infos from DAQ trigger (le Selecteur)
UChar_t fTrigger
multiplicity trigger used for acquisition
KVHashList * fCsI
List of CsI detectors of INDRA.
virtual void SetROOTGeometry(Bool_t on=kTRUE)
void SetChIoPressures(KVDBRun *)
static Char_t SignalTypes[16][3]
Use this static array to translate EBaseIndra_type signal type to a string giving the signal type.
void FillListsOfDetectorsByType()
Fill lists of ChIo, Si, CsI and phoswich.
Bool_t fMesytecData
set to true when Mesytec acquisition system is used
virtual void MakeListOfDetectors()
Overrides KVASMultiDetArray method to add FillListsOfDetectorsByType()
void FillTrajectoryIDTelescopeLists()
KVHashList * fSi
List of Si detectors of INDRA.
void SetIDCodeForIDTelescope(KVIDTelescope *) const
Set the INDRA-specific general identification code for the given telescope.
TEnv fStrucInfos
file containing structure of array
void PerformClosedROOTGeometryOperations()
@ ID_CI_SI75
particle identified in ChIo-Si75 etalon telescope
@ ID_SI_CSI
particle identified in Si-CsI telescope
@ ID_CI_SI
particle identified in ChIo-Si telescope
@ ID_CSI_PSA
particle identified in CsI detector by pulse shape analysis
@ ID_PHOSWICH
particle identified in phoswich (campaigns 1-3)
@ ID_SI75_SILI
particle identified in Si75-SiLi etalon telescope
@ ID_CI_CSI
particle identified in ChIo-CsI telescope
void SetReconParametersInEvent(KVReconstructedEvent *) const
If "INDRA.EN" parameter has been set, we use it to set the event number.
void MakeCalibrationTables(KVExpDB *)
Override base method in order to read ChIo pressures for each run.
void SetTrigger(UChar_t trig)
KVNameValueList fEbyedatParamDetMap
maps EBYEDAT parameter names to detectors
Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &)
KVRing * BuildRing(Int_t number, const Char_t *prefix)
Build ring with infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env".
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
void SetNamesOfIDTelescopes() const
void ReadChIoPressures(KVExpDB *)
KVHashList * GetListOfChIo() const
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_dets=0)
void SetDetectorParametersForRun(KVDBRun *, const TString &="")
Override base method in order to set ChIo pressures (if defined)
void BuildLayer(const Char_t *name)
Build layer 'name' with infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset]....
virtual void BuildGeometry()
KVHashList * fPhoswich
List of NE102/NE115 detectors of INDRA.
Bool_t fPHDSet
set to kTRUE if pulse height defect parameters are set
Set of detectors at a similar distance from target (obsolete)
Read MFM format acquisition data.
static KVIonRangeTable * GetRangeTable()
void SetDetectorThicknesses()
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_params=0)
static Bool_t fCloseGeometryNow
virtual KVGroup * GetGroup(const Char_t *) const
Return pointer to group with name.
void CreateGeoManager(Double_t dx=500, Double_t dy=500, Double_t dz=500)
UInt_t fCurrentRun
Number of the current run used to call SetParameters.
void prepare_to_handle_new_raw_data()
reset acquisition parameters etc. before reading new raw data event
virtual void InitialiseRawDataReading(KVRawDataReader *)
virtual void SetExpectedDetectorSignalNames()
virtual void SetDetectorParametersForRun(KVDBRun *, const TString &="")
virtual void copy_fired_parameters_to_recon_param_list()
TString GetDataSet() const
KVGeoNavigator * GetNavigator() const
virtual Int_t GetIDTelescopes(KVDetector *, KVDetector *, TCollection *list)
virtual void MakeCalibrationTables(KVExpDB *)
UInt_t GetCurrentRunNumber() const
KVSeqCollection * GetListOfIDTelescopes() const
virtual void SetIdentifications()
virtual Bool_t IsBuilt() const
KVRawDataReader * fRawDataReader
last raw data reader object used in call to HandleRawData
virtual void SetRawDataFromReconEvent(KVNameValueList &)
void add_and_set_detector_signal(KVDetector *det, KVString detname, Double_t sig_data, KVString sig_type)
virtual void SetROOTGeometry(Bool_t on=kTRUE)
KVUniqueNameList fFiredDetectors
list of fired detectors after reading raw data event
const TSeqCollection * GetTrajectories() const
KVNameValueList & GetReconParameters()
void CalculateReconstructionTrajectories()
virtual void SetReconParametersInEvent(KVReconstructedEvent *) const
Copy any parameters in fReconParameters in to the reconstructed event parameter list.
KVNameValueList fReconParameters
general purpose list of parameters for storing information on data reconstruction
TString fDataSet
name of associated dataset, used with MakeMultiDetector()
void AssociateTrajectoriesAndNodes()
void SetNavigator(KVGeoNavigator *geo)
void DeduceGroupsFromTrajectories()
virtual void CreateIDTelescopesInGroups()
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
KVNamedParameter * GetParameter(Int_t idx) const
return the parameter object with index idx
Int_t GetIntValue(const Char_t *name) const
void SetValue(const Char_t *name, value_type value)
void RemoveParameter(const Char_t *name)
void SetValue64bit(const Char_t *name, ULong64_t)
Int_t GetNpar() const
return the number of stored parameters
const Char_t * GetStringValue(const Char_t *name) const
Bool_t HasParameter(const Char_t *name) const
A generic named parameter storing values of different types.
An event container for KVNucleus objects.
Description of properties and kinematics of atomic nuclei.
void SetZAandE(Int_t z, Int_t a, Double_t ekin)
Set atomic number, mass number, and kinetic energy in MeV.
Strings used to represent a set of ranges of values.
Bool_t Contains(Int_t val) const
returns kTRUE if the value 'val' is contained in the ranges defined by the number list
void SetTheta(Double_t theta)
void SetPhi(Double_t phi)
virtual void SetAzimuthalMinMax(Double_t min, Double_t max)
Set min and max azimuthal angles and calculate (mean) phi.
Bool_t ROOTGeo() const
Returns kTRUE if ROOT geometry is used, kFALSE if not.
void SetDistance(Double_t d)
Double_t GetAzimuthalWidth(Double_t phmin=-1., Double_t phimax=-1.) const
virtual void SetPolarMinMax(Double_t min, Double_t max)
Set min and max polar angles and calculate (mean) theta.
Wrapper for TRefArray adding some functionality.
Propagate particles through array geometry calculating energy losses.
Abstract base class for reading raw (DAQ) data.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Ring in INDRA array (obsolete)
void Add(KVBase *)
Only KVTelescope-derived structures can be placed in a KVRing.
KaliVeda extensions to ROOT collection classes.
virtual TObject * FindObject(const char *name) const
virtual void Clear(Option_t *option="")
virtual TObject * FindObjectByName(const Char_t *name) const
virtual void SetCleanup(Bool_t enable=kTRUE)
virtual void Add(TObject *obj)
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
void SetDepth(UInt_t ndet, Float_t depth)
set the depth of detector number ndet(=1,2,...) in mm.
void Add(KVBase *element)
virtual void SetPolarMinMax(Double_t min, Double_t max)
virtual void SetAzimuthalWidth(Double_t aw)
virtual Int_t GetEntries() const
virtual const char * GetValue(const char *name, const char *dflt) const
virtual Int_t ReadFile(const char *fname, EEnvLevel level)
virtual void SetTitle(const char *title="")
const char * GetName() const override
virtual void SetName(const char *name)
TClass * IsA() const override
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual Bool_t InheritsFrom(const char *classname) const
virtual void Error(const char *method, const char *msgfmt,...) const
virtual void Fatal(const char *method, const char *msgfmt,...) const
virtual void Info(const char *method, const char *msgfmt,...) const
const char * Data() const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(char c, Ssiz_t rep=1)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
unsigned long long ULong64_t
const long double torr
pressures
double dist(AxisAngle const &r1, AxisAngle const &r2)