HerdSoftware  0.2.3
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
476 // clang-format on
477 
478 class ParametricGeo : public GGSVGeometryConstruction {
479 public:
481  ParametricGeo();
482 
483 public:
488  G4VPhysicalVolume *Construct();
489 
496  bool ExportParameters();
497 
502  bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
503 
517  int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
518 
523  G4VPhysicalVolume *GetVolume() { return _worldPhysical; }
524 
529  const std::string GetVersion() { return "0"; }
530 
531 private:
540  std::vector<double> InterceptX(double Xplane, const G4ThreeVector &generationPosition,
541  const G4ThreeVector &direction) const;
550  std::vector<double> InterceptY(double Yplane, const G4ThreeVector &generationPosition,
551  const G4ThreeVector &direction) const;
552 
561  std::vector<double> InterceptZ(double Zplane, const G4ThreeVector &generationPosition,
562  const G4ThreeVector &direction) const;
563 
571  double PntDistance(std::vector<double> v, const G4ThreeVector a) const;
572 
582  std::vector<bool> ParseListOfWLayers(std::string str);
583 
584  /* ***** Parameters of the geometry ***** */
585  // General
587  // CALO
589  // Acceptance
591  // PSD
593  // STK
595  // FIT
597  // SCD
599  // TRD
601  // Shield
603  // CSS
605 
606  // Methods for setting geometric properties via datacard commands
607  void _SetAnticoincidenceDetector(const std::string &ac);
608  void _SetPsdType(const std::string &psdType);
609  void _SetCaloCrystalDensity(double density);
610  void _SetCaloSideFitDistance(double d);
611 
612  G4VPhysicalVolume *_worldPhysical;
613 
615  std::vector<float> topLayerZPos;
616  std::vector<float> sideLayerXPos;
617  std::vector<float> sideLayerYPos;
619 };
620 
621 #endif /* PARAMETRICGEO_H_ */
G4VPhysicalVolume * _worldPhysical
Definition: ParametricGeo.h:612
AcceptanceOptions _acceptanceOpt
Definition: ParametricGeo.h:590
FITOptions _fitOpt
Definition: ParametricGeo.h:596
struct ParametricGeo::NormalPositions stkNormalPositions
std::vector< float > sideLayerYPos
Definition: ParametricGeo.h:617
std::vector< float > sideLayerXPos
Definition: ParametricGeo.h:616
void _SetCaloCrystalDensity(double density)
Definition: ParametricGeo.cpp:602
void _SetCaloSideFitDistance(double d)
Definition: ParametricGeo.cpp:607
TRDOptions _trdOpt
Definition: ParametricGeo.h:600
Definition: DetStructs.h:107
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:1715
STKOptions _stkOpt
Definition: ParametricGeo.h:594
void _SetAnticoincidenceDetector(const std::string &ac)
Definition: ParametricGeo.cpp:569
CaloOptions _caloOpt
Definition: ParametricGeo.h:588
Definition: DetStructs.h:450
Definition: ParametricGeo.h:614
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:1695
SCDOptions _scdOpt
Definition: ParametricGeo.h:598
Definition: DetStructs.h:70
ShieldOptions _shieldOpt
Definition: ParametricGeo.h:602
std::vector< float > topLayerZPos
Definition: ParametricGeo.h:615
double PntDistance(std::vector< double > v, const G4ThreeVector a) const
Calculate the distance between 2 points.
Definition: ParametricGeo.cpp:1725
PSDOptions _psdOpt
Definition: ParametricGeo.h:592
bool ExportParameters()
Exports the geometry parameters to the output file.
Definition: ParametricGeo.cpp:48
bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const
Find if the generated trajectory is inside the defined acceptance.
Definition: ParametricGeo.cpp:386
std::vector< bool > ParseListOfWLayers(std::string str)
Translate the string with information of W layer position in a vector.
Definition: ParametricGeo.cpp:1734
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:1705
Parameterized HERD geometry.
Definition: ParametricGeo.h:478
Definition: DetStructs.h:434
Definition: DetStructs.h:403
G4VPhysicalVolume * GetVolume()
Returns the pointer to physical world.
Definition: ParametricGeo.h:523
Definition: DetStructs.h:141
const std::string GetVersion()
Returns the current version of the geometry.
Definition: ParametricGeo.h:529
void _SetPsdType(const std::string &psdType)
Definition: ParametricGeo.cpp:585
Definition: DetStructs.h:457
Definition: DetStructs.h:312
GeneralOptions _generalOpt
Definition: ParametricGeo.h:586
CSSOptions _cssOpt
Definition: ParametricGeo.h:604
Definition: DetStructs.h:10
Definition: DetStructs.h:346
G4VPhysicalVolume * Construct()
Constructs the full HERD detector.
Definition: ParametricGeo.cpp:611
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:394
struct ParametricGeo::NormalPositions psdNormalPositions