![]() |
KaliVeda
Toolkit for HIC analysis
|
Build INDRA geometry from Huguet CAO infos.
N.B. - the Ring 1 Si-CsI detectors (>=INDRA_camp4) are described using the same geometry as for the 1st campaign phoswich detectors (no CAO data available)
Definition at line 28 of file INDRAGeometryBuilder.h.
#include <INDRAGeometryBuilder.h>
Classes | |
struct | detector_properties |
Public Types | |
using | theta_phi = std::pair< double, double > |
![]() | |
enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23) } |
![]() | |
enum | EDeprecatedStatusBits |
enum | EStatusBits |
Public Member Functions | |
INDRAGeometryBuilder (const TString &_data_set, Int_t current_run=-1) | |
Default constructor. More... | |
void | Build (Bool_t withTarget=kTRUE, Bool_t closeGeometry=kTRUE) |
void | Build (const KVNumberList &rings, const KVNameValueList &detectors) |
void | BuildEtalonVolumes () |
void | BuildTarget () |
void | CalculateBackPlaneCoordinates (TVector3 *frontcoords, TVector3 centre, Double_t depth, TVector3 *backcoords) |
void | CalculateCentre (TVector3 *corners, TVector3 ¢re) |
void | CalculateCornersInPlane (TVector3 *plane, Double_t thetamin, Double_t thetamax, Double_t phimin, Double_t phimax, TVector3 *corners) |
Bool_t | CheckImportResults (const KVSeqCollection *) |
void | CloseAndDraw () |
std::vector< theta_phi > | GetDirectionsToTestForImport () const |
void | MakeDetector (const Char_t *det, TVector3 *som, TVector3 cen) |
make volume corresponding to the actual detector More... | |
void | MakeEtalon (int RING) |
void | MakeFrame (TString det_type, Int_t ring_num) |
void | MakeRing (const Char_t *det, int ring) |
void | PlaceDetector () |
position detector inside frame More... | |
void | PlaceFrame (Double_t phi, Int_t copy_no) |
position frame (dead zone) volume in geometry More... | |
void | Print (Option_t *="") const override |
void | ReadDetCAO (const Char_t *detname, Int_t ring) |
void | ReflectPad (TVector3 *orig, Double_t phicentre, TVector3 *newpad) |
Bool_t | SetDetectorThickness (const TString &detname, Double_t thickness) |
void | TransformToOwnFrame (TVector3 *orig, TVector3 ¢re, TVector3 *ownframe) |
![]() | |
KVBase () | |
Default constructor. More... | |
KVBase (const Char_t *name, const Char_t *title="") | |
Ctor for object with given name and type. More... | |
KVBase (const KVBase &) | |
copy ctor More... | |
void | Clear (Option_t *opt="") override |
Clear object properties : name, type/title, number, label. More... | |
void | Copy (TObject &) const override |
Make a copy of this object. More... | |
const Char_t * | GetLabel () const |
UInt_t | GetNumber () const |
virtual TObject * | GetObject () const |
virtual const Char_t * | GetType () const |
Bool_t | HasLabel () const |
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 () |
KVBase & | operator= (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) |
![]() | |
TNamed () | |
TNamed (const char *name, const char *title) | |
TNamed (const TNamed &named) | |
TNamed (const TString &name, const TString &title) | |
virtual | ~TNamed () |
TObject * | Clone (const char *newname="") const override |
Int_t | Compare (const TObject *obj) const override |
virtual void | FillBuffer (char *&buffer) |
const char * | GetName () const override |
const char * | GetTitle () const override |
ULong_t | Hash () const override |
TClass * | IsA () const override |
Bool_t | IsSortable () const override |
void | ls (Option_t *option="") const override |
TNamed & | operator= (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 |
void | Streamer (TBuffer &) override |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
![]() | |
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 TObject * | DrawClone (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 TObject * | FindObject (const char *name) const |
virtual TObject * | FindObject (const TObject *obj) const |
virtual Option_t * | GetDrawOption () const |
virtual const char * | GetIconName () const |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual Option_t * | GetOption () 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) |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (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 |
Private Member Functions | |
Bool_t | CheckDetectorPresent (TString detname) |
void | CorrectCoordinates (Double_t *, Double_t &, Double_t &) |
void | read_indra_struct_file () |
file containing structure of array More... | |
void | read_layer_infos (const Char_t *name) |
read infos on layer 'name' in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env" More... | |
void | read_ring_infos (Int_t number, const Char_t *prefix) |
read infos on ring in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env" More... | |
std::vector< detector_properties > | read_telescope_infos (const Char_t *prefix, Int_t ring, Int_t mod, Int_t ntel, double thmin, double thmax, double phi) |
read telescope infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env" More... | |
Additional Inherited Members | |
![]() | |
static Bool_t | AreEqual (Double_t x, Double_t y, Long64_t maxdif=1) |
Comparison between two 64-bit floating-point values. More... | |
static void | BackupFileWithDate (const Char_t *path) |
static void | CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE) |
static void | Deprecated (const char *method, const char *advice) |
static Bool_t | FindClassSourceFiles (const KVString &class_name, KVString &imp_file, KVString &dec_file, const KVString &dir_name=".") |
static Bool_t | FindExecutable (TString &exec, const Char_t *path="$(PATH)") |
static const Char_t * | FindFile (const Char_t *search, TString &wfil) |
static const Char_t * | GetBINDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetDATABASEFilePath () |
static const Char_t * | GetDATADIRFilePath (const Char_t *namefile="") |
static KVString | GetDataSetEnv (const KVString &dataset, const KVString &type, const char *defval) |
template<typename ValType > | |
static ValType | GetDataSetEnv (const KVString &dataset, const KVString &type, const ValType &defval) |
static const Char_t * | GetETCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetExampleFilePath (const Char_t *library, const Char_t *namefile) |
Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) More... | |
static const Char_t * | GetINCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetKVBuildDate () |
Returns KaliVeda build date. More... | |
static const Char_t * | GetKVBuildDir () |
Returns top-level directory used for build. More... | |
static const Char_t * | GetKVBuildTime () |
Returns KaliVeda build time. More... | |
static const Char_t * | GetKVBuildType () |
Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More... | |
static const Char_t * | GetKVBuildUser () |
Returns username of person who performed build. More... | |
static int | GetKVMajorVersion () |
static int | GetKVMinorVersion () |
static const Char_t * | GetKVSourceDir () |
Returns top-level directory of source tree used for build. More... | |
static const Char_t * | GetKVVersion () |
Returns KaliVeda version string. More... | |
static const Char_t * | GetLIBDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetListOfPlugins (const Char_t *base) |
static const Char_t * | GetListOfPluginURIs (const Char_t *base) |
static const Char_t * | GetPluginURI (const Char_t *base, const Char_t *plugin) |
static void | GetTempFileName (TString &base) |
static const Char_t * | GetTEMPLATEDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetWORKDIRFilePath (const Char_t *namefile="") |
static const Char_t * | gitBranch () |
Returns git branch of sources. More... | |
static const Char_t * | gitCommit () |
Returns last git commit of sources. More... | |
static void | InitEnvironment () |
static bool | is_gnuinstall () |
static Bool_t | IsEnvInit () |
static Bool_t | IsThisAPlugin (const TString &uri, TString &base) |
static TPluginHandler * | LoadPlugin (const Char_t *base, const Char_t *uri="0") |
static Bool_t | OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="") |
static void | OpenTempFile (TString &base, std::ofstream &fp) |
static void | PrintSplashScreen () |
Prints welcome message and infos on version etc. More... | |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="") |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="") |
static const Char_t * | WorkingDirectory () |
![]() | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
![]() | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Longptr_t | GetDtorOnly () |
static Bool_t | GetObjectStat () |
static void | SetDtorOnly (void *obj) |
static void | SetObjectStat (Bool_t stat) |
![]() | |
kBitMask | |
kCanDelete | |
kCannotPick | |
kHasUUID | |
kInconsistent | |
kInvalidObject | |
kIsOnHeap | |
kIsReferenced | |
kMustCleanup | |
kNoContextMenu | |
kNotDeleted | |
kObjInCanvas | |
kOverwrite | |
kSingleKey | |
kWriteDelete | |
kZombie | |
![]() | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
void | MakeZombie () |
![]() | |
TString | fName |
TString | fTitle |
![]() | |
kOnlyPrepStep | |
using INDRAGeometryBuilder::theta_phi = std::pair<double, double> |
Definition at line 30 of file INDRAGeometryBuilder.h.
Default constructor.
Definition at line 240 of file INDRAGeometryBuilder.cpp.
Definition at line 1191 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::Build | ( | const KVNumberList & | rings, |
const KVNameValueList & | detectors | ||
) |
Build geometry, using only the ring numbers in the KVNumberList, and only the detectors which are in the KVNameValueList:
KVNameValueList dets; dets.SetValue("CI",1); dets.SetValue("SI",1); igb.Build("2-9", dets); // use INDRAGeometryBuilder object 'igb' to build // ChIo and Silicon detectors of rings 2-9
Possible detector types are "CI", "SI", "CSI", "PHOS" If you want to see the target in the previous example, use dets.SetValue("TARGET",1)
Include "ring+100" in number list to build etalon telescope for "ring"
This method will not destroy any pre-existing geometry (gGeoManager), but will create one if none exists. Also it will not close the geometry, leaving the possibility to add ancillary detectors.
Definition at line 1250 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::BuildEtalonVolumes | ( | ) |
Definition at line 1309 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::BuildTarget | ( | ) |
TO DO: multi-layer targets + target with angle to beam target holder
Definition at line 1165 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::CalculateBackPlaneCoordinates | ( | TVector3 * | frontcoords, |
TVector3 | normal, | ||
Double_t | depth, | ||
TVector3 * | backcoords | ||
) |
Given an array of ncoords points frontcoords[ncoords] which lie in a plane calculate the corresponding points on a parallel plane which is at a distance from the origin which is greater by depth (distance plane-origin = length of normal to plane passing through origin) 'normal' is vector point of intersection plane-normal to origin
Definition at line 256 of file INDRAGeometryBuilder.cpp.
TVector3 corners[4] array of corner coordinates in usual order: corners[3] : theta-min, phi-min corners[2] : theta-max, phi-min corners[1] : theta-max, phi-max corners[0] : theta-min, phi-max
Calculate the intersection of the normal to the plane passing through the origin.
Definition at line 884 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::CalculateCornersInPlane | ( | TVector3 * | plane, |
Double_t | thetamin, | ||
Double_t | thetamax, | ||
Double_t | phimin, | ||
Double_t | phimax, | ||
TVector3 * | corners | ||
) |
fill TVector3 corners[4] array in usual order: corners[3] : theta-min, phi-min corners[2] : theta-max, phi-min corners[1] : theta-max, phi-max corners[0] : theta-min, phi-max theta, phi in degrees These points lie in the plane defined by the equivalent TVEctor3 plane[4] corners
Definition at line 913 of file INDRAGeometryBuilder.cpp.
Definition at line 541 of file INDRAGeometryBuilder.cpp.
Bool_t INDRAGeometryBuilder::CheckImportResults | ( | const KVSeqCollection * | detlist | ) |
Make sure that all detectors in detector map are in the list of detectors imported into the multidet array
We also set the (simplified geometry) thetamin/max & phimin/max for each detector. This is used e.g. in the GUI for visualising scalers during experiments.
Definition at line 1103 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::CloseAndDraw | ( | ) |
Definition at line 1140 of file INDRAGeometryBuilder.cpp.
|
private |
calculate offset in X and Y correct coordinates for offset return offset TGeoTranslation
Definition at line 216 of file INDRAGeometryBuilder.cpp.
std::vector< INDRAGeometryBuilder::theta_phi > INDRAGeometryBuilder::GetDirectionsToTestForImport | ( | ) | const |
Definition at line 944 of file INDRAGeometryBuilder.cpp.
make volume corresponding to the actual detector
Definition at line 777 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::MakeEtalon | ( | int | RING | ) |
Build and add etalon telescope for ring Double_t theta[] = {51.075000,63.340000,79.435000,100.685000,118.235000,133.905000,149.790000,166.435000}; Double_t phi[] = {37.500000,37.500000,37.500000,90.000000,78.750000,78.750000,90.000000,90.000000};
Definition at line 1371 of file INDRAGeometryBuilder.cpp.
Create the TGeoVolume corresponding to the outer casing (dead zone) of the detector
Definition at line 405 of file INDRAGeometryBuilder.cpp.
Definition at line 555 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::PlaceDetector | ( | ) |
position detector inside frame
Definition at line 529 of file INDRAGeometryBuilder.cpp.
position frame (dead zone) volume in geometry
Definition at line 504 of file INDRAGeometryBuilder.cpp.
Reimplemented from KVBase.
Definition at line 381 of file INDRAGeometryBuilder.cpp.
|
private |
file containing structure of array
Read infos in dataset file
indra-struct.env
or alternatively, by defining the variable
[dataset].INDRA.StructureFile: [name of dataset]
use the file from another dataset.
These files were previously used for all geometry specifications; now they mainly serve to define which detectors/rings are present, and change the default nominal thickness of silicon detectors or define the default gas pressures in the ionization chambers
Definition at line 42 of file INDRAGeometryBuilder.cpp.
read infos on layer 'name' in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env"
Definition at line 102 of file INDRAGeometryBuilder.cpp.
read infos on ring in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env"
Definition at line 122 of file INDRAGeometryBuilder.cpp.
|
private |
read telescope infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env"
Definition at line 158 of file INDRAGeometryBuilder.cpp.
Read infos in CAO file for this detector. We look for a TEnv file with name "detname.cao"
Definition at line 277 of file INDRAGeometryBuilder.cpp.
Definition at line 1152 of file INDRAGeometryBuilder.cpp.
Called by KVINDRA::set_detector_thicknesses().
Is 'detname' is present in the current geometry, we override its nominal thickness (read from the indra-struct* file) with the given value and return kTRUE.
If 'detname' is not present in the current geometry, we print a warning message and return kFALSE (incoherency between the indra-struct* present detectors & the list of detector thicknesses).
Definition at line 476 of file INDRAGeometryBuilder.cpp.
void INDRAGeometryBuilder::TransformToOwnFrame | ( | TVector3 * | orig, |
TVector3 & | centre, | ||
TVector3 * | ownframe | ||
) |
takes the four points (TVector3) in the array and transforms them to a reference frame in which the +ve z-axis goes through their centre
Definition at line 451 of file INDRAGeometryBuilder.cpp.
|
private |
Definition at line 44 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 69 of file INDRAGeometryBuilder.h.
|
private |
type name of current detector
index of active layer of current detector
Definition at line 38 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 36 of file INDRAGeometryBuilder.h.
|
private |
list of materials making up layers of current detector
Definition at line 37 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 75 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 74 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 53 of file INDRAGeometryBuilder.h.
|
private |
name of detector
Definition at line 32 of file INDRAGeometryBuilder.h.
|
private |
geo volume representing frame
Definition at line 46 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 56 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 55 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 54 of file INDRAGeometryBuilder.h.
|
private |
centre of frame
Definition at line 42 of file INDRAGeometryBuilder.h.
|
private |
coords of outer front face
Definition at line 35 of file INDRAGeometryBuilder.h.
|
private |
material of outer frame
Definition at line 39 of file INDRAGeometryBuilder.h.
|
private |
geo volume representing frame
Definition at line 45 of file INDRAGeometryBuilder.h.
|
private |
centre of inner face
Definition at line 40 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 49 of file INDRAGeometryBuilder.h.
|
private |
coords of inner front face
Definition at line 33 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 50 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 47 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 48 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 51 of file INDRAGeometryBuilder.h.
|
private |
centre of outer face
Definition at line 41 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 49 of file INDRAGeometryBuilder.h.
|
private |
coords of outer front face
Definition at line 34 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 50 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 47 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 48 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 52 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 76 of file INDRAGeometryBuilder.h.
Definition at line 82 of file INDRAGeometryBuilder.h.
|
private |
number of detectors in ring
Definition at line 43 of file INDRAGeometryBuilder.h.
|
private |
theoretical geometry
Definition at line 44 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 44 of file INDRAGeometryBuilder.h.
|
private |
Definition at line 44 of file INDRAGeometryBuilder.h.