ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4FullProjTiltedSpacalDetector Class Reference

Fully projective SPACAL built from 2D tapered modules and allow azimuthal tilts. More...

#include <coresoftware/blob/master/simulation/g4simulation/g4detectors/PHG4FullProjTiltedSpacalDetector.h>

+ Inheritance diagram for PHG4FullProjTiltedSpacalDetector:
+ Collaboration diagram for PHG4FullProjTiltedSpacalDetector:

Public Types

typedef PHG4CylinderGeom_Spacalv3 SpacalGeom_t
 
- Public Types inherited from PHG4SpacalDetector
enum  {
  FIBER_CORE = 1, FIBER_CLADING = 0, ABSORBER = -1, SUPPORT = -2,
  INACTIVE = -100
}
 
typedef PHG4CylinderGeom_Spacalv1 SpacalGeom_t
 

Public Member Functions

 PHG4FullProjTiltedSpacalDetector (PHG4Subsystem *subsys, PHCompositeNode *Node, const std::string &dnam, PHParameters *parameters, const int layer=0)
 
 ~PHG4FullProjTiltedSpacalDetector (void) override
 
void ConstructMe (G4LogicalVolume *world) override
 
std::pair< G4LogicalVolume
*, G4Transform3D
Construct_AzimuthalSeg () override
 
virtual G4LogicalVolumeConstruct_Tower (const SpacalGeom_t::geom_tower &tower)
 a block along z axis built with G4Trd that is slightly tapered in x dimension
 
virtual G4LogicalVolumeConstruct_LightGuide (const SpacalGeom_t::geom_tower &tower, const int index_x, const int index_y)
 a block for the light guide along z axis that fit to the tower
 
virtual int Construct_Fibers (const SpacalGeom_t::geom_tower &tower, G4LogicalVolume *LV_tower)
 a block along z axis built with G4Trd that is slightly tapered in x dimension
 
virtual int Construct_Fibers_SameLengthFiberPerTower (const SpacalGeom_t::geom_tower &tower, G4LogicalVolume *LV_tower)
 Fully projective spacal with 2D tapered modules. To speed up construction, same-length fiber is used cross one tower.
 
void Print (const std::string &what="ALL") const override
 
PHG4CylinderGeomclone_geom () const override
 
- Public Member Functions inherited from PHG4SpacalDetector
 PHG4SpacalDetector (PHG4Subsystem *subsys, PHCompositeNode *Node, const std::string &dnam, PHParameters *parameters, const int layer=0, bool init_geom=true)
 
 ~PHG4SpacalDetector (void) override
 
void ConstructMe (G4LogicalVolume *world) override
 
virtual G4LogicalVolumeConstruct_Fiber (const G4double length, const std::string &id)
 
void SetActive (const int i=1)
 
void SetAbsorberActive (const int i=1)
 
void SetDetectorType (const std::string &typ)
 
int IsInCylinderActive (const G4VPhysicalVolume *)
 
void SuperDetector (const std::string &name)
 
const std::string SuperDetector () const
 
int get_Layer () const
 
void Print (const std::string &what="ALL") const override
 
const SpacalGeom_tget_geom () const
 
PHG4SpacalDisplayActionGetDisplayAction ()
 
void CosmicSetup (const int i)
 
int CosmicSetup ()
 
- Public Member Functions inherited from PHG4Detector
 PHG4Detector ()=delete
 constructor
 
 PHG4Detector (PHG4Subsystem *subsys, PHCompositeNode *Node, const std::string &nam)
 
virtual ~PHG4Detector (void)
 destructor
 
virtual void Construct (G4LogicalVolume *world) final
 construct method
 
virtual void PostConstruction ()
 Optional PostConstruction call after all geometry is constructed.
 
virtual void Verbosity (const int v)
 
virtual int Verbosity () const
 
virtual G4UserSteppingActionGetSteppingAction ()
 
virtual std::string GetName () const
 
virtual void OverlapCheck (const bool chk)
 
virtual bool OverlapCheck () const
 
virtual int DisplayVolume (G4VSolid *volume, G4LogicalVolume *logvol, G4RotationMatrix *rotm=nullptr)
 
virtual int DisplayVolume (G4LogicalVolume *checksolid, G4LogicalVolume *logvol, G4RotationMatrix *rotm=nullptr)
 
virtual PHCompositeNodetopNode ()
 
virtual PHG4SubsystemGetMySubsystem ()
 

Private Member Functions

SpacalGeom_tget_geom_v3 ()
 get the v3 cast of the geometry object
 
const SpacalGeom_tget_geom_v3 () const
 

Additional Inherited Members

- Static Public Member Functions inherited from PHG4Detector
static G4MaterialGetDetectorMaterial (const std::string &name, const bool quit=true)
 
static G4ElementGetDetectorElement (const std::string &name, const bool quit=true)
 
- Protected Attributes inherited from PHG4SpacalDetector
std::map< const
G4VPhysicalVolume *, int
fiber_core_vol
 
std::map< const
G4VPhysicalVolume *, int
fiber_vol
 map for G4VPhysicalVolume -> fiber ID
 
std::map< const
G4VPhysicalVolume *, int
calo_vol
 map for G4VPhysicalVolume -> Sector ID
 
std::map< const
G4VPhysicalVolume *, int
block_vol
 map for G4VPhysicalVolume -> towers ID
 
int active = 0
 
int absorberactive = 0
 
int layer = -9999
 
int m_CosmicSetupFlag = 0
 
std::string detector_type
 
std::string superdetector
 
G4UserLimitsfiber_core_step_limits = nullptr
 
PHG4GDMLConfiggdml_config = nullptr
 registry for volumes that should not be exported, i.e. fibers
 
SpacalGeom_t_geom = nullptr
 

Detailed Description

Fully projective SPACAL built from 2D tapered modules and allow azimuthal tilts.

Definition at line 31 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 31 of file PHG4FullProjTiltedSpacalDetector.h

Member Typedef Documentation

Definition at line 34 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 34 of file PHG4FullProjTiltedSpacalDetector.h

Constructor & Destructor Documentation

PHG4FullProjTiltedSpacalDetector::PHG4FullProjTiltedSpacalDetector ( PHG4Subsystem subsys,
PHCompositeNode Node,
const std::string &  dnam,
PHParameters parameters,
const int  layer = 0 
)

Definition at line 57 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 57 of file PHG4FullProjTiltedSpacalDetector.cc

References PHG4SpacalDetector::_geom, get_geom_v3(), and PHG4CylinderGeom_Spacalv3::ImportParameters().

+ Here is the call graph for this function:

PHG4FullProjTiltedSpacalDetector::~PHG4FullProjTiltedSpacalDetector ( void  )
inlineoverride

Definition at line 40 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 40 of file PHG4FullProjTiltedSpacalDetector.h

Member Function Documentation

PHG4CylinderGeom* PHG4FullProjTiltedSpacalDetector::clone_geom ( ) const
inlineoverridevirtual

Reimplemented from PHG4SpacalDetector.

Definition at line 66 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 66 of file PHG4FullProjTiltedSpacalDetector.h

References get_geom_v3().

+ Here is the call graph for this function:

std::pair< G4LogicalVolume *, G4Transform3D > PHG4FullProjTiltedSpacalDetector::Construct_AzimuthalSeg ( )
overridevirtual

rotation angle

displacement along the width direction, which is the radial direction if tilt = 0

wdith along the approximate radial direction

Reimplemented from PHG4SpacalDetector.

Definition at line 98 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 98 of file PHG4FullProjTiltedSpacalDetector.cc

References PHG4SpacalDisplayAction::AddVolume(), angle, PHG4SpacalDetector::block_vol, PHG4SpacalDetector::calo_vol, PHG4CylinderGeom_Spacalv3::geom_tower::centralX, PHG4CylinderGeom_Spacalv3::geom_tower::centralY, PHG4CylinderGeom_Spacalv3::geom_tower::centralZ, cm, Construct_LightGuide(), Construct_Tower(), hFarBwdBeamLine::enclosure_center, epsilon(), PHG4GDMLConfig::exclude_physical_vol(), PHG4SpacalDetector::gdml_config, PHG4CylinderGeom_Spacalv2::get_assembly_spacing(), PHG4CylinderGeom_Spacalv2::get_azimuthal_n_sec(), PHG4CylinderGeom_Spacalv3::get_divider_width(), get_geom_v3(), PHG4CylinderGeom_Spacalv1::get_length(), PHG4CylinderGeom_Spacalv3::get_max_phi_bin_in_sec(), PHG4CylinderGeom_Spacalv1::get_max_radius(), PHG4CylinderGeomv1::get_radius(), PHG4CylinderGeom_Spacalv3::get_sector_tower_map(), PHG4CylinderGeom_Spacalv3::get_sidewall_outer_torr(), PHG4CylinderGeom_Spacalv3::get_sidewall_thickness(), PHFlag::get_StringFlag(), get_thickness(), PHG4Detector::GetDetectorMaterial(), PHG4SpacalDetector::GetDisplayAction(), PHG4Detector::GetName(), G4VPhysicalVolume::GetName(), G4LogicalVolume::GetName(), halfpi, PHG4CylinderGeom_Spacalv3::geom_tower::id, HepGeom::Transform3D::Identity, recoConsts::instance(), PHG4CylinderGeom_Spacalv3::geom_tower::LightguideHeight, M_PI, PHG4CylinderGeom_Spacalv3::geom_tower::NSubtowerX, PHG4CylinderGeom_Spacalv3::geom_tower::NSubtowerY, PHG4Detector::OverlapCheck(), pi, PHG4CylinderGeom_Spacalv3::geom_tower::pRotationAngleX, rad, thickness, nlohmann::to_string(), um, PHG4Detector::Verbosity(), and width.

+ Here is the call graph for this function:

int PHG4FullProjTiltedSpacalDetector::Construct_Fibers ( const SpacalGeom_t::geom_tower tower,
G4LogicalVolume LV_tower 
)
virtual

a block along z axis built with G4Trd that is slightly tapered in x dimension

Definition at line 672 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 672 of file PHG4FullProjTiltedSpacalDetector.cc

References HepGeom::BasicVector3D< T >::angle(), cm, PHG4CylinderGeom_Spacalv3::geom_tower::compose_fiber_id(), PHG4SpacalDetector::Construct_Fiber(), HepGeom::BasicVector3D< T >::cross(), PHG4GDMLConfig::exclude_physical_vol(), PHG4SpacalDetector::fiber_vol, PHG4SpacalDetector::gdml_config, PHG4CylinderGeom_Spacalv1::get_construction_verbose(), PHG4CylinderGeom_Spacalv1::get_fiber_outer_r(), get_geom_v3(), PHG4Detector::GetName(), PHG4CylinderGeom_Spacalv3::geom_tower::id, HepGeom::BasicVector3D< T >::mag(), PHG4CylinderGeom_Spacalv3::geom_tower::ModuleSkinThickness, PHG4CylinderGeom_Spacalv3::geom_tower::NFiberX, PHG4CylinderGeom_Spacalv3::geom_tower::NFiberY, PHG4Detector::OverlapCheck(), PHG4CylinderGeom_Spacalv3::geom_tower::pAlp1, PHG4CylinderGeom_Spacalv3::geom_tower::pAlp2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx1, PHG4CylinderGeom_Spacalv3::geom_tower::pDx2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx3, PHG4CylinderGeom_Spacalv3::geom_tower::pDx4, PHG4CylinderGeom_Spacalv3::geom_tower::pDy1, PHG4CylinderGeom_Spacalv3::geom_tower::pDy2, PHG4CylinderGeom_Spacalv3::geom_tower::pDz, PHG4CylinderGeom_Spacalv3::geom_tower::pPhi, PHG4CylinderGeom_Spacalv3::geom_tower::pTheta, v1, v2, HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().

Referenced by Construct_Tower().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PHG4FullProjTiltedSpacalDetector::Construct_Fibers_SameLengthFiberPerTower ( const SpacalGeom_t::geom_tower tower,
G4LogicalVolume LV_tower 
)
virtual

Fully projective spacal with 2D tapered modules. To speed up construction, same-length fiber is used cross one tower.

Definition at line 535 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 535 of file PHG4FullProjTiltedSpacalDetector.cc

References HepGeom::BasicVector3D< T >::angle(), cm, PHG4CylinderGeom_Spacalv3::geom_tower::compose_fiber_id(), PHG4SpacalDetector::Construct_Fiber(), HepGeom::BasicVector3D< T >::cross(), PHG4GDMLConfig::exclude_physical_vol(), PHG4SpacalDetector::fiber_vol, PHG4SpacalDetector::gdml_config, PHG4CylinderGeom_Spacalv1::get_construction_verbose(), PHG4CylinderGeom_Spacalv1::get_fiber_outer_r(), get_geom_v3(), PHG4Detector::GetName(), PHG4CylinderGeom_Spacalv3::geom_tower::id, HepGeom::BasicVector3D< T >::mag(), min, PHG4CylinderGeom_Spacalv3::geom_tower::ModuleSkinThickness, PHG4CylinderGeom_Spacalv3::geom_tower::NFiberX, PHG4CylinderGeom_Spacalv3::geom_tower::NFiberY, PHG4Detector::OverlapCheck(), PHG4CylinderGeom_Spacalv3::geom_tower::pAlp1, PHG4CylinderGeom_Spacalv3::geom_tower::pAlp2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx1, PHG4CylinderGeom_Spacalv3::geom_tower::pDx2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx3, PHG4CylinderGeom_Spacalv3::geom_tower::pDx4, PHG4CylinderGeom_Spacalv3::geom_tower::pDy1, PHG4CylinderGeom_Spacalv3::geom_tower::pDy2, PHG4CylinderGeom_Spacalv3::geom_tower::pDz, PHG4CylinderGeom_Spacalv3::geom_tower::pPhi, PHG4CylinderGeom_Spacalv3::geom_tower::pTheta, v1, v2, HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().

Referenced by Construct_Tower().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4LogicalVolume * PHG4FullProjTiltedSpacalDetector::Construct_LightGuide ( const SpacalGeom_t::geom_tower tower,
const int  index_x,
const int  index_y 
)
virtual
G4LogicalVolume * PHG4FullProjTiltedSpacalDetector::Construct_Tower ( const SpacalGeom_t::geom_tower tower)
virtual

a block along z axis built with G4Trd that is slightly tapered in x dimension

Definition at line 772 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 772 of file PHG4FullProjTiltedSpacalDetector.cc

References PHG4SpacalDisplayAction::AddVolume(), cm, cm3, Construct_Fibers(), Construct_Fibers_SameLengthFiberPerTower(), FatalException, G4Exception(), PHG4CylinderGeom_Spacalv1::get_config(), get_geom_v3(), PHG4Detector::GetDetectorMaterial(), PHG4SpacalDetector::GetDisplayAction(), G4LogicalVolume::GetMass(), PHG4Detector::GetName(), gram, PHG4CylinderGeom_Spacalv3::geom_tower::id, PHG4CylinderGeom_Spacalv1::kFullProjective_2DTaper_Tilted, PHG4CylinderGeom_Spacalv1::kFullProjective_2DTaper_Tilted_SameLengthFiberPerTower, message(), PHG4CylinderGeom_Spacalv3::geom_tower::pAlp1, PHG4CylinderGeom_Spacalv3::geom_tower::pAlp2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx1, PHG4CylinderGeom_Spacalv3::geom_tower::pDx2, PHG4CylinderGeom_Spacalv3::geom_tower::pDx3, PHG4CylinderGeom_Spacalv3::geom_tower::pDx4, PHG4CylinderGeom_Spacalv3::geom_tower::pDy1, PHG4CylinderGeom_Spacalv3::geom_tower::pDy2, PHG4CylinderGeom_Spacalv3::geom_tower::pDz, PHG4CylinderGeom_Spacalv3::geom_tower::pPhi, PHG4CylinderGeom_Spacalv3::geom_tower::pTheta, and rad.

Referenced by Construct_AzimuthalSeg().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void PHG4FullProjTiltedSpacalDetector::ConstructMe ( G4LogicalVolume world)
overridevirtual

Implements PHG4Detector.

Definition at line 80 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 80 of file PHG4FullProjTiltedSpacalDetector.cc

References PHG4SpacalDetector::ConstructMe(), get_geom_v3(), and PHG4Detector::GetName().

+ Here is the call graph for this function:

SpacalGeom_t* PHG4FullProjTiltedSpacalDetector::get_geom_v3 ( )
inlineprivate

get the v3 cast of the geometry object

Definition at line 75 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 75 of file PHG4FullProjTiltedSpacalDetector.h

References PHG4SpacalDetector::_geom.

Referenced by clone_geom(), Construct_AzimuthalSeg(), Construct_Fibers(), Construct_Fibers_SameLengthFiberPerTower(), Construct_Tower(), ConstructMe(), PHG4FullProjTiltedSpacalDetector(), and Print().

+ Here is the caller graph for this function:

const SpacalGeom_t* PHG4FullProjTiltedSpacalDetector::get_geom_v3 ( ) const
inlineprivate

Definition at line 83 of file PHG4FullProjTiltedSpacalDetector.h.

View newest version in sPHENIX GitHub at line 83 of file PHG4FullProjTiltedSpacalDetector.h

References PHG4SpacalDetector::_geom.

void PHG4FullProjTiltedSpacalDetector::Print ( const std::string &  what = "ALL") const
overridevirtual

Reimplemented from PHG4Detector.

Definition at line 916 of file PHG4FullProjTiltedSpacalDetector.cc.

View newest version in sPHENIX GitHub at line 916 of file PHG4FullProjTiltedSpacalDetector.cc

References get_geom_v3(), PHG4Detector::GetName(), and PHG4CylinderGeom_Spacalv3::Print().

+ Here is the call graph for this function:


The documentation for this class was generated from the following files: