HerdSoftware  0.3.2
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
499 // clang-format on
500 
501 class ParametricGeo : public GGSVGeometryConstruction {
502 public:
504  ParametricGeo();
505 
506 public:
511  G4VPhysicalVolume *Construct() override;
512 
519  bool ExportParameters() override;
520 
525  bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const override;
526 
540  int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
541 
546  G4VPhysicalVolume *GetVolume() override { return _worldPhysical; }
547 
552  const std::string GetVersion() override { return "0"; }
553 
554 private:
563  std::vector<double> InterceptX(double Xplane, const G4ThreeVector &generationPosition,
564  const G4ThreeVector &direction) const;
573  std::vector<double> InterceptY(double Yplane, const G4ThreeVector &generationPosition,
574  const G4ThreeVector &direction) const;
575 
584  std::vector<double> InterceptZ(double Zplane, const G4ThreeVector &generationPosition,
585  const G4ThreeVector &direction) const;
586 
594  double PntDistance(std::vector<double> v, const G4ThreeVector a) const;
595 
605  std::vector<bool> ParseListOfWLayers(std::string str);
606 
607  /* ***** Parameters of the geometry ***** */
608  // General
610  // CALO
612  // Acceptance
614  // PSD
616  // STK
618  // FIT
620  // SCD
622  // TRD
624  // Shield
626  // CSS
628 
629  // Methods for setting geometric properties via datacard commands
630  void _SetAnticoincidenceDetector(const std::string &ac);
631  void _SetPsdType(const std::string &psdType);
632  void _SetCaloCrystalDensity(double density);
633  void _SetCaloSideFitDistance(double d);
634 
635  G4VPhysicalVolume *_worldPhysical;
636 
638  std::vector<float> topLayerZPos;
639  std::vector<float> sideLayerXPos;
640  std::vector<float> sideLayerYPos;
642 };
643 
644 #endif /* PARAMETRICGEO_H_ */
G4VPhysicalVolume * _worldPhysical
Definition: ParametricGeo.h:635
bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const override
Find if the generated trajectory is inside the defined acceptance.
Definition: ParametricGeo.cpp:409
bool ExportParameters() override
Exports the geometry parameters to the output file.
Definition: ParametricGeo.cpp:49
AcceptanceOptions _acceptanceOpt
Definition: ParametricGeo.h:613
FITOptions _fitOpt
Definition: ParametricGeo.h:619
struct ParametricGeo::NormalPositions stkNormalPositions
std::vector< float > sideLayerYPos
Definition: ParametricGeo.h:640
std::vector< float > sideLayerXPos
Definition: ParametricGeo.h:639
void _SetCaloCrystalDensity(double density)
Definition: ParametricGeo.cpp:625
void _SetCaloSideFitDistance(double d)
Definition: ParametricGeo.cpp:630
TRDOptions _trdOpt
Definition: ParametricGeo.h:623
Definition: DetStructs.h:115
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:1794
STKOptions _stkOpt
Definition: ParametricGeo.h:617
void _SetAnticoincidenceDetector(const std::string &ac)
Definition: ParametricGeo.cpp:592
CaloOptions _caloOpt
Definition: ParametricGeo.h:611
Definition: DetStructs.h:466
Definition: ParametricGeo.h:637
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:1774
SCDOptions _scdOpt
Definition: ParametricGeo.h:621
Definition: DetStructs.h:70
ShieldOptions _shieldOpt
Definition: ParametricGeo.h:625
std::vector< float > topLayerZPos
Definition: ParametricGeo.h:638
double PntDistance(std::vector< double > v, const G4ThreeVector a) const
Calculate the distance between 2 points.
Definition: ParametricGeo.cpp:1804
PSDOptions _psdOpt
Definition: ParametricGeo.h:615
std::vector< bool > ParseListOfWLayers(std::string str)
Translate the string with information of W layer position in a vector.
Definition: ParametricGeo.cpp:1813
ParametricGeo()
Constructor.
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:1784
const std::string GetVersion() override
Returns the current version of the geometry.
Definition: ParametricGeo.h:552
G4VPhysicalVolume * Construct() override
Constructs the full HERD detector.
Definition: ParametricGeo.cpp:634
Parameterized HERD geometry.
Definition: ParametricGeo.h:501
Definition: DetStructs.h:450
Definition: DetStructs.h:419
G4VPhysicalVolume * GetVolume() override
Returns the pointer to physical world.
Definition: ParametricGeo.h:546
Definition: DetStructs.h:149
void _SetPsdType(const std::string &psdType)
Definition: ParametricGeo.cpp:608
Definition: DetStructs.h:473
Definition: DetStructs.h:328
GeneralOptions _generalOpt
Definition: ParametricGeo.h:609
CSSOptions _cssOpt
Definition: ParametricGeo.h:627
Definition: DetStructs.h:10
Definition: DetStructs.h:362
struct ParametricGeo::NormalPositions scdNormalPositions
struct ParametricGeo::NormalPositions fitNormalPositions
int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Find if the generated particle is inside one of the defined acceptances.
Definition: ParametricGeo.cpp:417
struct ParametricGeo::NormalPositions psdNormalPositions