Changeset 1315 for trunk/source/processes/hadronic/models/cascade/History
- Timestamp:
- Jun 18, 2010, 11:42:07 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/cascade/History
r1228 r1315 1 $Id: History,v 1.90 2010/06/08 06:34:43 stesting Exp $ 1 2 ------------------------------------------------------------------- 2 3 … … 14 15 * Please list in reverse chronological order (last date on top) 15 16 --------------------------------------------------------------- 17 18 08 June 2010 Gunter Folger (hadr-casc-V09-03-42) 19 - trivial fix for compiler warning on gcc43 on empty body in for(...) in 20 cascade/include/G4CascadeInterpolator.icc:67 21 22 01 June 2010 Michael Kelsey (hadr-casc-V09-03-41) 23 ------------------------------------------------- 24 - paraMaker.cc: Fix vector initialization for Windows crash. 25 26 26 May 2010 Dennis Wright (hadr-casc-V09-03-40) 27 ----------------------------------------------- 28 - G4NucleiModel: remove conversion to fm, and conversion of cross 29 sections to fm**2 30 31 21 May 2010 Michael Kelsey (hadr-casc-V09-03-39) 32 ------------------------------------------------ 33 Final tag for inclusion in GEANT 4.9.4-beta. Will be validated internal and 34 included in global Hadronics tag. 35 36 - G4CascadeSampler.icc: Activate time-saving checks on single bins. 37 - G4ElementaryParticleCollider.cc: Remove special case for nucleon elastic 38 scattering. 39 40 21 May 2010 Michael Kelsey (kelsey-20100521c) 41 --------------------------------------------- 42 - G4CascadeInterface, G4PreCompoundCascadeInterface, G4InuclEvaporation: 43 Simplify code: fetch G4DynamicParticle out of outgoing G4InuclParticles, 44 rather than creating new ones. Remove all of the *Collider data members 45 (instantiated within G4InuclCollider). Move final state rotations to 46 G4CollisionOutput. 47 48 - G4InuclParticle: Provide accessor to return G4DynamicParticle. 49 50 - G4CollisionOutput: Add function to apply LorentzRotation to both lists; 51 used by G4CascadeInterface. 52 53 - G4ElementaryParticleCollider: Avoid memory churn with G4LorentzVector 54 temporaries. 55 56 21 May 2010 Michael Kelsey (kelsey-20100521b) 57 --------------------------------------------- 58 - G4VCascadeCollider: New base class for all Colliders. Carries 59 verboseLevel data member and set-function. ::collide() is pure virtual. 60 Additional protected member functions will be defined to include all code 61 shared across multiple Colliders. 62 63 - Migrate all of the "Collider" factories to use new base class, removing 64 common member functions, and replace passed-in sibling colliders with 65 local data members (pointers for now). Since none of these classes have 66 persistent (state preserving) data members, the cost of more than one 67 instantiation is minimal. 68 69 G4BigBanger 70 G4ElementaryParticleCollider 71 G4EquilibriumEvaporator 72 G4EvaporationInuclCollider 73 G4Fissioner 74 G4IntraNucleiCascader 75 G4InuclCollider 76 G4NonEquilibriumEvaporator 77 G4PreCompoundInuclCollider 78 79 - G4CascadeInterface.cc, G4InuclEvaporation.cc, 80 G4PreCompoundCascadeInterface.cc: Remove siblings from constructors for 81 the Colliders. 82 83 - G4InteractionCase.hh: Eliminate unnecessary copying of std::pair<>'s, use 84 initializers in ctors, add clear() function to reset to 0-0-0. Move 85 evaluation of bullet vs. target to new set() function, replacing separate 86 bulletTargetSetter() in the colliders. Add boolean accessors to avoid 87 hard-coding inter_case values. Change code numbers so nucleus collisions 88 are negative, and positive codes refer to the "is" or "rtype" numbers. 89 90 - G4ElementaryParticleCollider.cc: Use G4InteractionCase to compute "is", 91 instead of hardwiring the meaning. 92 93 - G4Collider.hh: Remove empty and never-used file. 94 95 - G4EvaporationInuclCollider.cc: Eliminate unnecessary creation of 96 duplicate G4InuclNuclei: pass input through to G4EquilibriumEvaporator. 97 98 - G4LorentzConvertor: Add interfaces to pass G4InuclParticles directly. 99 100 21 May 2010 Michael Kelsey (kelsey-20100521a) 101 --------------------------------------------- 102 Replace hand-coded interpolation of arrays with use of G4CascadeInterpolator. 103 In all cases, local arrays are replaced with static const, and the 104 interpolator object itself is declared static, to reduce memory churn. 105 106 G4NucleiModel::totalCrossSection() 107 G4EquilibriumEvaporator::getQF() 108 G4InuclSpecialFunctions::paraMaker[Truncated]() (in paraMaker.cc) 109 110 - G4CascadSpecialFunctions: Remove. totalCrossSection() redundant with 111 G4NucleiModel. Move absorptionCrossSection() to G4NucleiModel. 112 113 - G4CascadeInterpolator.icc: Bug fix to catch special case of exact upper 114 bin edge (occurs when !doExtrapolation). If index == last + 0., just 115 return upper edge value, without calculation. 116 117 - G4NucleiModel.cc: Use G4Cascade{Pi*}Channel and G4Cascade{NN,NP,PP}Channel 118 classes to get total cross-sections for pi-N and N-N scattering. Arrays 119 for kaon and hyperon scattering should be migrated as well, once binning 120 is resolved. Move absorptionCrossSection() here from SpecialFunctions. 121 122 20 May 2010 Michael Kelsey (kelsey-20100521) 123 -------------------------------------------- 124 - G4CascadeInterpolator.icc: Two bug fixes involving values at array edges. 125 126 19 May 2010 Michael Kelsey, Dennis Wright 127 ----------------------------------------- 128 - G4BertiniData.hh,.cc: Remove unused and unnecessary class. 129 - G4NucleiModel.cc: convert nuclear radii to fm and cross sections to 130 fm**2. Use six-zone model for A > 99, and make alpha a 1-zone 131 nucleus. 132 - G4CascadSpecialFunctions: convert pion absorption cross sections from 133 mb to fm**2, correct spelling of method absorptionCrossSection 134 135 17 May 2010 Michael Kelsey (hadr-casc-V09-03-38) 136 ------------------------------------------------ 137 - paraMaker.cc (G4InuclSpecialFunctions::paraMaker[Truncated]): Upper edge 138 of interpolation array not properly handled. Should be "if (Z >= 70.0)". 139 This affects G4NonEquilibriumEvaporator output. 140 141 17 May 2010 Michael Kelsey (hadr-casc-V09-03-37) 142 ------------------------------------------------ 143 Bug fixes for compiler warnings (not seen on MacOSX, even with g++ -Wall) 144 145 - G4CascadeData.hh: Dummy arrays needed double-braces for initialization. 146 147 - G4CascadeInterpolator.icc: Extraneous decimal point in "for (i=0.;". 148 149 - G4CascadeKzeroBarNChannel.cc: Left three "old" arrays in place during 150 conversion. 151 152 14 May 2010 Michael Kelsey (hadr-casc-V09-03-36) 153 ------------------------------------------------ 154 Remove obsolete files following reorganization of two-body scattering 155 lookup tables. 156 157 G4CascadeElasticInterface.hh,.cc 158 G4ElasticCascadeInterface.hh,.cc 159 G4FinalStateSampler.hh,.cc 160 G4NucleonSampler.hh,.cc 161 G4PionSampler.hh,.cc 162 163 - G4CascadeChannel.hh,.cc: All functionality removed, replaced with 164 namespace containing only getQnums and CheckQnums validation functions. 165 166 14 May 2010 Michael Kelsey (hadr-casc-V09-03-35) 167 ------------------------------------------------ 168 Replace independent parallel samplers with templated base class and single 169 implementation. This completes the reorganization of the channel tables. 170 171 - G4CascadeSampler: Redefine as templated base, taking binning array as 172 constructor argument. Move implementation file from .cc to .icc. 173 NOTE: G4CascadeSampler.cc is removed, since not consistent with new .hh. 174 175 - G4PionNucSampler: Subclass of G4CascadeSampler<30>, replaces 176 G4FinalStateSampler, using bins array from there. 177 178 - G4KaonNucSampler: Sublcass of G4CascadeSampler<31>, replaces previous 179 G4CascadeSampler, using bins array from there. 180 181 - G4Cascade*Channel.hh: Change all typedefs to pass appropriate of two new 182 samplers in template. 183 184 - G4ElementaryParticleCollider.cc: Replace long "if (is==)"-cascades with 185 switch blocks. Move all getOutgoing calls (for pions and nucleons) into 186 one function, and call it from outside multiplicity checks. Use 187 G4CascadeInterpolator for angular distributions. Set modelID=3 in all 188 G4InuclParticle constructions. 189 190 14 May 2010 Michael Kelsey (hadr-casc-V09-03-34) 191 ------------------------------------------------ 192 Extract lookup tables from G4PionSampler and G4NucleonSampler into 193 individual "classes" defined and initialized with G4CascadeData. 194 195 - G4CascadePi{Plus,Minus,Zero}{P,N}Channel.hh: Six new typedefs defined as 196 with the existing G4CascadeXXXChannel, to replace G4PionSampler. 197 198 - G4CascadeT33piNChannel.cc: Lookup tables for both PiPlusP and PiMinusN, 199 implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc. 200 201 - G4CascadeT31piNChannel.cc: Lookup tables for both PiMinusP and PiPlusN, 202 implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc 203 204 - G4CascadeT11pizNChannel.cc: Lookup tables for both PiZeroP and PiZeroN, 205 implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc 206 207 - G4Cascade{PP,NP,NN}Channel.hh: Three new typedefs defined as with the 208 existing G4CascadeXXXChannel, to replace G4NucleonSampler. 209 210 - G4CascadeT1NNChannel.cc: Lookup tables for both p-p and n-n scattering, 211 implemented as with existing G4CascadeXXXChannel, from G4NucleonSampler.cc 212 213 - G4CascadeT0npChannel.cc: Lookup tables for p-n scattering, implemented as 214 with existing G4CascadeXXXChannel, from G4NucleonSampler.cc 215 216 - G4CascadeFunctions.hh, .icc: Pass std::vector as non-const argument to 217 getOutgoingParticleTypes() instead of returning internal buffer. 218 219 - G4CascadeSampler.cc, G4FinalStateSampler.cc: Add some checks in 220 findFinalStateIndex, fillSigmaBuffer, and sampleFlat(), such that 221 single-entry ranges don't go through the analysis, just return index 0. 222 223 - G4ElementaryParticleCollider.cc: Follow change to getOutgoingParticleTypes() 224 in generateStrangeChannelPartTypes(). Replace all uses of G4PionSampler 225 and G4NucleonSampler with new channel "classes". 226 227 14 May 2010 Michael Kelsey (hadr-casc-V09-03-33) 228 ------------------------------------------------ 229 Continue consolidation of two-body collision lookup tables. Unify 230 interfaces between pion/nucleon and kaon/hyperon samplers. 231 232 - G4CascadeData: Many changes to support use as data class for both 233 kaon/hyperon and pion/nucleon tables (migration will be next tag): 234 235 1) Add new first argument to template with number of bins in energy 236 interpolation. This replaces the (temporary) use of 237 G4CascadeSampler::energyBins within the class definition. 238 239 2) Add two additional template arguments, N8 and N9, with default values 240 of zero. These will be used by the pion/nucleon tables, but not by the 241 existing kaon/hyperon tables. 242 243 3) Define additional arrays for 8- and 9-body final states, using 244 conditional dimensioning (e.g., if N8==0, use [1]). Define second 245 9-body constructor to accept and initialize the new arrays. 246 247 4) Eliminate static intialization of index[], moving it into 248 initialize(). Template specialization can't be used with data! 249 250 5) Add separate "sum" (summed N-body cross-sections) and "tot" arrays 251 (measured inclusive xsec). Latter is a const-ref, initialized to "sum" 252 if not provided as ctor argument, with two new ctors as needed. 253 254 6) Add accessor to return maximum multiplicity (NM+1). 255 256 - G4CascadeFunctions.hh: Add second template argument to specify which 257 "final state sampler" is the base class. Use both T::data.tot and 258 T::data.sum in GetMultiplicity(), to support sum/tot comparisons in 259 pion/nucleon channels. Extend GetOutputParticleTypes() to support up to 260 multiplicity 9. 261 262 - G4CascadeFunctions.icc: Implementations of template class functions. 263 264 - G4CascadeXXXChannel.hh: Add "31," as initial template argument for Data. 265 Add G4CascadeSampler as second template argument in G4CascadeXXXChannel 266 typedef. 267 268 269 14 May 2010 Michael Kelsey (hadr-casc-V09-03-32) 270 ------------------------------------------------ 271 Continue revisions to two-body collision lookup tables. Make the kaon and 272 hyperon channels compatible with the pion/nucleon samplers, before the next 273 stage of unifying the structure. 274 275 - G4CascadeSampler: NEW class, parallel to G4FinalStateSampler but with a 276 different energy binning. Used as base class to G4CascadeFunctions<T>, 277 from which the cross-section and other arrays are passed. Implement 278 findMultiplicity (cf. G4CascadeFunctions::getMultiplicity) to return the 279 true value, not the array index. 280 281 This class replaces functionality of G4CascadeChannel, which is redundant. 282 283 - G4CascadeChannel: Remove all interpolation code, leaving only getQnums(). 284 285 - G4CascadeFunctions: Inherit from G4CascadeSampler for interpolations, 286 except for final-state extraction (where FS type arrays are dealt with 287 locally, not passed). Public static functions rely on private instantiated 288 version of class to do work, so that G4CascadeSampler gets instantiated. 289 290 - G4CascadeData: Remove final template argument (total number of indices), 291 as redundant with simple sum of multplicity indices. Use template args to 292 dimension data member arrays (const references), and to statically 293 initialize the start-stop index table. Make large cross-sections table 294 G4double, not G4float. Define ctor to pass in array refs for initialization. 295 Reduce index array to single dimension (start=index[i], stop=index[i+1]). 296 297 - G4CascadeXXXChannel: All of the initial-state channel "classes" 298 (typedef names) modified to follow G4CascadeData rewrite. In .cc file, 299 the explicit lookup tables are static, and passed by const-ref to 300 G4CascadeData. The "initializer" struct is dropped; with the static 301 "data" object initialized by ctor here. 302 303 - G4ElementaryParticleCollider.cc: In ::generateMultiplicity(), eliminate 304 extra "+2" and "-2" applied to local "mul" variables. With change above, 305 all functions return return true multiplicity, not array index. 306 307 - G4FinalStateSampler: Add findFinalStateIndex() function, to make 308 interface match G4CascadeSampler exactly. Reduce index array to single 309 dimension. 310 311 - G4PionSampler.cc, G4NucleonSampler.cc: Use new findFinalStateIndex() 312 function in GetFSPartTypesXXX() functions. Reduce index array to single 313 dimension (start=index[i], stop=index[i+1]). 314 315 14 May 2010 Michael Kelsey (hadr-casc-V09-03-31) 316 ------------------------------------------------ 317 Begin revisions to two-body collision lookup tables. This will be a major 318 reorganization, splitting the G4PionSampler and G4NucleonSampler into 319 separate little "classes" (typedefs) for each initial state, in the same way 320 that the kaon and hyperon states are done now. The underlying templated and 321 base classes will be unified across all of the channels. 322 323 - G4CascadeInterpolator: NEW class to encapsulate interpolation procedure. 324 Uses C-style arrays passed by dimensioned reference, to allow compile-time 325 array bounds checking. Template argument is array dimension, and array of 326 energy bins is saved by ctor. User array to be interpolated is passed as 327 function argument. Last value interpolated, along with result, is saved, 328 to allow fast multiple interpolations. 329 330 This class is substantially more lightweight than G4PhysicsVector. 331 332 - G4FinalStateSampler: Replace manual interpolation with G4CascadeInterpolator. 333 Remove redundant sampleFlat(...) function with argument. Rename member 334 functions in anticipation of merging with G4CascadeFunctions. 335 336 - G4PionSampler.cc, G4NucleonSampler.cc: Follow use of G4CascadeInterpolator 337 above, and drop local caching of interpolation results. Reduce offset 338 list for cross-sections to one dimension (start=index[i], stop=index[i+1]). 339 340 11 May 2010 Michael Kelsey (hadr-casc-V09-03-30) 341 ------------------------------------------------ 342 Bug fixes in the two-body scattering code. 343 344 - G4PionSampler.cc, G4NucleonSampler.cc: Fix long-standing bug with offset 345 indices computed for cross-section tables. XXXindex[m][0] (start) and 346 XXXindex[m][1] (stop) are computed in initChannels() as [start,stop] 347 inclusive range (i.e., "for (i=start; i<=stop; i++)"), but used with 348 G4FinalStateSampler::fillSigmaBuffer (and its predecessor code) as 349 [start,stop) exclusive range (i.e., normal C style "for (i=start; i<stop; 350 i++)"). This is fixed by properly setting XXXindex[m-1][1] = 351 XXXindex[m][0], and using the ranges consistently in initChannels(). 352 353 - G4ElementaryParticleCollider.cc: In the six pion-nucleon scatters, the 354 two-body final state is incorrectly tested for charge-exchange. All the 355 if statements check whether "particle_kinds[0]" is the initial nucleon, 356 but the outgoing baryon actually appears in particle_kinds[1]. Replace 357 the individual tests with the use of "finaltype", moved out of the 358 strangeness if-block. 359 360 06 May 2010 Michael Kelsey (hadr-casc-V09-03-29, hadr-casc-V09-03-23-01) 361 ------------------------------------------------------------------------ 362 - G4Diproton.cc, G4Dineutron.cc, G4UnboundPN.cc: After creating instance 363 of these "internal" particles, remove the pointer from G4ParticleTable. 364 This avoids an issue with the FTFP de-excitation code, which occasionally 365 picks up the diproton and puts it onto a final-state particle list. 366 367 These three changes, and nothing else, are "backported" on top of -23 for 368 continued validation tests. 369 370 30 Apr 2010 Dennis Wright (hadr-casc-V09-03-28) 371 ----------------------------------------------- 372 - G4ElementaryParticleCollider: 373 improved pi-nucleon two-body angular distributions, and made 374 sampling of CM angle faster. As a result, the methods 375 getElasticCase and adjustIntervalForElastic were made redundant 376 and removed. Also removed array containing old angular distribution 377 parameters. 378 379 Now use nucleon-nucleon angular distributions for hyperon-nucleon 380 scattering, and pi-nucleon dsitributions for kaon-nucleon scattering 381 (until specific kaon distributions are added). 382 383 29 Apr 2010 Michael Kelsey (hadr-casc-V09-03-27) 384 ------------------------------------------------ 385 - G4InuclPartcleNames.hh: Long name "gamma" conflicts with math function. 386 Change back to "photon". 387 388 - G4InuclElementaryParticle.cc, G4InuclEvaporation.cc, 389 G4NonEquilibriumEvaporator.cc, G4NucleiModel.cc, G4NucleonSampler.cc, 390 G4PionSampler.cc, G4PreCompoundCascadeInterface.cc, 391 G4PreCompoundInuclCollider.cc: Replace "gamma" with "photon". 392 393 - G4InuclElementaryParticle.hh: Change "photon()" to "isPhoton()" to avoid 394 conflicts with names enum. Use names enum internally as well. 395 396 - G4ElementaryParticleCollider.cc, G4InuclCollider.cc, 397 G4PreCompoundInuclCollider.cc: Change "photon()" to "isPhoton()". 398 399 28 Apr 2010 Michael Kelsey (hadr-casc-V09-03-26) 400 ------------------------------------------------ 401 All changes below within "cascade/" subdirectory: 402 403 - G4InuclParticleNames.hh: Define enums for particle type codes, using both 404 "long" and "short" names copied from existing duplicated enums. One 405 change is that "kp" and "km" are replaced by "kpl" and "kmi" respectively, 406 since "km" conflicts with GEANT4 "kilometers" unit. Deploy in classes: 407 408 include/G4FinalStateSampler.hh 409 src/G4CascadeElasticInterface.cc 410 src/G4CascadeInterface.cc 411 src/G4ElasticCascadeInterface.cc 412 src/G4ElementaryParticleCollider.cc 413 src/G4InuclElementaryParticle.cc 414 src/G4InuclEvaporation.cc 415 src/G4NucleonSampler.cc 416 src/G4PionSampler.cc 417 src/G4PreCompoundCascadeInterface.cc 418 419 - G4InuclElementaryParticle.cc: Add Omega- and antinucleon partcles to lists. 420 No code uses these (yet). 421 422 24 April 2010 Michael Kelsey (hadr-casc-V09-03-25) 423 -------------------------------------------------- 424 Remove redundant classes, G4Ibertini and G4BertiniRegionModel. 425 426 21 April 2010 Michael Kelsey (hadr-casc-V09-03-24) 427 -------------------------------------------------- 428 - G4NucleiModel.hh,cc: Eliminate last remaining hardwired baryon masses. 429 430 18 April 2010 Michael Kelsey (hadr-casc-V09-03-23) 431 -------------------------------------------------- 432 Final revisions to access std::vector<particle> via const-references: 433 434 G4CascadeInterface.cc 435 G4EquilibriumEvaporator.cc 436 G4IBertini.cc 437 G4InuclCollier.cc 438 G4NucleiModel.cc 439 G4PreCompoundCascadeInterface.cc 440 441 - G4CollisionOutput: Add new function to boost output lists to lab frame. 442 443 14 April 2010 Michael Kelsey (hadr-casc-V09-03-22) 444 -------------------------------------------------- 445 - G4CascadeInterface.cc, G4IBertini.cc, G4PreCompoundCascadeInterface.cc: 446 In ::ApplyYourself(), do the check on K0L/K0S _before_ passing G4PartDefn 447 to G4InuclElemPart::type(). This avoids unnecessary warning message. 448 449 14 April 2010 Michael Kelsey (temporary: kelsey-memClean3) 450 ---------------------------------------------------------- 451 All changes below within "cascade/" subdirectory: 452 453 - G4FinalStateSampler: Replace "sigma" argument for sampling with data 454 member, add functions to fill sigma buffer by passing in array references. 455 Provide typedef for interpolator, and function to apply interpolation. 456 457 - G4PionSampler, G4NucleonSampler: Follow changes to base class, 458 eliminating much of the copy-and-paste code blocks via function calls. 459 Replace G4float arrays with G4double, to support passing into functions. 460 461 13 April 2010 Michael Kelsey (hadr-casc-V09-03-21) 462 -------------------------------------------------- 463 All changes below within "cascade/" subdirectory: 464 465 - G4InuclSpecialFunctions.hh, paraMaker.cc, paraMakerTruncated.cc: Drop 466 return-by-value from paraMaker() and paraMakerTruncated(). Add second 467 argument with non-const reference to output buffer for return. 468 469 - G4EquilibriumEvaporator.cc: Follow changes above to paraMaker(), use 470 references to address parms.first and parms.second, instead of copying. 471 472 - G4NonEquilibriumEvaporator.cc: Follow changes above to 473 paraMakerTruncaed(), use references to address parms.first and 474 parms.second, instead of copying. 475 476 - G4Dineutron, G4Diproton, G4UnboundPN: Inherit from G4VShortLivedParticle, 477 per Kurashige. Thought it would eliminate G4ElectronOccupancy churn, but 478 did not. 479 480 12 April 2010 Michael Kelsey (hadr-casc-V09-03-20) 481 -------------------------------------------------- 482 All changes below within "cascade/" subdirectory: 483 484 - G4NucleiModel: Move function implementations from .hh to .cc. Replace 485 manual sorting (inefficient O(N^2)) with std::sort() and simple 486 "less-than" function for std::pair<> "partners". 487 488 - G4CollisionOutput: Move function implementations from .hh to .cc. Use 489 std::vevtor<>::insert() to add vectors together. 490 491 - Replace return-by-value G4CollisionOutput with non-const reference buffer 492 passed into xxx::collide(), in the following classes: 493 G4BigBanger 494 G4CascadeElasticInterface 495 G4CascadeInterface 496 G4ElasticCascadeInterface 497 G4ElementaryParticleCollider 498 G4EquilibriumEvaporator 499 G4EvaporationInuclCollider 500 G4Fissioner 501 G4IBertini 502 G4IntraNucleiCascader 503 G4InuclCollider 504 G4InuclEvaporation 505 G4NonEquilibriumEvaporator 506 G4NucleiModel 507 G4PreCompoundCascadeInterface 508 G4PreCompoundInuclCollider 509 510 Note that some places where internal G4CollisionOutput buffers are being 511 used (and their contents appended to the global output) have not been 512 cleaned up yet. These will require some rearrangement of the algorithms, 513 or/and elimination of debugging output. 514 515 09 April 2010 Michael Kelsey (hadr-casc-V09-03-16-01) 516 ----------------------------------------------------- 517 This modification is included in a pseudo-patch of hadr-casc-V09-03-16, 518 without brining in any of the -17 through -19 modifications. 519 520 - G4LorentzVector.cc: Protect two instances of sqrt() against tiny negative 521 arguments (due to tiny-tiny subtractions). 522 523 09 April 2010 Michael Kelsey (hadr-casc-V09-03-19) 524 -------------------------------------------------- 525 All changes below within "cascade/" subdirectory: 526 527 - G4InuclParticle, G4InuclElementaryParticle, G4InuclNuclei: Eliminate 528 unused G4String ctor argument, introduced in hadr-casc-V09-03-01. Causes 529 a lot of pointless memory churn. 530 531 - G4BigBanger.cc: Fix type conversion warning I introduced by mistake. 532 533 08 April 2010 Michael Kelsey (hadr-casc-V09-03-18) 534 -------------------------------------------------- 535 All changes below within "cascade/" subdirectory: 536 537 - G4PionSampler, G4NucleonSampler: For all ::GetFSPartTypes*() functions, 538 eliminate return-by-value std::vector<>, and pass in non-const reference 539 for filling in situ. Buffer is cleared. 540 541 - G4ElementaryParticleCollider.cc: Follow changes above for Sampler calls. 542 543 07 April 2010 Michael Kelsey (hadr-casc-V09-03-17) 544 -------------------------------------------------- 545 All changes below within "cascade/" subdirectory: 546 547 Replace return-by-value std::vector<> with either const-ref returns, or 548 with use of an internal buffer which can be reused, to reduce memory 549 churn due to copying, allocation, and resizing. 550 551 - G4BigBanger: Create data buffer for lists of secondaries and momenta. 552 Fill buffers in ::generateBangInSCM() and ::generateMomentumModules(), 553 which are now non-const. Reference buffers in ::collide(). 554 555 - G4CascadeFunctions::getOutgoingParticleTypes(): Make "kinds" a static 556 variable (buffer), and return it by const-ref. 557 558 - G4ElementaryParticleCollider: Eliminate return-by-value std::vector<> 559 on the functions listed below, by creating data buffers for particles, 560 momenta, and particle types. The functions become non-const and void: 561 ::generateSCMfinalState(), ::generateMomModules() 562 ::generateStrangeChannelPartTypes(), ::generateSCMpionAbsorption() 563 564 Also, in ::generateStrangeChannelPartTypes(), use a switch statement 565 instead of the long cascade of if-else-else. 566 567 - G4NucleiModel: Several member functions have different modifications: 568 569 ::initializeCascad(bullet,target) -- Replace return value with a passed-in 570 (non-const reference) buffer to be filled. The calling code can 571 pass in a data member, local variable, or whatever. 572 573 ::generateParticleFate() -- Replace local "thePartners" variable with data 574 member, filled below. Move "outgouing_cparticles" to data member 575 (fix the spelling!), and return by const-ref. 576 577 ::generateInteractionPartners() -- Eliminate return value; fill data 578 member instead, to be used by ::generateParticleFate(). 579 580 - G4IntraNucleiCascader.cc: Follow changes to initializeCascad() above. 581 582 - G4NucleonSampler, G4PionSampler: ** DON'T KNOW WHAT TO DO HERE ** 583 584 - G4WatcherGun: Return const-ref to list of watchers, instead of copy. 585 586 Replace all uses of std::vector<>::resize(0) with ::clear(). The former 587 causes deallocation/reallocation/resizing cycles, while clear() just removes 588 content, preserving the allocated buffer. 589 590 include/G4CollisionOutput.hh 591 src/G4ElementaryParticleCollider.cc 592 src/G4NucleiModel.cc 593 src/G4WatcherGun.cc 594 595 07 April 2010 Dennis Wright (hadr-casc-V09-03-16) 596 ------------------------------------------------- 597 - fix negative energy bug in G4BigBanger, and switch to using 598 G4NucleiProperties::GetBindingEnergy 599 600 07 April 2010 Michael Kelsey (hadr-casc-V09-03-15) 601 -------------------------------------------------- 602 All changes below within "cascade/" subdirectory: 603 604 1) Systematically replace pass-by-value function arguments with const-refs. 605 This is the first step in reducing unnecessary memory churn, to be followed 606 by replacing return-by-value std::vector<> with non-const argument buffers. 607 608 include/G4CascadeChannel.hh 609 include/G4FinalStateSampler.hh 610 include/G4InuclEvaporation.hh 611 include/G4NuclWatcher.hh 612 src/G4CascadeChannel.cc 613 src/G4FinalStateSampler.cc 614 src/G4InuclEvaporation.cc 615 src/G4NuclWatcher.cc 616 617 2) Fix constness on some operator== and operator!= definitions. 618 619 include/G4CascadeElasticInterface.hh 620 include/G4CascadeInterface.hh 621 include/G4ElasticCascadeInterface.hh 622 include/G4IBertini.hh 623 include/G4PreCompoundCascadeInterface.hh 624 625 07 Apr 2010 Michael Kelsey (hadr-casc-V09-03-14) 626 ------------------------------------------------ 627 - G4Dineutron.hh, G4Diproton.hh, G4UnboundPN.hh: 628 Reset static "theInstance" pointer to zero in (now virtual) destructor. 629 630 - G4Dineutron.cc, G4Diproton.cc, G4UnboundPN.cc: 631 Implement constructor to do the G4Ions initialization, rather than in 632 ::Definition(). Drop use of G4ParticleTable; just monitor static pointer. 633 Set "ShortLived" flag in G4Ions initialization, to avoid interactions with 634 ProcessManager. 635 636 - G4InuclNuclei.cc: In ::makeNuclearFragment(), set "ShortLived" flag for 637 G4Ions, to avoid interactions with ProcessManager. 638 639 26 Mar 2010 Dennis Wright (hadr-casc-V09-03-13) 640 ----------------------------------------------- 641 - G4EquilibriumEvaporator.cc: remove line #include "G4types.hh" 642 (file doesn't exist) 643 644 20 Mar 2010 Michael Kelsey (hadr-casc-V09-03-12) 645 ------------------------------------------------ 646 All changes below within "cascade/" subdirectory: 647 648 - G4EquilibriumEvaporator.cc: Move subtraction of Q1[i] outside new 649 GetBindingEnergy() call. 650 651 - G4InuclNuclei.cc::makeNuclearFragment(): Add message warning users about 652 non-physical creation. Use new GetBindingEnergy() function here as well 653 (V09-03-05 didn't have this function, so wasn't included in migration). 654 655 19 Mar 2010 Michael Kelsey (hadr-casc-V09-03-11) 656 ------------------------------------------------ 657 All changes below within "cascade/" subdirectory: 658 659 - G4InuclSpecialFunctions: Two new functions: 660 661 ::generateWithRandomAngles() to encapsulate random-direction generation. 662 This function and existing generateWithFixedTheta() take optional mass 663 argument to produce proper four-vector. 664 665 Replace duplicated random angle code with new function above, and use new 666 optional mass argument where available: 667 668 G4BigBanger.cc 669 G4ElementaryParticleCollider.cc 670 G4EquilibriumEvaporator.cc 671 G4Fissioner.cc 672 G4NonEquilibriumEvaporator.cc 673 G4NucleiModel.cc 674 675 ::G4cbrt(): Define cube-root in terms of log and exp, rather than pow(). 676 Note that "cbrt()" can't be used, as it conflicts with <math.h> on Linux. 677 678 Eliminate unnecessary uses of std::pow() with fixed arguments. For 679 example, "pow(x,3)" -> "x*x*x", "pow(x,1/3)" -> G4cbrt(x): 680 681 G4BertiniRegionModel.cc 682 G4EquilibriumEvaporator.cc 683 G4EvaporationInuclCollider.cc 684 G4Fissioner.cc 685 G4IntraNucleiCascader.cc 686 G4InuclCollider.cc 687 G4NonEquilibriumEvaporator.cc 688 G4NucleiModel.cc 689 G4PreCompoundInuclCollider.cc 690 G4RegionModel.cc 691 bindingEnergyAsymptotic.cc 692 bindingEnergyKummel.cc 693 694 WARNING! In G4IntraNucleiCascader.cc, the Coulomb barrier was calculated 695 using "std::pow(A, 0.333)", rather than the "exact" 1./3. This leads to 696 per-mil differences in the value, and occasional differences in wheter an 697 outgoing particle tunnels through. The new code is exact to double 698 precision, and therefore fixes a bug. 699 700 - Move "using" directive from all .hh files to corresponding .cc, along with 701 some unnecessary #includes: 702 703 G4BigBanger.hh, .cc 704 G4ElementaryParticleCollider.hh, .cc 705 G4EquilibriumEvaporator.hh, .cc 706 G4EvaporationInuclCollider.hh, .cc 707 G4Fissioner.hh, .cc 708 G4IntraNucleiCascader.hh, .cc 709 G4InuclCollider.hh 710 G4InuclNuclei.hh 711 G4NonEquilibriumEvaporator.hh, .cc 712 G4NucleiModel.hh, .cc 713 G4PreCompoundInuclCollider.hh, .cc 714 715 - G4NuclWatcher.hh and .cc (new): Move implementation code from .hh to .cc. 716 717 18 March 2010 Michael Kelsey (hadr-casc-V09-03-10) 718 -------------------------------------------------- 719 All changes below within "cascade/" subdirectory: 720 721 Missed one bug in repairs below, found when testing 4 GeV pi -> Pb. 722 723 - G4Fissioner.cc: Replace incorrect G4LorentzVector ctor arguments 724 (G4ThreeVector,m) with call to G4LV::setVectM(). 725 726 17 March 2010 Dennis Wright (hadr-casc-V09-03-09) 727 ------------------------------------------------- 728 Fix warning in G4InuclNuclei.cc: G4Ions:G4Ions was being called with 729 a double (a) in its 13th argument, when an integer is required. Use 730 G4lrint to convert. 731 732 16 March 2010 Michael Kelsey (hadr-casc-V09-03-08) 733 -------------------------------------------------- 734 All changes below within "cascade/" subdirectory: 735 736 Fix bugs introduced during migration from G4CascadeMomentum to 737 G4LorentzVector (see hadr-casc-V09-03-03). With these bug fixes, 2000 738 events generated with "ppi4GeV" test executable are equivalent to production 739 output (GEANT 4.9.3), allowing for differences in hardwired nucleon masses. 740 When compared with hadr-casc-V09-03-02 (which uses G4ParticleDefinition for 741 all the particle masses) the 2000-event results are identical within 742 floating point precision. 743 744 - G4BigBanger.cc: Line 72, fix unit conversion bug, GeV/MeV vs. MeV/GeV. 745 Replace incorrectly introduced cross-product with original vector 746 manipulation, written with G4LorentzVector accessors. 747 748 - G4CollisionOutput::selectPairToTune(): Test on "i3>0" not appropriate with 749 G4LorentzVector indexing. Replace with failure-test on "i3<0". Also 750 simplify final if-cascade for readability. 751 752 - G4EquilibriumEvaporator.cc: Replace incorrect G4LorentzVector ctor 753 arguments (px,py,pz,m) with call to G4LV::setVectM(). 754 755 - G4IntraNuclearCascader.cc: Replace leftover momentum_out[0] with .e(). 756 757 - G4InuclNuclei.cc,hh: Add new function ::makeNuclearFragment(a,z,exc), 758 which "manually" construct a G4Ions object for cases where A/Z is not a 759 valid stable or unstable nucleus. These unphysical objects are passed 760 back from G4IntraNuclearCascader.cc and immediately passed to G4BigBanger 761 for conversion to nucleons. A future change should move this action into 762 G4INCascader and eliminate the need for unphysical nuclei. 763 764 - G4LorentzConvertor::toTheTargetRestFrame(): Remove local declaration of 765 scm_momentum, restoring access to data member with that name. 766 767 - G4NucleiModel::generateQuasiDeutron(): Undo consolidation of dmom with 768 local variables for each of the nucleon momenta. Stack corruption led to 769 differences in unbound p-n state relative to pp and nn states. 770 771 Minor updates: Changed all the "verboseLevel()" initializers to (0), via a 772 shell script. This allows making the code uniformly verbose or quiet. 773 774 include/G4NucleiModel.hh 775 src/G4Analyser.cc 776 src/G4CollisionOutput.cc 777 src/G4ElementaryParticleCollider.cc 778 src/G4FissionStore.cc 779 src/G4Fissioner.cc 780 src/G4IntraNucleiCascader.cc 781 src/G4NonEquilibriumEvaporator.cc 782 src/G4NucleiModel.cc 783 src/G4WatcherGun.cc 784 785 16 March 2010 Michael Kelsey (hadr-casc-V09-03-DO-NOT-USE) 786 -------------------------------------------------- 787 All changes below within "cascade/" subdirectory: 788 789 Restore version hadr-casc-V09-03-05 to HEAD of CVS in order to apply bug 790 fixes and re-deploy migration from G4CascadeMomentum to G4LorentzVector. 791 This reversion is tagged as a checkpoint only, and should not be used for 792 testing or running (since it restores the known bugs in V09-03-03). 793 794 The update to G4InteractionCase.hh by Gabriele Cosmo in hadr-casc-V09-03-07 795 is not touched by this reversion! 796 797 The following CVS commands were used to perform the reversion: 798 799 cvs update -j1.13 -j1.12 cascade/include/G4CascadParticle.hh 800 cvs update -j1.4 -j1.3 cascade/include/G4CascadeMomentum.hh 801 cvs update -j1.15 -j1.14 cascade/include/G4CollisionOutput.hh 802 cvs update -j1.23 -j1.22 cascade/include/G4ElementaryParticleCollider.hh 803 cvs update -j1.9 -j1.8 cascade/include/G4InuclCollider.hh 804 cvs update -j1.19 -j1.18 cascade/include/G4InuclElementaryParticle.hh 805 cvs update -j1.12 -j1.11 cascade/include/G4InuclNuclei.hh 806 cvs update -j1.16 -j1.15 cascade/include/G4InuclParticle.hh 807 cvs update -j1.13 -j1.12 cascade/include/G4InuclSpecialFunctions.hh 808 cvs update -j1.13 -j1.12 cascade/include/G4LorentzConvertor.hh 809 cvs update -j1.4 -j1.3 cascade/include/G4ParticleLargerBeta.hh 810 cvs update -j1.9 -j1.8 cascade/include/G4ParticleLargerEkin.hh 811 cvs update -j1.20 -j1.19 cascade/src/G4BigBanger.cc 812 cvs update -j1.13 -j1.12 cascade/src/G4CascadParticle.cc 813 cvs update -j1.6 -j1.5 cascade/src/G4CascadeElasticInterface.cc 814 cvs update -j1.68 -j1.67 cascade/src/G4CascadeInterface.cc 815 cvs update -j1.18 -j1.17 cascade/src/G4CollisionOutput.cc 816 cvs update -j1.7 -j1.6 cascade/src/G4ElasticCascadeInterface.cc 817 cvs update -j1.6 -j1.5 cascade/src/G4EvaporationInuclCollider.cc 818 cvs update -j1.5 -j1.4 cascade/src/G4IBertini.cc 819 cvs update -j1.3 -j1.2 cascade/src/G4InuclElementaryParticle.cc 820 cvs update -j1.10 -j1.9 cascade/src/G4InuclEvaporation.cc 821 cvs update -j1.3 -j1.2 cascade/src/G4InuclNuclei.cc 822 cvs update -j1.4 -j1.3 cascade/src/G4InuclParticle.cc 823 cvs update -j1.17 -j1.16 cascade/src/G4InuclSpecialFunctions.cc 824 cvs update -j1.19 -j1.18 cascade/src/G4LorentzConvertor.cc 825 cvs update -j1.5 -j1.4 cascade/src/G4PreCompoundCascadeInterface.cc 826 cvs update -j1.4 -j1.3 cascade/src/G4PreCompoundInuclCollider.cc 827 828 Intermediate versions below had bindingEnergy changes from -05 re-applied 829 830 cvs update -j1.23 -j1.21 cascade/src/G4EquilibriumEvaporator.cc 831 cvs update -j1.22 -j1.20 cascade/src/G4Fissioner.cc 832 cvs update -j1.29 -j1.27 cascade/src/G4IntraNucleiCascader.cc 833 cvs update -j1.24 -j1.22 cascade/src/G4InuclCollider.cc 834 cvs update -j1.23 -j1.21 cascade/src/G4NonEquilibriumEvaporator.cc 835 cvs update -j1.38 -j1.36 cascade/src/G4NucleiModel.cc 836 837 G4ElementaryParticleCollider::particleSCMmomentumFor2to2: Restore new 838 parametrization of elastic scattering added by D.Write in hadr-casc-V09-03-06 839 840 cvs update -j1.47 -j1.45 cascade/src/G4ElementaryParticleCollider.cc 841 + editing 842 843 05 Mar 2010 Gabriele Cosmo (hadr-casc-V09-03-07) 844 ------------------------------------------------ 845 - Reinstated fix in G4InteractionCase.hh for initialisation in constructor to 846 allow for porting on C++0x Standard. 847 848 07 Feb 2010 Dennis Wright (hadr-casc-V09-03-06) 849 ----------------------------------------------- 850 - back out changes from tags V09-03-00 to V00-03-05 by restoring HEAD 851 to V09-02-11, and keeping the di-nucleon classes 852 - replace Bertini method bindingEnergy() with 853 G4NucleiProperties::GetBindingEnergy() in classes 854 G4IntraNuclearCascader, G4InuclCollider, G4NucleiModel, G4EquilibriumModel, 855 G4NonEquilibriumModel, G4Fissioner. Note that G4Fissioner still uses the 856 Bertini method bindingEnergyAsymptotic. 857 858 - G4ElementaryParticleCollider::particleSCMmomentumFor2to2 859 replace original (incorrect) pp, pn, nn 2-body to 2-body scattering angular 860 distributions with a new parameterization of elastic scattering data using 861 the sum of two exponentials 862 863 02 Feb 2010 Dennis Wright (hadr-casc-V09-03-05) 864 ----------------------------------------------- 865 - replace all uses of bindingEnergy (local Bertini method) with the 866 Geant4 standard G4NucleiProperties::GetBindingEnergy(A,Z) 867 files modified: 868 G4IntraNucleiCascader.cc 869 G4InuclCollider.cc 870 G4NucleiModel.cc 871 G4EquilibriumEvaporator.cc 872 G4NonEquilibriumEvaporator.cc 873 G4Fissioner.cc 874 - note that G4Fissioner still uses Bertini method bindingEnergyAsymptotic 875 876 28 Jan 2010 Dennis Wright (hadr-casc-V09-03-04) 877 ----------------------------------------------- 878 - fix unused variable warnings in G4InuclParticle.hh, .cc and 879 G4NonEquilibriumEvaporator.cc 880 881 26 Jan 2010 Michael Kelsey (hadr-casc-V09-03-03) 882 ------------------------------------------------ 883 All changes below within "cascade/" subdirectory: 884 885 - G4ParticleLargerBeta.hh: Fix to use of CVS "Name" tag; no code changes. 886 887 - G4CascadParticle: Replace the position std::vector<> with G4ThreeVector. 888 889 - G4NucleiModel: Replace all std::vector<> coordinates with G4ThreeVector, 890 and use vector math for computations. 891 892 Remove all use of G4CascadeMomentum (a simple container with a C-style 893 four-element array) with G4LorentzVector. This is a fairly invasive change, 894 since G4CascMom was used for all of the three- and four-vector operations 895 throughout the Bertini code: 896 897 include/G4CascadParticle.hh 898 include/G4CollisionOutput.hh 899 include/G4ElementaryParticleCollider.hh 900 include/G4InuclCollider.hh 901 include/G4InuclElementaryParticle.hh 902 include/G4InuclNuclei.hh 903 include/G4InuclParticle.hh 904 include/G4InuclSpecialFunctions.hh 905 include/G4LorentzConvertor.hh 906 907 src/G4BigBanger.cc 908 src/G4CascadParticle.cc 909 src/G4CascadeElasticInterface.cc 910 src/G4CascadeInterface.cc 911 src/G4CollisionOutput.cc 912 src/G4ElasticCascadeInterface.cc 913 src/G4ElementaryParticleCollider.cc 914 src/G4EquilibriumEvaporator.cc 915 src/G4EvaporationInuclCollider.cc 916 src/G4Fissioner.cc 917 src/G4IBertini.cc 918 src/G4IntraNucleiCascader.cc 919 src/G4InuclCollider.cc 920 src/G4InuclElementaryParticle.cc 921 src/G4InuclEvaporation.cc 922 src/G4InuclNuclei.cc 923 src/G4InuclParticle.cc 924 src/G4InuclSpecialFunctions.cc 925 src/G4LorentzConvertor.cc 926 src/G4NonEquilibriumEvaporator.cc 927 src/G4NucleiModel.cc 928 src/G4PreCompoundCascadeInterface.cc 929 src/G4PreCompoundInuclCollider.cc 930 931 The new code is not yet entirely "correct," since Bertini also does a lot of 932 operations by way of three-momentum, imposing masses (and hence energy 933 conservation) separately, after the fact. 934 935 20 Jan 2010 Gabriele Cosmo 936 -------------------------- 937 - G4InteractionCase.hh: Minor fix in initialisation in constructor to 938 allow for porting on C++0x Standard. 939 940 20 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02) 941 ------------------------------------------------ 942 - G4LorentzConvertor.hh: Fix scm_momentum data member to be G4ThreeVector 943 (as used in previous versions) rather than G4LorentzVector. 944 945 NOTE: I have *retagged* cascade/include/G4LorentzConverter.hh and this 946 History file, rather than creating a new tag, since these are private 947 development only, not public releases. 948 949 12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02) 950 ------------------------------------------------ 951 All changes below within "cascade/" subdirectory: 952 953 - G4CascadeMomentum: Replace use of static G4LV variables within functions 954 with mutable data member of object; this does introduce more memory 955 thrashing, but the plan is to get rid of the whole thing anyway. Improve 956 implicit casting and add assignment from G4LV. 957 958 - G4LorentzConverter: Change function signatures to accept G4LV as input, 959 using implicit cast to convert existing G4CascadeMomentum argument 960 passing. Use G4LV internally throughout, again using implicit cast to 961 return G4CascMom values. This substantially increases (temporarily!) 962 memory thrashing. Simplify ::rotate() functions to use G4LV and 963 G4ThreeVec operations rather than array index gymnastics. Move some 964 function implementations out of .hh file into .cc. 965 966 - G4ParticleLargerEkin.hh: Fix use of CVS "Name" tag. No code changes. 967 968 12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-01) 969 ------------------------------------------------ 970 All changes below within "cascade/" subdirectory: 971 972 - G4ParticleLargerBeta, G4ParticleLargerEkin: Add additional operator() 973 which takes pointers (for future mods to reduce ctor/dtor cycling), and 974 fix ordering bug in beta sorting. Add debugging printout togged with 975 preprocessor flag. 976 977 - G4InuclParticle, G4InuclNuclei, G4InuclElementaryParticle: Rewrite to 978 carry G4DynamicParticle data member, and to instantiate particle 979 properties via G4ParticleDefinition subclasses. This is first stage in 980 eventually eliminating the G4InuclParticle stuff entirely in favor of 981 direct use of G4DynamicParticle for internal propagation. 982 983 These changes have been testing using debugging output on the production 984 (4.9.3) code compared to the above changes. |diff| shows mostly identical 985 results, with occasional ~1e-5 floating point differences. 986 987 08 Jan 2010 Michael Kelsey (hadr-casc-V09-03-00) 988 ------------------------------------------------ 989 All changes below within "cascade/" subdirectory: 990 991 - G4BertiniNuclearModel: REMOVE this class from the HEAD, and hopefully all 992 future tags. It is redundant with the G4NuclearModel class, and is not 993 used anywhere in the G4 distribtion; the latter is referenced in both 994 regular G4 code and in examples. 995 996 - G4Diproton, G4Dineutron, G4UnboundPN: New G4ParticleDefinition 997 subclasses, which implement the Bertini-specific dibaryon states. These 998 are not used anywhere as yet, but will be used in future modifications to 999 the G4InuclParticle subclasses. 1000 1001 - G4CascadeMomentum: Add interface to create from and cast to 1002 G4LorentzVector. Will be used (in future) by G4InuclParticle modifications, 1003 and provides a transition to eliminating this class entirely. 16 1004 17 1005 1 Dec 2009 Dennis Wright (hadr-casc-V09-02-11)
Note: See TracChangeset
for help on using the changeset viewer.