HerdSoftware  0.1.1
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
474 // clang-format on
475 
476 class ParametricGeo : public GGSVGeometryConstruction {
477 public:
479  ParametricGeo();
480 
481 public:
486  G4VPhysicalVolume *Construct();
487 
494  bool ExportParameters();
495 
500  bool IsInsideAcceptance(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
501 
515  int GetAcceptanceType(const G4ThreeVector &generationPosition, const G4ThreeVector &direction) const;
516 
521  G4VPhysicalVolume *GetVolume() { return _worldPhysical; }
522 
527  const std::string GetVersion() { return "0"; }
528 
529 private:
538  std::vector<double> InterceptX(double Xplane, const G4ThreeVector &generationPosition,
539  const G4ThreeVector &direction) const;
548  std::vector<double> InterceptY(double Yplane, const G4ThreeVector &generationPosition,
549  const G4ThreeVector &direction) const;
550 
559  std::vector<double> InterceptZ(double Zplane, const G4ThreeVector &generationPosition,
560  const G4ThreeVector &direction) const;
561 
569  double PntDistance(std::vector<double> v, const G4ThreeVector a) const;
570 
580  std::vector<bool> ParseListOfWLayers(std::string str);
581 
582  /* ***** Parameters of the geometry ***** */
583  // General
585  // CALO
587  // Acceptance
589  // PSD
591  // STK
593  // FIT
595  // SCD
597  // TRD
599  // Shield
601  // CSS
603 
604  // Methods for setting geometric properties via datacard commands
605  void _SetAnticoincidenceDetector(const std::string &ac);
606  void _SetPsdType(const std::string &psdType);
607  void _SetCaloCrystalDensity(double density);
608  void _SetCaloSideFitDistance(double d);
609 
610  G4VPhysicalVolume *_worldPhysical;
611 
613  std::vector<float> topLayerZPos;
614  std::vector<float> sideLayerXPos;
615  std::vector<float> sideLayerYPos;
617 };
618 
619 #endif /* PARAMETRICGEO_H_ */
G4VPhysicalVolume * _worldPhysical
Definition: ParametricGeo.h:610
AcceptanceOptions _acceptanceOpt
Definition: ParametricGeo.h:588
FITOptions _fitOpt
Definition: ParametricGeo.h:594
struct ParametricGeo::NormalPositions stkNormalPositions
std::vector< float > sideLayerYPos
Definition: ParametricGeo.h:615
std::vector< float > sideLayerXPos
Definition: ParametricGeo.h:614
void _SetCaloCrystalDensity(double density)
Definition: ParametricGeo.cpp:610
void _SetCaloSideFitDistance(double d)
Definition: ParametricGeo.cpp:615
TRDOptions _trdOpt
Definition: ParametricGeo.h:598
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:1743
STKOptions _stkOpt
Definition: ParametricGeo.h:592
void _SetAnticoincidenceDetector(const std::string &ac)
Definition: ParametricGeo.cpp:577
CaloOptions _caloOpt
Definition: ParametricGeo.h:586
Definition: DetStructs.h:467
Definition: ParametricGeo.h:612
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:1723
SCDOptions _scdOpt
Definition: ParametricGeo.h:596
Definition: DetStructs.h:70
ShieldOptions _shieldOpt
Definition: ParametricGeo.h:600
std::vector< float > topLayerZPos
Definition: ParametricGeo.h:613
double PntDistance(std::vector< double > v, const G4ThreeVector a) const
Calculate the distance between 2 points.
Definition: ParametricGeo.cpp:1753
PSDOptions _psdOpt
Definition: ParametricGeo.h:590
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:394
std::vector< bool > ParseListOfWLayers(std::string str)
Translate the string with information of W layer position in a vector.
Definition: ParametricGeo.cpp:1762
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:1733
Parameterized HERD geometry.
Definition: ParametricGeo.h:476
Definition: DetStructs.h:451
Definition: DetStructs.h:411
G4VPhysicalVolume * GetVolume()
Returns the pointer to physical world.
Definition: ParametricGeo.h:521
Definition: DetStructs.h:141
const std::string GetVersion()
Returns the current version of the geometry.
Definition: ParametricGeo.h:527
void _SetPsdType(const std::string &psdType)
Definition: ParametricGeo.cpp:593
Definition: DetStructs.h:474
Definition: DetStructs.h:312
GeneralOptions _generalOpt
Definition: ParametricGeo.h:584
CSSOptions _cssOpt
Definition: ParametricGeo.h:602
Definition: DetStructs.h:10
Definition: DetStructs.h:354
G4VPhysicalVolume * Construct()
Constructs the full HERD detector.
Definition: ParametricGeo.cpp:619
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:402
struct ParametricGeo::NormalPositions psdNormalPositions