HerdSoftware  0.4.0
ParametricGeo.h
Go to the documentation of this file.
1 /*
2  * ParametricGeo.h
3  *
4  * Created on: 28 Mar 2018
5  * Author: Nicola Mori
6  */
7 
8 #ifndef PARAMETRICGEO_H_
9 #define PARAMETRICGEO_H_
10 
11 // ParamGeo headers
12 #include "geometry/GGSVGeometryConstruction.h"
14 
15 // Geant4 headers
16 #include "globals.hh"
17 
18 class G4VPhysicalVolume;
19 class G4LogicalVolume;
20 
21 // clang-format off
470 // clang-format on
471 class ParametricGeo : public GGSVGeometryConstruction {
472 public:
474  ParametricGeo();
475 
476 public:
481  G4VPhysicalVolume *Construct() override;
482 
489  bool ExportParameters() override;
490 
495  [[nodiscard]] bool IsInsideAcceptance(const G4ThreeVector &generationPosition,
496  const G4ThreeVector &direction) const override;
497 
511  [[nodiscard]] int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
512 
517  G4VPhysicalVolume *GetVolume() override { return m_worldPhysical; }
518 
523  const std::string GetVersion() override { return "0"; }
524 
525 private:
534  [[nodiscard]] std::vector<double> InterceptX(double Xplane, const G4ThreeVector &generationPosition,
535  const G4ThreeVector &direction) const;
544  [[nodiscard]] std::vector<double> InterceptY(double Yplane, const G4ThreeVector &generationPosition,
545  const G4ThreeVector &direction) const;
546 
555  [[nodiscard]] std::vector<double> InterceptZ(double Zplane, const G4ThreeVector &generationPosition,
556  const G4ThreeVector &direction) const;
557 
565  [[nodiscard]] double PntDistance(std::vector<double> v, const G4ThreeVector a) const;
566 
576  std::vector<bool> ParseListOfWLayers(std::string str);
577 
578  /* ***** Parameters of the geometry ***** */
579  // General
581  // CALO
583  // Acceptance
585  // PSD
587  // FIT
589  // SCD
591  // TRD
593  // Shield
595  // CSS
597 
598  // Methods for setting geometric properties via datacard commands
599  void _SetTrackingDetector(const std::string &trkDet);
600  void _SetAnticoincidenceDetector(const std::string &acDet);
601  void _SetChargeIdDetector(const std::string &cidDet);
602  void _SetCaloCrystalDensity(double density);
603  void _SetCaloSideFitDistance(double d);
604 
605  G4VPhysicalVolume *m_worldPhysical;
606 
608  std::vector<float> topLayerZPos;
609  std::vector<float> sideLayerXPos;
610  std::vector<float> sideLayerYPos;
612 };
613 
614 #endif /* PARAMETRICGEO_H_ */
ParametricGeo::ExportParameters
bool ExportParameters() override
Exports the geometry parameters to the output file.
Definition: ParametricGeo.cpp:49
CSSOptions
Definition: DetStructs.h:487
ParametricGeo::m_worldPhysical
G4VPhysicalVolume * m_worldPhysical
Definition: ParametricGeo.h:605
ParametricGeo::m_scdNormalPositions
struct ParametricGeo::NormalPositions m_scdNormalPositions
TRDOptions
Definition: DetStructs.h:464
ParametricGeo::ParseListOfWLayers
std::vector< bool > ParseListOfWLayers(std::string str)
Translate the string with information of W layer position in a vector.
Definition: ParametricGeo.cpp:1781
ParametricGeo::m_caloOpt
CaloOptions m_caloOpt
Definition: ParametricGeo.h:582
SCDOptions
Definition: DetStructs.h:404
FITOptions
Definition: DetStructs.h:318
ParametricGeo::GetAcceptanceType
int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Find if the generated particle is inside one of the defined acceptances.
Definition: ParametricGeo.cpp:372
ParametricGeo::_SetChargeIdDetector
void _SetChargeIdDetector(const std::string &cidDet)
Definition: ParametricGeo.cpp:570
PSDOptions
Definition: DetStructs.h:154
ParametricGeo::m_scdOpt
SCDOptions m_scdOpt
Definition: ParametricGeo.h:590
ParametricGeo::ParametricGeo
ParametricGeo()
Constructor.
ParametricGeo::NormalPositions::sideLayerYPos
std::vector< float > sideLayerYPos
Definition: ParametricGeo.h:610
ParametricGeo::m_cssOpt
CSSOptions m_cssOpt
Definition: ParametricGeo.h:596
ParametricGeo::InterceptZ
std::vector< double > InterceptZ(double Zplane, const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Compute the intecept of a line and a plane in XY view.
Definition: ParametricGeo.cpp:1762
ParametricGeo::m_psdNormalPositions
struct ParametricGeo::NormalPositions m_psdNormalPositions
ParametricGeo::m_psdOpt
PSDOptions m_psdOpt
Definition: ParametricGeo.h:586
ParametricGeo::InterceptY
std::vector< double > InterceptY(double Yplane, const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Compute the intercept of a line and a plane in XZ view.
Definition: ParametricGeo.cpp:1752
ParametricGeo
Parameterized HERD geometry.
Definition: ParametricGeo.h:471
ParametricGeo::_SetCaloCrystalDensity
void _SetCaloCrystalDensity(double density)
Definition: ParametricGeo.cpp:579
AcceptanceOptions
Definition: DetStructs.h:120
ParametricGeo::PntDistance
double PntDistance(std::vector< double > v, const G4ThreeVector a) const
Calculate the distance between 2 points.
Definition: ParametricGeo.cpp:1772
ParametricGeo::IsInsideAcceptance
bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const override
Find if the generated trajectory is inside the defined acceptance.
Definition: ParametricGeo.cpp:364
ParametricGeo::m_generalOpt
GeneralOptions m_generalOpt
Definition: ParametricGeo.h:580
ParametricGeo::InterceptX
std::vector< double > InterceptX(double Xplane, const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Compute the intercept of a line and a plane in YZ view.
Definition: ParametricGeo.cpp:1742
ShieldOptions
Definition: DetStructs.h:480
ParametricGeo::m_shieldOpt
ShieldOptions m_shieldOpt
Definition: ParametricGeo.h:594
DetStructs.h
ParametricGeo::GetVersion
const std::string GetVersion() override
Returns the current version of the geometry.
Definition: ParametricGeo.h:523
ParametricGeo::NormalPositions
Definition: ParametricGeo.h:607
ParametricGeo::_SetCaloSideFitDistance
void _SetCaloSideFitDistance(double d)
Definition: ParametricGeo.cpp:584
ParametricGeo::m_fitOpt
FITOptions m_fitOpt
Definition: ParametricGeo.h:588
ParametricGeo::m_fitNormalPositions
struct ParametricGeo::NormalPositions m_fitNormalPositions
ParametricGeo::NormalPositions::sideLayerXPos
std::vector< float > sideLayerXPos
Definition: ParametricGeo.h:609
CaloOptions
Definition: DetStructs.h:56
ParametricGeo::Construct
G4VPhysicalVolume * Construct() override
Constructs the full HERD detector.
Definition: ParametricGeo.cpp:588
ParametricGeo::GetVolume
G4VPhysicalVolume * GetVolume() override
Returns the pointer to physical world.
Definition: ParametricGeo.h:517
ParametricGeo::m_trdOpt
TRDOptions m_trdOpt
Definition: ParametricGeo.h:592
ParametricGeo::_SetTrackingDetector
void _SetTrackingDetector(const std::string &trkDet)
Definition: ParametricGeo.cpp:546
ParametricGeo::_SetAnticoincidenceDetector
void _SetAnticoincidenceDetector(const std::string &acDet)
Definition: ParametricGeo.cpp:552
GeneralOptions
Definition: DetStructs.h:10
ParametricGeo::NormalPositions::topLayerZPos
std::vector< float > topLayerZPos
Definition: ParametricGeo.h:608
ParametricGeo::m_acceptanceOpt
AcceptanceOptions m_acceptanceOpt
Definition: ParametricGeo.h:584