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