Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/g3tog4/src/G4gspos.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 /g3tog4/src/G4gspos.cc (Version 11.3.0) and /g3tog4/src/G4gspos.cc (Version 9.2.p4)


  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 //                                                 26 //
                                                   >>  27 // $Id: G4gspos.cc,v 1.13 2006/06/29 18:14:42 gunter Exp $
                                                   >>  28 // GEANT4 tag $Name: geant4-09-02-patch-04 $
 27 //                                                 29 //
 28 // by I.Hrivnacova, 13.10.99                       30 // by I.Hrivnacova, 13.10.99
 29                                                    31 
 30 #include "G3G4Interface.hh"                        32 #include "G3G4Interface.hh"
 31 #include "G3VolTable.hh"                           33 #include "G3VolTable.hh"
 32 #include "G3toG4.hh"                               34 #include "G3toG4.hh"
 33 #include "G3Pos.hh"                                35 #include "G3Pos.hh"
 34 #include "globals.hh"                              36 #include "globals.hh"
 35 #include "G4SystemOfUnits.hh"                  << 
 36                                                    37 
 37 void G4CreateCloneVTE(G3VolTableEntry* vte, G3     38 void G4CreateCloneVTE(G3VolTableEntry* vte, G3VolTableEntry* mvte,
 38               G4double pars[], G4int npar, G4i     39               G4double pars[], G4int npar, G4int num,
 39               G4double x, G4double y, G4double     40               G4double x, G4double y, G4double z, G4int irot, G4String vonly);
 40                                                    41 
 41 void PG4gspos(G4String *tokens)                <<  42 void PG4gspos(G4String tokens[])
 42 {                                                  43 {
 43         // fill the parameter containers           44         // fill the parameter containers
 44     G3fillParams(tokens,PTgspos);                  45     G3fillParams(tokens,PTgspos);
 45                                                    46   
 46         // interpret the parameters                47         // interpret the parameters
 47     G4String name = Spar[0];                       48     G4String name = Spar[0];
 48     G4String moth = Spar[1];                       49     G4String moth = Spar[1];
 49     G4String only = Spar[2];                       50     G4String only = Spar[2];
 50     G4int num = Ipar[0];                           51     G4int num = Ipar[0];
 51     G4int irot = Ipar[1];                          52     G4int irot = Ipar[1];
 52         // all parameters are passed to G4gsxx     53         // all parameters are passed to G4gsxxx methods
 53         // in G3 default units                     54         // in G3 default units         
 54     //G4double x = Rpar[0]*cm;                     55     //G4double x = Rpar[0]*cm;
 55     //G4double y = Rpar[1]*cm;                     56     //G4double y = Rpar[1]*cm;
 56     //G4double z = Rpar[2]*cm;                     57     //G4double z = Rpar[2]*cm;
 57     G4double x = Rpar[0];                          58     G4double x = Rpar[0];
 58     G4double y = Rpar[1];                          59     G4double y = Rpar[1];
 59     G4double z = Rpar[2];                          60     G4double z = Rpar[2];
 60                                                    61   
 61     G4gspos(name, num, moth, x, y, z, irot, on     62     G4gspos(name, num, moth, x, y, z, irot, only);
 62 }                                                  63 }
 63                                                    64 
 64 void G4gspos(G4String vname, G4int num, G4Stri     65 void G4gspos(G4String vname, G4int num, G4String vmoth, G4double x,
 65              G4double y, G4double z, G4int iro     66              G4double y, G4double z, G4int irot, G4String vonly)
 66 {                                                  67 {
 67   // find VTEs                                     68   // find VTEs
 68   G3VolTableEntry* vte = G3Vol.GetVTE(vname);      69   G3VolTableEntry* vte = G3Vol.GetVTE(vname);
 69   G3VolTableEntry* mvte = G3Vol.GetVTE(vmoth);     70   G3VolTableEntry* mvte = G3Vol.GetVTE(vmoth);
 70                                                    71 
 71   if (vte == 0) {                                  72   if (vte == 0) {
 72     G4String text = "G4gspos: '" + vname + "'  <<  73     G4Exception("G4gspos: '" + vname + "' has no VolTableEntry");
 73     G4Exception("G4gspos()", "G3toG40017", Fat << 
 74     return;                                    << 
 75   }                                                74   } 
 76   else if (mvte == 0) {                            75   else if (mvte == 0) {
 77     G4String text = "G4gspos: '" + vmoth + "'  <<  76     G4Exception("G4gspos: '" + vmoth + "' has no VolTableEntry");
 78     G4Exception("G4gspos()", "G3toG40018", Fat << 
 79     return;                                    << 
 80   }                                                77   } 
 81   else {                                           78   else { 
 82     if (!vte->HasNegPars()) {                      79     if (!vte->HasNegPars()) {
 83       // position vector                           80       // position vector
 84       G4ThreeVector* offset = new G4ThreeVecto     81       G4ThreeVector* offset = new G4ThreeVector(x*cm, y*cm, z*cm);
 85                                                    82 
 86       // create a G3Pos object and add it to t     83       // create a G3Pos object and add it to the vte
 87       G3Pos* aG3Pos = new G3Pos(vmoth, num, of     84       G3Pos* aG3Pos = new G3Pos(vmoth, num, offset, irot, vonly);              
 88       vte->AddG3Pos(aG3Pos);                       85       vte->AddG3Pos(aG3Pos);
 89                                                    86 
 90       // loop over all mothers                     87       // loop over all mothers
 91       for (G4int i=0; i<mvte->GetNoClones(); i     88       for (G4int i=0; i<mvte->GetNoClones(); i++) {
 92                        // (mvte is retrieved f     89                        // (mvte is retrieved from its "master" name
 93                        //  -> there is no need     90                        //  -> there is no need to call GetMasterClone()
 94         G3VolTableEntry* mvteClone = mvte->Get     91         G3VolTableEntry* mvteClone = mvte->GetClone(i);
 95         vte->AddMother(mvteClone);                 92         vte->AddMother(mvteClone);
 96         mvteClone->AddDaughter(vte);               93         mvteClone->AddDaughter(vte);
 97       }                                            94       }     
 98     }                                              95     } 
 99     else {                                         96     else {
100       // if vte has neg parameters                 97       // if vte has neg parameters 
101       // a new vte clone copy is created for e     98       // a new vte clone copy is created for each mother (clone copy)  
102       // and its parameters are derived from i     99       // and its parameters are derived from it if possible
103                                                   100 
104       G4CreateCloneVTE(vte, mvte, vte->GetRpar    101       G4CreateCloneVTE(vte, mvte, vte->GetRpar(), vte->GetNpar(), num,
105                      x, y, z, irot, vonly);       102                      x, y, z, irot, vonly);
106     }                                             103     }    
107   }                                               104   }      
108 }                                                 105 }
109                                                   106