Geant4 Cross Reference

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


                                                   >>   1 // This code implementation is the intellectual property of
                                                   >>   2 // the GEANT4 collaboration.
  1 //                                                  3 //
  2 // ******************************************* <<   4 // By copying, distributing or modifying the Program (or any work
  3 // * License and Disclaimer                    <<   5 // based on the Program) you indicate your acceptance of this statement,
  4 // *                                           <<   6 // and all its terms.
  5 // * The  Geant4 software  is  copyright of th << 
  6 // * the Geant4 Collaboration.  It is provided << 
  7 // * conditions of the Geant4 Software License << 
  8 // * LICENSE and available at  http://cern.ch/ << 
  9 // * include a list of copyright holders.      << 
 10 // *                                           << 
 11 // * Neither the authors of this software syst << 
 12 // * institutes,nor the agencies providing fin << 
 13 // * work  make  any representation or  warran << 
 14 // * regarding  this  software system or assum << 
 15 // * use.  Please see the license in the file  << 
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                           << 
 18 // * This  code  implementation is the result  << 
 19 // * technical work of the GEANT4 collaboratio << 
 20 // * By using,  copying,  modifying or  distri << 
 21 // * any work based  on the software)  you  ag << 
 22 // * use  in  resulting  scientific  publicati << 
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // ******************************************* << 
 25 //                                             << 
 26 //                                                  7 //
                                                   >>   8 // $Id: G3NegVolPars.cc,v 1.6 2000/03/07 10:51:40 stesting Exp $ 
                                                   >>   9 // GEANT4 tag $Name: geant4-02-00 $
 27 //                                                 10 //
 28 // modified by I. Hrivnacova, 13.10.99             11 // modified by I. Hrivnacova, 13.10.99 
 29                                                    12 
 30 #include "globals.hh"                              13 #include "globals.hh"
 31 #include "G3VolTable.hh"                           14 #include "G3VolTable.hh"
 32 #include "G4VSolid.hh"                             15 #include "G4VSolid.hh"
 33 #include "G3toG4.hh"                               16 #include "G3toG4.hh"
 34 #include <cmath>                               <<  17 #include <math.h>
 35                                                << 
 36 G4bool G3CalcParamsFn(G4double *rpar, G4int np << 
 37                       G4String shape, G4String << 
 38   // Returns true only in case the parameters  << 
 39   // this method remain negative.              << 
 40 {                                              << 
 41   G4bool NegPresent = FALSE;                   << 
 42   // for normal single volume positioning, jus << 
 43   // negative parameters                       << 
 44   // treat only the legal cases                << 
 45   if (shapem == shape) {                       << 
 46     if (shape == "BOX" || shape == "TRD1" || s << 
 47         shape == "ELTU") {                     << 
 48       for (G4int i=0;i<npar;i++) {             << 
 49         if (rpar[i] < 0) {                     << 
 50           if (rparm != 0) rpar[i] = rparm[i];  << 
 51     if (rpar[i] < 0) NegPresent = TRUE;        << 
 52         }                                      << 
 53       }                                        << 
 54     }                                          << 
 55     if (shape == "TRAP") {                     << 
 56       for (G4int i=0;i<11;i++) {               << 
 57         if (i != 1 && i != 2 && i != 6 && i != << 
 58           if (rpar[i]<0) {                     << 
 59             if (rparm != 0) rpar[i] = rparm[i] << 
 60       if (rpar[i] < 0) NegPresent = TRUE;      << 
 61     }                                          << 
 62         }                                      << 
 63       }                                        << 
 64     }                                          << 
 65     if (shape == "TUBE" || shape == "TUBS" ||  << 
 66       for (G4int i=0;i<3;i++) {                << 
 67         if (rpar[i] < 0) {                     << 
 68           if (rparm != 0) rpar[i] = rparm[i];  << 
 69     if (rpar[i] < 0) NegPresent = TRUE;        << 
 70         }                                      << 
 71       }                                        << 
 72     }                                          << 
 73     if (shape == "CONE" || shape == "CONS") {  << 
 74       for (G4int i=0;i<5;i++) {                << 
 75         if (rpar[i] < 0) {                     << 
 76           if (rparm != 0) rpar[i] = rparm[i];  << 
 77     if (rpar[i] < 0) NegPresent = TRUE;        << 
 78         }                                      << 
 79       }                                        << 
 80     }                                          << 
 81     if (shape == "SPHE") {                     << 
 82       for (G4int i=0;i<2;i++) {                << 
 83         if (rpar[i] < 0) {                     << 
 84           if (rparm != 0) rpar[i] = rparm[i];  << 
 85     if (rpar[i] < 0) NegPresent = TRUE;        << 
 86         }                                      << 
 87       }                                        << 
 88     }                                          << 
 89     if (shape == "PGON") {                     << 
 90       G4int nz = G4int(rpar[3]);               << 
 91       G4int ipl;                               << 
 92       for (G4int i=0;i<nz;i++) {               << 
 93         ipl = 5 + i*3;                         << 
 94         if (rpar[ipl] < 0) {                   << 
 95           if (rparm != 0) rpar[ipl] = rparm[ip << 
 96     if (rpar[ipl] < 0) NegPresent = TRUE;      << 
 97         }                                      << 
 98         if (rpar[ipl+1] < 0) {                 << 
 99           if (rparm != 0)  rpar[ipl] = rparm[i << 
100     if (rpar[ipl] < 0) NegPresent = TRUE;      << 
101         }                                      << 
102       }                                        << 
103     }                                          << 
104     if (shape == "PCON") {                     << 
105       G4int nz = G4int(rpar[2]);               << 
106       G4int ipl;                               << 
107       for (G4int i=0;i<nz;i++) {               << 
108         ipl = 4 + i*3;                         << 
109         if (rpar[ipl] < 0) {                   << 
110           if (rparm != 0) rpar[ipl] = rparm[ip << 
111     if (rpar[ipl] < 0) NegPresent = TRUE;      << 
112         }                                      << 
113         if (rpar[ipl+1] < 0) {                 << 
114           // TO DO                             << 
115     // check - folowing argument might be ipl+ << 
116           if (rparm != 0) rpar[ipl] = rparm[ip << 
117     if (rpar[ipl] < 0) NegPresent = TRUE;      << 
118         }                                      << 
119       }                                        << 
120     }                                          << 
121   }                                            << 
122                                                    18 
123   if (shape == "BOX") {                        <<  19 G4bool G3CalcParamsFn(G4double* Rpar, G4int npar, G4double* Rparm,
124     if (shapem == "TRD1") {                    <<  20                                   G4String shape, G4String shapem);
125       if (rpar[1] < 0) {                       << 
126         if (rparm != 0) rpar[1] = rparm[2];    << 
127   if (rpar[1] < 0) NegPresent = TRUE;          << 
128       }                                        << 
129       if (rpar[2] < 0) {                       << 
130         if (rparm != 0) rpar[2] = rparm[3];    << 
131   if (rpar[2] < 0) NegPresent = TRUE;          << 
132       }                                        << 
133       if (rpar[0] < 0) {                       << 
134         if (rparm != 0) rpar[0] = std::min(rpa << 
135                                   std::abs(rpa << 
136   if (rpar[0] < 0) NegPresent = TRUE;          << 
137       }                                        << 
138     }                                          << 
139     if (shapem == "TRD2") {                    << 
140       if (rpar[2] < 0) {                       << 
141         if (rparm != 0) rpar[2] = rparm[4];    << 
142         if (rpar[2]<0) NegPresent = TRUE;      << 
143       }                                        << 
144       if (rpar[0] < 0) {                       << 
145         if (rparm != 0) rpar[0] = std::min(rpa << 
146                                   std::abs(rpa << 
147         if (rpar[0]<0) NegPresent = TRUE;      << 
148       }                                        << 
149       if (rpar[1] < 0) {                       << 
150         if (rparm != 0) rpar[1] = std::min(rpa << 
151                                   std::abs(rpa << 
152         if (rpar[1]<0) NegPresent = TRUE;      << 
153       }                                        << 
154     }                                          << 
155     if (shapem == "TRAP") {                    << 
156       if (rpar[2] < 0) {                       << 
157         if (rparm != 0) rpar[2] = rparm[0];    << 
158         if (rpar[2] < 0) NegPresent = TRUE;    << 
159       }                                        << 
160       if (rpar[0] < 0) {                       << 
161         if (rparm != 0) {                      << 
162           G4double xlo = std::min(rparm[4],rpa << 
163             std::abs(rparm[4]-rparm[8])*.5*rpa << 
164           G4double xhi = std::min(rparm[5],rpa << 
165             std::abs(rparm[5]-rparm[9])*.5*rpa << 
166           rpar[0] = std::min(xlo,xhi);         << 
167         }                                      << 
168         if (rpar[0] < 0) NegPresent = TRUE;    << 
169       }                                        << 
170       if (rpar[1] < 0) {                       << 
171         if (rparm != 0) rpar[1] = std::min(rpa << 
172                         std::abs(rparm[3]-rpar << 
173         if (rpar[1] < 0) NegPresent = TRUE;    << 
174       }                                        << 
175     }                                          << 
176   }                                            << 
177   return NegPresent;                           << 
178 }                                              << 
179                                                    21 
180 G4bool G3NegVolPars(G4double pars[], G4int *np <<  22 G4bool G3NegVolPars(G4double pars[], G4int *nparpt, 
181                     G3VolTableEntry* vte,      <<  23           G3VolTableEntry* vte, G3VolTableEntry* mvte,  const char routine[])
182                     G3VolTableEntry* mvte, con << 
183 {                                                  24 {
184   G4bool NegPresent = FALSE;                       25   G4bool NegPresent = FALSE;
185                                                    26 
186   // retrieve parameters                           27   // retrieve parameters 
187                                                    28 
188   // the volume                                    29   // the volume
189   G4String shape = vte->GetShape();                30   G4String shape = vte->GetShape();
190   G4double* rpar = vte->GetRpar();             <<  31   G4double* Rpar = vte->GetRpar();
191   G4int npar = vte->GetNpar();                     32   G4int npar = vte->GetNpar();  
192   if (npar ==0) {                                  33   if (npar ==0) {
193     // no solid parameters are defined in vte      34     // no solid parameters are defined in vte
194     npar = *nparpt;                                35     npar = *nparpt;
195     rpar = pars;                               <<  36     Rpar = pars;
196   }                                                37   }
197   else {                                           38   else {  
198     // solid parameters are already defined in     39     // solid parameters are already defined in vte
199     // pars[], nparpt are ignored                  40     // pars[], nparpt are ignored
200     // TO DO: check if g3 ignores them too or      41     // TO DO: check if g3 ignores them too or resets
201     // vte parameters according to this new on     42     // vte parameters according to this new ones !!
202   }                                                43   }  
203                                                    44       
204   // mother                                        45   // mother
205   G4String shapem = mvte->GetShape();              46   G4String shapem = mvte->GetShape();
206   G4double* rparm = mvte->GetRpar();           <<  47   G4double* Rparm = mvte->GetRpar();
                                                   >>  48   G4int nparm = mvte->GetNpar();    
207                                                    49 
208   if (strcmp(routine,"GSPOS") == 0 || strcmp(r     50   if (strcmp(routine,"GSPOS") == 0 || strcmp(routine,"GSVOLU") == 0) {
209     NegPresent = G3CalcParamsFn(rpar,npar,rpar <<  51     NegPresent = G3CalcParamsFn(Rpar,npar,Rparm,shape,shapem);
210   }                                                52   }
211   if (strcmp(routine,"GSDVN") == 0) {              53   if (strcmp(routine,"GSDVN") == 0) {
212     // just set the flag. The parametrization      54     // just set the flag. The parametrization function figures out
213     // what to do.                                 55     // what to do.
214     for (G4int i=0;i<npar;i++) {                   56     for (G4int i=0;i<npar;i++) {
215       if (rpar[i] < 0) {                       <<  57       if (Rpar[i] < 0) {
216         NegPresent = TRUE;                         58         NegPresent = TRUE;
217       }                                            59       }
218     }                                              60     }
219   }                                                61   }
220   return NegPresent;                               62   return NegPresent;
221 }                                                  63 }
222                                                    64