4 #ifndef __INDRAGEOMETRYBUILDER_H
5 #define __INDRAGEOMETRYBUILDER_H
8 #include "KVDetector.h"
12 #include "KVNumberList.h"
13 #include "KVNameValueList.h"
14 #include <unordered_map>
44 Double_t thetaMin, thetaMax, deltaPhi, phi0;
47 Int_t fInnerPads, fOuterPads;
48 Int_t fInnerRing, fOuterRing;
49 Int_t fInnerDmod, fOuterDmod;
50 Int_t fInnerModmin, fOuterModmin;
60 struct detector_properties {
62 long double thick = 0.0;
69 std::unordered_map<std::string, detector_properties> detector_map;
70 std::vector<detector_properties> read_telescope_infos(
72 double thmin,
double thmax,
double phi);
78 void read_indra_struct_file();
79 void read_layer_infos(
const Char_t* name);
80 void read_ring_infos(
Int_t number,
const Char_t* prefix);
#define ClassDefOverride(name, id)
Build INDRA geometry from Huguet CAO infos.
void MakeDetector(const Char_t *det, TVector3 *som, TVector3 cen)
make volume corresponding to the actual detector
std::vector< theta_phi > GetDirectionsToTestForImport() const
void Print(Option_t *="") const override
Bool_t CheckImportResults(const KVSeqCollection *)
void CalculateBackPlaneCoordinates(TVector3 *frontcoords, TVector3 centre, Double_t depth, TVector3 *backcoords)
void CalculateCentre(TVector3 *corners, TVector3 ¢re)
void BuildEtalonVolumes()
void ReadDetCAO(const Char_t *detname, Int_t ring)
void PlaceFrame(Double_t phi, Int_t copy_no)
position frame (dead zone) volume in geometry
void ReflectPad(TVector3 *orig, Double_t phicentre, TVector3 *newpad)
Bool_t SetDetectorThickness(const TString &detname, Double_t thickness)
void MakeEtalon(int RING)
void CalculateCornersInPlane(TVector3 *plane, Double_t thetamin, Double_t thetamax, Double_t phimin, Double_t phimax, TVector3 *corners)
void TransformToOwnFrame(TVector3 *orig, TVector3 ¢re, TVector3 *ownframe)
INDRAGeometryBuilder(const TString &_data_set, Int_t current_run=-1)
Default constructor.
void Build(Bool_t withTarget=kTRUE, Bool_t closeGeometry=kTRUE)
void MakeRing(const Char_t *det, int ring)
void MakeFrame(TString det_type, Int_t ring_num)
void PlaceDetector()
position detector inside frame
std::pair< double, double > theta_phi
Base class for KaliVeda framework.
Base class for detector geometry description, interface to energy-loss calculations.
Description of physical materials used to construct detectors & targets; interface to range tables.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Strings used to represent a set of ranges of values.
KaliVeda extensions to ROOT collection classes.