Makoto Asai (SLAC) Geant4 Tutorial Course

Slides:



Advertisements
Similar presentations
Geant4 v9.2p02 Speed up Makoto Asai (SLAC) Geant4 Tutorial Course.
Advertisements

Geant4 v9.2p02 Geometry I Makoto Asai (SLAC) Geant4 Tutorial Course.
Makoto Asai (SLAC) Geant4 Tutorial Course
Geant4 v9.2p02 Primary Particle Makoto Asai (SLAC) Geant4 Tutorial Course.
Defining Material and Geometry Makoto Asai (SLAC) Geant4 Tutorial Course the 2nd Finnish Geant4 Workshop June , Helsinki Institute of Physics June.
Geant4 v9.4 Geometry II Makoto Asai (SLAC) Geant4 Tutorial Course.
2003 by Jim X. Chen: Introduction to Modeling Jim X. Chen George Mason University.
Geant4 v9.4 Geometry I Makoto Asai (SLAC) Geant4 Tutorial Course.
Geometry I Makoto Asai (SLAC) Geant4 Tutorial Course Geant4 v8.2p01.
Detector Description Gabriele Cosmo, Geant4 Users’ Workshop Tutorial SLAC February 18-22, 2002.
Introduction and Getting Started ESA/ESTEC Makoto Asai (SLAC)
Makoto Asai (SLAC) Geant4 Users CERN Nov. 15 th, 2002 Customizing Run Management.
Makoto Asai (SLAC) Geant4 Users CERN Nov. 12 th, 2002 Detector Sensitivity.
Geant4 v9.4 Primary Particle Makoto Asai (SLAC) Geant4 Tutorial Course.
Makoto Asai (SLAC) Geant4 Users SLAC Feb. 18 th, 2002 Detector Sensitivity.
Nested Parameterization
Geant4 v9.4 Geometry II Makoto Asai (SLAC) Geant4 Tutorial Course.
Geant4 v9.3p01 Primary Particle Makoto Asai (SLAC) Geant4 Tutorial Course.
Geometry II Makoto Asai (SLAC) Geant4 Tutorial Course Geant4 v8.2p01.
IE433 CAD/CAM Computer Aided Design and Computer Aided Manufacturing Part-4 Computer Graphics- CAD Software Industrial Engineering Program King Saud University.
Geometry III Makoto Asai (SLAC) Geant4 Tutorial Course Geant4 v8.2p01.
Some tips for geometries of medical applications Makoto Asai (SLAC)
Geometry 5 I.Hrivnacova¹, J.Apostolakis² ¹IPN, Orsay; ²CERN Cours Paris June 2007.
Detector Description – basic concepts The full set of lecture notes of this Geant4 Course is available at
Geant4 Geometry – building your virtual experiment
Tabular Editors for Geant4 Geant4 Geometry Editor and Geant4 Physics Editor CHEP 2000 at Padova Hajime Yoshida Naruto University of Education.
Examples Development and application of CATIA-GDML geometry builder Introduction 1- Institute for Theoretical and Experimental Physics (ITEP), Moscow,
Geometry Detector geometry A detector geometry in Geant4 is made of a number of volumes. The largest volume is called the World volume. It must contain.
17-19 Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan 2007 Geant4 Collaboration.
17-19 Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan 2007 Geant4 Collaboration.
Maria Grazia Pia Detector Response Acknowledgements: A. Lechner, J. Apostolakis, M. Asai, G. Cosmo, A. Howard.
Darmstadt, 15. November 2015 Tobias Stockmanns, FZ Jülich1 A STEP to ROOT converter for the FairRoot framework ALICE-FAIR Computing Meeting, GSI,
User Application Luciano Pandola INFN-LNGS Partially based on a presentation by Maria Grazia Pia (INFN-Ge)
Detector Description: Basics
Detector Description – Part I Ivana Hrivnacova, IPN Orsay Tatiana Nikitina, CERN Aknowledgement: Slides by: J.Apostolakis, G.Cosmo, A. Lechner
17-19 Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan 2007 Geant4 Collaboration.
Geometry 4 I.Hrivnacova IPN, Orsay Most slides thanks to M. Asai, SLAC Cours Paris June 2007.
The GeoModel Toolkit for Detector Description Joe Boudreau Vakho Tsulaia University of Pittsburgh CHEP’04 Interlaken.
Maria Grazia Pia INFN Genova Salamanca, July 2002
VMC workshop1 Ideas for G4 navigation interface using ROOT geometry A.Gheata ALICE offline week, 30 May 05.
A Thread-Parallel Geant4 with Shared Geometry Gene Cooperman and Xin Dong College of Computer and Information Science Northeastern University 360 Huntington.
Detector Description – Part III Ivana Hrivnacova, IPN Orsay Tatiana Nikitina, CERN Aknowledgement: Slides by: J.Apostolakis, G.Cosmo, A. Lechner.
Outline  Developments/fixes in the last year  Introduced in release 9.6 and patches  Planned for release 10.0 and ongoing …  Currently under development.
Detector Description: Basics
Detector Description – basic concepts The full set of lecture notes of this Geant4 Course is available at
Geant4 release 5.1 summary Gabriele Cosmo EP/SFT.
Read-out and detector response
Geometry 3 I.Hrivnacova IPN, Orsay Most slides thanks to M. Asai, SLAC Cours Paris June 2007.
1 Exercises 0 Go inside the “hadrontherapy” directory: cd hadrontherapy Copy the Hadrontherapy example to your home folder: cp –r $G4INSTALL/examples/advanced/hadrontherapy.
Detector Description – Part I Ivana Hrivnacova, IPN Orsay Tatiana Nikitina, CERN Aknowledgement: Slides by: J.Apostolakis, G.Cosmo, A. Lechner
Detector Description: Advanced Features
J. Apostolakis, M. Asai, G. Cosmo, A. Howard
Geant4: Detector description module
Detector Description - Advanced
Geant4 Geometry Speed-ups
Detector Description – basic concepts
Detector Description - Advanced
Geant4: Detector description Gabriele Cosmo,
Basics of a user application
C++ for Geant4 users A collection of most useful and/or common features used in and to use Geant4 Marc Verderi LLR – Ecole polytechnique 14/11/2018 Marc.
Read-out and detector response
Detector sensitivity Makoto Asai (SLAC Computing Services)
Read-out and detector response
User Application
Marc Verderi GEANT4 collaboration meeting 01/10/2002
The full set of lecture notes of this Geant4 Course is available at
Customizing Run Management
The full set of lecture notes of this Geant4 Course is available at
The full set of lecture notes of this Geant4 Course is available at
GEANT4: Inner Poly Shield
Presentation transcript:

Makoto Asai (SLAC) Geant4 Tutorial Course Geometry I Makoto Asai (SLAC) Geant4 Tutorial Course

Geometry I - M.Asai (SLAC) Contents Introduction G4VUserDetectorConstruction class Solid and shape Logical volume Region Physical volume Placement Geometry I - M.Asai (SLAC)

Introduction

Geometry I - M.Asai (SLAC) Detector geometry Three conceptual layers G4VSolid -- shape, size G4LogicalVolume -- daughter physical volumes, material, sensitivity, user limits, etc. G4VPhysicalVolume -- position, rotation G4Box G4Tubs G4VSolid G4VPhysicalVolume G4Material G4VSensitiveDetector G4PVPlacement G4PVParameterised G4VisAttributes G4LogicalVolume Possible attributes associated to a G4LogicalVolume: Magnetic field Material If sensitive, associated sensitive detector Quality of geometry optimization (smartless) Visualization attributes User limits (maximum allowed step, track length, minimum kinetic energy, …) … Geometry I - M.Asai (SLAC)

Define detector geometry Basic strategy G4VSolid* pBoxSolid = new G4Box(“aBoxSolid”, 1.*m, 2.*m, 3.*m); G4LogicalVolume* pBoxLog = new G4LogicalVolume( pBoxSolid, pBoxMaterial, “aBoxLog”, 0, 0, 0); G4VPhysicalVolume* aBoxPhys = new G4PVPlacement( pRotation, G4ThreeVector(posX, posY, posZ), pBoxLog, “aBoxPhys”, pMotherLog, 0, copyNo); A volume is placed in its mother volume. Position and rotation of the daughter volume is described with respect to the local coordinate system of the mother volume. The origin of mother volume’s local coordinate system is at the center of the mother volume. Daughter volume cannot protrude from mother volume. Logical volume : + material, sensitivity, etc. Solid : shape and size Physical volume : + rotation and position Geometry I - M.Asai (SLAC)

Geometrical hierarchy One logical volume can be placed more than once. One or more volumes can be placed to a mother volume. Note that the mother-daughter relationship is an information of G4LogicalVolume. If the mother volume is placed more than once, all daughters are by definition appear in all of mother physical volumes. The world volume must be a unique physical volume which fully contains all the other volumes. The world volume defines the global coordinate system. The origin of the global coordinate system is at the center of the world volume. Position of a track is given with respect to the global coordinate system. Geometry I - M.Asai (SLAC)

G4VUserDetectorConstruction

Geometry I - M.Asai (SLAC) User classes main() Geant4 does not provide main(). Note : classes written in red are mandatory. Initialization classes Use G4RunManager::SetUserInitialization() to define. Invoked at the initialization G4VUserDetectorConstruction G4VUserPhysicsList Action classes Use G4RunManager::SetUserAction() to define. Invoked during an event loop G4VUserPrimaryGeneratorAction G4UserRunAction G4UserEventAction G4UserStackingAction G4UserTrackingAction G4UserSteppingAction Geometry I - M.Asai (SLAC)

G4VUserDetectorConstruction Construct() should return the pointer of the world physical volume. The world physical volume represents all of your geometry setup. Geometry I - M.Asai (SLAC)

Your detector construction #ifndef MyDetctorConstruction_h #define MyDetctorConstruction_h 1 #include “G4VUserDetectorConstruction.hh” class MyDetctorConstruction : public G4VUserDetectorConstruction { public: G4VUserDetectorConstruction(); virtual ~G4VUserDetectorConstruction(); virtual G4VPhysicalVolume* Construct(); // set/get methods if needed private: // granular private methods if needed // data members if needed }; #endif Geometry I - M.Asai (SLAC)

Describe your detector Derive your own concrete class from G4VUserDetectorConstruction abstract base class. Implement the method Construct() Construct all necessary materials Define shapes/solids Define logical volumes Place volumes of your detector geometry Associate (magnetic) field to geometry (optional) Instantiate sensitive detectors / scorers and set them to corresponding logical volumes (optional) Define visualization attributes for the detector elements (optional) Define regions (optional) Set your construction class to G4RunManager It is suggested to modularize Construct() method w.r.t. each component or sub-detector for easier maintenance of your code. The main class defining the detector geometry is derived from G4VUserDetectorConstruction. It is advised to modularize its design according to the geometry components (I.e. define a class for each geometry component), especially for complex geometry structures. Definition of attributes, like sensitive detectors, local fields or visualization are optional. Geometry I - M.Asai (SLAC)

Solid and shape

Geometry I - M.Asai (SLAC) G4VSolid Abstract class. All solids in Geant4 are derived from it. It defines but does not implement all functions required to: compute distances between the shape and a given point check whether a point is inside the shape compute the extent of the shape compute the surface normal to the shape at a given point User can create his/her own solid class. Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Solids Solids defined in Geant4: CSG (Constructed Solid Geometry) solids G4Box, G4Tubs, G4Cons, G4Trd, … Analogous to simple GEANT3 CSG solids Specific solids (CSG like) G4Polycone, G4Polyhedra, G4Hype, … BREP (Boundary REPresented) solids G4BREPSolidPolycone, G4BSplineSurface, … Any order surface Boolean solids G4UnionSolid, G4SubtractionSolid, … Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) CSG: G4Box, G4Tubs G4Box(const G4String &pname, // name G4double half_x, // X half size G4double half_y, // Y half size G4double half_z); // Z half size G4Tubs(const G4String &pname, // name G4double pRmin, // inner radius G4double pRmax, // outer radius G4double pDz, // Z half length G4double pSphi, // starting Phi G4double pDphi); // segment angle Geometry I - M.Asai (SLAC)

Other CSG solids G4Para (parallelepiped) G4Trap G4Cons G4Trd G4Torus Consult to Section 4.1.2 of Geant4 Application Developers Guide for all available shapes. G4Sphere G4Orb (full solid sphere) Geometry I - M.Asai (SLAC)

Specific CSG Solids: G4Polycone G4Polycone(const G4String& pName, G4double phiStart, G4double phiTotal, G4int numRZ, const G4double r[], const G4double z[]); numRZ - numbers of corners in the r,z space r, z - coordinates of corners Constructor by planes: G4Polycone( const G4String& pName, G4double phiStart, G4double phiTotal, G4int numZPlanes, const G4double zPlane[], const G4double rInner[], const G4double rOuter[]) Geometry I - M.Asai (SLAC)

Other Specific CSG solids G4Tet (tetrahedra) G4Hype G4Polyhedra G4Ellipsoid G4EllipticalTube G4TwistedTrd G4TwistedBox G4TwistedTrap Consult to Section 4.1.2 of Geant4 Application Developers Guide for all available shapes. G4EllipticalCone G4TwistedTubs Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) BREP Solids BREP = Boundary REPresented Solid Listing all its surfaces specifies a solid e.g. 6 planes for a cube Surfaces can be planar, 2nd or higher order elementary BREPS Splines, B-Splines, NURBS (Non-Uniform B-Splines) advanced BREPS Few elementary BREPS pre-defined box, cons, tubs, sphere, torus, polycone, polyhedra Advanced BREPS built through CAD systems In picture: G4double zval[6] = { -4000*mm, -3500*mm, -3500*mm, -1500*mm, -1500*mm, -1000*mm }; G4double rmin[6] = { 500*mm, 500*mm, 500*mm, 500*mm, 500*mm, 500*mm }; G4double rmax[6] = { 500*mm, 2000*mm, 1000*mm, 1000*mm, 2000*mm, 500*mm }; G4BREPSolidPCone *Solid = new G4BREPSolidPCone( "BREPSolidPCone", 0.0*rad, twopi*rad, 6, zval[0], zval, rmin, rmax ); Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Boolean Solids Solids can be combined using boolean operations: G4UnionSolid, G4SubtractionSolid, G4IntersectionSolid Requires: 2 solids, 1 boolean operation, and an (optional) transformation for the 2nd solid 2nd solid is positioned relative to the coordinate system of the 1st solid Result of boolean operation becomes a solid. Thus the third solid can be combined to the resulting solid of first operation. Solids to be combined can be either CSG or other Boolean solids. Note: tracking cost for the navigation in a complex Boolean solid is proportional to the number of constituent CSG solids G4UnionSolid G4SubtractionSolid G4IntersectionSolid Passive transformation: a rotation matrix/translation is provided to transform the coordinate system of the 1st solid to the coordinate system of the 2nd solid. The final transformation in this case is NOT copied, therefore, once defined and used it must not be modified. Active transformation: a transformation (G4Transform3D) is first created to move the 2nd solid to the correct position. The transformation in this case is stored (copied) in the final boolean solid. Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Boolean solid Geometry I - M.Asai (SLAC)

Boolean Solids - example G4VSolid* box = new G4Box(“Box",50*cm,60*cm,40*cm); G4VSolid* cylinder = new G4Tubs(“Cylinder”,0.,50.*cm,50.*cm,0.,2*M_PI*rad); G4VSolid* union = new G4UnionSolid("Box+Cylinder", box, cylinder); G4VSolid* subtract = new G4SubtractionSolid("Box-Cylinder", box, cylinder, 0, G4ThreeVector(30.*cm,0.,0.)); G4RotationMatrix* rm = new G4RotationMatrix(); rm->RotateX(30.*deg); G4VSolid* intersect = new G4IntersectionSolid("Box&&Cylinder", box, cylinder, rm, G4ThreeVector(0.,0.,0.)); The origin and the coordinates of the combined solid are the same as those of the first solid. Passive transformation: a rotation matrix/translation is provided to transform the coordinate system of the 1st solid to the coordinate system of the 2nd solid. The final transformation in this case is NOT copied, therefore, once defined and used it must not be modified. Active transformation: a transformation (G4Transform3D) is first created to move the 2nd solid to the correct position. The transformation in this case is stored (copied) in the final boolean solid. Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Tessellated solids G4TessellatedSolid (since 8.1) Generic solid defined by a number of facets (G4VFacet) Facets can be triangular (G4TriangularFacet) or quadrangular (G4QuadrangularFacet) Constructs especially important for conversion of complex geometrical shapes imported from CAD systems But can also be explicitly defined: By providing the vertices of the facets in anti-clock wise order, in absolute or relative reference frame GDML binding can be converted from STEP (see TEST directory) vertices need to be defined in the right order with absolute of relative positions Geometry I - M.Asai (SLAC)

A CAD imported assembly with tessellated solids - release 8.1

G4LogicalVolume

Geometry I - M.Asai (SLAC) G4LogicalVolume G4LogicalVolume(G4VSolid* pSolid, G4Material* pMaterial, const G4String &name, G4FieldManager* pFieldMgr=0, G4VSensitiveDetector* pSDetector=0, G4UserLimits* pULimits=0); Contains all information of volume except position and rotation Shape and dimension (G4VSolid) Material, sensitivity, visualization attributes Position of daughter volumes Magnetic field, User limits, Region Physical volumes of same type can share the common logical volume object. The pointers to solid must NOT be null. The pointers to material must NOT be null for tracking geometry. It is not meant to act as a base class. Geometry I - M.Asai (SLAC)

Computing volumes and weights Geometrical volume of a generic solid or boolean composition can be computed from the solid: G4double GetCubicVolume(); Exact volume is determinatively calculated for most of CSG solids, while estimation based on Monte Carlo integration is given for other solids. Overall weight of a geometry setup (sub-geometry) can be computed from the logical volume: G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material* pMaterial=0); The computation may require a considerable amount of time, depending on the complexity of the geometry. The return value is cached and reused until forced=true. Daughter volumes will be neglected if propagate=false. GetCubicVolume: Returns an estimation of the solid volume in internal units. Should be overloaded by the concrete solid implementation to perform exact computation of the volume quantity and eventually “cache” the computed value, such that it is NOT recomputed each time the method is called. GetMass: Returns the mass of the logical-volume tree computed from the estimated geometrical volume of each solid and material associated to the logical volume and its daughters. The computation may require a considerable amount of time, depending from the complexity of the geometry tree. The returned value is cached and can be used for successive calls (default), unless re-computation is forced by providing 'true' for the ‘forced’ argument in input. Computation should be forced if the geometry setup has changed after the previous call. An optional argument to specify a parameterised material is provided. Geometry I - M.Asai (SLAC)

Region

Geometry I - M.Asai (SLAC) Region A region may have its unique Production thresholds (cuts) If a region in the mass geometry does not have its own production thresholds, those of the default region are used (i.e., may not be those of the parent region). User limits Artificial limits affecting to the tracking, e.g. max step length, max number of steps, min kinetic energy left, etc. You can set user limits directly to logical volume as well. If both logical volume and associated region have user limits, those of logical volume wins. User region information E.g. to implement a fast Boolean method to identify the nature of the region. Fast simulation manager Regional user stepping action Field manager Please note : World logical volume is recognized as the default region. User is not allowed to define a region to the world logical volume. Geometry I - M.Asai (SLAC)

World Volume - Default Region Root logical volume A logical volume can be a region. More than one logical volumes may belong to a region. A region is a part of the geometrical hierarchy, i.e. a set of geometry volumes, typically of a sub-system. A logical volume becomes a root logical volume once a region is assigned to it. All daughter volumes belonging to the root logical volume share the same region, unless a daughter volume itself becomes to another root. Important restriction : No logical volume can be shared by more than one regions, regardless of root volume or not. World Volume - Default Region Root logical - Region A Root logical - Region B Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) G4Region A region is instantiated and defined by G4Region* aRegion = new G4Region(“region_name”); aRegion->AddRootLogicalVolume(aLogicalVolume); Region propagates down to all geometrical hierarchy until the bottom or another root logical volume. Production thresholds (cuts) can be assigned to a region by G4Region* aRegion = G4RegionStore::GetInstance()->GetRegion(“region_name”); G4ProductionCuts* cuts = new G4ProductionCuts; cuts->SetProductionCut(cutValue); aRegion->SetProductionCuts(cuts); Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) G4Region class G4Region class may take following quantities. void SetProductionCuts(G4ProductionCuts* cut); void SetUserInformation(G4VUserRegionInformation* uri); void SetUserLimits(G4UserLimits* ul); void SetFastSimulationManager(G4FastSimulationManager* fsm); void SetRegionalSteppingAction(G4UserSteppingAction* rusa); void SetFieldManager(G4FieldManager* fm); Please note: If any of the above properties are not set for a region, properties of the world volume (i.e. default region) are used. Properties of mother region do not propagate to daughter region. Geometry I - M.Asai (SLAC)

Physical volume

Geometry I - M.Asai (SLAC) Detector geometry Three conceptual layers G4VSolid -- shape, size G4LogicalVolume -- daughter physical volumes, material, sensitivity, user limits, etc. G4VPhysicalVolume -- position, rotation G4Box G4Tubs G4VSolid G4VPhysicalVolume G4Material G4VSensitiveDetector G4PVPlacement G4PVParameterised G4VisAttributes G4LogicalVolume Possible attributes associated to a G4LogicalVolume: Magnetic field Material If sensitive, associated sensitive detector Quality of geometry optimization (smartless) Visualization attributes User limits (maximum allowed step, track length, minimum kinetic energy, …) … Geometry I - M.Asai (SLAC)

Define detector geometry Basic strategy G4VSolid* pBoxSolid = new G4Box(“aBoxSolid”, 1.*m, 2.*m, 3.*m); G4LogicalVolume* pBoxLog = new G4LogicalVolume( pBoxSolid, pBoxMaterial, “aBoxLog”, 0, 0, 0); G4VPhysicalVolume* aBoxPhys = new G4PVPlacement( pRotation, G4ThreeVector(posX, posY, posZ), pBoxLog, “aBoxPhys”, pMotherLog, 0, copyNo); Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Physical Volumes Placement volume : it is one positioned volume One physical volume object represents one “real” volume. Repeated volume : a volume placed many times One physical volume object represents any number of “real” volumes. reduces use of memory. Parameterised repetition w.r.t. copy number Replica and Division simple repetition along one axis A mother volume can contain either many placement volumes or, one repeated volume placement repeated Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Physical volume G4PVPlacement 1 Placement = One Placement Volume A volume instance positioned once in its mother volume G4PVParameterised 1 Parameterized = Many Repeated Volumes Parameterized by the copy number Shape, size, material, sensitivity, vis attributes, position and rotation can be parameterized by the copy number. You have to implement a concrete class of G4VPVParameterisation. Reduction of memory consumption Currently: parameterization can be used only for volumes that either a) have no further daughters, or b) are identical in size & shape (so that grand-daughters are safely fit inside). By implementing G4PVNestedParameterisation instead of G4VPVParameterisation, material, sensitivity and vis attributes can be parameterized by the copy numbers of ancestors. Geometry I - M.Asai (SLAC)

Geometry I - M.Asai (SLAC) Physical volume G4PVReplica 1 Replica = Many Repeated Volumes Daughters of same shape are aligned along one axis Daughters fill the mother completely without gap in between. G4PVDivision 1 Division = Many Repeated Volumes Daughters of same shape are aligned along one axis and fill the mother. There can be gaps between mother wall and outmost daughters. No gap in between daughters. G4ReflectionFactory 1 Placement = a pair of Placement volumes generating placements of a volume and its reflected volume Useful typically for end-cap calorimeter G4AssemblyVolume 1 Placement = a set of Placement volumes Position a group of volumes Geometry I - M.Asai (SLAC)

G4PVPlacement

Geometry I - M.Asai (SLAC) G4PVPlacement G4PVPlacement( G4Transform3D(G4RotationMatrix &pRot, // rotation of daughter volume const G4ThreeVector &tlate), // position in mother frame G4LogicalVolume *pDaughterLogical, const G4String &pName, G4LogicalVolume *pMotherLogical, G4bool pMany, // ‘true’ is not supported yet… G4int pCopyNo, // unique arbitrary integer G4bool pSurfChk=false); // optional boundary check Single volume positioned relatively to the mother volume. Mother volume Adopting the constructor using the pointer to the logical volume of the mother, is a very natural way of defining a physical volume, and is especially useful when creating sub-detectors: the mother volumes is not placed until a later stage of the assembly program. The G4Transform3D argument should be constructed by: i) First rotating it to align the solid to the system of reference of its mother volume *pMother, and ii) Then placing the solid at the location Transform3D.getTranslation(), with respect to the origin of the system of coordinates of the mother volume. This is useful for the people who prefer to think in terms of moving objects in a given reference frame. rotation translation in mother frame Geometry I - M.Asai (SLAC)

Alternative G4PVPlacement G4PVPlacement(G4RotationMatrix* pRot, // rotation of mother frame const G4ThreeVector &tlate, // position in mother frame G4LogicalVolume *pDaughterLogical, const G4String &pName, G4LogicalVolume *pMotherLogical, G4bool pMany, // ‘true’ is not supported yet… G4int pCopyNo, // unique arbitrary integer G4bool pSurfChk=false); // optional boundary check Single volume positioned relatively to the mother volume. Note: This G4PVPlacement is identical to the previous one if there is no rotation. Previous one is much easier to understand. The advantage of this second constructor is setting the pointer of the rotation matrix rather than providing the values of the matrix. You may change the matrix without accessing to the physical volume. This is for power-users, though. Mother volume translation in mother frame Adopting the constructor using the pointer to the logical volume of the mother, is a very natural way of defining a physical volume, and is especially useful when creating sub-detectors: the mother volumes is not placed until a later stage of the assembly program. The G4Transform3D argument should be constructed by: i) First rotating it to align the solid to the system of reference of its mother volume *pMother, and ii) Then placing the solid at the location Transform3D.getTranslation(), with respect to the origin of the system of coordinates of the mother volume. This is useful for the people who prefer to think in terms of moving objects in a given reference frame. rotation Geometry I - M.Asai (SLAC)