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.2.2)


  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 {
                                                   >>  39   // Protected singleton constructor.
                                                   >>  40   // ---
                                                   >>  41 }
                                                   >>  42 
                                                   >>  43 //_____________________________________________________________________________
                                                   >>  44 
                                                   >>  45 G4PVDivisionFactory::~G4PVDivisionFactory() = default;
                                                   >>  46 
                                                   >>  47 //_____________________________________________________________________________
                                                   >>  48 
 37 G4PVDivisionFactory* G4PVDivisionFactory::GetI     49 G4PVDivisionFactory* G4PVDivisionFactory::GetInstance()
 38 {                                                  50 {
 39   if (fgInstance == nullptr)                       51   if (fgInstance == nullptr)
 40   {                                                52   {
 41     fgInstance =  new G4PVDivisionFactory;         53     fgInstance =  new G4PVDivisionFactory;
 42   }                                                54   }
 43   return dynamic_cast<G4PVDivisionFactory*>(fg     55   return dynamic_cast<G4PVDivisionFactory*>(fgInstance);
 44 }                                                  56 } 
 45                                                    57 
 46 //____________________________________________     58 //_____________________________________________________________________________
 47                                                    59 
 48 G4VPhysicalVolume*                                 60 G4VPhysicalVolume* 
 49 G4PVDivisionFactory::CreatePVDivision(const G4     61 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 50                              G4LogicalVolume*      62                              G4LogicalVolume* pLogical,
 51                              G4LogicalVolume*      63                              G4LogicalVolume* pMotherLogical,
 52                              const EAxis pAxis     64                              const EAxis pAxis,
 53                              const G4int nRepl     65                              const G4int nReplicas,
 54                              const G4double wi     66                              const G4double width,
 55                              const G4double of     67                              const G4double offset )
 56 {                                                  68 {     
 57   // Create division - with number of division     69   // Create division - with number of divisions and width
 58   // ---                                           70   // ---
 59                                                    71 
 60   return new G4PVDivision(pName, pLogical, pMo     72   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 61                           pAxis, nReplicas, wi     73                           pAxis, nReplicas, width, offset);
 62 }                                                  74 }    
 63                                                    75 
 64 //____________________________________________     76 //_____________________________________________________________________________
 65                                                    77 
 66 G4VPhysicalVolume*                                 78 G4VPhysicalVolume* 
 67 G4PVDivisionFactory::CreatePVDivision(const G4     79 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 68                              G4LogicalVolume*      80                              G4LogicalVolume* pLogical,
 69                              G4LogicalVolume*      81                              G4LogicalVolume* pMotherLogical,
 70                              const EAxis pAxis     82                              const EAxis pAxis,
 71                              const G4int nRepl     83                              const G4int nReplicas,
 72                              const G4double of     84                              const G4double offset )
 73 {                                                  85 {     
 74   // Create division - with number of division     86   // Create division - with number of divisions 
 75   // ---                                           87   // ---
 76                                                    88 
 77   return new G4PVDivision(pName, pLogical, pMo     89   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 78                           pAxis, nReplicas, of     90                           pAxis, nReplicas, offset);
 79 }                                                  91 }    
 80                                                    92 
 81 //____________________________________________     93 //_____________________________________________________________________________
 82                                                    94 
 83 G4VPhysicalVolume*                                 95 G4VPhysicalVolume* 
 84 G4PVDivisionFactory::CreatePVDivision(const G4     96 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 85                              G4LogicalVolume*      97                              G4LogicalVolume* pLogical,
 86                              G4LogicalVolume*      98                              G4LogicalVolume* pMotherLogical,
 87                              const EAxis pAxis     99                              const EAxis pAxis,
 88                              const G4double wi    100                              const G4double width,
 89                              const G4double of    101                              const G4double offset )
 90 {                                                 102 {     
 91   // Create division - with width                 103   // Create division - with width
 92   // ---                                          104   // ---
 93                                                   105 
 94   return new G4PVDivision(pName, pLogical, pMo    106   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 95                           pAxis, width, offset    107                           pAxis, width, offset);
 96 }                                                 108 }    
 97                                                   109 
 98 //____________________________________________    110 //_____________________________________________________________________________
 99                                                   111 
100 G4VPhysicalVolume*                                112 G4VPhysicalVolume* 
101 G4PVDivisionFactory::CreatePVDivision(const G4    113 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
102                              G4LogicalVolume*     114                              G4LogicalVolume* pLogical,
103                              G4LogicalVolume*     115                              G4LogicalVolume* pMotherLogical,
104                              const G4VPVParame    116                              const G4VPVParameterisation* param)
105 {                                                 117 {     
106   // Create division - with parameterisation      118   // Create division - with parameterisation
107   // ---                                          119   // ---
108                                                   120 
109   // Get parameterisation data                    121   // Get parameterisation data
110   //                                              122   //
111   const auto divParam = dynamic_cast<const G4V    123   const auto divParam = dynamic_cast<const G4VDivisionParameterisation*>(param);
112                                                   124 
113   if (divParam == nullptr)                        125   if (divParam == nullptr)
114   {                                               126   {
115     G4Exception("G4PVDivisionFactory::CreatePV    127     G4Exception("G4PVDivisionFactory::CreatePVDivision()",
116                 "GeomDiv0001", FatalException,    128                 "GeomDiv0001", FatalException,
117                 "Unexpected parameterisation t    129                 "Unexpected parameterisation type!");
118     return nullptr;                               130     return nullptr;
119   }                                               131   }
120   else                                            132   else
121   {                                               133   {
122     EAxis axis = divParam->GetAxis();             134     EAxis axis = divParam->GetAxis();
123     G4int nofDivisions = divParam->GetNoDiv();    135     G4int nofDivisions = divParam->GetNoDiv();
124     G4double width = divParam->GetWidth();        136     G4double width = divParam->GetWidth();
125     G4double offset = divParam->GetOffset();      137     G4double offset = divParam->GetOffset();
126                                                   138 
127     return new G4PVDivision(pName, pLogical, p    139     return new G4PVDivision(pName, pLogical, pMotherLogical, 
128                             axis, nofDivisions    140                             axis, nofDivisions, width, offset);
129   }                                               141   }
130 }                                                 142 }    
131                                                   143 
132 //____________________________________________    144 //_____________________________________________________________________________
133                                                   145 
134 G4bool G4PVDivisionFactory::IsPVDivision(const    146 G4bool G4PVDivisionFactory::IsPVDivision(const G4VPhysicalVolume* pv) const
135 {                                                 147 { 
136   // Returns true if pv is division               148   // Returns true if pv is division
137   // ---                                          149   // ---
138                                                   150 
139   return dynamic_cast<const G4PVDivision*>(pv)    151   return dynamic_cast<const G4PVDivision*>(pv) != nullptr;
140 }                                                 152 }
141                                                   153 
142                                                   154