Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/geometry/divisions/src/G4PVDivisionFactory.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /geometry/divisions/src/G4PVDivisionFactory.cc (Version 11.3.0) and /geometry/divisions/src/G4PVDivisionFactory.cc (Version 11.1.3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // G4PVDivisionFactory Implementation file         26 // G4PVDivisionFactory Implementation file
 27 //                                                 27 //
 28 // Author: Ivana Hrivnacova, 04.05.2004  (Ivan     28 // Author: Ivana Hrivnacova, 04.05.2004  (Ivana.Hrivnacova@cern.ch)
 29 // -------------------------------------------     29 // --------------------------------------------------------------------
 30                                                    30 
 31 #include "G4PVDivisionFactory.hh"                  31 #include "G4PVDivisionFactory.hh"
 32 #include "G4PVDivision.hh"                         32 #include "G4PVDivision.hh"
 33 #include "G4VDivisionParameterisation.hh"          33 #include "G4VDivisionParameterisation.hh"
 34                                                    34 
 35 //____________________________________________     35 //_____________________________________________________________________________
 36                                                    36 
                                                   >>  37 G4PVDivisionFactory::G4PVDivisionFactory()
                                                   >>  38   : G4VPVDivisionFactory()
                                                   >>  39 {
                                                   >>  40   // Protected singleton constructor.
                                                   >>  41   // ---
                                                   >>  42 }
                                                   >>  43 
                                                   >>  44 //_____________________________________________________________________________
                                                   >>  45 
                                                   >>  46 G4PVDivisionFactory::~G4PVDivisionFactory()
                                                   >>  47 {
                                                   >>  48 }
                                                   >>  49 
                                                   >>  50 //_____________________________________________________________________________
                                                   >>  51 
 37 G4PVDivisionFactory* G4PVDivisionFactory::GetI     52 G4PVDivisionFactory* G4PVDivisionFactory::GetInstance()
 38 {                                                  53 {
 39   if (fgInstance == nullptr)                       54   if (fgInstance == nullptr)
 40   {                                                55   {
 41     fgInstance =  new G4PVDivisionFactory;         56     fgInstance =  new G4PVDivisionFactory;
 42   }                                                57   }
 43   return dynamic_cast<G4PVDivisionFactory*>(fg     58   return dynamic_cast<G4PVDivisionFactory*>(fgInstance);
 44 }                                                  59 } 
 45                                                    60 
 46 //____________________________________________     61 //_____________________________________________________________________________
 47                                                    62 
 48 G4VPhysicalVolume*                                 63 G4VPhysicalVolume* 
 49 G4PVDivisionFactory::CreatePVDivision(const G4     64 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 50                              G4LogicalVolume*      65                              G4LogicalVolume* pLogical,
 51                              G4LogicalVolume*      66                              G4LogicalVolume* pMotherLogical,
 52                              const EAxis pAxis     67                              const EAxis pAxis,
 53                              const G4int nRepl     68                              const G4int nReplicas,
 54                              const G4double wi     69                              const G4double width,
 55                              const G4double of     70                              const G4double offset )
 56 {                                                  71 {     
 57   // Create division - with number of division     72   // Create division - with number of divisions and width
 58   // ---                                           73   // ---
 59                                                    74 
 60   return new G4PVDivision(pName, pLogical, pMo     75   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 61                           pAxis, nReplicas, wi     76                           pAxis, nReplicas, width, offset);
 62 }                                                  77 }    
 63                                                    78 
 64 //____________________________________________     79 //_____________________________________________________________________________
 65                                                    80 
 66 G4VPhysicalVolume*                                 81 G4VPhysicalVolume* 
 67 G4PVDivisionFactory::CreatePVDivision(const G4     82 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 68                              G4LogicalVolume*      83                              G4LogicalVolume* pLogical,
 69                              G4LogicalVolume*      84                              G4LogicalVolume* pMotherLogical,
 70                              const EAxis pAxis     85                              const EAxis pAxis,
 71                              const G4int nRepl     86                              const G4int nReplicas,
 72                              const G4double of     87                              const G4double offset )
 73 {                                                  88 {     
 74   // Create division - with number of division     89   // Create division - with number of divisions 
 75   // ---                                           90   // ---
 76                                                    91 
 77   return new G4PVDivision(pName, pLogical, pMo     92   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 78                           pAxis, nReplicas, of     93                           pAxis, nReplicas, offset);
 79 }                                                  94 }    
 80                                                    95 
 81 //____________________________________________     96 //_____________________________________________________________________________
 82                                                    97 
 83 G4VPhysicalVolume*                                 98 G4VPhysicalVolume* 
 84 G4PVDivisionFactory::CreatePVDivision(const G4     99 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 85                              G4LogicalVolume*     100                              G4LogicalVolume* pLogical,
 86                              G4LogicalVolume*     101                              G4LogicalVolume* pMotherLogical,
 87                              const EAxis pAxis    102                              const EAxis pAxis,
 88                              const G4double wi    103                              const G4double width,
 89                              const G4double of    104                              const G4double offset )
 90 {                                                 105 {     
 91   // Create division - with width                 106   // Create division - with width
 92   // ---                                          107   // ---
 93                                                   108 
 94   return new G4PVDivision(pName, pLogical, pMo    109   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 95                           pAxis, width, offset    110                           pAxis, width, offset);
 96 }                                                 111 }    
 97                                                   112 
 98 //____________________________________________    113 //_____________________________________________________________________________
 99                                                   114 
100 G4VPhysicalVolume*                                115 G4VPhysicalVolume* 
101 G4PVDivisionFactory::CreatePVDivision(const G4    116 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
102                              G4LogicalVolume*     117                              G4LogicalVolume* pLogical,
103                              G4LogicalVolume*     118                              G4LogicalVolume* pMotherLogical,
104                              const G4VPVParame    119                              const G4VPVParameterisation* param)
105 {                                                 120 {     
106   // Create division - with parameterisation      121   // Create division - with parameterisation
107   // ---                                          122   // ---
108                                                   123 
109   // Get parameterisation data                    124   // Get parameterisation data
110   //                                              125   //
111   const auto divParam = dynamic_cast<const G4V << 126   const G4VDivisionParameterisation* divParam
                                                   >> 127     = dynamic_cast<const G4VDivisionParameterisation*>(param);
112                                                   128 
113   if (divParam == nullptr)                        129   if (divParam == nullptr)
114   {                                               130   {
115     G4Exception("G4PVDivisionFactory::CreatePV    131     G4Exception("G4PVDivisionFactory::CreatePVDivision()",
116                 "GeomDiv0001", FatalException,    132                 "GeomDiv0001", FatalException,
117                 "Unexpected parameterisation t    133                 "Unexpected parameterisation type!");
118     return nullptr;                               134     return nullptr;
119   }                                               135   }
120   else                                            136   else
121   {                                               137   {
122     EAxis axis = divParam->GetAxis();             138     EAxis axis = divParam->GetAxis();
123     G4int nofDivisions = divParam->GetNoDiv();    139     G4int nofDivisions = divParam->GetNoDiv();
124     G4double width = divParam->GetWidth();        140     G4double width = divParam->GetWidth();
125     G4double offset = divParam->GetOffset();      141     G4double offset = divParam->GetOffset();
126                                                   142 
127     return new G4PVDivision(pName, pLogical, p    143     return new G4PVDivision(pName, pLogical, pMotherLogical, 
128                             axis, nofDivisions    144                             axis, nofDivisions, width, offset);
129   }                                               145   }
130 }                                                 146 }    
131                                                   147 
132 //____________________________________________    148 //_____________________________________________________________________________
133                                                   149 
134 G4bool G4PVDivisionFactory::IsPVDivision(const    150 G4bool G4PVDivisionFactory::IsPVDivision(const G4VPhysicalVolume* pv) const
135 {                                                 151 { 
136   // Returns true if pv is division               152   // Returns true if pv is division
137   // ---                                          153   // ---
138                                                   154 
139   return dynamic_cast<const G4PVDivision*>(pv) << 155   return (dynamic_cast<const G4PVDivision*>(pv) != nullptr) ? true : false;
140 }                                                 156 }
141                                                   157 
142                                                   158