diff --git a/geant4/LEMuSR/G4Modified/G4ChordFinder.cc b/geant4/LEMuSR/G4Modified/G4ChordFinder.cc deleted file mode 100644 index e854cdc..0000000 --- a/geant4/LEMuSR/G4Modified/G4ChordFinder.cc +++ /dev/null @@ -1,629 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ChordFinder.cc,v 1.45 2003/11/13 19:46:56 japost Exp $ -// GEANT4 tag $Name: geant4-06-00-patch-01 $ -// -// -// 25.02.97 John Apostolakis, design and implimentation -// 05.03.97 V. Grichine , style modification -// ------------------------------------------------------------------- - -#include "G4ChordFinder.hh" -#include "G4MagneticField.hh" -#include "G4ElectricField.hh" -#include "G4El_UsualEqRhs.hh" -#include "G4Mag_UsualEqRhs.hh" -#include "G4ClassicalRK4.hh" - -#include -#include "G4ios.hh" -#include "G4Transform3D.hh" -#include "G4UnitsTable.hh" - -// .......................................................................... - -G4ChordFinder::G4ChordFinder(G4MagInt_Driver* pIntegrationDriver) - : fDefaultDeltaChord( 0.25 * mm ), - fDeltaChord( fDefaultDeltaChord ), - fAllocatedStepper(false), - fEquation(0), - fDriversStepper(0), - fFirstFraction(0.999), fFractionLast(1.00), fFractionNextEstimate(0.98), - fMultipleRadius(15.0), - fTotalNoTrials_FNC(0), fNoCalls_FNC(0), fmaxTrials_FNC(0), - fStatsVerbose(0) -{ - // Simple constructor which does not create equation, .. - // fDeltaChord= fDefaultDeltaChord; - fIntgrDriver= pIntegrationDriver; - fAllocatedStepper= false; - fLastStepEstimate_Unconstrained = DBL_MAX; // Should move q, p to - - SetFractions_Last_Next( fFractionLast, fFractionNextEstimate); - // check the values and set the other parameters -} - -// .......................................................................... - -G4ChordFinder::G4ChordFinder( G4MagneticField* theMagField, - G4double stepMinimum, - G4MagIntegratorStepper* pItsStepper ) - : fDefaultDeltaChord( 0.25 * mm ), - fDeltaChord( fDefaultDeltaChord ), - fAllocatedStepper(false), - fEquation(0), - fDriversStepper(0), - fFirstFraction(0.999), fFractionLast(1.00), fFractionNextEstimate(0.98), - fMultipleRadius(15.0), - fTotalNoTrials_FNC(0), fNoCalls_FNC(0), fmaxTrials_FNC(0), - fStatsVerbose(0) -{ - // Construct the Chord Finder - // by creating in inverse order the Driver, the Stepper and EqRhs ... - G4Mag_EqRhs *pEquation = new G4Mag_UsualEqRhs(theMagField); - fEquation = pEquation; - fLastStepEstimate_Unconstrained = DBL_MAX; // Should move q, p to - // G4FieldTrack ?? - - SetFractions_Last_Next( fFractionLast, fFractionNextEstimate); - // check the values and set the other parameters - - // --->> Charge Q = 0 - // --->> Momentum P = 1 NOMINAL VALUES !!!!!!!!!!!!!!!!!! - - if( pItsStepper == 0 ) - { - pItsStepper = fDriversStepper = new G4ClassicalRK4(pEquation); - fAllocatedStepper= true; - } - else - { - fAllocatedStepper= false; - } - fIntgrDriver = new G4MagInt_Driver(stepMinimum, pItsStepper, - pItsStepper->GetNumberOfVariables() ); -} - -// ......................................................................... - -G4ChordFinder::G4ChordFinder( G4ElectricField* theElField, - G4double stepMinimum, - G4MagIntegratorStepper* pItsStepper ) - : fDefaultDeltaChord( 0.25 * mm ), - fDeltaChord( fDefaultDeltaChord ), - fAllocatedStepper(false), - fEquation(0), - fDriversStepper(0), - fFirstFraction(0.999), fFractionLast(1.00), fFractionNextEstimate(0.98), - fMultipleRadius(15.0), - fTotalNoTrials_FNC(0), fNoCalls_FNC(0), fmaxTrials_FNC(0), - fStatsVerbose(0) -{ // Construct the Chord Finder - // by creating in inverse order the Driver, the Stepper and EqRhs ... - G4El_UsualEqRhs *pEquation = new G4El_UsualEqRhs(theElField); - fEquation = pEquation; - fLastStepEstimate_Unconstrained = DBL_MAX; // Should move q, p to - // G4FieldTrack ?? - - SetFractions_Last_Next( fFractionLast, fFractionNextEstimate); - // check the values and set the other parameters - - // --->> Charge Q = 0 - // --->> Momentum P = 1 NOMINAL VALUES !!!!!!!!!!!!!!!!!! - - if( pItsStepper == 0 ) - { - pItsStepper = fDriversStepper = new G4ClassicalRK4(pEquation); - fAllocatedStepper= true; - } - else - { - fAllocatedStepper= false; - } - fIntgrDriver = new G4MagInt_Driver(stepMinimum, pItsStepper, - pItsStepper->GetNumberOfVariables() ); - - - G4cout << " CHORD FINDER :: init..." - << G4endl; - - -// tao - mfield=theElField; - - -} - - -// ...................................................................... - -void -G4ChordFinder::SetFractions_Last_Next( G4double fractLast, G4double fractNext ) -{ - // Use -1.0 as request for Default. - if( fractLast == -1.0 ) fractLast = 1.0; // 0.9; - if( fractNext == -1.0 ) fractNext = 0.98; // 0.9; - - // fFirstFraction = 0.999; // Orig 0.999 A safe value, range: ~ 0.95 - 0.999 - // fMultipleRadius = 15.0; // For later use, range: ~ 2 - 20 - - if( fStatsVerbose ) { - G4cout << " ChordFnd> Trying to set fractions: " - << " first " << fFirstFraction - << " last " << fractLast - << " next " << fractNext - << " and multiple " << fMultipleRadius - << G4endl; - } - - if( (fractLast > 0.0) && (fractLast <=1.0) ) - { fFractionLast= fractLast; } - else - G4cerr << "G4ChordFinder:: SetFractions_Last_Next: Invalid " - << " fraction Last = " << fractLast - << " must be 0 < fractionLast <= 1 " << G4endl; - if( (fractNext > 0.0) && (fractNext <1.0) ) - { fFractionNextEstimate = fractNext; } - else - G4cerr << "G4ChordFinder:: SetFractions_Last_Next: Invalid " - << " fraction Next = " << fractNext - << " must be 0 < fractionNext < 1 " << G4endl; -} - -// ...................................................................... - -G4ChordFinder::~G4ChordFinder() -{ - delete fEquation; // fIntgrDriver->pIntStepper->theEquation_Rhs; - if( fAllocatedStepper) - { - delete fDriversStepper; - } // fIntgrDriver->pIntStepper;} - delete fIntgrDriver; - - if( fStatsVerbose ) { PrintStatistics(); } -} - -void -G4ChordFinder::PrintStatistics() -{ - // Print Statistics - G4cout << "G4ChordFinder statistics report: " << G4endl; - G4cout - << " No trials: " << fTotalNoTrials_FNC - << " No Calls: " << fNoCalls_FNC - << " Max-trial: " << fmaxTrials_FNC - << G4endl; - G4cout - << " Parameters: " - << " fFirstFraction " << fFirstFraction - << " fFractionLast " << fFractionLast - << " fFractionNextEstimate " << fFractionNextEstimate - << G4endl; -} - -// ...................................................................... - -G4double -G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, - G4double stepMax, - G4double epsStep, - const G4ThreeVector latestSafetyOrigin, - G4double latestSafetyRadius - ) -{ - - G4double stepPossible; - G4double dyErr; - G4FieldTrack yEnd( yCurrent); - G4double startCurveLen= yCurrent.GetCurveLength(); - - G4double nextStep; - // ************* - stepPossible= FindNextChord(yCurrent, stepMax, yEnd, dyErr, epsStep, &nextStep - , latestSafetyOrigin, latestSafetyRadius - ); - // ************* - G4bool good_advance; - if ( dyErr < epsStep * stepPossible ) - { - // Accept this accuracy. - yCurrent = yEnd; - good_advance = true; - } - else - { - // Advance more accurately to "end of chord" - // *************** - good_advance = fIntgrDriver->AccurateAdvance(yCurrent, stepPossible, epsStep, nextStep); - // *************** - if ( ! good_advance ){ - // In this case the driver could not do the full distance - stepPossible= yCurrent.GetCurveLength()-startCurveLen; - } - } - -#ifdef G4DEBUG_FIELD - G4cout << "Exiting FindNextChord Limited with:" << G4endl - << " yCurrent: " << yCurrent<< G4endl - <<" step possible: " << stepPossible < GetDerivatives( yCurrent, dydx ) ; - -#ifdef DEBUG_FIELD - G4cout <<"\n---------- G4ChordFinder :: derivative got, entering loop : dydx " - << dydx[0] <<" " << dydx[1] <<" "<< dydx[2] <<" "<<"\n" - << dydx[3] <<" " << dydx[4] <<" "<< dydx[5] <<" "<<"\n" - << dydx[6] <<" " << dydx[7] <<" "<< dydx[8] <<" "<<"\n" - << dydx[9] <<" " << dydx[10] <<" "<< dydx[11] <<" "<<"\n" - <QuickAdvance( yCurrent, dydx, stepTrial, - dChordStep, dyErrPos); - // ************ - -#ifdef DEBUG_FIELD - G4cout <<"\n---------- G4ChordFinder :: current FieldTrack : " << yCurrent << "\n------------"; -#endif - - // We check whether the criterion is met here. - validEndPoint = AcceptableMissDist(dChordStep); - // && (dyErrPos < eps) ; - - lastStepLength = stepTrial; - - // This method estimates to step size for a good chord. - stepForChord = NewStep(stepTrial, dChordStep, newStepEst_Uncons ); - - if( ! validEndPoint ) { - if( stepTrial<=0.0 ) - stepTrial = stepForChord; - else if (stepForChord <= stepTrial) - // Reduce by a fraction, possibly up to 20% - stepTrial = std::min( stepForChord, - fFractionLast * stepTrial); - else - stepTrial *= 0.1; - - // if(dbg) G4cerr<<"Dchord too big. Try new hstep="< 0.0 ){ - fLastStepEstimate_Unconstrained= newStepEst_Uncons; - } - - AccumulateStatistics( noTrials ); - - // stepOfLastGoodChord = stepTrial; - - if( pStepForAccuracy ){ - // Calculate the step size required for accuracy, if it is needed - G4double dyErr_relative = dyErrPos/(epsStep*lastStepLength); - if( dyErr_relative > 1.0 ) { - stepForAccuracy = - fIntgrDriver->ComputeNewStepSize( dyErr_relative, - lastStepLength ); - }else{ - stepForAccuracy = 0.0; // Convention to show step was ok - } - *pStepForAccuracy = stepForAccuracy; - } - -#ifdef TEST_CHORD_PRINT - // static int dbg=0; - // if( dbg ) - G4cout << "ChordF/FindNextChord: NoTrials= " << noTrials - << " StepForGoodChord=" << std::setw(10) << stepTrial << G4endl; -#endif - - yEnd= yCurrent; - return stepTrial; -} - -// ---------------------------------------------------------------------------- -#if 0 -// #ifdef G4VERBOSE -if( dbg ) { - G4cerr << "Returned from QuickAdvance with: yCur=" << yCurrent < adjust the maximum curve length. - // NOTE: this case only happens for relatively straight paths. - curve_length = ABdist; - } - - G4double new_st_length; - - if ( ABdist > 0.0 ){ - AE_fraction = ChordAE_Vector.mag() / ABdist; - }else{ - AE_fraction = 0.5; // Guess .. ?; -#ifdef G4DEBUG_FIELD - G4cout << "Warning in G4ChordFinder::ApproxCurvePoint:" - << " A and B are the same point!" << G4endl - << " Chord AB length = " << ChordAE_Vector.mag() << G4endl - << G4endl; -#endif - } - - if( (AE_fraction> 1.0 + perMillion) || (AE_fraction< 0.) ){ -#ifdef G4DEBUG_FIELD - G4cerr << " G4ChordFinder::ApproxCurvePointV - Warning:" - << " Anomalous condition:AE > AB or AE/AB <= 0 " << G4endl - << " AE_fraction = " << AE_fraction << G4endl - << " Chord AE length = " << ChordAE_Vector.mag() << G4endl - << " Chord AB length = " << ABdist << G4endl << G4endl; - G4cerr << " OK if this condition occurs after a recalculation of 'B'" - << G4endl << " Otherwise it is an error. " << G4endl ; -#endif - // This course can now result if B has been re-evaluated, - // without E being recomputed (1 July 99) - // In this case this is not a "real error" - but it undesired - // and we cope with it by a default corrective action ... - AE_fraction = 0.5; // Default value - } - - new_st_length= AE_fraction * curve_length; - - G4bool good_advance; - if ( AE_fraction > 0.0 ) { - good_advance = - fIntgrDriver->AccurateAdvance(Current_PointVelocity, - new_st_length, - eps_step ); // Relative accuracy - // In this case it does not matter if it cannot advance the full distance - } - - // If there was a memory of the step_length actually require at the start - // of the integration Step, this could be re-used ... - - return Current_PointVelocity; -} - -void -G4ChordFinder::TestChordPrint( G4int noTrials, - G4int lastStepTrial, - G4double dChordStep, - G4double nextStepTrial ) -{ - G4int oldprec= G4cout.precision(5); - G4cout << " ChF/fnc: notrial " << std::setw( 3) << noTrials - << " this_step= " << std::setw(10) << lastStepTrial; - if( fabs( (dChordStep / fDeltaChord) - 1.0 ) < 0.001 ){ - G4cout.precision(8); - }else{ G4cout.precision(6); } - G4cout << " dChordStep= " << std::setw(12) << dChordStep; - if( dChordStep > fDeltaChord ) { G4cout << " d+"; } - else { G4cout << " d-"; } - G4cout.precision(5); - G4cout << " new_step= " << std::setw(10) - << fLastStepEstimate_Unconstrained - << " new_step_constr= " << std::setw(10) - << lastStepTrial << G4endl; - G4cout << " nextStepTrial = " << std::setw(10) << nextStepTrial << G4endl; - G4cout.precision(oldprec); -} diff --git a/geant4/LEMuSR/G4Modified/G4ChordFinder.hh b/geant4/LEMuSR/G4Modified/G4ChordFinder.hh deleted file mode 100644 index 4788d65..0000000 --- a/geant4/LEMuSR/G4Modified/G4ChordFinder.hh +++ /dev/null @@ -1,198 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ChordFinder.hh,v 1.16 2003/11/13 17:53:47 japost Exp $ -// GEANT4 tag $Name: geant4-06-00-patch-01 $ -// -// -// class G4ChordFinder -// -// Class description: -// -// A class that provides RK integration of motion ODE (as does g4magtr) -// and also has a method that returns an Approximate point on the curve -// near to a (chord) point. - -// History: -// - 25.02.97 John Apostolakis, design and implementation -// - 05.03.97 V. Grichine , makeup to G4 'standard' -// ------------------------------------------------------------------- - -#ifndef G4CHORDFINDER_HH -#define G4CHORDFINDER_HH - -#include "G4MagIntegratorDriver.hh" -#include "G4FieldTrack.hh" - -class G4MagneticField; -class G4ElectricField; - -class G4ChordFinder -{ - public: // with description - - G4ChordFinder( G4MagInt_Driver* pIntegrationDriver ); - - G4ChordFinder( G4MagneticField* itsMagField, - G4double stepMinimum = 1.0e-2 * mm, - G4MagIntegratorStepper* pItsStepper = 0 ); - // A constructor that creates defaults for all "children" classes. - G4ChordFinder( G4ElectricField* itsElField, - G4double stepMinimum = 1.0e-2 * mm, - G4MagIntegratorStepper* pItsStepper = 0 ); - - - virtual ~G4ChordFinder(); - - - G4double AdvanceChordLimited( G4FieldTrack& yCurrent, - G4double stepInitial, - G4double epsStep_Relative, - const G4ThreeVector latestSafetyOrigin, - G4double lasestSafetyRadius); - // Uses ODE solver's driver to find the endpoint that satisfies - // the chord criterion: that d_chord < delta_chord - // -> Returns Length of Step taken. - - G4FieldTrack ApproxCurvePointV(const G4FieldTrack& curveAPointVelocity, - const G4FieldTrack& curveBPointVelocity, - const G4ThreeVector& currentEPoint, - G4double epsStep); - - inline G4double GetDeltaChord() const; - inline void SetDeltaChord(G4double newval); - - inline void SetChargeMomentumMass(G4double pCharge, // in e+ units - G4double pMomentum, - G4double pMass ); - // Function to inform integration driver of charge, speed. - - inline void SetIntegrationDriver(G4MagInt_Driver* IntegrationDriver); - inline G4MagInt_Driver* GetIntegrationDriver(); - // Access and set Driver. - - inline void ResetStepEstimate(); - // Clear internal state (last step estimate) - - inline G4int GetNoCalls(); - inline G4int GetNoTrials(); // Total number of trials - inline G4int GetNoMaxTrials(); // Maximum # of trials for one call - // Get statistics about number of calls & trials in FindNextChord - - virtual void PrintStatistics(); - // A report with the above -- and possibly other stats - inline G4int SetVerbose( G4int newvalue=1); - // Set verbosity and return old value - - protected: // ......................................................... - - inline void AccumulateStatistics( G4int noTrials ); - // Accumulate the basic statistics - // - other specialised ones must be kept by derived classes - - inline G4bool AcceptableMissDist(G4double dChordStep) const; - - G4double NewStep( G4double stepTrialOld, - G4double dChordStep, // Current dchord estimate - G4double& stepEstimate_Unconstrained ) ; - - virtual G4double FindNextChord( const G4FieldTrack yStart, - G4double stepMax, - G4FieldTrack& yEnd, - G4double& dyErr, // Error of endpoint - G4double epsStep, - G4double* pNextStepForAccuracy, // = 0, - const G4ThreeVector latestSafetyOrigin, - G4double latestSafetyRadius - ); - - void PrintDchordTrial(G4int noTrials, - G4double stepTrial, - G4double oldStepTrial, - G4double dChordStep); - public: // no description - void TestChordPrint( G4int noTrials, - G4int lastStepTrial, - G4double dChordStep, - G4double nextStepTrial ); - // Printing for monitoring ... - - inline G4double GetFirstFraction(); // Originally 0.999 - inline G4double GetFractionLast(); // Originally 1.000 - inline G4double GetFractionNextEstimate(); // Originally 0.980 - inline G4double GetMultipleRadius(); // No original value - // Parameters for adapting performance ... use with great care - - public: // with description - void SetFractions_Last_Next( G4double fractLast= 0.90, - G4double fractNext= 0.95 ); - // Parameters for performance ... change with great care - - inline void SetFirstFraction(G4double fractFirst); - // Parameter for performance ... change with great care - - protected: - inline G4double GetLastStepEstimateUnc(); - inline void SetLastStepEstimateUnc( G4double stepEst ); - - private: // ............................................................ - - G4ChordFinder(const G4ChordFinder&); - G4ChordFinder& operator=(const G4ChordFinder&); - // Private copy constructor and assignment operator. - - private: // ............................................................ - // G4int nOK, nBAD; - G4MagInt_Driver* fIntgrDriver; - - const G4double fDefaultDeltaChord; // SET in G4ChordFinder.cc = 0.25 mm - - G4double fDeltaChord; // Maximum miss distance - - G4double fLastStepEstimate_Unconstrained; // State information for efficiency - // Variables used in construction/destruction - G4bool fAllocatedStepper; - G4EquationOfMotion* fEquation; - G4MagIntegratorStepper* fDriversStepper; - - // Parameters - G4double fFirstFraction, fFractionLast, fFractionNextEstimate; - G4double fMultipleRadius; - - // For Statistics - // -- G4int fNoTrials, fNoCalls; - G4int fTotalNoTrials_FNC, fNoCalls_FNC, fmaxTrials_FNC; // fnoTimesMaxTrFNC; - G4int fStatsVerbose; // if > 0, print Statistics in destructor - - - G4double itime, ftime; - G4ElectricField* mfield; - G4int firstChord; - -}; - -// Inline function implementation: - -#include "G4ChordFinder.icc" - -#endif // G4CHORDFINDER_HH diff --git a/geant4/LEMuSR/G4Modified/G4El_EqRhs.cc b/geant4/LEMuSR/G4Modified/G4El_EqRhs.cc deleted file mode 100644 index 4f31978..0000000 --- a/geant4/LEMuSR/G4Modified/G4El_EqRhs.cc +++ /dev/null @@ -1,80 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4El_EqRhs.cc,v 1.10 2003/11/05 16:33:55 japost Exp $ -// GEANT4 tag $Name: geant4-06-00-patch-01 $ -// -// This is the standard right-hand side for equation of motion -// in a pure Electric Field . -// -// Other that might be required are: -// i) is when using a moving reference frame ... or -// ii) extending for other forces, eg an electric field -// -// J. Apostolakis, January 13th, 1997 -// -// -------------------------------------------------------------------- - -#include "G4ElectricField.hh" -#include "G4El_EqRhs.hh" -#include "globals.hh" - -//const G4double G4El_EqRhs::fUnitConstant = 0.299792458 * (GeV/(tesla*m)); - -// Constructor Implementation -// -G4El_EqRhs::G4El_EqRhs( G4ElectricField *elField ) - : G4EquationOfMotion(elField) -{ -} - - -G4El_EqRhs::~G4El_EqRhs() { } - - void G4El_EqRhs::RightHandSide( const G4double y[], - G4double dydx[] ) const -{ - G4double Field[3]; - G4double PositionAndTime[4]; - - // Position - PositionAndTime[0] = y[0]; - PositionAndTime[1] = y[1]; - PositionAndTime[2] = y[2]; - // Global Time - PositionAndTime[3] = y[7]; // See G4FieldTrack::LoadFromArray - - G4cout <<"EL_EQ RIGHT HAND SIDE!"<clearAndDestroy(); - delete theTransportMeanFreePathTable; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -void G4MultipleScattering52::BuildPhysicsTable( - const G4ParticleDefinition& aParticleType) -{ - // set values of some data members - if((aParticleType.GetParticleName() == "e-") || - (aParticleType.GetParticleName() == "e+")) - { - // parameters for e+/e- - alfa1 = 1.45 ; - alfa2 = 0.60 ; - alfa3 = 0.30 ; - b = 1. ; - xsi = facxsi*2.22 ; - c0 = 2.30 ; - } - else - { - // parameters for heavy particles - alfa1 = 1.10 ; - alfa2 = 0.14 ; - alfa3 = 0.07 ; - b = 1. ; - xsi = facxsi*2.70 ; - c0 = 1.40 ; - } - - // .............................. - Tlow = aParticleType.GetPDGMass(); - - // tables are built for MATERIALS - const G4double sigmafactor = twopi*classic_electr_radius* - classic_electr_radius; - G4double KineticEnergy,AtomicNumber,AtomicWeight,sigma,lambda; - G4double density; - - // destroy old tables if any - if (theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy(); - delete theTransportMeanFreePathTable; - } - - // create table - const G4ProductionCutsTable* theCoupleTable= - G4ProductionCutsTable::GetProductionCutsTable(); - size_t numOfCouples = theCoupleTable->GetTableSize(); - - theTransportMeanFreePathTable = new G4PhysicsTable(numOfCouples); - - // loop for materials - for (size_t i=0; i - GetMaterialCutsCouple(i); - const G4Material* material = couple->GetMaterial(); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* NbOfAtomsPerVolume = - material->GetVecNbOfAtomsPerVolume(); - const G4int NumberOfElements = material->GetNumberOfElements(); - density = material->GetDensity(); - - // loop for kinetic energy values - for (G4int i=0; iGetLowEdgeEnergy(i); - sigma = 0.; - - // loop for element in the material - for (G4int iel=0; ielGetZ(); - AtomicWeight = (*theElementVector)[iel]->GetA(); - sigma += NbOfAtomsPerVolume[iel]* - ComputeTransportCrossSection(aParticleType,KineticEnergy, - AtomicNumber,AtomicWeight); - } - sigma *= sigmafactor; - lambda = 1./sigma; - aVector->PutValue(i,lambda); - } - - theTransportMeanFreePathTable->insert(aVector); - - } - - if((aParticleType.GetParticleName() == "e-" ) || - (aParticleType.GetParticleName() == "mu+" ) || - (aParticleType.GetParticleName() == "Mu" ) || - (aParticleType.GetParticleName() == "proton") ) PrintInfoDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4double G4MultipleScattering52::ComputeTransportCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber,G4double AtomicWeight) -{ - const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* - Bohr_radius*Bohr_radius/(hbarc*hbarc); - const G4double epsmin = 1.e-4 , epsmax = 1.e10; - - const G4double Zdat[15] = { 4., 6.,13.,20.,26.,29.,32.,38.,47., - 50.,56.,64.,74.,79.,82. }; - - const G4double Tdat[23] = {0.0001*MeV,0.0002*MeV,0.0004*MeV,0.0007*MeV, - 0.001*MeV,0.002*MeV,0.004*MeV,0.007*MeV, - 0.01*MeV,0.02*MeV,0.04*MeV,0.07*MeV, - 0.1*MeV,0.2*MeV,0.4*MeV,0.7*MeV, - 1.*MeV,2.*MeV,4.*MeV,7.*MeV,10.*MeV,20.*MeV, - 10000.0*MeV}; - - // corr. factors for e-/e+ lambda - G4double celectron[15][23] = - {{1.125,1.072,1.051,1.047,1.047,1.050,1.052,1.054, - 1.054,1.057,1.062,1.069,1.075,1.090,1.105,1.111, - 1.112,1.108,1.100,1.093,1.089,1.087,0.7235 }, - {1.408,1.246,1.143,1.096,1.077,1.059,1.053,1.051, - 1.052,1.053,1.058,1.065,1.072,1.087,1.101,1.108, - 1.109,1.105,1.097,1.090,1.086,1.082,0.7925 }, - {2.833,2.268,1.861,1.612,1.486,1.309,1.204,1.156, - 1.136,1.114,1.106,1.106,1.109,1.119,1.129,1.132, - 1.131,1.124,1.113,1.104,1.099,1.098,0.9147 }, - {3.879,3.016,2.380,2.007,1.818,1.535,1.340,1.236, - 1.190,1.133,1.107,1.099,1.098,1.103,1.110,1.113, - 1.112,1.105,1.096,1.089,1.085,1.098,0.9700 }, - {6.937,4.330,2.886,2.256,1.987,1.628,1.395,1.265, - 1.203,1.122,1.080,1.065,1.061,1.063,1.070,1.073, - 1.073,1.070,1.064,1.059,1.056,1.056,1.0022 }, - {9.616,5.708,3.424,2.551,2.204,1.762,1.485,1.330, - 1.256,1.155,1.099,1.077,1.070,1.068,1.072,1.074, - 1.074,1.070,1.063,1.059,1.056,1.052,1.0158 }, - {11.72,6.364,3.811,2.806,2.401,1.884,1.564,1.386, - 1.300,1.180,1.112,1.082,1.073,1.066,1.068,1.069, - 1.068,1.064,1.059,1.054,1.051,1.050,1.0284 }, - {18.08,8.601,4.569,3.183,2.662,2.025,1.646,1.439, - 1.339,1.195,1.108,1.068,1.053,1.040,1.039,1.039, - 1.039,1.037,1.034,1.031,1.030,1.036,1.0515 }, - {18.22,10.48,5.333,3.713,3.115,2.367,1.898,1.631, - 1.498,1.301,1.171,1.105,1.077,1.048,1.036,1.033, - 1.031,1.028,1.024,1.022,1.021,1.024,1.0834 }, - {14.14,10.65,5.710,3.929,3.266,2.453,1.951,1.669, - 1.528,1.319,1.178,1.106,1.075,1.040,1.027,1.022, - 1.020,1.017,1.015,1.013,1.013,1.020,1.0937 }, - {14.11,11.73,6.312,4.240,3.478,2.566,2.022,1.720, - 1.569,1.342,1.186,1.102,1.065,1.022,1.003,0.997, - 0.995,0.993,0.993,0.993,0.993,1.011,1.1140 }, - {22.76,20.01,8.835,5.287,4.144,2.901,2.219,1.855, - 1.677,1.410,1.224,1.121,1.073,1.014,0.986,0.976, - 0.974,0.972,0.973,0.974,0.975,0.987,1.1410 }, - {50.77,40.85,14.13,7.184,5.284,3.435,2.520,2.059, - 1.837,1.512,1.283,1.153,1.091,1.010,0.969,0.954, - 0.950,0.947,0.949,0.952,0.954,0.963,1.1750 }, - {65.87,59.06,15.87,7.570,5.567,3.650,2.682,2.182, - 1.939,1.579,1.325,1.178,1.108,1.014,0.965,0.947, - 0.941,0.938,0.940,0.944,0.946,0.954,1.1922 }, - // {45.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, // paper..... - {55.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, - 1.985,1.609,1.343,1.188,1.113,1.013,0.960,0.939, - 0.933,0.930,0.933,0.936,0.939,0.949,1.2026 }}; - G4double cpositron[15][23] = { - {2.589,2.044,1.658,1.446,1.347,1.217,1.144,1.110, - 1.097,1.083,1.080,1.086,1.092,1.108,1.123,1.131, - 1.131,1.126,1.117,1.108,1.103,1.100,0.7235 }, - {3.904,2.794,2.079,1.710,1.543,1.325,1.202,1.145, - 1.122,1.096,1.089,1.092,1.098,1.114,1.130,1.137, - 1.138,1.132,1.122,1.113,1.108,1.102,0.7925 }, - {7.970,6.080,4.442,3.398,2.872,2.127,1.672,1.451, - 1.357,1.246,1.194,1.179,1.178,1.188,1.201,1.205, - 1.203,1.190,1.173,1.159,1.151,1.145,0.9147 }, - {9.714,7.607,5.747,4.493,3.815,2.777,2.079,1.715, - 1.553,1.353,1.253,1.219,1.211,1.214,1.225,1.228, - 1.225,1.210,1.191,1.175,1.166,1.174,0.9700 }, - {17.97,12.95,8.628,6.065,4.849,3.222,2.275,1.820, - 1.624,1.382,1.259,1.214,1.202,1.202,1.214,1.219, - 1.217,1.203,1.184,1.169,1.160,1.151,1.0022 }, - {24.83,17.06,10.84,7.355,5.767,3.707,2.546,1.996, - 1.759,1.465,1.311,1.252,1.234,1.228,1.238,1.241, - 1.237,1.222,1.201,1.184,1.174,1.159,1.0158 }, - {23.26,17.15,11.52,8.049,6.375,4.114,2.792,2.155, - 1.880,1.535,1.353,1.281,1.258,1.247,1.254,1.256, - 1.252,1.234,1.212,1.194,1.183,1.170,1.0284 }, - {22.33,18.01,12.86,9.212,7.336,4.702,3.117,2.348, - 2.015,1.602,1.385,1.297,1.268,1.251,1.256,1.258, - 1.254,1.237,1.214,1.195,1.185,1.179,1.0515 }, - {33.91,24.13,15.71,10.80,8.507,5.467,3.692,2.808, - 2.407,1.873,1.564,1.425,1.374,1.330,1.324,1.320, - 1.312,1.288,1.258,1.235,1.221,1.205,1.0834 }, - {32.14,24.11,16.30,11.40,9.015,5.782,3.868,2.917, - 2.490,1.925,1.596,1.447,1.391,1.342,1.332,1.327, - 1.320,1.294,1.264,1.240,1.226,1.214,1.0937 }, - {29.51,24.07,17.19,12.28,9.766,6.238,4.112,3.066, - 2.602,1.995,1.641,1.477,1.414,1.356,1.342,1.336, - 1.328,1.302,1.270,1.245,1.231,1.233,1.1140 }, - {38.19,30.85,21.76,15.35,12.07,7.521,4.812,3.498, - 2.926,2.188,1.763,1.563,1.484,1.405,1.382,1.371, - 1.361,1.330,1.294,1.267,1.251,1.239,1.1410 }, - {49.71,39.80,27.96,19.63,15.36,9.407,5.863,4.155, - 3.417,2.478,1.944,1.692,1.589,1.480,1.441,1.423, - 1.409,1.372,1.330,1.298,1.280,1.258,1.1750 }, - {59.25,45.08,30.36,20.83,16.15,9.834,6.166,4.407, - 3.641,2.648,2.064,1.779,1.661,1.531,1.482,1.459, - 1.442,1.400,1.354,1.319,1.299,1.272,1.1922 }, - {56.38,44.29,30.50,21.18,16.51,10.11,6.354,4.542, - 3.752,2.724,2.116,1.817,1.692,1.554,1.499,1.474, - 1.456,1.412,1.364,1.328,1.307,1.282,1.2026 }}; - - G4double sigma; - G4double Z23 = 2.*log(AtomicNumber)/3.; Z23 = exp(Z23); - - G4double ParticleMass = aParticleType.GetPDGMass(); - G4double ParticleKineticEnergy = KineticEnergy ; - - // correction if particle .ne. e-/e+ - // compute equivalent kinetic energy - // lambda depends on p*beta .... - G4double Mass = ParticleMass ; - if((aParticleType.GetParticleName() != "e-") && - (aParticleType.GetParticleName() != "e+") ) - { - G4double TAU = KineticEnergy/Mass ; - G4double c = Mass*TAU*(TAU+2.)/(electron_mass_c2*(TAU+1.)) ; - G4double w = c-2. ; - G4double tau = 0.5*(w+sqrt(w*w+4.*c)) ; - KineticEnergy = electron_mass_c2*tau ; - Mass = electron_mass_c2 ; - } - - G4double Charge = aParticleType.GetPDGCharge(); - G4double ChargeSquare = Charge*Charge/(eplus*eplus); - - G4double TotalEnergy = KineticEnergy + Mass ; - G4double beta2 = KineticEnergy*(TotalEnergy+Mass) - /(TotalEnergy*TotalEnergy); - G4double bg2 = KineticEnergy*(TotalEnergy+Mass) - /(Mass*Mass); - - G4double eps = epsfactor*bg2/Z23; - - if (eps epsmax) w1=log(2.*eps)+1./eps-3./(8.*eps*eps); - else w1=log((a+1.)/(a-1.))-2./(a+1.); - w = 1./((1.-x0)*eps); - if (w < epsmin) w2=-log(w)-1.+2.*w-1.5*w*w; - else w2 = log((a-x0)/(a-1.))-(1.-x0)/(a-x0); - corrnuclsize = w1/w2; - corrnuclsize = exp(-FactPar*ParticleMass/ParticleKineticEnergy)* - (corrnuclsize-1.)+1.; - } - - // interpolate in AtomicNumber and beta2 - // get bin number in Z - G4int iZ = 14; - while ((iZ>=0)&&(Zdat[iZ]>=AtomicNumber)) iZ -= 1; - if (iZ==14) iZ = 13; - if (iZ==-1) iZ = 0 ; - - G4double Z1 = Zdat[iZ]; - G4double Z2 = Zdat[iZ+1]; - G4double ratZ = (AtomicNumber-Z1)/(Z2-Z1); - - // get bin number in T (beta2) - G4int iT = 22; - while ((iT>=0)&&(Tdat[iT]>=KineticEnergy)) iT -= 1; - if(iT==22) iT = 21; - if(iT==-1) iT = 0 ; - - // calculate betasquare values - G4double T = Tdat[iT], E = T + electron_mass_c2; - G4double b2small = T*(E+electron_mass_c2)/(E*E); - T = Tdat[iT+1]; E = T + electron_mass_c2; - G4double b2big = T*(E+electron_mass_c2)/(E*E); - G4double ratb2 = (beta2-b2small)/(b2big-b2small); - - G4double c1,c2,cc1,cc2,corr; - - if (Charge < 0.) - { - c1 = celectron[iZ][iT]; - c2 = celectron[iZ+1][iT]; - cc1 = c1+ratZ*(c2-c1); - - c1 = celectron[iZ][iT+1]; - c2 = celectron[iZ+1][iT+1]; - cc2 = c1+ratZ*(c2-c1); - - corr = cc1+ratb2*(cc2-cc1); - sigma /= corr; - } - - if (Charge > 0.) - { - c1 = cpositron[iZ][iT]; - c2 = cpositron[iZ+1][iT]; - cc1 = c1+ratZ*(c2-c1); - - c1 = cpositron[iZ][iT+1]; - c2 = cpositron[iZ+1][iT+1]; - cc2 = c1+ratZ*(c2-c1); - - corr = cc1+ratb2*(cc2-cc1); - sigma /= corr; - } - - // nucl. size correction for particles other than e+/e- only at present !!!! - if((aParticleType.GetParticleName() != "e-") && - (aParticleType.GetParticleName() != "e+") ) - sigma /= corrnuclsize; - - return sigma; - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4double G4MultipleScattering52::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) -{ - G4double zPathLength,tPathLength; - const G4DynamicParticle* aParticle; - G4double tau,zt,cz,cz1,grej,grej0; - const G4double expmax = 100., ztmax = (2.*expmax+1.)/(2.*expmax+3.) ; - const G4double tmax = 1.e20*mm ; - - G4bool isOut; - - // this process is not a candidate for selection by default - valueGPILSelectionMSC = NotCandidateForSelection; - - tPathLength = currentMinimumStep; - - const G4MaterialCutsCouple* couple = track.GetMaterialCutsCouple(); - materialIndex = couple->GetIndex(); - - aParticle = track.GetDynamicParticle(); - T0 = aParticle->GetKineticEnergy(); - - lambda0 = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(T0,isOut); - - - range = G4EnergyLossTables::GetRange(aParticle->GetDefinition(), - T0,couple); - //VI Initialisation at the beginning of the step - cthm = 1.; - lambda1 = -1.; - lambdam = -1.; - alam = range; - blam = 1.+alam/lambda0 ; - zm = 1.; - - // special treatment near boundaries ? - if (boundary && range >= currentMinimumStep) - { - // step limitation at boundary ? - stepno = track.GetCurrentStepNumber() ; - if(stepno == 1) - { - stepnolastmsc = -1000000 ; - tlimit = 1.e10 ; - } - - if(stepno > 1) - { - if(track.GetStep()->GetPreStepPoint()->GetStepStatus() == fGeomBoundary) - { - stepnolastmsc = stepno ; - // if : diff.treatment for small/not small Z - if(range > lambda0) - tlimit = facrange*range ; - else - tlimit = facrange*lambda0 ; - if(tlimit < tlimitmin) tlimit = tlimitmin ; - laststep = tlimit ; - if(tPathLength > tlimit) - { - tPathLength = tlimit ; - valueGPILSelectionMSC = CandidateForSelection; - } - } - else if(stepno > stepnolastmsc) - { - if((stepno - stepnolastmsc) < nsmallstep) - { - if(tPathLength > tlimit) - { - laststep *= cf ; - tPathLength = laststep ; - valueGPILSelectionMSC = CandidateForSelection; - } - } - } - } - } - - // do the true -> geom transformation - zmean = tPathLength; - - tau = tPathLength/lambda0 ; - - if (tau < tausmall || range < currentMinimumStep) zPathLength = tPathLength; - else - { - if(tPathLength/range < dtrl) zmean = lambda0*(1.-exp(-tau)); - else - { - T1 = G4EnergyLossTables::GetPreciseEnergyFromRange( - aParticle->GetDefinition(),range-tPathLength,couple); - lambda1 = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(T1,isOut); - if(T0 < Tlow) - alam = range ; - else - alam = lambda0*tPathLength/(lambda0-lambda1) ; - blam = 1.+alam/lambda0 ; - if(tPathLength/range < 2.*dtrl) - { - zmean = alam*(1.-exp(blam*log(1.-tPathLength/alam)))/blam ; - lambdam = -1. ; - } - else - { - G4double w = 1.-0.5*tPathLength/alam ; - lambdam = lambda0*w ; - clam = 1.+alam/lambdam ; - cthm = exp(alam*log(w)/lambda0) ; - zm = alam*(1.-exp(blam*log(w)))/blam ; - zmean = zm + alam*(1.-exp(clam*log(w)))*cthm/clam ; - } - } - - // sample z - zt = zmean/tPathLength ; - if (samplez && (zt < ztmax) && (zt > 0.5)) - { - cz = 0.5*(3.*zt-1.)/(1.-zt) ; - if(tPathLength < exp(log(tmax)/(2.*cz))) - { - cz1 = 1.+cz ; - grej0 = exp(cz1*log(cz*tPathLength/cz1))/cz ; - do - { - zPathLength = tPathLength*exp(log(G4UniformRand())/cz1) ; - grej = exp(cz*log(zPathLength))*(tPathLength-zPathLength)/grej0 ; - } while (grej < G4UniformRand()) ; - } - else zPathLength = zmean; - } - else zPathLength = zmean; - } - // protection against z > lambda - if(zPathLength > lambda0) - zPathLength = lambda0 ; - - tLast = tPathLength; - zLast = zPathLength; - - return zPathLength; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4VParticleChange* G4MultipleScattering52::AlongStepDoIt( - const G4Track& track,const G4Step& step) -{ - // only a geom path->true path transformation is performed - - fParticleChange.Initialize(track); - - G4double geomPathLength = step.GetStepLength(); - - G4double truePathLength = 0. ; - - //VI change order of if operators - if(geomPathLength == zLast) truePathLength = tLast; - else if(geomPathLength/lambda0 < tausmall) truePathLength = geomPathLength; - else - { - if(lambda1 < 0.) truePathLength = -lambda0*log(1.-geomPathLength/lambda0) ; - else if(lambdam < 0.) - { - if(blam*geomPathLength/alam < 1.) - truePathLength = alam*(1.-exp(log(1.-blam*geomPathLength/alam)/ - blam)) ; - else - truePathLength = tLast; - } - else - { - if(geomPathLength <= zm) - { - if(blam*geomPathLength/alam < 1.) - truePathLength = alam*(1.-exp(log(1.-blam*geomPathLength/alam)/ - blam)) ; - else - truePathLength = 0.5*tLast; - - lambdam = -1. ; - } - else - { - if(clam*(geomPathLength-zm)/(alam*cthm) < 1.) - truePathLength = 0.5*tLast + alam*(1.- - exp(log(1.-clam*(geomPathLength-zm)/(alam*cthm)))/clam) ; - else - truePathLength = tLast ; - } - } - // protection .... - if(truePathLength > tLast) - truePathLength = tLast ; - } - - //VI truePath length cannot be smaller than geomPathLength - if (truePathLength < geomPathLength) truePathLength = geomPathLength; - fParticleChange.ProposeTrueStepLength(truePathLength); - - return &fParticleChange; - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4VParticleChange* G4MultipleScattering52::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) -{ - // angle distribution parameters - const G4double kappa = 2.5, kappapl1 = kappa+1., kappami1 = kappa-1. ; - - fParticleChange.Initialize(trackData); - G4double truestep = stepData.GetStepLength(); - - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); - G4double KineticEnergy = aParticle->GetKineticEnergy(); - G4double Mass = aParticle->GetDefinition()->GetPDGMass() ; - - // do nothing for stopped particles ! - if(KineticEnergy > 0.) - { - // change direction first ( scattering ) - G4double cth = 1.0 ; - G4double tau = truestep/lambda0 ; - - if (tau < tausmall) cth = 1.; - else if(tau > taubig) cth = -1.+2.*G4UniformRand(); - else - { - if(lambda1 > 0.) - { - if(lambdam < 0.) - tau = -alam*log(1.-truestep/alam)/lambda0 ; - else - tau = -log(cthm)-alam*log(1.-(truestep-0.5*tLast)/alam)/lambdam ; - } - - if(tau > taubig) cth = -1.+2.*G4UniformRand(); - else - { - const G4double amax=25. ; - const G4double tau0 = 0.02 ; - const G4double c_highland = 13.6*MeV, corr_highland=0.038 ; - - const G4double x1fac1 = exp(-xsi) ; - const G4double x1fac2 = (1.-(1.+xsi)*x1fac1)/(1.-x1fac1) ; - const G4double x1fac3 = 1.3 ; // x1fac3 >= 1. !!!!!!!!! - - G4double a,x0,c,xmean1,xmean2, - xmeanth,prob,qprob ; - G4double ea,eaa,b1,bx,eb1,ebx,cnorm1,cnorm2,f1x0,f2x0,w ; - - // for heavy particles take the width of the cetral part - // from the Highland formula - // (Particle Physics Booklet, July 2002, eq. 26.10) - if(Mass > electron_mass_c2) // + other conditions (beta, x/X0,...?) - { - G4double Q = fabs(aParticle->GetDefinition()->GetPDGCharge()) ; - G4double X0 = trackData.GetMaterialCutsCouple()-> - GetMaterial()->GetRadlen() ; - G4double xx0 = truestep/X0 ; - G4double betacp = KineticEnergy*(KineticEnergy+2.*Mass)/ - (KineticEnergy+Mass) ; - G4double theta0=c_highland*Q*sqrt(xx0)* - (1.+corr_highland*log(xx0))/betacp ; - if(theta0 > tausmall) - a = 0.5/(1.-cos(theta0)) ; - else - a = 1./(theta0*theta0) ; - } - else - { - w = log(tau/tau0) ; - if(tau < tau0) - a = (alfa1-alfa2*w)/tau ; - else - a = (alfa1+alfa3*w)/tau ; - } - - xmeanth = exp(-tau) ; - - x0 = 1.-xsi/a ; - if(x0 < -1.) x0 = -1. ; - - if(x0 == -1.) - { - // 1 model fuction only - // in order to have xmean1 > xmeanth -> qprob < 1 - if((1.-1./a) < xmeanth) - a = 1./(1.-xmeanth) ; - - if(a*(1.-x0) < amax) - ea = exp(-a*(1.-x0)) ; - else - ea = 0. ; - eaa = 1.-ea ; - xmean1 = 1.-1./a+(1.-x0)*ea/eaa ; - - c = 2. ; - b1 = b+1. ; - bx = b1 ; - eb1 = b1 ; - ebx = b1 ; - xmean2 = 0. ; - - prob = 1. ; - qprob = xmeanth/xmean1 ; - } - else - { - // 2 model fuctions - // in order to have xmean1 > xmeanth - if((1.-x1fac2/a) < xmeanth) - { - a = x1fac3*x1fac2/(1.-xmeanth) ; - if(a*(1.-x0) < amax) - ea = exp(-a*(1.-x0)) ; - else - ea = 0. ; - eaa = 1.-ea ; - xmean1 = 1.-1./a+(1.-x0)*ea/eaa ; - } - else - { - ea = x1fac1 ; - eaa = 1.-x1fac1 ; - xmean1 = 1.-x1fac2/a ; - } - - // from continuity of the 1st derivatives - c = a*(b-x0) ; - if(a*tau < c0) - c = c0*(b-x0)/tau ; - - if(c == 1.) c=1.000001 ; - if(c == 2.) c=2.000001 ; - if(c == 3.) c=3.000001 ; - - b1 = b+1. ; - bx=b-x0 ; - eb1=exp((c-1.)*log(b1)) ; - ebx=exp((c-1.)*log(bx)) ; - xmean2 = (x0*eb1+ebx+(eb1*bx-b1*ebx)/(2.-c))/(eb1-ebx) ; - - cnorm1 = a/eaa ; - f1x0 = cnorm1*exp(-a*(1.-x0)) ; - cnorm2 = (c-1.)*eb1*ebx/(eb1-ebx) ; - f2x0 = cnorm2/exp(c*log(b-x0)) ; - - // from continuity at x=x0 - prob = f2x0/(f1x0+f2x0) ; - // from xmean = xmeanth - qprob = (f1x0+f2x0)*xmeanth/(f2x0*xmean1+f1x0*xmean2) ; - } - - // protection against prob or qprob > 1 and - // prob or qprob < 0 - // *************************************************************** - if((qprob > 1.) || (qprob < 0.) || (prob > 1.) || (prob < 0.)) - { - // this print possibility has been left intentionally - // for debugging purposes .......................... - G4bool pr = false ; - // pr = true ; - if(pr) - { - const G4double prlim = 0.10 ; - if((fabs((xmeanth-xmean2)/(xmean1-xmean2)-prob)/prob > prlim) || - ((xmeanth-xmean2)/(xmean1-xmean2) > 1.) || - ((xmeanth-xmean2)/(xmean1-xmean2) < 0.) ) - { - G4cout.precision(5) ; - G4cout << "\nparticle=" << aParticle->GetDefinition()-> - GetParticleName() << " in material " - << trackData.GetMaterialCutsCouple()-> - GetMaterial()->GetName() << " with kinetic energy " - << KineticEnergy << " MeV," << G4endl ; - G4cout << " step length=" - << truestep << " mm" << G4endl ; - G4cout << "p=" << prob << " q=" << qprob << " -----> " - << "p=" << (xmeanth-xmean2)/(xmean1-xmean2) - << " q=" << 1. << G4endl ; - } - } - qprob = 1. ; - prob = (xmeanth-xmean2)/(xmean1-xmean2) ; - } - // ************************************************************** - - // sampling of costheta - if(G4UniformRand() < qprob) - { - if(G4UniformRand() < prob) - cth = 1.+log(ea+G4UniformRand()*eaa)/a ; - else - cth = b-b1*bx/exp(log(ebx-G4UniformRand()*(ebx-eb1))/(c-1.)) ; - } - else - cth = -1.+2.*G4UniformRand() ; - } - } - - G4double sth = sqrt(1.-cth*cth); - G4double phi = twopi*G4UniformRand(); - G4double dirx = sth*cos(phi), diry = sth*sin(phi), dirz = cth; - - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); - - G4ThreeVector newDirection(dirx,diry,dirz); - newDirection.rotateUz(ParticleDirection); - fParticleChange.ProposeMomentumDirection(newDirection.x(), - newDirection.y(), - newDirection.z()); - - if (fLatDisplFlag) - { - // compute mean lateral displacement, only for safety > tolerance ! - G4double safetyminustolerance = stepData.GetPostStepPoint()->GetSafety(); - G4double rmean, etau; - - if (safetyminustolerance > 0.) - { - if (tau < tausmall) rmean = 0.; - else if(tau < taulim) rmean = kappa*tau*tau*tau*(1.-kappapl1*tau/4.)/6.; - else - { - if(tau0.) rmean = 2.*lambda0*sqrt(rmean/3.); - else rmean = 0.; - - // for rmean > 0) only - if (rmean > 0.) - { - if (rmean>safetyminustolerance) rmean = safetyminustolerance; - - // sample direction of lateral displacement - phi = twopi*G4UniformRand(); - dirx = cos(phi); diry = sin(phi); dirz = 0.; - - G4ThreeVector latDirection(dirx,diry,dirz); - latDirection.rotateUz(ParticleDirection); - - // compute new endpoint of the Step - G4ThreeVector newPosition = stepData.GetPostStepPoint()->GetPosition() - + rmean*latDirection; - - G4Navigator* navigator = - G4TransportationManager::GetTransportationManager() - ->GetNavigatorForTracking(); - navigator->LocateGlobalPointWithinVolume(newPosition); - - fParticleChange.ProposePosition(newPosition); - } - } - } - } - - return &fParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -void G4MultipleScattering52::PrintInfoDefinition() -{ - G4String comments = " Tables of transport mean free paths."; - comments += "\n New model of MSC , computes the lateral \n"; - comments += " displacement of the particle , too."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " - << G4BestUnit(LowestKineticEnergy ,"Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.cc b/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.cc deleted file mode 100644 index bdb9345..0000000 --- a/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.cc +++ /dev/null @@ -1,190 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4MuonDecayChannel.cc,v 1.11 2004/12/10 18:02:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-07-00-cand-05 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 30 May 1997 H.Kurashige -// -// Fix bug in calcuration of electron energy in DecayIt 28 Feb. 01 H.Kurashige -// ------------------------------------------------------------ - -#include "G4ParticleDefinition.hh" -#include "G4DecayProducts.hh" -#include "G4VDecayChannel.hh" -#include "G4MuonDecayChannel.hh" -#include "Randomize.hh" -#include "G4LorentzVector.hh" -#include "G4LorentzRotation.hh" - - -G4MuonDecayChannel::G4MuonDecayChannel(const G4String& theParentName, - G4double theBR) - :G4VDecayChannel("Muon Decay",1) -{ - // set names for daughter particles - if (theParentName == "mu+") { - SetBR(theBR); - SetParent("mu+"); - SetNumberOfDaughters(3); - SetDaughter(0, "e+"); - SetDaughter(1, "nu_e"); - SetDaughter(2, "anti_nu_mu"); - } else if (theParentName == "Mu") { - SetBR(theBR); - SetParent("Mu"); - SetNumberOfDaughters(3); - SetDaughter(0, "e+"); - SetDaughter(1, "nu_e"); - SetDaughter(2, "anti_nu_mu"); - } else if (theParentName == "mu-") { - SetBR(theBR); - SetParent("mu-"); - SetNumberOfDaughters(3); - SetDaughter(0, "e-"); - SetDaughter(1, "anti_nu_e"); - SetDaughter(2, "nu_mu"); - } else { -#ifdef G4VERBOSE - if (GetVerboseLevel()>0) { - G4cout << "G4MuonDecayChannel:: constructor :"; - G4cout << " parent particle is not muon but "; - G4cout << theParentName << G4endl; - } -#endif - } -} - -G4MuonDecayChannel::~G4MuonDecayChannel() -{ -} - -G4DecayProducts *G4MuonDecayChannel::DecayIt(G4double) -{ - // this version neglects muon polarization - // assumes the pure V-A coupling - // gives incorrect energy spectrum for neutrinos -#ifdef G4VERBOSE - if (GetVerboseLevel()>1) G4cout << "G4MuonDecayChannel::DecayIt "; -#endif - - if (parent == 0) FillParent(); - if (daughters == 0) FillDaughters(); - - // parent mass - G4double parentmass = parent->GetPDGMass(); - - //daughters'mass - G4double daughtermass[3]; - G4double sumofdaughtermass = 0.0; - for (G4int index=0; index<3; index++){ - daughtermass[index] = daughters[index]->GetPDGMass(); - sumofdaughtermass += daughtermass[index]; - } - - //create parent G4DynamicParticle at rest - G4ThreeVector dummy; - G4DynamicParticle * parentparticle = new G4DynamicParticle( parent, dummy, 0.0); - //create G4Decayproducts - G4DecayProducts *products = new G4DecayProducts(*parentparticle); - delete parentparticle; - - // calculate daughter momentum - G4double daughtermomentum[3]; - G4double energy; - // calcurate electron energy - G4double xmax = (1.0+daughtermass[0]*daughtermass[0]/parentmass/parentmass); - G4double x; - G4double r; - do { - do { - r = G4UniformRand(); - x = xmax*G4UniformRand(); - } while (r > (3.0 - 2.0*x)*x*x); - energy = x*parentmass/2.0 - daughtermass[0]; - } while (energy <0.0); - //create daughter G4DynamicParticle - // daughter 0 (electron) - daughtermomentum[0] = std::sqrt(energy*energy + 2.0*energy* daughtermass[0]); - G4double costheta, sintheta, phi, sinphi, cosphi; - costheta = 2.*G4UniformRand()-1.0; - sintheta = std::sqrt((1.0-costheta)*(1.0+costheta)); - phi = twopi*G4UniformRand()*rad; - sinphi = std::sin(phi); - cosphi = std::cos(phi); - G4ThreeVector direction0(sintheta*cosphi,sintheta*sinphi,costheta); - G4DynamicParticle * daughterparticle - = new G4DynamicParticle( daughters[0], direction0*daughtermomentum[0]); - products->PushProducts(daughterparticle); - - // daughter 1 ,2 (nutrinos) - // create neutrinos in the C.M frame of two neutrinos - G4double energy2 = parentmass*(1.0 - x/2.0); - G4double vmass = std::sqrt((energy2-daughtermomentum[0])*(energy2+daughtermomentum[0])); - G4double beta = -1.0*daughtermomentum[0]/energy2; - G4double costhetan = 2.*G4UniformRand()-1.0; - G4double sinthetan = std::sqrt((1.0-costhetan)*(1.0+costhetan)); - G4double phin = twopi*G4UniformRand()*rad; - G4double sinphin = std::sin(phin); - G4double cosphin = std::cos(phin); - - G4ThreeVector direction1(sinthetan*cosphin,sinthetan*sinphin,costhetan); - G4DynamicParticle * daughterparticle1 - = new G4DynamicParticle( daughters[1], direction1*(vmass/2.)); - G4DynamicParticle * daughterparticle2 - = new G4DynamicParticle( daughters[2], direction1*(-1.0*vmass/2.)); - - // boost to the muon rest frame - G4LorentzVector p4; - p4 = daughterparticle1->Get4Momentum(); - p4.boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta); - daughterparticle1->Set4Momentum(p4); - p4 = daughterparticle2->Get4Momentum(); - p4.boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta); - daughterparticle2->Set4Momentum(p4); - products->PushProducts(daughterparticle1); - products->PushProducts(daughterparticle2); - daughtermomentum[1] = daughterparticle1->GetTotalMomentum(); - daughtermomentum[2] = daughterparticle2->GetTotalMomentum(); - - // output message -#ifdef G4VERBOSE - if (GetVerboseLevel()>1) { - G4cout << "G4MuonDecayChannel::DecayIt "; - G4cout << " create decay products in rest frame " <DumpInfo(); - } -#endif - return products; -} - - - - - - diff --git a/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.hh b/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.hh deleted file mode 100644 index 0a3f6d7..0000000 --- a/geant4/LEMuSR/G4Modified/G4MuonDecayChannel.hh +++ /dev/null @@ -1,63 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4MuonDecayChannel.hh,v 1.5 2001/07/11 10:01:56 gunter Exp $ -// GEANT4 tag $Name: geant4-07-00-cand-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 30 May 1997 H.Kurashige -// ------------------------------------------------------------ -#ifndef G4MuonDecayChannel_h -#define G4MuonDecayChannel_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "G4VDecayChannel.hh" - -class G4MuonDecayChannel :public G4VDecayChannel -{ - // Class Decription - // This class describes muon decay kinemtics. - // This version neglects muon polarization - // assumes the pure V-A coupling - // gives incorrect energy spectrum for neutrinos - // - - public: // With Description - //Constructors - G4MuonDecayChannel(const G4String& theParentName, - G4double theBR); - // Destructor - virtual ~G4MuonDecayChannel(); - - public: // With Description - virtual G4DecayProducts *DecayIt(G4double); - -}; - - -#endif diff --git a/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.cc b/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.cc deleted file mode 100644 index eb00503..0000000 --- a/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.cc +++ /dev/null @@ -1,264 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: -// 17 August 2004 P.Gumplinger and T.MacPhail -// samples Michel spectrum including 1st order -// radiative corrections -// Reference: Florian Scheck "Muon Physics", in Physics Reports -// (Review Section of Physics Letters) 44, No. 4 (1978) -// 187-248. North-Holland Publishing Company, Amsterdam -// at page 210 cc. -// -// W.E. Fisher and F. Scheck, Nucl. Phys. B83 (1974) 25. -// -// ------------------------------------------------------------ -// -#include "G4MuonDecayChannelWithSpin.hh" - -#include "Randomize.hh" -#include "G4DecayProducts.hh" -#include "G4LorentzVector.hh" - -G4MuonDecayChannelWithSpin::G4MuonDecayChannelWithSpin(const G4String& theParentName, - G4double theBR) - : G4MuonDecayChannel(theParentName,theBR) -{ -} - - -G4MuonDecayChannelWithSpin::~G4MuonDecayChannelWithSpin() -{ -} - -G4DecayProducts *G4MuonDecayChannelWithSpin::DecayIt(G4double) -{ - // This version assumes V-A coupling with 1st order radiative correctons, - // the standard model Michel parameter values, but - // gives incorrect energy spectrum for neutrinos - -#ifdef G4VERBOSE - if (GetVerboseLevel()>1) G4cout << "G4MuonDecayChannelWithSpin::DecayIt "; -#endif - - if (parent == 0) FillParent(); - if (daughters == 0) FillDaughters(); - - // parent mass - G4double parentmass = parent->GetPDGMass(); - - EMMU = parentmass; - - //daughters'mass - G4double daughtermass[3]; - G4double sumofdaughtermass = 0.0; - for (G4int index=0; index<3; index++){ - daughtermass[index] = daughters[index]->GetPDGMass(); - sumofdaughtermass += daughtermass[index]; - } - - EMASS = daughtermass[0]; - - //create parent G4DynamicParticle at rest - G4ThreeVector dummy; - G4DynamicParticle * parentparticle = new G4DynamicParticle( parent, dummy, 0.0); - //create G4Decayproducts - G4DecayProducts *products = new G4DecayProducts(*parentparticle); - delete parentparticle; - - // calcurate electron energy - - G4double michel_rho = 0.75; //Standard Model Michel rho - G4double michel_delta = 0.75; //Standard Model Michel delta - G4double michel_xsi = 1.00; //Standard Model Michel xsi - G4double michel_eta = 0.00; //Standard Model eta - - G4double rndm, x, ctheta; - - G4double FG; - G4double FG_max = 2.00; - - G4double W_mue = (EMMU*EMMU+EMASS*EMASS)/(2.*EMMU); - G4double x0 = EMASS/W_mue; - - G4double x0_squared = x0*x0; - - // *************************************************** - // x0 <= x <= 1. and -1 <= y <= 1 - // - // F(x,y) = f(x)*g(x,y); g(x,y) = 1.+g(x)*y - // *************************************************** - - // ***** sampling F(x,y) directly (brute force) ***** - - do{ - - // Sample the positron energy by sampling from F - - rndm = G4UniformRand(); - - x = x0 + rndm*(1.-x0); - - G4double x_squared = x*x; - - G4double F_IS, F_AS, G_IS, G_AS; - - F_IS = 1./6.*(-2.*x_squared+3.*x-x0_squared); - F_AS = 1./6.*std::sqrt(x_squared-x0_squared)*(2.*x-2.+std::sqrt(1.-x0_squared)); - - G_IS = 2./9.*(michel_rho-0.75)*(4.*x_squared-3.*x-x0_squared); - G_IS = G_IS + michel_eta*(1.-x)*x0; - - G_AS = 3.*(michel_xsi-1.)*(1.-x); - G_AS = G_AS+2.*(michel_xsi*michel_delta-0.75)*(4.*x-4.+std::sqrt(1.-x0_squared)); - G_AS = 1./9.*std::sqrt(x_squared-x0_squared)*G_AS; - - F_IS = F_IS + G_IS; - F_AS = F_AS + G_AS; - - // *** Radiative Corrections *** - - G4double R_IS = F_c(x,x0); - - G4double F = 6.*F_IS + R_IS/std::sqrt(x_squared-x0_squared); - - // *** Radiative Corrections *** - - G4double R_AS = F_theta(x,x0); - - rndm = G4UniformRand(); - - ctheta = 2.*rndm-1.; - - G4double G = 6.*F_AS - R_AS/std::sqrt(x_squared-x0_squared); - - FG = std::sqrt(x_squared-x0_squared)*F*(1.+(G/F)*ctheta); - - if(FG>FG_max){ - G4cout<<"***Problem in Muon Decay *** : FG > FG_max"<PushProducts(daughterparticle0); - - - // daughter 1 ,2 (neutrinos) - // create neutrinos in the C.M frame of two neutrinos - G4double energy2 = parentmass*(1.0 - x/2.0); - G4double vmass = std::sqrt((energy2-daughtermomentum[0])*(energy2+daughtermomentum[0])); - G4double beta = -1.0*daughtermomentum[0]/energy2; - G4double costhetan = 2.*G4UniformRand()-1.0; - G4double sinthetan = std::sqrt((1.0-costhetan)*(1.0+costhetan)); - G4double phin = twopi*G4UniformRand()*rad; - G4double sinphin = std::sin(phin); - G4double cosphin = std::cos(phin); - - G4ThreeVector direction1(sinthetan*cosphin,sinthetan*sinphin,costhetan); - G4DynamicParticle * daughterparticle1 - = new G4DynamicParticle( daughters[1], direction1*(vmass/2.)); - G4DynamicParticle * daughterparticle2 - = new G4DynamicParticle( daughters[2], direction1*(-1.0*vmass/2.)); - - // boost to the muon rest frame - G4LorentzVector p4; - p4 = daughterparticle1->Get4Momentum(); - p4.boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta); - daughterparticle1->Set4Momentum(p4); - p4 = daughterparticle2->Get4Momentum(); - p4.boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta); - daughterparticle2->Set4Momentum(p4); - products->PushProducts(daughterparticle1); - products->PushProducts(daughterparticle2); - daughtermomentum[1] = daughterparticle1->GetTotalMomentum(); - daughtermomentum[2] = daughterparticle2->GetTotalMomentum(); - - // output message -#ifdef G4VERBOSE - if (GetVerboseLevel()>1) { - G4cout << "G4MuonDecayChannelWithSpin::DecayIt "; - G4cout << " create decay products in rest frame " <DumpInfo(); - } -#endif - return products; -} - -G4double G4MuonDecayChannelWithSpin::R_c(G4double x){ - - G4int n_max = (int)(100.*x); - - if(n_max<10)n_max=10; - - G4double L2 = 0.0; - - for(G4int n=1; n<=n_max; n++){ - L2 += std::pow(x,n)/(n*n); - } - - G4double omega = std::log(EMMU/EMASS); - - G4double r_c; - - r_c = 2.*L2-(pi*pi/3.)-2.; - r_c = r_c + omega * (1.5+2.*std::log((1.-x)/x)); - r_c = r_c - std::log(x)*(2.*std::log(x)-1.); - r_c = r_c + (3.*std::log(x)-1.-1./x)*std::log(1.-x); - - return r_c; -} diff --git a/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.hh b/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.hh deleted file mode 100644 index b3ee2c0..0000000 --- a/geant4/LEMuSR/G4Modified/G4MuonDecayChannelWithSpin.hh +++ /dev/null @@ -1,122 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: -// 17 August 2004 P.Gumplinger and T.MacPhail -// samples Michel spectrum including 1st order -// radiative corrections -// Reference: Florian Scheck "Muon Physics", in Physics Reports -// (Review Section of Physics Letters) 44, No. 4 (1978) -// 187-248. North-Holland Publishing Company, Amsterdam -// at page 210 cc. -// -// W.E. Fisher and F. Scheck, Nucl. Phys. B83 (1974) 25. -// -// ------------------------------------------------------------ -#ifndef G4MuonDecayChannelWithSpin_hh -#define G4MuonDecayChannelWithSpin_hh 1 - -#include "globals.hh" -#include "G4ThreeVector.hh" -#include "G4MuonDecayChannel.hh" - -class G4MuonDecayChannelWithSpin : public G4MuonDecayChannel -{ - // Class Decription - // This class describes muon decay kinemtics. - // This version assumes V-A coupling with 1st order radiative correctons, - // the standard model Michel parameter values, but - // gives incorrect energy spectrum for neutrinos - -public: // With Description - - //Constructors - G4MuonDecayChannelWithSpin(const G4String& theParentName, - G4double theBR); - // Destructor - virtual ~G4MuonDecayChannelWithSpin(); - -public: // With Description - - virtual G4DecayProducts *DecayIt(G4double); - - void SetPolarization(G4ThreeVector); - const G4ThreeVector& GetPolarization() const; - -private: - - G4ThreeVector parent_polarization; - -// Radiative Correction Factors - - G4double F_c(G4double x, G4double x0); - G4double F_theta(G4double x, G4double x0); - G4double R_c(G4double x); - - G4double EMMU; - G4double EMASS; - -}; - -inline void G4MuonDecayChannelWithSpin::SetPolarization(G4ThreeVector polar) -{ - parent_polarization = polar; -} - -inline const G4ThreeVector& G4MuonDecayChannelWithSpin::GetPolarization() const -{ - return parent_polarization; -} - -inline G4double G4MuonDecayChannelWithSpin::F_c(G4double x, G4double x0) -{ - G4double omega = std::log(EMMU/EMASS); - - G4double f_c; - - f_c = (5.+17.*x-34.*x*x)*(omega+std::log(x))-22.*x+34.*x*x; - f_c = (1.-x)/(3.*x*x)*f_c; - f_c = (6.-4.*x)*R_c(x)+(6.-6.*x)*std::log(x) + f_c; - f_c = (fine_structure_const/twopi) * (x*x-x0*x0) * f_c; - - return f_c; -} - -inline G4double G4MuonDecayChannelWithSpin::F_theta(G4double x, G4double x0) -{ - G4double omega = std::log(EMMU/EMASS); - - G4double f_theta; - - f_theta = (1.+x+34*x*x)*(omega+std::log(x))+3.-7.*x-32.*x*x; - f_theta = f_theta + ((4.*(1.-x)*(1.-x))/x)*std::log(1.-x); - f_theta = (1.-x)/(3.*x*x) * f_theta; - f_theta = (2.-4.*x)*R_c(x)+(2.-6.*x)*std::log(x)-f_theta; - f_theta = (fine_structure_const/twopi) * (x*x-x0*x0) * f_theta; - - return f_theta; -} - -#endif diff --git a/geant4/LEMuSR/G4Modified/Readme.txt b/geant4/LEMuSR/G4Modified/Readme.txt deleted file mode 100644 index d341a20..0000000 --- a/geant4/LEMuSR/G4Modified/Readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Geant4 ElectricField update files: - -Copy files in the following directories: - -G4El_EqRhs -----> $G4Install/source/geometry/magneticfield /src and /include -G4El_UsualEqRhs -----> $G4Install/source/geometry/magneticfield /src and /include -G4ChordFinder -----> $G4Install/source/geometry/magneticfield /src and /include -G4ParticleGun -----> $G4Install/source/event /src and /include - - -track/ is the geant4.6.2 version of $G4Install/source/track directory and should be updated \ No newline at end of file diff --git a/geant4/LEMuSR/G4Modified/track/CVS/Entries b/geant4/LEMuSR/G4Modified/track/CVS/Entries deleted file mode 100644 index d2d0eee..0000000 --- a/geant4/LEMuSR/G4Modified/track/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -D/include//// -D/src//// -/GNUmakefile/1.5/Thu Jul 29 19:00:37 2004//Tgeant4-06-02-ref-01 -/History/1.70/Thu Jul 29 19:00:37 2004//Tgeant4-06-02-ref-01 diff --git a/geant4/LEMuSR/G4Modified/track/CVS/Repository b/geant4/LEMuSR/G4Modified/track/CVS/Repository deleted file mode 100644 index d4278b7..0000000 --- a/geant4/LEMuSR/G4Modified/track/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -geant4/source/track diff --git a/geant4/LEMuSR/G4Modified/track/CVS/Root b/geant4/LEMuSR/G4Modified/track/CVS/Root deleted file mode 100644 index 5e16d87..0000000 --- a/geant4/LEMuSR/G4Modified/track/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:gum@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs diff --git a/geant4/LEMuSR/G4Modified/track/CVS/Tag b/geant4/LEMuSR/G4Modified/track/CVS/Tag deleted file mode 100644 index ed56d6f..0000000 --- a/geant4/LEMuSR/G4Modified/track/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Ngeant4-06-02-ref-01 diff --git a/geant4/LEMuSR/G4Modified/track/GNUmakefile b/geant4/LEMuSR/G4Modified/track/GNUmakefile deleted file mode 100644 index d42cadd..0000000 --- a/geant4/LEMuSR/G4Modified/track/GNUmakefile +++ /dev/null @@ -1,33 +0,0 @@ -# $Id: GNUmakefile,v 1.5 2004/06/11 14:28:12 gcosmo Exp $ -# ---------------------------------------------------------- -# GNUmakefile for track library. Gabriele Cosmo, 3/4/1997. -# ---------------------------------------------------------- - -name := G4track - -ifndef G4INSTALL - G4INSTALL = ../.. -endif - -GLOBLIBS = libG4particles.lib libG4geometry.lib -GLOBLIBS += libG4materials.lib libG4graphics_reps.lib -GLOBLIBS += libG4intercoms.lib libG4global.lib - -include $(G4INSTALL)/config/architecture.gmk - -CPPFLAGS += -DG4TRACK_ALLOC_EXPORT -CPPFLAGS += \ - -I$(G4BASE)/global/management/include \ - -I$(G4BASE)/global/HEPRandom/include \ - -I$(G4BASE)/global/HEPGeometry/include \ - -I$(G4BASE)/intercoms/include \ - -I$(G4BASE)/particles/management/include \ - -I$(G4BASE)/materials/include \ - -I$(G4BASE)/geometry/management/include - -include $(G4INSTALL)/config/common.gmk - -.PHONY: global - -global: lib - diff --git a/geant4/LEMuSR/G4Modified/track/History b/geant4/LEMuSR/G4Modified/track/History deleted file mode 100644 index d8ba200..0000000 --- a/geant4/LEMuSR/G4Modified/track/History +++ /dev/null @@ -1,348 +0,0 @@ -$Id: History,v 1.70 2004/06/15 08:19:02 vnivanch Exp $ -------------------------------------------------------------------- - - ========================================================= - Geant4 - an Object-Oriented Toolkit for Simulation in HEP - ========================================================= - - Category History file - --------------------- -This file should be used by G4 developers and category coordinators -to briefly summarize all major modifications introduced in the code -and keep track of all category-tags. -It DOES NOT substitute the CVS log-message one should put at every -committal in the CVS repository ! - - ---------------------------------------------------------- - * Reverse chronological order (last date on top), please * - ---------------------------------------------------------- - -Jun. 15, 04 V.Ivanchenko (track-V06-01-05) -- G4ParticleChangeForLoss: fix initialization of ParentWeight - -Jun. 11, 04 G.Cosmo (track-V06-01-04) -- Use global flag G4TRACK_ALLOC_EXPORT to export extern symbols for DLLs. - Modified GNUmakefile and rearranged usage of extern symbols in G4Track. - -Jun. 09, 04 G.Cosmo (track-V06-01-03) -- Adopt G4DLLIMPORT/G4DLLEXPORT technique to handle extern simbols for - allowing support of DLLs on Windows. -- Coworks with "global-V06-01-02b". - -Jun. 07, 04 G.Cosmo (track-V06-01-02) -- Export extern symbols for allowing support of DLLs on Windows. - Modified G4Track.icc. -- GNUmakefile: added definition of GLOBLIBS for DLLs support on Windows. -- Coworks with "global-V06-01-02a". - -May. 11, 04 V.Ivanchenko (track-V06-01-01) -- G4ParticleChangeForLoss: rename variables according to 00 tag; - fix of minor energy non-conservation in case of more than 1 - processes changing the energy - -May. 08, 04 H.Kurashige (track-V06-01-00) -- Add new methods of ProposeXXX (and corresponding GetXXX methods) - as replacements of old methods of SetXXXChange and GetXXXChange - -Jan. 20, 04 V.Ivanchenko (track-V06-00-01) -- Update G4ParticleChangeForLoss for utilisation in G4VEnergyLossProcess -- Minor update G4ParticleChangeForMSC for utilisation in model design of msc -- Change of volume in G4ParticleChangeForTransportation only if kinEnergy>0 - -Dec. 12, 03 G.Cosmo (track-V06-00-00) -- G4VParticleChange[.hh.cc]: removed unnecessary 'const' qualifier to - return value in GetAccuracyForWarning() and GetAccuracyForException() - causing noisy warnings on Intel-icc compiler. - -Nov. 26, 03 H.Kurashige (track-V05-02-03) -- Fixed problem of setting momentum direction for stoppped particle in G4ParticleChange (Vladimir) - -Oct. 4, 03 G.Cosmo (track-V05-02-02) -- Modified GNUmakefile: - o added dependency to new module "geometry/navigation". -- Coworks with "geometry-V05-02-00" and "digits_hits-V05-02-00". - -Jun. 11, 03 H.Kurashige (track-V05-02-01) -- Add ExceptionSeverity -- Add G4VParticleChange::CheckSecondary -- Remove inclusion of G4MaterialCutsCouple - -Jun. 03, 03 G.Cosmo (track-V05-01-03) -- Fixed warning in G4ParticleChangeForRadDecay.hh. - -Mar. 20, 03 M.Asai (track-V05-01-02) -- Fix copy operator of G4Track not to copy the pointer to user information - -Mar. 20, 03 H.Kurashige (track-V05-01-01) -- Correct comments -- Fixed unused parameter in G4VParticleChange.cc - -Mar. 5, 02 H.Kurashige (track-V05-00-02) -- Fix in G4Step::InitializeStep(). - Added initialization of fCharge in StepPoint. - -Jan. 24, 02 G.Cosmo (track-V05-00-01) -- Fix in G4ParticleChangeForTransport::UpdateStepForPostStep(). - Added call for setting the material-cuts-couple for pPostStepPoint - (V.Ivantchenko). - -Dec. 16, 02 G.Cosmo (track-V05-00-00) -- Merged branch "geant4-04-01-ref-02-cuts-branch" to HEAD. - Included development for 'cuts-by-region': - o Updated G4Track, G4Step, G4StepPoint and G4ParticleChangeForTransport - to properly handle new G4MaterialCutsCouple. - -Dec. 04, 02 T.Sasaki (track-V04-01-03) -- Initial value for fCharge is given in the constuctor - of G4StepPoint. -Nov. 20, 02 G.Cosmo (track-V04-01-02) -- Patched access to public static data in G4VParticleChange. - Added accessors to be used in the kernel to allow porting on - Windows DLLs. - -Nov. 1, 02 J.Generowicz (track-V04-01-01) -- Added accessors to auxiliary point vector, in both - G4Step and G4ParticleChangeForTransport - -Oct. 31, 02 T.Sasaki (track-V04-01-00) -- Added StronglyForced flag to G4ForceCondition -- set fUndefined for the StepStatus in PostStepPoint after CopyPostToPre - -Feb. 09 ,02 H.Kurashige (track-V04-00-02) -- Modify G4Track::GetVelocity to get better performance for massless particles - -Dec. 24 ,01 H.Kurashige (track-V04-00-01) -- Remove event biasing mechanism from track category - ( it is moved to hadronic/models ) -- Add G4Track::CopyTrackInfo -- Modified G4ParticleChange::AddSecondary to use touchable handle -- Fixed a bug of changing parent weight in G4ParticleChange::UpdateStepForAlongStep - -Dec. 12, 01 H.Kurashige (track-V04-00-00) -- Added initialization of fStepLength in constructors. -- Fixed a bug that fStepLength is not copied in assginment operator - -Dec. 10, 01 H.Kurashige (track-V03-02-08) -- Modified assignment operator so that fCurrentStepNumber is set to 0 - -Nov.27, 01 J. Apostolakis (track-V03-02-07) for H. Kurashige -- Modified G4ParticleChange::AddSecondary to use touchable handle - by Hisaya - (only one of the AddSecondary methods has been modified - to date) - -Nov.10, 01 (track-V03-02-06) -- Fixed bugs in assignment operators in G4Track -- Added SetParentWeightByProcess -- Added SetSecondaryWeightByProcess - -Nov. 08, 01 G.Cosmo (track-V03-02-05) -- Merge changes included in "track-V03-02-02a". - -Oct. 22, 01 H.Kurashige (track-V03-02-04) -- Modify to intorduce TouchableHandle (Radovan) - -Oct. 20, 01 H.Kurashige (track-V03-02-03) -- Remove "static inline methods" -- Disable EventBiasingMechanism - -Oct. 26, 01 G.Cosmo (track-V03-02-02a) -- Added implementation to assignment operator in G4ParticleChangeForRadDecay.hh - (H.Kurasige) - -Sep. 20, 01 H.Kurashige (track-V03-02-02) -- Update to G4Mars5GeVMechanism for STL migration of materials - -Sep. 20, 01 H.Kurashige (track-V03-02-01) -- Modify G4Mars5GeVMechanism for STL migration of materials - -Aug. 16, 01 H.Kurashige (track-V03-02-00) -- Clean up codes - -Mar 7, 01 H.Kurashige (track-V03-00-04) -- Add protection for the zero-momentum case - for UpdateStepForAlongStep in ParticleChange (J.A) - -Feb 17, 01 H.Kurashige (track-V03-00-03) -- Add Velocity and Setmethod in G4StepPoint -- Add SetVelocity in G4Step.::InitializeStep -- Modify G4StepPoint::GetVelocity to return correct velocity for optical photon - -Feb 17, 01 H.Kurashige (track-V03-00-02) -- Fix G4Track::GetVelocity for Gamma - -Feb 12, 01 H.Kurashige (track-V03-00-01) -- Remove thePolarizationChange from G4ParticleChangeForTransport.hh - - -Feb 07, 01 H.Kurashige (track-V03-00-00) -- Add copy constructor to G4Track - -Oct 19, 00 H.kurashige (track-V02-00-01) -- Bug fixes in copy constructor of G4ParticleChange - -Oct 18, 00 H.Kurashige (track-V02-00-00) -- Add "const" to G4DynamicParticle pointer of returned value of G4Track::GetDynamicParticle - -June 2, 2000 M.Asai (track-V01-01-02) -- Add G4VUserTrackInformation class and its pointer data member in G4Track -- Add "const" to pointer to G4Step in G4Track (Hisaya) - -June 1 2000 H.Kurashige (track-V01-01-01a) -- Removed "const" from the return value type of G4StepPoint::GetPhysicalVolume() - -May 16 2000 H.Kurashige (track-V01-01-01) -- Added thePolarizationChange in G4ParticleChangeForTransportation - -May 12 2000 H.Kurashige (track-V01-01-00) -- SetTouchable methods has been changed to get "const" pointer - -Feb. 16, 2000 H.Kurashige -- Added cashing mechanism of pointer to material in G4StepPoint -- Added theMaterialChange in G4ParticleChangeForTransportation -- GetTouchable methods has been changed to give "const" pointer - -Feb 13, 2000 H.Kurashige (track-V01-00-01) -- Added G4ParticleChangeForRadDecay -- Changed G4VParticleChange::AddSecondary to set secondary track weight equal to the primary's one -- Removed printing pointers of ParticleChange object in CheckIt methods - -Jan 18, 2000 H.Kurashige (track-V01-00-00) -- Fixed bugs in treatment of secondary track weight - -Nov 7, 1999 H.Kurashige (track-V00-01-01) -- Added comments for "Software Reference Manual" - -Oct 5, 1999 H,Kurashige (track-V00-01-00) -- Added mass/charge change in G4ParticleChange -- Modified G4ParticleChange::CheckIt -- Separate implementation of inline functions to G4Track.icc and G4Step.icc - -July 14 1999 H.Kurashige (track-01-00-07) -- Fixed bugs in G4Mars5GeVMechanism::CreatePion() - -May 6, 1999 H.Kurashige (track-01-00-06) -- Modified CheckIt methods of G4VParticleChange and derived classes - -Apr 28, 1999 H.Kurashige (track-01-00-05b) -- Protect proton mass against glanular libraly for G4Mars5Gev...(Makoto) -- Fixed error messages in G4ParticleChange::CheckIt (Hisaya) -- Remove "include/G4VProcess.hh" from G4Step.cc (Hisaya) - -Apr 13, 1999 H.Kurashige (track-01-00-04) -- Code polishing according to the messages by CodeWizard -- Added new virtual method of G4bool CheckIt(const G4Track&) in G4VParticleChange - -Feb 17, 1999 H.Kurashige (track-01-00-03) -- Removed G4Step::ShowStep() (Takashi) -- Fixed bugs in G4ParticleChange.icc (Hisaya) - -Feb 9, 1999 H.Kurashige (track-01-00-02) -- Modified G4TrackFastVector (Hisaya) -- Modified G4ParticleChange::CheckIt (Hisaya) - -Feb 6, 1999 H.Kurashige (track-01-00-01) -- Added Get/SetMomentumDirectionChange in G4ParticleChange (Hisaya) -- Removed using G4ParticleMomentum (Hisaya) - -December 15, 1998 H.Kurashige (track-00-04-05) -- G4ParticleChange::CheckIt is activated in VERBOSE mode (Hisaya) - -December 12, 1998 H.Kurashige (track-00-04-04) -- Fixed bugs in G4Mars5GeVMechanism (Hisaya) -- Added SwOnAllEB/SwOffAllEB in G4ParticleChange (Hisaya) -- Added GetEBMechanis and IsEBActive in G4VParticleChange (Hisaya) - -December 11, 1998 H.Kurashige (track-00-04-03) -- Fixed bugs in G4Mars5GeVMechanism (Hisaya) - -December 9, 1998 L.Urban (track-00-04-02) -- Added G4ParticleChangeForLoss and G4ParticleChangeForMSC. - -November 18, 98 H.Kurashige (track-00-04-01)A -- Added new member of weight in G4Track and removed G4BiasingTag -- Added Event Biasing based on MARS -- Modified argument type in G4Track - ( this tag requires particles-00-04-01 tag) - -November 9, 98 H.Kurashige (track-00-03-05) -- Added Event Biasing Mechanism in G4VParticleChange - -November 8, 98 H.Kurashige (track-00-03-04) -- Added G4BiasingTag as a member of G4Track -- Modified G4Step, and G4StepPoint for managing G4BiasingTag - -Octorber 17, 98 H.Kurashige (track-00-03-03) -- Fixed bugs in G4VParticleChange and G4ParticleChange - -October 14 19 H.Kurashige (track-00-03-01) -- Modified G4ParticleChangeForTransportation for new relocation algorism. - (J.Apost.) - -August 31, 98 G.Cosmo (track-00-02-01) -- Added "global" phony target to GNUmakefile. -- Added comment to G4StepPoint.hh (J.Apostolakis). - -July 20,98 H.Kurashige (track-00-01-05) -- Modified G4ParticleChangeForDecay - -July 10, 98 P.Urban (track-00-01-02) -- Optimised G4ParticleChangeForTransport. Much less data - is copied -> increased performance. - -July 1, 98 H.Kurashige (track-00-07-02) -- Moved UpdateStepForAlongStep into G4ParticleChangeForTransport.cc file - -June 30, 98 P. Urban (track-00-07-01) -- Some more tracking optimisation results. - -June 22, 98 P. Urban (track-00-06-04) -- Preliminary results of tracking optimisation merged into HEAD. - -June 11, 98 G.Cosmo (track-00-06-03) -- Tagged track-00-06-03. - -June 11, 98 J.Allison -- Added a missing inline keyword to G4Track.hh:341. - -June 8, 98 H.Kurashige -- Add GoodForTracking and BelowThreshold flags in G4Track - for new COHERENT scheme for the Cuts - -May 12, 98 H.Kurashige -- Fix bugs in G4Step, G4ParticleChange - Add new class of G4ParticleChangeForTransport - -April 12, 98 H.Kuraashige - Implement new scheme of 'Particle Change'. Please see - particle_change.asc in geant4alpha/documents/particles+matter/. - Following files are modified (or added) - G4ParticleChange.hh, .icc, .cc - G4VParticleChange.hh, .icc, .cc - G4ParticleChangeForDecay.hh, .cc - G4Step.hh, G4TrackFastVector.hh - -April 9, 98 G.Cosmo -- Porting on DEC-cxx 6.0. - Removed meaningless usage of "const" qualifier from functions - return type for basic types by value. Modified files: - G4ParticleChange.hh, .icc, - G4Step.hh, G4StepPoint.hh, G4Track.hh - -March 18, 1998 K. Amako - Add following information to G4Track: - 1.Momentum direction at the start point (vertex position) of the track - 2.Kinetic energy at the start point (vertex position) of the track - 3.Pointer to the process which created the current track - Due to this, the following files have modififed and committed. - 1.NewDesignDoc.txt - 2.G4Track.hh, G4Track.cc - 3.G4SteppingManager.cc - - -January 29, 97 K. Amako - Following changes have been done and committed/tagged to cvs. - Tag# is track-00-03-01. - - G4Step.cc: Output format has been changed in showStep(). - -December 19, 97 G. Cosmo - (alpha03) - -- Created. diff --git a/geant4/LEMuSR/G4Modified/track/include/CVS/Entries b/geant4/LEMuSR/G4Modified/track/include/CVS/Entries deleted file mode 100644 index 12a2b43..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/CVS/Entries +++ /dev/null @@ -1,25 +0,0 @@ -/G4ForceCondition.hh/1.4/Tue Jan 7 20:02:52 2003//Tgeant4-06-02-ref-01 -/G4GPILSelection.hh/1.3/Wed Jul 11 10:08:35 2001//Tgeant4-06-02-ref-01 -/G4ParticleChangeForMSC.hh/1.7/Thu Jul 29 19:00:43 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForRadDecay.hh/1.5/Thu Jul 10 20:47:22 2003//Tgeant4-06-02-ref-01 -/G4Step.hh/1.10/Thu Jul 10 20:47:22 2003//Tgeant4-06-02-ref-01 -/G4Step.icc/1.10/Wed Apr 9 00:20:48 2003//Tgeant4-06-02-ref-01 -/G4StepPoint.hh/1.13/Sat Nov 1 03:24:48 2003//Tgeant4-06-02-ref-01 -/G4StepPoint.icc/1.8/Fri May 30 19:12:02 2003//Tgeant4-06-02-ref-01 -/G4StepStatus.hh/1.3/Wed Jul 11 10:08:37 2001//Tgeant4-06-02-ref-01 -/G4SteppingControl.hh/1.3/Wed Jul 11 10:08:37 2001//Tgeant4-06-02-ref-01 -/G4Track.hh/1.16/Wed Apr 9 00:20:48 2003//Tgeant4-06-02-ref-01 -/G4TrackFastVector.hh/1.4/Wed Jul 11 10:08:37 2001//Tgeant4-06-02-ref-01 -/G4TrackStatus.hh/1.3/Wed Jul 11 10:08:37 2001//Tgeant4-06-02-ref-01 -/G4VUserTrackInformation.hh/1.4/Fri May 30 19:12:13 2003//Tgeant4-06-02-ref-01 -/G4ParticleChange.hh/1.10/Thu Jul 29 19:08:17 2004//Tgeant4-06-02-ref-01 -/G4ParticleChange.icc/1.10/Thu Jul 29 19:08:19 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForDecay.hh/1.6/Thu Jul 29 19:08:21 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForLoss.hh/1.12/Thu Jul 29 19:08:21 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForMSC.icc/1.5/Thu Jul 29 19:08:21 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForTransport.hh/1.13/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForTransport.icc/1.10/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4Track.icc/1.13/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4VParticleChange.hh/1.11/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4VParticleChange.icc/1.11/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -D diff --git a/geant4/LEMuSR/G4Modified/track/include/CVS/Repository b/geant4/LEMuSR/G4Modified/track/include/CVS/Repository deleted file mode 100644 index dd05b6b..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -geant4/source/track/include diff --git a/geant4/LEMuSR/G4Modified/track/include/CVS/Root b/geant4/LEMuSR/G4Modified/track/include/CVS/Root deleted file mode 100644 index 5e16d87..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:gum@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs diff --git a/geant4/LEMuSR/G4Modified/track/include/CVS/Tag b/geant4/LEMuSR/G4Modified/track/include/CVS/Tag deleted file mode 100644 index ed56d6f..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Ngeant4-06-02-ref-01 diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ForceCondition.hh b/geant4/LEMuSR/G4Modified/track/include/G4ForceCondition.hh deleted file mode 100644 index 33c706c..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ForceCondition.hh +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ForceCondition.hh,v 1.4 2002/10/31 23:41:52 tsasaki Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// -// G4ForceCondition -// -// Class Description: -// This enumaration specifies possible conditions the three -// types of DoIt can be assinged by physics processes. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -//--------------------------------------------------------------- - -#ifndef G4ForceCondition_h -#define G4ForceCondition_h 1 - -///////////////////// -enum G4ForceCondition -///////////////////// -{ - InActivated, - // This PostStepDoit is inactivated by a user - Forced, - // This PostStepDoIt is forced to invoke if particle is not a state of StopAndKill. - NotForced, - // This PostStepDoIt is not forced to invoke. - Conditionally, - // This PostStepDoIt is forced to invoke only when corresponding - // AlongStepDoIt limits the Step. - ExclusivelyForced, - // Only this PostStepDoIt (or AtRestDoIt) is exclusively forced - // to invoke - all other DoIt including AlongStepDoIts are ignored. - StronglyForced - // This PostStepDoIt is really forced to invoke, anyway. -}; - -#endif - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4GPILSelection.hh b/geant4/LEMuSR/G4Modified/track/include/G4GPILSelection.hh deleted file mode 100644 index 7d91306..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4GPILSelection.hh +++ /dev/null @@ -1,63 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4GPILSelection.hh,v 1.3 2001/07/11 10:08:35 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4GPILSelection -// -// Class Description: -// This enumaration is used to control whether a AlongStepProcess -// can be a winner of the GPIL race or not. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -//--------------------------------------------------------------- - -#ifndef G4GPILSelection_h -#define G4GPILSelection_h 1 - -///////////////////// -enum G4GPILSelection -///////////////////// -{ - CandidateForSelection, - // This AlongStep process partecipates in the process selection - // mechanism, i.e. it can be the winner of the GPIL race. - // (this case is default) - - NotCandidateForSelection - // This AlongStep process does not partecipate in the - // process selection mechanism even when it limits the Step. - -}; - -#endif - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.hh deleted file mode 100644 index 67a393a..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.hh +++ /dev/null @@ -1,294 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChange.hh,v 1.10 2004/05/08 15:28:11 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// -// Class Description -// This class is a concrete class for ParticleChange which -// has all functionality in old scheme. -//- -// This class contains the results after invocation of a physics process. -// This includes final states of parent particle (momentum, energy, -// etc) and secondary particles generated by the interaction. -// The tracking assumes that all the values of energy and -// momentum are in global reference system, therefore all the -// needed Lorentz transformations must have been already Done -// when filling the data-members of this class. -//- -// --------------------------------------------------------------- -// IMPORTANT NOTE: Although the name of the class and methods are -// "Change", what it stores (and returns in get) are the "FINAL" -// values of the Position, Momentum, etc. -// -// ------------------------------------------------------------ -// modify AddSecondary methods for "GoodForTracking" flag -// 8 June 1998 H.Kurashige -// Add Track weight 12 Nov. 1998 H.Kurashige -// Add Get/SetMomentumDirectionChange 6 Feb. 1999 H.Kurashige -// Add get/SetDynamicMass 5 Oct. 1999 H.Kurashige -// Add get/SetDynamicCharge 5 Oct. 1999 H.Kurashige -// ------------------------------------------------------------- - -#ifndef G4ParticleChange_h -#define G4ParticleChange_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4ThreeVector.hh" -#include "G4ThreeVector.hh" -class G4DynamicParticle; -#include "G4VParticleChange.hh" - -class G4ParticleChange: public G4VParticleChange -{ - public: - // default constructor - G4ParticleChange(); -// G4ParticleChange(G4bool useEB); - - // destructor - virtual ~G4ParticleChange(); - - protected: - // hide copy constructor and assignment operaor as protected - G4ParticleChange(const G4ParticleChange &right); - G4ParticleChange & operator=(const G4ParticleChange &right); - - public: - // equal/unequal operator - G4bool operator==(const G4ParticleChange &right) const; - G4bool operator!=(const G4ParticleChange &right) const; - - public: // with description - // ---------------------------------------------------- - // --- the following methods are for updating G4Step ----- - // Return the pointer to the G4Step after updating the Step information - // by using final state information of the track given by a physics - // process - virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - // A physics process gives the final state of the particle - // relative to the initial state at the beginning of the Step, - // i.e., based on information of G4Track (or equivalently - // the PreStepPoint) - // In this method, the differences (delta) between these two states - // are calculated, and are accumulated in PostStepPoint. - // Take note that the return type of GetMomentumChange is a - // pointer to G4ParticleMometum. Also it is a normalized - // momentum vector. - virtual G4Step* UpdateStepForAtRest(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - // A physics process gives the final state of the particle - // based on information of G4Track (or equivalently the PreStepPoint) - - virtual void Initialize(const G4Track&); - // Initialize all propoerties by using G4Track information - - protected: // with description - G4Step* UpdateStepInfo(G4Step* Step); - // Update the G4Step specific attributes - // (i.e. SteppingControl, LocalEnergyDeposit, and TrueStepLength) - - public: // with description - - // ---------------------------------------------------- - //--- methods to keep information of the final state-- - // IMPORTANT NOTE: - // These ProposeXXX methods stores (and returns in GetXXX methods) - // the "FINAL" values of the Position, Momentum, etc. - - const G4ThreeVector* GetMomentumDirection() const; - void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz); - void ProposeMomentumDirection(const G4ThreeVector& Pfinal); - // Get/Propose the MomentumDirection vector: it is the final momentum direction. - - const G4ThreeVector* GetPolarization() const; - void ProposePolarization(G4double Px, G4double Py, G4double Pz); - void ProposePolarization(const G4ThreeVector& finalPoralization); - // Get/Propose the final Polarization vector. - - G4double GetEnergy() const; - void ProposeEnergy(G4double finalEnergy); - // Get/Propose the final kinetic energy of the current particle. - - G4double GetProperTime() const; - void ProposeProperTime(G4double finalProperTime); - // Get/Propose th final eProperTime - - const G4ThreeVector* GetPosition() const; - void ProposePosition(G4double x, G4double y, G4double z); - void ProposePosition(const G4ThreeVector& finalPosition); - // Get/Propose the final position of the current particle. - - G4double GetGlobalTime() const; - void ProposeGlobalTime(G4double finalGlobalTime); - // Get/Propose the final GlobalTime - - G4double GetMass() const; - void ProposeMass(G4double finalMass); - // Get/Propose the final dynamical Mass in G4DynamicParticle - - G4double GetCharge() const; - void ProposeCharge(G4double finalCharge); - // Get/Propose the final dynamical Charge in G4DynamicParticl - - G4double GetWeight() const; - void ProposeWeight(G4double finalWeight); - // Get/Propose the final Weight of the current particle - - // -- Utility functions -- - G4ThreeVector GetGlobalPosition(const G4ThreeVector& displacement) const; - // Convert the position displacement to the global position. - - G4double GetGlobalTime(G4double timeDelay) const; - // Convert the time delay to the global time. - - G4ThreeVector CalcMomentum(G4double energy, - G4ThreeVector direction, - G4double mass ) const; - // Calculate momentum by using Energy, Momentum Direction, and Mass - // ---------------------------------------------------- - - - // ---------------------------------------------------- - // --- methods for adding secondaries - void AddSecondary(G4Track* aSecondary); - // Add a secondary particle to theListOfSecondaries. - - void AddSecondary(G4DynamicParticle* aSecondary, - G4bool IsGoodForTracking = false ); - // Add a secondary particle to theListOfSecondaries. - // position and time are same as thePositionChange and theTimeChange - - void AddSecondary(G4DynamicParticle* aSecondary, - G4ThreeVector position, - G4bool IsGoodForTracking = false ); - // Add a secondary particle to theListOfSecondaries. - // global time are same as theTimeChange and theTimeChange - - void AddSecondary(G4DynamicParticle* aSecondary, - G4double time, - G4bool IsGoodForTracking = false ); - // Add a secondary particle to theListOfSecondaries. - // position and are same as thePositionChange - // ---------------------------------------------------- - - public: - // Following methods will be removed in release 7.0 - // Using ProposeXXXX methods is recommended to setting - // properties in G4ParticleChange - const G4ThreeVector* GetMomentumDirectionChange() const; - void SetMomentumDirectionChange(G4double Px, G4double Py, G4double Pz); - void SetMomentumDirectionChange(const G4ThreeVector& Pfinal); - const G4ThreeVector* GetMomentum() const; - void SetMomentumChange(G4double Px, G4double Py, G4double Pz); - void SetMomentumChange(const G4ThreeVector& Pfinal); - const G4ThreeVector* GetMomentumChange() const; - const G4ThreeVector* GetPolarizationChange() const; - void SetPolarizationChange(G4double Px, G4double Py, G4double Pz); - void SetPolarizationChange(const G4ThreeVector& finalPoralization); - G4double GetEnergyChange() const; - void SetEnergyChange(G4double theEnergyChange); - G4double GetProperTimeChange() const; - void SetProperTimeChange(G4double t); - const G4ThreeVector* GetPositionChange() const; - void SetPositionChange(G4double x, G4double y, G4double z); - void SetPositionChange(const G4ThreeVector& finalPosition); - G4double GetTimeChange() const; - void SetTimeChange(G4double t); - G4double GetMassChange() const; - void SetMassChange(G4double mass); - G4double GetChargeChange() const; - void SetChargeChange(G4double mass); - G4double GetWeightChange() const; - void SetWeightChange(G4double w); - - public: - virtual void DumpInfo() const; - - protected: - G4ThreeVector theMomentumDirectionChange; - // It is the vector containing the final momentum direction - // after the invoked process. The application of the change - // of the momentum direction of the particle is not Done here. - // The responsibility to apply the change is up the entity - // which invoked the process. - - G4ThreeVector thePolarizationChange; - // The changed (final) polarization of a given track - - G4double theEnergyChange; - // The final kinetic energy of the current track - - G4ThreeVector thePositionChange; - // The changed (final) position of a given track - - G4double theTimeChange; - // The changed (final) global time of a given track - - G4double theProperTimeChange; - // The changed (final) proper time of a given track - - G4double theWeightChange; - // The Changed (final) weight of a given track - - G4double theMassChange; - // The Changed (final) mass of a given track - - G4double theChargeChange; - // The Changed (final) charge of a given track - - const G4Track* theCurrentTrack; - - public: - // for Debug - virtual G4bool CheckIt(const G4Track&); -}; - -#include "G4ParticleChange.icc" - -#endif - - - - - - - - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.icc b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.icc deleted file mode 100644 index a529ffe..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChange.icc +++ /dev/null @@ -1,355 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChange.icc,v 1.10 2004/05/08 15:28:11 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -inline - G4Step* G4ParticleChange::UpdateStepInfo(G4Step* pStep) -{ - return G4VParticleChange::UpdateStepInfo(pStep); -} - -inline - G4double G4ParticleChange::GetEnergy() const -{ - return theEnergyChange; -} - -inline - void G4ParticleChange::ProposeEnergy(G4double finalEnergy) -{ - theEnergyChange = finalEnergy; -} - -inline - const G4ThreeVector* G4ParticleChange::GetMomentumDirection() const -{ - return &theMomentumDirectionChange; -} - -inline - void G4ParticleChange::ProposeMomentumDirection( - G4double Px, - G4double Py, - G4double Pz ) -{ - theMomentumDirectionChange.setX(Px); - theMomentumDirectionChange.setY(Py); - theMomentumDirectionChange.setZ(Pz); -} - -inline - void G4ParticleChange::ProposeMomentumDirection(const G4ThreeVector& P) -{ - theMomentumDirectionChange = P; -} - - -inline - const G4ThreeVector* G4ParticleChange::GetPolarization() const -{ - return &thePolarizationChange; -} - -inline - void G4ParticleChange::ProposePolarization( const G4ThreeVector& finalPoralization) -{ - thePolarizationChange = finalPoralization; -} - -inline - void G4ParticleChange::ProposePolarization( - G4double Px, - G4double Py, - G4double Pz ) -{ - thePolarizationChange.setX(Px); - thePolarizationChange.setY(Py); - thePolarizationChange.setZ(Pz); -} - -inline - const G4ThreeVector* G4ParticleChange::GetPosition() const -{ - return &thePositionChange; -} - -inline - void G4ParticleChange::ProposePosition(const G4ThreeVector& finalPosition) -{ - thePositionChange= finalPosition; -} - -inline - void G4ParticleChange::ProposePosition(G4double x,G4double y, G4double z) -{ - thePositionChange.setX(x); - thePositionChange.setY(y); - thePositionChange.setZ(z); -} - -inline - G4double G4ParticleChange::GetProperTime() const -{ - return theProperTimeChange; -} - -inline - void G4ParticleChange::ProposeProperTime(G4double tau) -{ - theProperTimeChange = tau; -} - -inline - G4ThreeVector G4ParticleChange::GetGlobalPosition(const G4ThreeVector& displacement) const -{ - return thePositionChange + displacement; -} - - -inline - G4double G4ParticleChange::GetGlobalTime(G4double timeDelay) const -{ - // Convert the time delay to the global time. - return theTimeChange + timeDelay; -} - -inline - G4double G4ParticleChange::GetGlobalTime() const -{ - return theTimeChange; -} - -inline - void G4ParticleChange::ProposeGlobalTime(G4double t) -{ - theTimeChange = t; -} - -inline - G4double G4ParticleChange::GetMass() const -{ - return theMassChange; -} - -inline - void G4ParticleChange::ProposeMass(G4double t) -{ - theMassChange = t; -} - -inline - G4double G4ParticleChange::GetCharge() const -{ - return theChargeChange; -} - -inline - void G4ParticleChange::ProposeCharge(G4double t) -{ - theChargeChange = t; -} - -inline - G4double G4ParticleChange::GetWeight() const -{ - return theWeightChange; -} - -inline - void G4ParticleChange::ProposeWeight(G4double w) -{ - theWeightChange = w; - theParentWeight = w; -} - -inline - G4ThreeVector G4ParticleChange::CalcMomentum(G4double energy, - G4ThreeVector direction, - G4double mass - ) const -{ - G4double tMomentum = sqrt(energy*energy + 2*energy*mass); - return direction*tMomentum; -} - - -// Following methods will be removed in release 7.0 - -inline - G4double G4ParticleChange::GetEnergyChange() const -{ - return GetEnergy(); -} - -inline - void G4ParticleChange::SetEnergyChange(G4double energy) -{ - ProposeEnergy(energy); -} - - -inline - const G4ThreeVector* G4ParticleChange::GetMomentumChange() const -{ - return GetMomentumDirection(); -} - -inline - void G4ParticleChange::SetMomentumChange( - G4double Px, - G4double Py, - G4double Pz ) -{ - ProposeMomentumDirection(Px, Py, Pz); -} -inline - - void G4ParticleChange::SetMomentumChange(const G4ThreeVector& P) -{ - ProposeMomentumDirection(P); -} - -inline - const G4ThreeVector* G4ParticleChange::GetMomentumDirectionChange() const -{ - return GetMomentumDirection(); -} - -inline - void G4ParticleChange::SetMomentumDirectionChange( - G4double Px, - G4double Py, - G4double Pz ) -{ - ProposeMomentumDirection(Px, Py, Pz); -} -inline - - void G4ParticleChange::SetMomentumDirectionChange(const G4ThreeVector& P) -{ - ProposeMomentumDirection(P); -} - -inline - const G4ThreeVector* G4ParticleChange::GetPolarizationChange() const -{ - return GetPolarization(); -} - -inline - void G4ParticleChange::SetPolarizationChange( const G4ThreeVector& finalPoralization) -{ - ProposePolarization(finalPoralization); -} - -inline - void G4ParticleChange::SetPolarizationChange( - G4double Px, - G4double Py, - G4double Pz ) -{ - ProposePolarization(Px, Py, Pz); -} - -inline - const G4ThreeVector* G4ParticleChange::GetPositionChange() const -{ - return GetPosition(); -} - - -inline - void G4ParticleChange::SetPositionChange(const G4ThreeVector& finalPosition) -{ - ProposePosition(finalPosition); -} - -inline - void G4ParticleChange::SetPositionChange(G4double x,G4double y, G4double z) -{ - ProposePosition(x, y, z); -} - -inline - G4double G4ParticleChange::GetProperTimeChange() const -{ - return GetProperTime(); -} - -inline - void G4ParticleChange::SetProperTimeChange(G4double tau) -{ - ProposeProperTime(tau); -} - - -inline - G4double G4ParticleChange::GetTimeChange() const -{ - return GetGlobalTime(); -} - -inline - void G4ParticleChange::SetTimeChange(G4double t) -{ - ProposeGlobalTime(t); -} - -inline - G4double G4ParticleChange::GetMassChange() const -{ - return GetMass(); -} - -inline - void G4ParticleChange::SetMassChange(G4double t) -{ - ProposeMass(t); -} - -inline - G4double G4ParticleChange::GetChargeChange() const -{ - return GetCharge(); -} - -inline - void G4ParticleChange::SetChargeChange(G4double t) -{ - ProposeCharge(t); -} - -inline - G4double G4ParticleChange::GetWeightChange() const -{ - return GetWeight(); -} - -inline - void G4ParticleChange::SetWeightChange(G4double w) -{ - ProposeWeight(w); -} diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForDecay.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForDecay.hh deleted file mode 100644 index e148bf0..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForDecay.hh +++ /dev/null @@ -1,191 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForDecay.hh,v 1.6 2004/05/08 15:28:11 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// -// Class Description -// This class is a concrete class for ParticleChange which -// has functionality for G4Decay. -// -// This class contains the results after invocation of the decay process. -// This includes secondary particles generated by the interaction. -// ------------------------------------------------------------ -#ifndef G4ParticleChangeForDecay_h -#define G4ParticleChangeForDecay_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4ThreeVector.hh" -class G4DynamicParticle; -#include "G4VParticleChange.hh" - -class G4ParticleChangeForDecay: public G4VParticleChange -{ - public: - // default constructor - G4ParticleChangeForDecay(); - - // destructor - virtual ~G4ParticleChangeForDecay(); - - protected: - // hide copy constructor and assignment operaor as protected - G4ParticleChangeForDecay(const G4ParticleChangeForDecay &right); - G4ParticleChangeForDecay & operator=(const G4ParticleChangeForDecay &right); - - public: - // equal/unequal operator - G4bool operator==(const G4ParticleChangeForDecay &right) const; - G4bool operator!=(const G4ParticleChangeForDecay &right) const; - - public: // with description - // ---------------------------------------------------- - // --- the following methods are for updating G4Step ----- - // Return the pointer to the G4Step after updating the Step information - // by using final state information of the track given by a physics - // process - - // !!! No effect for AlongSteyp - // virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - - virtual G4Step* UpdateStepForAtRest(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - - virtual void Initialize(const G4Track&); - // Initialize all propoerties by using G4Track information - - G4double GetGlobalTime() const; - void ProposeGlobalTime(G4double t); - // Get/Propose the final GlobalTime - - G4double GetGlobalTime(G4double timeDelay) const; - // Convert the time delay to the global time. - - const G4ThreeVector* GetPolarization() const; - void ProposePolarization(G4double Px, G4double Py, G4double Pz); - void ProposePolarization(const G4ThreeVector& finalPoralization); - // Get/Propose the final Polarization vector. - - public: - // Following methods will be removed in release 7.0 - // Using ProposeXXXX methods is recommended to setting - // properties in G4ParticleChangeForDecay - G4double GetTimeChange() const; - void SetTimeChange(G4double t); - - public: - virtual void DumpInfo() const; - - protected: - G4double theTimeChange; - // The change of global time of a given particle. - - G4ThreeVector thePolarizationChange; - // The changed (final) polarization of a given track - - public: - // for Debug - virtual G4bool CheckIt(const G4Track&); -}; - -inline - G4double G4ParticleChangeForDecay::GetGlobalTime() const -{ - return theTimeChange; -} - -inline - void G4ParticleChangeForDecay::ProposeGlobalTime(G4double t) -{ - theTimeChange = t; -} - -inline - G4double G4ParticleChangeForDecay::GetGlobalTime(G4double timeDelay) const -{ - // Convert the time delay to the global time. - return theTimeChange + timeDelay; -} - -// Following methods will be removed in release 7.0 -inline - G4double G4ParticleChangeForDecay::GetTimeChange() const -{ - return theTimeChange; -} - -inline - void G4ParticleChangeForDecay::SetTimeChange(G4double t) -{ - theTimeChange = t; -} - -inline - const G4ThreeVector* G4ParticleChangeForDecay::GetPolarization() const -{ - return &thePolarizationChange; -} - -inline - void G4ParticleChangeForDecay::ProposePolarization(const G4ThreeVector& finalPoralization) -{ - thePolarizationChange = finalPoralization; -} - -inline - void G4ParticleChangeForDecay::ProposePolarization( - G4double Px, - G4double Py, - G4double Pz ) -{ - thePolarizationChange.setX(Px); - thePolarizationChange.setY(Py); - thePolarizationChange.setZ(Pz); -} - -#endif - - - - - - - - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForLoss.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForLoss.hh deleted file mode 100644 index 520d5fd..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForLoss.hh +++ /dev/null @@ -1,223 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForLoss.hh,v 1.12 2004/06/15 08:17:38 vnivanch Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// -// Modified: -// 16.01.04 V.Ivanchenko update for model variant of energy loss -// -// ------------------------------------------------------------ -// -// Class Description -// This class is a concrete class for ParticleChange for EnergyLoss -// -#ifndef G4ParticleChangeForLoss_h -#define G4ParticleChangeForLoss_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VParticleChange.hh" - -class G4DynamicParticle; - -class G4ParticleChangeForLoss: public G4VParticleChange -{ -public: - // default constructor - G4ParticleChangeForLoss(); - - // destructor - virtual ~G4ParticleChangeForLoss(); - - // with description - // ---------------------------------------------------- - // --- the following methods are for updating G4Step ----- - - virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - // A physics process gives the final state of the particle - // based on information of G4Track - - void InitializeForAlongStep(const G4Track&); - void InitializeForPostStep(const G4Track&); - //Initialize all propoerties by using G4Track information - - void AddSecondary(G4DynamicParticle* aParticle); - // Add next secondary - - G4double GetProposedCharge() const; - void SetProposedCharge(G4double theCharge); - // Get/Set theCharge - - G4double GetCharge() const; - void ProposeCharge(G4double finalCharge); - // Get/Propose the final dynamical Charge in G4DynamicParticle - - G4double GetProposedKineticEnergy() const; - void SetProposedKineticEnergy(G4double proposedKinEnergy); - // Get/Set the final kinetic energy of the current particle. - - // G4double GetEnergy() const; - // void ProposeEnergy(G4double finalEnergy); - // Get/Propose the final kinetic energy of the current particle. - - const G4ThreeVector& GetProposedMomentumDirection() const; - void SetProposedMomentumDirection(const G4ThreeVector& dir); - const G4ThreeVector& GetMomentumDirection() const; - void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz); - void ProposeMomentumDirection(const G4ThreeVector& Pfinal); - // Get/Propose the MomentumDirection vector: it is the final momentum direction. - - virtual void DumpInfo() const; - - // for Debug - virtual G4bool CheckIt(const G4Track&); - -protected: - // hide copy constructor and assignment operaor as protected - G4ParticleChangeForLoss(const G4ParticleChangeForLoss &right); - G4ParticleChangeForLoss & operator=(const G4ParticleChangeForLoss &right); - -private: - - const G4Track* currentTrack; - // The pointer to G4Track - - G4double proposedKinEnergy; - // The final kinetic energy of the current particle. - - G4double currentCharge; - // The final charge of the current particle. - - G4ThreeVector proposedMomentumDirection; - // The final momentum direction of the current particle. -}; - -inline G4double G4ParticleChangeForLoss::GetProposedKineticEnergy() const -{ - return proposedKinEnergy; -} - -inline void G4ParticleChangeForLoss::SetProposedKineticEnergy(G4double energy) -{ - proposedKinEnergy = energy; -} - -inline G4double G4ParticleChangeForLoss::GetProposedCharge() const -{ - return currentCharge; -} - -inline G4double G4ParticleChangeForLoss::GetCharge() const -{ - return currentCharge; -} - -inline void G4ParticleChangeForLoss::SetProposedCharge(G4double theCharge) -{ - currentCharge = theCharge; -} - -inline void G4ParticleChangeForLoss::ProposeCharge(G4double theCharge) -{ - currentCharge = theCharge; -} - -inline - const G4ThreeVector& G4ParticleChangeForLoss::GetProposedMomentumDirection() const -{ - return proposedMomentumDirection; -} - -inline - const G4ThreeVector& G4ParticleChangeForLoss::GetMomentumDirection() const -{ - return proposedMomentumDirection; -} - -inline - void G4ParticleChangeForLoss::ProposeMomentumDirection(const G4ThreeVector& dir) -{ - proposedMomentumDirection = dir; -} - -inline - void G4ParticleChangeForLoss::SetProposedMomentumDirection(const G4ThreeVector& dir) -{ - proposedMomentumDirection = dir; -} - -inline - void G4ParticleChangeForLoss::ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz) -{ - proposedMomentumDirection.setX(Px); - proposedMomentumDirection.setY(Py); - proposedMomentumDirection.setZ(Pz); -} - -inline void G4ParticleChangeForLoss::InitializeForAlongStep(const G4Track& track) -{ - theStatusChange = track.GetTrackStatus(); - theLocalEnergyDeposit = 0.0; - InitializeSecondaries(track); - theParentWeight = track.GetWeight(); - proposedKinEnergy = track.GetKineticEnergy(); - currentCharge = track.GetDynamicParticle()->GetCharge(); -} - -inline void G4ParticleChangeForLoss::InitializeForPostStep(const G4Track& track) -{ - theStatusChange = track.GetTrackStatus(); - theLocalEnergyDeposit = 0.0; - InitializeSecondaries(track); - theParentWeight = track.GetWeight(); - proposedKinEnergy = track.GetKineticEnergy(); - currentCharge = track.GetDynamicParticle()->GetCharge(); - proposedMomentumDirection = track.GetMomentumDirection(); - currentTrack = &track; -} - -inline void G4ParticleChangeForLoss::AddSecondary(G4DynamicParticle* aParticle) -{ - // create track - G4Track* aTrack = new G4Track(aParticle, currentTrack->GetGlobalTime(), - currentTrack->GetPosition()); - - // Touchable handle is copied to keep the pointer - aTrack->SetTouchableHandle(currentTrack->GetTouchableHandle()); - - // add a secondary - G4VParticleChange::AddSecondary(aTrack); -} - -#endif - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.hh deleted file mode 100644 index 497a7f7..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.hh +++ /dev/null @@ -1,128 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForMSC.hh,v 1.7 2004/05/08 15:28:11 kurasige Exp $ -// GEANT4 tag $ $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// Class Description -// This class is special "Particle Change" for Multiple Scattering process -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// Add Get/SetMomentumDirectionChange 6 Feb. 1999 H.Kurashige -// Update for model variant of msc 16 Jan 2004 V.Ivanchenko -// -// ------------------------------------------------------------- -#ifndef G4ParticleChangeForMSC_h -#define G4ParticleChangeForMSC_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4ThreeVector.hh" -#include "G4ThreeVector.hh" -class G4DynamicParticle; -#include "G4VParticleChange.hh" - -class G4ParticleChangeForMSC: public G4VParticleChange -{ - public: - // default constructor - G4ParticleChangeForMSC(); - - // destructor - virtual ~G4ParticleChangeForMSC(); - - protected: - // hide copy constructor and assignment operaor as protected - G4ParticleChangeForMSC(const G4ParticleChangeForMSC &right); - G4ParticleChangeForMSC & operator=(const G4ParticleChangeForMSC &right); - - - public: // with description - // ---------------------------------------------------- - // --- the following methods are for updating G4Step ----- - // Return the pointer to the G4Step after updating the Step information - // by using final state information of the track given by a physics - // process - virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - // A physics process gives the final state of the particle - // based on information of G4Track (or equivalently the PreStepPoint) - - virtual void Initialize(const G4Track&); - // Initialize all propoerties by using G4Track information - - // ---------------------------------------------------- - //--- methods to keep information of the final state-- - // IMPORTANT NOTE: Although the name of the class and methods are - // "Change", what it stores (and returns in get) are the "FINAL" - // values of the Position, Momentum, etc. - - void ProposeMomentumDirection(const G4ThreeVector& Pfinal); - void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz); - const G4ThreeVector* GetMomentumDirection() const; - const G4ThreeVector* GetProposedMomentumDirection() const; - void SetProposedMomentumDirection(const G4ThreeVector& Pfinal); - // Get/Set theMomentumDirectionChange vector: it is the final momentum direction. - - const G4ThreeVector* GetPosition() const; - void ProposePosition(const G4ThreeVector& finalPosition); - const G4ThreeVector* GetProposedPosition() const; - void SetProposedPosition(const G4ThreeVector& finalPosition); - // Get/Set the final position of the current particle. - - public: - // Following methods will be removed in release 7.0 - // Using ProposeXXXX methods is recommended to setting - // properties in G4ParticleChangeForMSC - void SetMomentumChange(const G4ThreeVector& Pfinal); - void SetMomentumChange(G4double Px, G4double Py, G4double Pz); - const G4ThreeVector* GetPositionChange() const; - void SetPositionChange(const G4ThreeVector& finalPosition); - - public: - virtual void DumpInfo() const; - // for Debug - virtual G4bool CheckIt(const G4Track&); - - private: - G4ThreeVector theMomentumDirection; - // It is the vector containing the final momentum direction - // after the invoked process. The application of the change - // of the momentum direction of the particle is not Done here. - // The responsibility to apply the change is up the entity - // which invoked the process. - - G4ThreeVector thePosition; - // The changed (final) position of a given particle. - -}; - -#include "G4ParticleChangeForMSC.icc" -#endif - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.icc b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.icc deleted file mode 100644 index fc97431..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForMSC.icc +++ /dev/null @@ -1,118 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForMSC.icc,v 1.5 2004/05/08 15:28:12 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// - - -inline - void G4ParticleChangeForMSC::ProposeMomentumDirection(const G4ThreeVector& P) -{ - theMomentumDirection = P; -} - -inline - void G4ParticleChangeForMSC::SetProposedMomentumDirection(const G4ThreeVector& P) -{ - theMomentumDirection = P; -} - -inline - void G4ParticleChangeForMSC::ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz) -{ - theMomentumDirection.setX(Px); - theMomentumDirection.setY(Py); - theMomentumDirection.setZ(Pz); -} - -inline - const G4ThreeVector* G4ParticleChangeForMSC::GetMomentumDirection() const -{ - return &theMomentumDirection; -} - -inline - const G4ThreeVector* G4ParticleChangeForMSC::GetProposedMomentumDirection() const -{ - return &theMomentumDirection; -} - -inline - void G4ParticleChangeForMSC::SetProposedPosition(const G4ThreeVector& P) -{ - thePosition = P; -} - -inline - const G4ThreeVector* G4ParticleChangeForMSC::GetPosition() const -{ - return &thePosition; -} - -inline - const G4ThreeVector* G4ParticleChangeForMSC::GetProposedPosition() const -{ - return &thePosition; -} - -inline - void G4ParticleChangeForMSC::ProposePosition(const G4ThreeVector& P) -{ - thePosition = P; -} - - -inline void G4ParticleChangeForMSC::Initialize(const G4Track& track) -{ - theStatusChange = track.GetTrackStatus(); - theMomentumDirection = track.GetMomentumDirection(); - thePosition = track.GetPosition(); -} - -// Following methods will be removed in release 7.0 -inline - void G4ParticleChangeForMSC::SetMomentumChange(const G4ThreeVector& P) -{ - ProposeMomentumDirection(P); -} - -inline - void G4ParticleChangeForMSC::SetMomentumChange(G4double Px, G4double Py, G4double Pz) -{ - ProposeMomentumDirection(Px, Py, Pz); -} - -inline - void G4ParticleChangeForMSC::SetPositionChange(const G4ThreeVector& P) -{ - ProposePosition(P); -} - -inline - const G4ThreeVector* G4ParticleChangeForMSC::GetPositionChange() const -{ - return GetPosition(); -} - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForRadDecay.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForRadDecay.hh deleted file mode 100644 index 11f5958..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForRadDecay.hh +++ /dev/null @@ -1,104 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForRadDecay.hh,v 1.5 2003/06/03 08:56:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-05-02-ref-00 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 25 Jan. 2000 H.Kurahige -// -// Class Description -// This class is a concrete class for ParticleChange for RadDecay -// -#ifndef G4ParticleChangeForRadDecay_h -#define G4ParticleChangeForRadDecay_h 1 - -#include "globals.hh" -#include "G4ios.hh" -class G4VTouchable; -#include "G4ParticleChange.hh" - -class G4ParticleChangeForRadDecay: public G4ParticleChange -{ - public: - // default constructor - G4ParticleChangeForRadDecay(){} - - // destructor - virtual ~G4ParticleChangeForRadDecay(){} - - protected: - // hide copy constructor and assignment operaor as protected - G4ParticleChangeForRadDecay(const G4ParticleChangeForRadDecay &) : G4ParticleChange() {} - G4ParticleChangeForRadDecay & operator=(const G4ParticleChangeForRadDecay &){return *this;} - - - public: // with description - void AddSecondary(G4Track* aSecondary); - // Add a secondary particle to theListOfSecondaries. - // ------------------------------------------------------ - - -}; - -inline void G4ParticleChangeForRadDecay::AddSecondary(G4Track *aTrack) -{ - // add a secondary after size check - if (theSizeOftheListOfSecondaries > theNumberOfSecondaries) { - theListOfSecondaries->SetElement(theNumberOfSecondaries, aTrack); - theNumberOfSecondaries++; - } else { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::AddSecondary() Warning "; - G4cerr << "theListOfSecondaries is full !! " << G4endl; - G4cerr << " The object will not be added in theListOfSecondaries" << G4endl; - } -#endif - } -} - - - -#endif - - - - - - - - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.hh b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.hh deleted file mode 100644 index 3cb5604..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.hh +++ /dev/null @@ -1,148 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForTransport.hh,v 1.13 2004/05/08 15:28:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 10 May. 1998 H.Kurahige -// Added theMaterialChange 16 FEb. 2000 H.Kurahige -// Remove thePolarizationChange 12 Feb. 2001 H.Kurashige -// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek -// Add MaterialCutsCouple 8 Oct. 2002 H.Kurashige -// -// Class Description -// This class is a concrete class for ParticleChange for transportation -// -#ifndef G4ParticleChangeForTransport_h -#define G4ParticleChangeForTransport_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4TouchableHandle.hh" -#include "G4ParticleChange.hh" - -class G4MaterialCutsCouple; - - -class G4ParticleChangeForTransport: public G4ParticleChange -{ - public: - // default constructor - G4ParticleChangeForTransport(); - - // destructor - virtual ~G4ParticleChangeForTransport(); - - protected: - // hide copy constructor and assignment operator as protected - G4ParticleChangeForTransport(const G4ParticleChangeForTransport &right); - G4ParticleChangeForTransport & operator=(const G4ParticleChangeForTransport &right); - - public: // with description - // ---------------------------------------------------- - // --- the following methods are for updating G4Step ----- - // Return the pointer to the G4Step after updating the Step information - // by using final state information of the track given by a physics - // process - virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - virtual G4Step* UpdateStepForAtRest(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - // A physics process gives the final state of the particle - // based on information of G4Track (or equivalently the PreStepPoint) - - virtual void Initialize(const G4Track&); - // Initialize all propoerties by using G4Track information - - // ---------------------------------------------------- - //--- methods to keep information of the final state-- - // IMPORTANT NOTE: Although the name of the class and methods are - // "Change", what it stores (and returns in get) are the "FINAL" - // values of the Position, Momentum, etc. - - const G4TouchableHandle& GetTouchableHandle() const; - void SetTouchableHandle(const G4TouchableHandle& fTouchable); - // Get/Set the touchable of the current particle. - // Note: Touchable in PostStepPoint will be updated only after PostStepDoIt - - G4Material* GetMaterialInTouchable() const; - void SetMaterialInTouchable(G4Material* fMaterial); - // Get/Propose the material in the touchable of the current particle. - - const G4MaterialCutsCouple* GetMaterialCutsCoupleInTouchable() const; - void SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple* fMaterialCutsCouple); - // Get/Set the materialCutsCouple in the touchable of the current particle. - - G4bool GetMomentumChanged() const; - void SetMomentumChanged(G4bool b); - - public: - // Following methods will be removed in release 7.0 - // Using ProposeXXXX methods is recommended to setting - // properties in G4ParticleChangeForDecay - G4Material* GetMaterialChange() const; - void SetMaterialChange(G4Material* fMaterial); - const G4MaterialCutsCouple* GetMaterialCutsCoupleChange() const; - void SetMaterialCutsCoupleChange(const G4MaterialCutsCouple* fMaterialCutsCouple); - - public: - virtual void DumpInfo() const; - - protected: - G4TouchableHandle theTouchableHandle; - // The changed touchable of a given particle. - - public: - - // Prototype implementation of smooth representation of curved trajectories. - // Auxiliary points are ThreeVectors for now; change to G4AuxiliaryPoints. - - inline void SetPointerToVectorOfAuxiliaryPoints( std::vector* theNewVectorPointer ); - inline std::vector* GetPointerToVectorOfAuxiliaryPoints() const; - - private: - G4bool isMomentumChanged; - // The flag which is set if mometum is changed in this stepi - G4Material* theMaterialChange; - const G4MaterialCutsCouple* theMaterialCutsCoupleChange; - // The material (and MaterialCutsCouple) where given track - // currently locates - - private: - std::vector* fpVectorOfAuxiliaryPointsPointer; -}; - -#include "G4ParticleChangeForTransport.icc" - -#endif - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.icc b/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.icc deleted file mode 100644 index fa54483..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4ParticleChangeForTransport.icc +++ /dev/null @@ -1,163 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForTransport.icc,v 1.10 2004/05/08 15:28:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -inline - void G4ParticleChangeForTransport::SetTouchableHandle(const G4TouchableHandle& -fTouchable) -{ - theTouchableHandle = fTouchable; -} - -inline - const G4TouchableHandle& G4ParticleChangeForTransport::GetTouchableHandle() const -{ - return theTouchableHandle; -} - - -inline - void G4ParticleChangeForTransport::SetMaterialInTouchable(G4Material* fMaterial) -{ - theMaterialChange = fMaterial; -} - -inline - G4Material* G4ParticleChangeForTransport::GetMaterialInTouchable() const -{ - return theMaterialChange; -} - -inline - void G4ParticleChangeForTransport::SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple* fMaterialCutsCouple) -{ - theMaterialCutsCoupleChange = fMaterialCutsCouple; -} - -inline - const G4MaterialCutsCouple* G4ParticleChangeForTransport::GetMaterialCutsCoupleInTouchable() const -{ - return theMaterialCutsCoupleChange; -} - -inline -G4bool G4ParticleChangeForTransport::GetMomentumChanged() const -{ - return isMomentumChanged; -} - -inline -void G4ParticleChangeForTransport::SetMomentumChanged(G4bool b) -{ - isMomentumChanged= b; -} - -//---------------------------------------------------------------- -// functions for Initialization -// - -inline void G4ParticleChangeForTransport::Initialize(const G4Track& track) -{ - // use base class's method at first - InitializeStatusChange(track); -// InitializeLocalEnergyDeposit(track); - InitializeSteppingControl(track); -// InitializeTrueStepLength(track); -// InitializeSecondaries(track); - - // set Energy/Momentum etc. equal to those of the parent particle - const G4DynamicParticle* pParticle = track.GetDynamicParticle(); -// theEnergyChange = pParticle->GetKineticEnergy(); -// theMomentumChange = pParticle->GetMomentumDirection(); - thePolarizationChange = pParticle->GetPolarization(); -// theProperTimeChange = pParticle->GetProperTime(); - - // set Position/Time etc. equal to those of the parent track -// thePositionChange = track.GetPosition(); -// theTimeChange = track.GetGlobalTime(); - - // set touchable equal to the next touchable of the parent track - // not set as for now - //theTouchableChange = track.GetNextTouchable(); - -// So almost nothing is initialized here. -// theMomentumChange, theProperTimeChange, thePositionChange and theTimeChange -// are set by G4Transportation::AlongStepDoIt; -// the others are not needed. -// Take care when implementing the PostStep related things! -// (P. Urban) -} - -// Prototype implementation of smooth representation of curved trajectories. - -inline void -G4ParticleChangeForTransport:: -SetPointerToVectorOfAuxiliaryPoints( std::vector* - theNewVectorPointer ) -{ - fpVectorOfAuxiliaryPointsPointer = theNewVectorPointer; -} - -inline std::vector* -G4ParticleChangeForTransport::GetPointerToVectorOfAuxiliaryPoints() const -{ - return fpVectorOfAuxiliaryPointsPointer; -} - - -// Following methods will be removed in release 7.0 -inline - void G4ParticleChangeForTransport::SetMaterialChange(G4Material* fMaterial) -{ - theMaterialChange = fMaterial; -} - -inline - G4Material* G4ParticleChangeForTransport::GetMaterialChange() const -{ - return theMaterialChange; -} - -inline - void G4ParticleChangeForTransport::SetMaterialCutsCoupleChange(const G4MaterialCutsCouple* fMaterialCutsCouple) -{ - theMaterialCutsCoupleChange = fMaterialCutsCouple; -} - -inline - const G4MaterialCutsCouple* G4ParticleChangeForTransport::GetMaterialCutsCoupleChange() const -{ - return theMaterialCutsCoupleChange; -} - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4Step.hh b/geant4/LEMuSR/G4Modified/track/include/G4Step.hh deleted file mode 100644 index 4824f9e..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4Step.hh +++ /dev/null @@ -1,179 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Step.hh,v 1.10 2003/06/16 17:12:58 gunter Exp $ -// GEANT4 tag $Name: geant4-05-02-ref-00 $ -// -// -//--------------------------------------------------------------- -// -// G4Step.hh -// -// Class Description: -// This class represents the Step of a particle tracked. -// It includes information of -// 1) List of Step points which compose the Step, -// 2) static information of particle which generated the -// Step, -// 3) trackID and parent particle ID of the Step, -// 4) termination condition of the Step, -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -// --------------------------------------------------------------- -// Modified for the new G4ParticleChange 12 Mar. 1998 H.Kurahige -// Correct treatment of touchable in G4Step::UpdateTrack -// 12 May. 1998 H.Kurashige -// --------------------------------------------------------------- -// Separate implementation of inline functions inti G4Step.icc -// Add updating mass/charge -// 6 Oct. 1999 H.Kurashige -// -#ifndef G4Step_h -#define G4Step_h 1 - -#include // Include from 'system' -#include "G4ios.hh" // Include from 'system' -#include // Include from 'system' -#include "globals.hh" // Include from 'global' -#include "G4ThreeVector.hh" // Include from 'global' -#include "G4VPhysicalVolume.hh" // Include from 'geometry' -#include "G4StepPoint.hh" // Include from 'track' -#include "G4StepStatus.hh" // Include from 'track' -class G4Polyline; // Forward declaration. -class G4Track; // Forward declaration. - - -//////////// -class G4Step -//////////// -{ - -//-------- - public: - -// Constructor/Destrcutor - G4Step(); - ~G4Step(); - -//-------- - public: // WIth description - -// Get/Set functions - // currnet track - G4Track* GetTrack() const; - void SetTrack(G4Track* value); - - // step points - G4StepPoint* GetPreStepPoint() const; - void SetPreStepPoint(G4StepPoint* value); - - G4StepPoint* GetPostStepPoint() const; - void SetPostStepPoint(G4StepPoint* value); - - // step length - G4double GetStepLength() const; - void SetStepLength(G4double value); - - // total energy deposit - G4double GetTotalEnergyDeposit() const; - void SetTotalEnergyDeposit(G4double value); - - // cotrole flag for stepping - G4SteppingControl GetControlFlag() const; - void SetControlFlag(G4SteppingControl StepControlFlag); - - // difference of position, time, momentum and energy - G4ThreeVector GetDeltaPosition() const; - G4double GetDeltaTime() const; - - G4ThreeVector GetDeltaMomentum() const; - G4double GetDeltaEnergy() const; - - // manipulation of total energy deposit - void AddTotalEnergyDeposit(G4double value); - void ResetTotalEnergyDeposit(); - - -// Other member functions - void InitializeStep( G4Track* aValue ); - // initiaize contents of G4Step - - void UpdateTrack( ); - // update track by using G4Step information - - void CopyPostToPreStepPoint( ); - // copy PostStepPoint to PreStepPoint - - G4Polyline* CreatePolyline () const; - // for visualization - -//----------- - protected: -//----------- - -// Member data - G4double fTotalEnergyDeposit; - // Accummulated total energy desposit in the current Step - -//--------- - private: -//--------- - -// Member data - G4StepPoint* fpPreStepPoint; - G4StepPoint* fpPostStepPoint; - G4double fStepLength; - // Step length which may be updated at each invocation of - // AlongStepDoIt and PostStepDoIt - G4Track* fpTrack; - // - G4SteppingControl fpSteppingControlFlag; - // A flag to control SteppingManager behavier from process - - - // Prototyping implementation of smooth representation of curved - // trajectories. (jacek 30/10/2002) -public: - // Auxiliary points are ThreeVectors for now; change to - // G4VAuxiliaryPoints or some such (jacek 30/10/2002) - void SetPointerToVectorOfAuxiliaryPoints( std::vector* theNewVectorPointer ) { - fpVectorOfAuxiliaryPointsPointer = theNewVectorPointer; - } - std::vector* GetPointerToVectorOfAuxiliaryPoints() const { - return fpVectorOfAuxiliaryPointsPointer; - } -private: - // Explicity including the word "Pointer" in the name as I keep - // forgetting the * (jacek 30/10/2002) - std::vector* fpVectorOfAuxiliaryPointsPointer; - -}; - -#include "G4Step.icc" - - -#endif diff --git a/geant4/LEMuSR/G4Modified/track/include/G4Step.icc b/geant4/LEMuSR/G4Modified/track/include/G4Step.icc deleted file mode 100644 index ac97526..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4Step.icc +++ /dev/null @@ -1,238 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Step.icc,v 1.10 2003/03/05 04:42:53 kurasige Exp $ -// GEANT4 tag $Name: geant4-05-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -//----------------------------------------------------------------- -// In-line definitions -//----------------------------------------------------------------- - -// Get/Set functions -inline - G4StepPoint* G4Step::GetPreStepPoint() const - { - return fpPreStepPoint; - } - -inline - void G4Step::SetPreStepPoint(G4StepPoint* value) - { - fpPreStepPoint = value; - } - -inline - G4StepPoint* G4Step::GetPostStepPoint() const - { - return fpPostStepPoint; - } - -inline - void G4Step::SetPostStepPoint(G4StepPoint* value) - { - fpPostStepPoint = value; - } - -inline - G4double G4Step::GetStepLength() const - { - return fStepLength; - } - -inline - void G4Step::SetStepLength(G4double value) - { - fStepLength = value; - } - -inline - G4ThreeVector G4Step::GetDeltaPosition() const - { - return fpPostStepPoint->GetPosition() - - fpPreStepPoint->GetPosition(); - } - -inline - G4double G4Step::GetDeltaTime() const - { - return fpPostStepPoint->GetLocalTime() - - fpPreStepPoint->GetLocalTime(); - } - -inline - G4ThreeVector G4Step::GetDeltaMomentum() const - { - return fpPostStepPoint->GetMomentum() - - fpPreStepPoint->GetMomentum(); - } - -inline - G4double G4Step::GetDeltaEnergy() const - { - return fpPostStepPoint->GetKineticEnergy() - - fpPreStepPoint->GetKineticEnergy(); - } - -inline - G4double G4Step::GetTotalEnergyDeposit() const - { - return fTotalEnergyDeposit; - } - -inline - void G4Step::SetTotalEnergyDeposit(G4double value) - { - fTotalEnergyDeposit = value; - } - -inline - void G4Step::AddTotalEnergyDeposit(G4double value) - { - fTotalEnergyDeposit += value; - } - -inline - void G4Step::ResetTotalEnergyDeposit() - { - fTotalEnergyDeposit = 0.; - } - -inline - void G4Step::SetControlFlag(G4SteppingControl value) - { - fpSteppingControlFlag = value; - } - -inline - G4SteppingControl G4Step::GetControlFlag() const - { - return fpSteppingControlFlag; - } - -inline - void G4Step::CopyPostToPreStepPoint( ) - { - *(fpPreStepPoint) = *(fpPostStepPoint); - fpPostStepPoint->SetStepStatus(fUndefined); - } - - -//------------------------------------------------------------- -// To implement bi-directional association between G4Step and -// and G4Track, a combined usage of 'forward declaration' and -// 'include' is necessary. -//------------------------------------------------------------- -#include "G4Track.hh" - -inline - G4Track* G4Step::GetTrack() const - { - return fpTrack; - } - -inline - void G4Step::SetTrack(G4Track* value) - { - fpTrack = value; - } - - -// Other member functions -inline - void G4Step::InitializeStep( G4Track* aValue ) - { - // Initialize G4Step attributes - fStepLength = 0.; - fTotalEnergyDeposit = 0.; - fpTrack = aValue; - fpTrack->SetStepLength(0.); - - // Initialize G4StepPoint attributes. - // To avoid the circular dependency between G4Track, G4Step - // and G4StepPoint, G4Step has to manage the copy actions. - fpPreStepPoint->SetPosition(fpTrack->GetPosition()); - fpPreStepPoint->SetGlobalTime(fpTrack->GetGlobalTime()); - fpPreStepPoint->SetLocalTime(fpTrack->GetLocalTime()); - fpPreStepPoint->SetProperTime(fpTrack->GetProperTime()); - fpPreStepPoint->SetMomentumDirection(fpTrack->GetMomentumDirection()); - fpPreStepPoint->SetKineticEnergy(fpTrack->GetKineticEnergy()); - fpPreStepPoint->SetVelocity(fpTrack->GetVelocity()); - fpPreStepPoint->SetTouchableHandle(fpTrack->GetTouchableHandle()); - fpPreStepPoint->SetMaterial( fpTrack->GetTouchable()->GetVolume()->GetLogicalVolume()->GetMaterial()); - fpPreStepPoint->SetMaterialCutsCouple( fpTrack->GetTouchable()->GetVolume()->GetLogicalVolume()->GetMaterialCutsCouple()); - fpPreStepPoint->SetPolarization(fpTrack->GetPolarization()); - fpPreStepPoint->SetSafety(0.); - fpPreStepPoint->SetStepStatus(fUndefined); - fpPreStepPoint->SetProcessDefinedStep(0); - fpPreStepPoint->SetMass(fpTrack->GetDynamicParticle()->GetMass()); - fpPreStepPoint->SetCharge(fpTrack->GetDynamicParticle()->GetCharge()); - fpPreStepPoint->SetWeight(fpTrack->GetWeight()); - - - (*fpPostStepPoint) = (*fpPreStepPoint); - } - -inline - void G4Step::UpdateTrack( ) - { - // To avoid the circular dependency between G4Track, G4Step - // and G4StepPoint, G4Step has to manage the update actions. - // position, time - fpTrack->SetPosition(fpPostStepPoint->GetPosition()); - fpTrack->SetGlobalTime(fpPostStepPoint->GetGlobalTime()); - fpTrack->SetLocalTime(fpPostStepPoint->GetLocalTime()); - fpTrack->SetProperTime(fpPostStepPoint->GetProperTime()); - // energy, momentum, polarization - fpTrack->SetMomentumDirection(fpPostStepPoint->GetMomentumDirection()); - fpTrack->SetKineticEnergy(fpPostStepPoint->GetKineticEnergy()); - fpTrack->SetPolarization(fpPostStepPoint->GetPolarization()); - // mass charge - G4DynamicParticle* pParticle = (G4DynamicParticle*)(fpTrack->GetDynamicParticle()); - pParticle->SetMass(fpPostStepPoint->GetMass()); - pParticle->SetCharge(fpPostStepPoint->GetCharge()); - // step length - fpTrack->SetStepLength(fStepLength); - // NextTouchable is updated - // (G4Track::Touchable points touchable of Pre-StepPoint) - fpTrack->SetNextTouchableHandle(fpPostStepPoint->GetTouchableHandle()); - fpTrack->SetWeight(fpPostStepPoint->GetWeight()); - - // set velocity - fpPostStepPoint->SetVelocity(fpTrack->GetVelocity()); -} - - - - - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.hh b/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.hh deleted file mode 100644 index d778059..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.hh +++ /dev/null @@ -1,208 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4StepPoint.hh,v 1.13 2003/09/19 19:08:14 kurasige Exp $ -// GEANT4 tag $Name: geant4-05-02-ref-05 $ -// -// -//--------------------------------------------------------------- -// -// G4StepPoint.hh -// -// Class Description: -// This class represents information associated with the -// each end of a Step like the space/time data of the -// particle. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -// --------------------------------------------------------------- -// Added fpMaterial 16 FEb. 2000 H.Kurahige -// Added fpMaterialCutsCouple 8 Oct. 2002 H.Kurahige - -#ifndef G4StepPoint_h -#define G4StepPoint_h 1 - -#include "globals.hh" // Include from 'global' -#include "G4Allocator.hh" // Include from 'global' -#include "G4ThreeVector.hh" // Include from 'geometry' -#include "G4VPhysicalVolume.hh" // Include from 'geometry' -class G4VProcess; -#include "G4SteppingControl.hh" -#include "G4StepStatus.hh" // Include from 'track' -#include "G4TouchableHandle.hh" // Include from 'geometry' -#include "G4Material.hh" -#include "G4LogicalVolume.hh" - -class G4MaterialCutsCouple; -///////////////// -class G4StepPoint -///////////////// -{ - -//-------- - public: - - -// Constructor/Destructor - G4StepPoint(); - - ~G4StepPoint(){}; - -//-------- - - public: // with description - -// Get/Set functions - const G4ThreeVector& GetPosition() const; - void SetPosition(const G4ThreeVector& aValue); - void AddPosition(const G4ThreeVector& aValue); - - G4double GetLocalTime() const; - void SetLocalTime(const G4double aValue); - void AddLocalTime(const G4double aValue); - // Time since the track is created. - - G4double GetGlobalTime() const; - void SetGlobalTime(const G4double aValue); - void AddGlobalTime(const G4double aValue); - // Time since the event in which the track belongs is created. - - G4double GetProperTime() const; - void SetProperTime(const G4double aValue); - void AddProperTime(const G4double aValue); - // Proper time of the particle. - - const G4ThreeVector& GetMomentumDirection() const; - void SetMomentumDirection(const G4ThreeVector& aValue); - void AddMomentumDirection(const G4ThreeVector& aValue); - // Direction of momentum (should be an unit vector) - - G4ThreeVector GetMomentum() const; - // Total momentum of the track - - - G4double GetTotalEnergy() const; - // Total energy of the track - - G4double GetKineticEnergy() const; - void SetKineticEnergy(const G4double aValue); - void AddKineticEnergy(const G4double aValue); - // Kinetic Energy of the track - - G4double GetVelocity() const; - void SetVelocity(G4double v); - // - - G4double GetBeta() const; - // Velocity of the track in unit of c(light velocity) - - G4double GetGamma() const; - // Gamma factor (1/sqrt[1-beta*beta]) of the track - - G4VPhysicalVolume* GetPhysicalVolume() const; - - const G4VTouchable* GetTouchable() const; - const G4TouchableHandle& GetTouchableHandle() const; - void SetTouchableHandle(const G4TouchableHandle& apValue); - - G4Material* GetMaterial() const; - void SetMaterial(G4Material*); - - const G4MaterialCutsCouple* GetMaterialCutsCouple() const; - void SetMaterialCutsCouple(const G4MaterialCutsCouple*); - - G4double GetSafety() const; - void SetSafety(const G4double aValue); - - const G4ThreeVector& GetPolarization() const; - void SetPolarization(const G4ThreeVector& aValue); - void AddPolarization(const G4ThreeVector& aValue); - - G4StepStatus GetStepStatus() const; - void SetStepStatus(const G4StepStatus aValue); - - const G4VProcess* GetProcessDefinedStep() const; - // If the pointer is 0, this means the Step is defined - // by the user defined limit in the current volume. - void SetProcessDefinedStep(G4VProcess* aValue); - - - G4double GetMass() const; - void SetMass(G4double value); - - G4double GetCharge() const; - void SetCharge(G4double value); - - void SetWeight(G4double aValue); - G4double GetWeight() const; - - public: - // copy constructor and assignment operaor as protected - G4StepPoint(const G4StepPoint &right); - G4StepPoint & operator=(const G4StepPoint &right); - - - -//--------- - private: -//--------- - -// Member data - G4ThreeVector fPosition; - G4double fGlobalTime; - // Time since event is created - G4double fLocalTime; - // Time since track is created - G4double fProperTime; - // Time since track is created (in rest frame of particle) - G4ThreeVector fMomentumDirection; - G4double fKineticEnergy; - G4double fVelocity; - // Momentum,energy and velocity - G4TouchableHandle fpTouchable; - // Touchable Handle - G4Material* fpMaterial; - // Material of the volmue - const G4MaterialCutsCouple* fpMaterialCutsCouple; - // MaterialCutsCouple of the volmue - G4double fSafety; - G4ThreeVector fPolarization; - G4StepStatus fStepStatus; - // DoIt type which defined the current Step. - G4VProcess* fpProcessDefinedStep; - // Process which defined the current Step. - G4double fMass; - // Dynamical mass of the particle - G4double fCharge; - // Dynamical Charge of the particle - G4double fWeight; - // Track Weight -}; - -#include "G4StepPoint.icc" -#endif - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.icc b/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.icc deleted file mode 100644 index cd80ddd..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4StepPoint.icc +++ /dev/null @@ -1,174 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4StepPoint.icc,v 1.8 2003/05/07 20:08:37 asaim Exp $ -// GEANT4 tag $Name: geant4-05-01-ref-02 $ -// -// - inline const G4ThreeVector& G4StepPoint::GetPosition() const - { return fPosition; } - inline void G4StepPoint::SetPosition(const G4ThreeVector& aValue) - { fPosition = aValue; } - inline void G4StepPoint::AddPosition(const G4ThreeVector& aValue) - { fPosition += aValue; } - // Position where the track locates - - inline G4double G4StepPoint::GetLocalTime() const - { return fLocalTime; } - inline void G4StepPoint::SetLocalTime(const G4double aValue) - { fLocalTime = aValue; } - inline void G4StepPoint::AddLocalTime(const G4double aValue) - { fLocalTime += aValue; } - // Time since the track is created. - - inline G4double G4StepPoint::GetGlobalTime() const - { return fGlobalTime; } - inline void G4StepPoint::SetGlobalTime(const G4double aValue) - { fGlobalTime = aValue; } - inline void G4StepPoint::AddGlobalTime(const G4double aValue) - { fGlobalTime += aValue; } - // Time since the event in which the track belongs is created. - - inline G4double G4StepPoint::GetProperTime() const - { return fProperTime; } - inline void G4StepPoint::SetProperTime(const G4double aValue) - { fProperTime = aValue; } - inline void G4StepPoint::AddProperTime(const G4double aValue) - { fProperTime += aValue; } - // Proper time of the particle. - - inline const G4ThreeVector& G4StepPoint::GetMomentumDirection() const - { return fMomentumDirection; } - inline void G4StepPoint::SetMomentumDirection(const G4ThreeVector& aValue) - { fMomentumDirection = aValue; - } - inline void G4StepPoint::AddMomentumDirection(const G4ThreeVector& aValue) - { fMomentumDirection += aValue; - } - // Direction of momentum (should be an unit vector) - - inline G4ThreeVector G4StepPoint::GetMomentum() const - { - G4double tMomentum = sqrt(fKineticEnergy*fKineticEnergy + - 2*fKineticEnergy*fMass); - return G4ThreeVector(fMomentumDirection.x()*tMomentum, - fMomentumDirection.y()*tMomentum, - fMomentumDirection.z()*tMomentum); - } - // Total momentum of the track - - inline G4double G4StepPoint::GetTotalEnergy() const - { - return fKineticEnergy + fMass; - } - // Total energy of the track - - inline G4double G4StepPoint::GetKineticEnergy() const - { return fKineticEnergy; } - inline void G4StepPoint::SetKineticEnergy(const G4double aValue) - { fKineticEnergy = aValue; } - inline void G4StepPoint::AddKineticEnergy(const G4double aValue) - { fKineticEnergy += aValue; } - // Kinetic Energy of the track - - inline G4double G4StepPoint::GetVelocity() const - { - return fVelocity; - } - inline void G4StepPoint::SetVelocity(G4double v) - { - fVelocity = v; - } - - - inline G4double G4StepPoint::GetBeta() const - { - return fVelocity/c_light; - } - - // Velocity of the track in unit of c(light velocity) - - inline G4double G4StepPoint::GetGamma() const - { return (fMass==0.) ? DBL_MAX : (fKineticEnergy+fMass)/fMass; } - // Gamma factor (1/sqrt[1-beta*beta]) of the track - - inline G4VPhysicalVolume* G4StepPoint::GetPhysicalVolume() const - { return fpTouchable->GetVolume(); } - - inline const G4VTouchable* G4StepPoint::GetTouchable() const - { return fpTouchable(); } - inline const G4TouchableHandle& G4StepPoint::GetTouchableHandle() const - { return fpTouchable; } - inline void G4StepPoint::SetTouchableHandle(const G4TouchableHandle& apValue) - { fpTouchable = apValue; } - - inline G4double G4StepPoint::GetSafety() const - { return fSafety; } - inline void G4StepPoint::SetSafety(const G4double aValue) - { fSafety = aValue; } - - inline const G4ThreeVector& G4StepPoint::GetPolarization() const - { return fPolarization; } - inline void G4StepPoint::SetPolarization(const G4ThreeVector& aValue) - { fPolarization = aValue; } - inline void G4StepPoint::AddPolarization(const G4ThreeVector& aValue) - { fPolarization += aValue; } - - inline G4StepStatus G4StepPoint::GetStepStatus() const - { return fStepStatus; } - inline void G4StepPoint::SetStepStatus(const G4StepStatus aValue) - { fStepStatus = aValue; } - - inline const G4VProcess* G4StepPoint::GetProcessDefinedStep() const - { return fpProcessDefinedStep; } - // If the pointer is 0, this means the Step is defined - // by the user defined limit in the current volume. - inline void G4StepPoint::SetProcessDefinedStep(G4VProcess* aValue) - { fpProcessDefinedStep = aValue; } - - inline G4double G4StepPoint::GetMass() const - { return fMass; } - inline void G4StepPoint::SetMass(G4double value) - { fMass = value; } - - inline G4double G4StepPoint::GetCharge() const - { return fCharge; } - inline void G4StepPoint::SetCharge(G4double value) - { fCharge = value; } - - inline G4Material* G4StepPoint::GetMaterial() const - { return fpMaterial; } - inline void G4StepPoint::SetMaterial(G4Material* material) - {fpMaterial = material; } - - inline - const G4MaterialCutsCouple* G4StepPoint::GetMaterialCutsCouple() const - { return fpMaterialCutsCouple; } - inline - void G4StepPoint::SetMaterialCutsCouple(const G4MaterialCutsCouple* materialCutsCouple) - {fpMaterialCutsCouple = materialCutsCouple; } - - inline void G4StepPoint::SetWeight(G4double aValue) - { fWeight = aValue; } - inline G4double G4StepPoint::GetWeight() const - { return fWeight; } diff --git a/geant4/LEMuSR/G4Modified/track/include/G4StepStatus.hh b/geant4/LEMuSR/G4Modified/track/include/G4StepStatus.hh deleted file mode 100644 index d9d2d0a..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4StepStatus.hh +++ /dev/null @@ -1,70 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4StepStatus.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4StepStatus.hh -// -// Class Description: -// This is an enumerator to define possible sources which -// can define the Step length. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -//--------------------------------------------------------------- - -#ifndef G4StepStatus_h -#define G4StepStatus_h 1 - -////////////////// -enum G4StepStatus -////////////////// -{ - fWorldBoundary, - // Step reached the world boundary - fGeomBoundary, - // Step defined by a geometry boundary - fAtRestDoItProc, - // Step defined by a PreStepDoItVector - fAlongStepDoItProc, - // Step defined by a AlongStepDoItVector - fPostStepDoItProc, - // Step defined by a PostStepDoItVector - fUserDefinedLimit, - // Step defined by the user Step limit in the logical volume - fExclusivelyForcedProc, - // Step defined by an exclusively forced PostStepDoIt process - fUndefined - // Step not defined yet -}; - -#endif - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4SteppingControl.hh b/geant4/LEMuSR/G4Modified/track/include/G4SteppingControl.hh deleted file mode 100644 index 15d36df..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4SteppingControl.hh +++ /dev/null @@ -1,58 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4SteppingControl.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4SteppingControl -// -// Class Description: -// This enumaration specifies possible conditions to control -// the stepping manager behavier. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -//--------------------------------------------------------------- - -#ifndef G4SteppingControl_h -#define G4SteppingControl_h 1 - -///////////////////// -enum G4SteppingControl -///////////////////// -{ - NormalCondition, - AvoidHitInvocation, - // Hit will NOT be called - Debug -}; - -#endif - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4Track.hh b/geant4/LEMuSR/G4Modified/track/include/G4Track.hh deleted file mode 100644 index 9ee410a..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4Track.hh +++ /dev/null @@ -1,294 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Track.hh,v 1.16 2002/12/16 11:59:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-05-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4Track.hh -// -// Class Description: -// This class represents the partilce under tracking. -// It includes information related to tracking for examples: -// 1) current position/time of the particle, -// 2) static particle information, -// 3) the pointer to the physical volume where currently -// the particle exists -// -//--------------------------------------------------------------- -// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek -// Add MaterialCutCouple 08 Oct. 2002 H.Kurashige - -#ifndef G4Track_h -#define G4Track_h 1 - -#include "globals.hh" // Include from 'global' -#include "G4ThreeVector.hh" // Include from 'geometry' -#include "G4LogicalVolume.hh" // Include from 'geometry' -#include "G4VPhysicalVolume.hh" // Include from 'geometry' -#include "G4Allocator.hh" // Include from 'particle+matter' -#include "G4DynamicParticle.hh" // Include from 'particle+matter' -#include "G4TrackStatus.hh" // Include from 'tracking' -#include "G4TouchableHandle.hh" // Include from 'geometry' -#include "G4VUserTrackInformation.hh" - -#include "G4Material.hh" - -class G4Step; // Forward declaration -class G4MaterialCutsCouple; - -////////////// -class G4Track -////////////// -{ - -//-------- -public: // With description - -// Constructor - G4Track(); - G4Track(G4DynamicParticle* apValueDynamicParticle, - G4double aValueTime, - const G4ThreeVector& aValuePosition); - // aValueTime is a global time - G4Track(const G4Track&); - // Copy Constructor copys members other than tracking information - -private: - // Hide assignment operator as private - G4Track& operator=(const G4Track&); - -//-------- -public: // With description - -// Destrcutor - ~G4Track(); - -// Operators - inline void *operator new(size_t); - // Override "new" for "G4Allocator". - inline void operator delete(void *aTrack); - // Override "delete" for "G4Allocator". - - G4bool operator==( const G4Track& ); - -//-------- -public: // With description -// Copy information of the track (w/o tracking information) - void CopyTrackInfo(const G4Track&); - -// Get/Set functions - // track ID - G4int GetTrackID() const; - void SetTrackID(const G4int aValue); - - G4int GetParentID() const; - void SetParentID(const G4int aValue); - - // dynamic particle - const G4DynamicParticle* GetDynamicParticle() const; - - // particle definition - G4ParticleDefinition* GetDefinition() const; - - // position, time - const G4ThreeVector& GetPosition() const; - void SetPosition(const G4ThreeVector& aValue); - - G4double GetGlobalTime() const; - void SetGlobalTime(const G4double aValue); - // Time since the event in which the track belongs is created. - - G4double GetLocalTime() const; - void SetLocalTime(const G4double aValue); - // Time since the current track is created. - - G4double GetProperTime() const; - void SetProperTime(const G4double aValue); - // Proper time of the current track - - // volume, material, touchable - G4VPhysicalVolume* GetVolume() const; - G4VPhysicalVolume* GetNextVolume() const; - - G4Material* GetMaterial() const; - G4Material* GetNextMaterial() const; - - const G4MaterialCutsCouple* GetMaterialCutsCouple() const; - const G4MaterialCutsCouple* GetNextMaterialCutsCouple() const; - - const G4VTouchable* GetTouchable() const; - const G4TouchableHandle& GetTouchableHandle() const; - void SetTouchableHandle( const G4TouchableHandle& apValue); - - const G4VTouchable* GetNextTouchable() const; - const G4TouchableHandle& GetNextTouchableHandle() const; - void SetNextTouchableHandle( const G4TouchableHandle& apValue); - - // energy - G4double GetKineticEnergy() const; - void SetKineticEnergy(const G4double aValue); - - G4double GetTotalEnergy() const; - - - // moemtnum - const G4ThreeVector& GetMomentumDirection() const; - void SetMomentumDirection(const G4ThreeVector& aValue); - - G4ThreeVector GetMomentum() const; - - G4double GetVelocity() const; - - - // polarization - const G4ThreeVector& GetPolarization() const; - void SetPolarization(const G4ThreeVector& aValue); - - // track status, flags for tracking - G4TrackStatus GetTrackStatus() const; - void SetTrackStatus(const G4TrackStatus aTrackStatus); - - G4bool IsBelowThreshold() const; - void SetBelowThresholdFlag(G4bool value = true); - // The flag of "BelowThreshold" is set to true - // if this track energy is below threshold energy - // in this material determined by the range cut value - - G4bool IsGoodForTracking() const; - void SetGoodForTrackingFlag(G4bool value = true); - // The flag of "GoodForTracking" is set by processes - // if this track should be tracked - // even if the energy is below threshold - - // track length - G4double GetTrackLength() const; - void AddTrackLength(const G4double aValue); - // Accumulated the track length - - // step information - const G4Step* GetStep() const; - void SetStep(const G4Step* aValue); - - G4int GetCurrentStepNumber() const; - void IncrementCurrentStepNumber(); - - G4double GetStepLength() const; - void SetStepLength(G4double value); - // Before the end of the AlongStepDoIt loop,StepLength keeps - // the initial value which is determined by the shortest geometrical Step - // proposed by a physics process. After finishing the AlongStepDoIt, - // it will be set equal to 'StepLength' in G4Step. - - // vertex (,where this track was created) information - const G4ThreeVector& GetVertexPosition() const; - void SetVertexPosition(const G4ThreeVector& aValue); - - const G4ThreeVector& GetVertexMomentumDirection() const; - void SetVertexMomentumDirection(const G4ThreeVector& aValue); - - G4double GetVertexKineticEnergy() const; - void SetVertexKineticEnergy(const G4double aValue); - - G4LogicalVolume* GetLogicalVolumeAtVertex() const; - void SetLogicalVolumeAtVertex(G4LogicalVolume* ); - - const G4VProcess* GetCreatorProcess() const; - void SetCreatorProcess(G4VProcess* aValue); - - // track weight - // These are methods for manipulating a weight for this track. - G4double GetWeight() const; - void SetWeight(G4double aValue); - - // User information - G4VUserTrackInformation* GetUserInformation() const; - void SetUserInformation(G4VUserTrackInformation* aValue); - -//--------- - private: -//--------- - -// Member data - G4int fCurrentStepNumber; // Total steps number up to now - G4ThreeVector fPosition; // Current positon - G4double fGlobalTime; // Time since the event is created - G4double fLocalTime; // Time since the track is created - G4double fTrackLength; // Accumulated track length - G4int fParentID; - G4int fTrackID; - - G4TouchableHandle fpTouchable; - G4TouchableHandle fpNextTouchable; - // Touchable Handle - - G4DynamicParticle* fpDynamicParticle; - G4TrackStatus fTrackStatus; - - G4bool fBelowThreshold; - // This flag is set to true if this track energy is below - // threshold energy in this material determined by the range cut value - G4bool fGoodForTracking; - // This flag is set by processes if this track should be tracked - // even if the energy is below threshold - - G4double fStepLength; - // Before the end of the AlongStepDoIt loop, this keeps the initial - // Step length which is determined by the shortest geometrical Step - // proposed by a physics process. After finishing the AlongStepDoIt, - // this will be set equal to 'StepLength' in G4Step. - - G4double fWeight; - // This is a weight for this track - - const G4Step* fpStep; - - G4ThreeVector fVtxPosition; // (x,y,z) of the vertex - G4ThreeVector fVtxMomentumDirection; // Momentum direction at the vertex - G4double fVtxKineticEnergy; // Kinetic energy at the vertex - G4LogicalVolume* fpLVAtVertex; //Logical Volume at the vertex - G4VProcess* fpCreatorProcess; // Process which created the track - - G4VUserTrackInformation* fpUserInformation; -}; -#include "G4Step.hh" -#include "G4Track.icc" - -#endif - - - - - - - - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4Track.icc b/geant4/LEMuSR/G4Modified/track/include/G4Track.icc deleted file mode 100644 index b2b253d..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4Track.icc +++ /dev/null @@ -1,298 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Track.icc,v 1.10 2002/12/16 11:59:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-05-02-patch-01 $ -// -//----------------------------------------------------------------- -// Definitions of inline functions -//----------------------------------------------------------------- -// change GetMaterial 16 Feb. 2000 H.Kurashige - -// Operators - extern G4Allocator aTrackAllocator; - inline void* G4Track::operator new(size_t) - { void *aTrack; - aTrack = (void *) aTrackAllocator.MallocSingle(); - return aTrack; - } - // Override "new" for "G4Allocator". - - inline void G4Track::operator delete(void *aTrack) - { aTrackAllocator.FreeSingle((G4Track *) aTrack);} - // Override "delete" for "G4Allocator". - - inline G4bool G4Track::operator==( const G4Track& s) - { return (this==&s); } - // Define "==" operator because "G4TrackVector" uses - // "RWPtrOrderdVector" which requires this. - -// Get/Set functions -// dynamic particle - inline const G4DynamicParticle* G4Track::GetDynamicParticle() const - { return fpDynamicParticle; } - -// particle definition - inline G4ParticleDefinition* G4Track::GetDefinition() const - { return fpDynamicParticle->GetDefinition(); } - -// parent track ID - inline G4int G4Track::GetParentID() const - { return fParentID; } - - inline void G4Track::SetParentID(const G4int aValue) - { fParentID = aValue; } - -// current track ID - inline G4int G4Track::GetTrackID() const - { return fTrackID; } - - inline void G4Track::SetTrackID(const G4int aValue) - { fTrackID = aValue; } - -// position - inline const G4ThreeVector& G4Track::GetPosition() const - { return fPosition; } - - inline void G4Track::SetPosition(const G4ThreeVector& aValue) - { fPosition = aValue; } - -// global time - inline G4double G4Track::GetGlobalTime() const - { return fGlobalTime; } - - inline void G4Track::SetGlobalTime(const G4double aValue) - { fGlobalTime = aValue; } - // Time since the event in which the track belongs is created. - -// local time - inline G4double G4Track::GetLocalTime() const - { return fLocalTime; } - - inline void G4Track::SetLocalTime(const G4double aValue) - { fLocalTime = aValue; } - // Time since the current track is created. - -// proper time - inline G4double G4Track::GetProperTime() const - { return fpDynamicParticle->GetProperTime(); } - - inline void G4Track::SetProperTime(const G4double aValue) - { fpDynamicParticle->SetProperTime(aValue); } - // Proper time of the current track - -// volume - inline G4VPhysicalVolume* G4Track::GetVolume() const - { return fpTouchable->GetVolume(); } - - inline G4VPhysicalVolume* G4Track::GetNextVolume() const - { return fpNextTouchable->GetVolume(); } - -// material - inline - const G4MaterialCutsCouple* G4Track::GetMaterialCutsCouple() const - { return fpStep->GetPreStepPoint()->GetMaterialCutsCouple(); } - - inline - const G4MaterialCutsCouple* G4Track::GetNextMaterialCutsCouple() const - { return fpStep->GetPostStepPoint()->GetMaterialCutsCouple(); } - -// material - inline G4Material* G4Track::GetMaterial() const - { return fpStep->GetPreStepPoint()->GetMaterial(); } - - inline G4Material* G4Track::GetNextMaterial() const - { return fpStep->GetPostStepPoint()->GetMaterial(); } - - -// touchable - inline const G4VTouchable* G4Track::GetTouchable() const - { - return fpTouchable(); - } - - inline const G4TouchableHandle& G4Track::GetTouchableHandle() const - { - return fpTouchable; - } - - inline void G4Track::SetTouchableHandle( const G4TouchableHandle& apValue) - { - fpTouchable = apValue; - } - - inline const G4VTouchable* G4Track::GetNextTouchable() const - { - return fpNextTouchable(); - } - - inline const G4TouchableHandle& G4Track::GetNextTouchableHandle() const - { - return fpNextTouchable; - } - - inline void G4Track::SetNextTouchableHandle( const G4TouchableHandle& apValue) - { - fpNextTouchable = apValue; - } - - -// kinetic energy - inline G4double G4Track::GetKineticEnergy() const - { return fpDynamicParticle->GetKineticEnergy(); } - - inline void G4Track::SetKineticEnergy(const G4double aValue) - { fpDynamicParticle->SetKineticEnergy(aValue); } - -// total energy - inline G4double G4Track::GetTotalEnergy() const - { return fpDynamicParticle->GetTotalEnergy(); } - -// momentum - inline G4ThreeVector G4Track::GetMomentum() const - { return fpDynamicParticle->GetMomentum(); } - -// momentum (direction) - inline const G4ThreeVector& G4Track::GetMomentumDirection() const - { return fpDynamicParticle->GetMomentumDirection(); } - - inline void G4Track::SetMomentumDirection(const G4ThreeVector& aValue) - { fpDynamicParticle->SetMomentumDirection(aValue) ;} - -// polarization - inline const G4ThreeVector& G4Track::GetPolarization() const - { return fpDynamicParticle->GetPolarization(); } - - inline void G4Track::SetPolarization(const G4ThreeVector& aValue) - { fpDynamicParticle->SetPolarization(aValue.x(), - aValue.y(), - aValue.z()); } - -// track status - inline G4TrackStatus G4Track::GetTrackStatus() const - { return fTrackStatus; } - - inline void G4Track::SetTrackStatus(const G4TrackStatus aTrackStatus) - { fTrackStatus = aTrackStatus; } - -// track length - inline G4double G4Track::GetTrackLength() const - { return fTrackLength; } - - inline void G4Track::AddTrackLength(const G4double aValue) - { fTrackLength += aValue; } - // Accumulated track length - -// step number - inline G4int G4Track::GetCurrentStepNumber() const - { return fCurrentStepNumber; } - - inline void G4Track::IncrementCurrentStepNumber() - { fCurrentStepNumber++; } - -// step length - inline G4double G4Track::GetStepLength() const - { return fStepLength; } - - inline void G4Track::SetStepLength(G4double value) - { fStepLength = value; } - -// vertex (where this track was created) information - inline const G4ThreeVector& G4Track::GetVertexPosition() const - { return fVtxPosition; } - - inline void G4Track::SetVertexPosition(const G4ThreeVector& aValue) - { fVtxPosition = aValue; } - - inline const G4ThreeVector& G4Track::GetVertexMomentumDirection() const - { return fVtxMomentumDirection; } - inline void G4Track::SetVertexMomentumDirection(const G4ThreeVector& aValue) - { fVtxMomentumDirection = aValue ;} - - inline G4double G4Track::GetVertexKineticEnergy() const - { return fVtxKineticEnergy; } - - inline void G4Track::SetVertexKineticEnergy(const G4double aValue) - { fVtxKineticEnergy = aValue; } - - inline G4LogicalVolume* G4Track::GetLogicalVolumeAtVertex() const - { return fpLVAtVertex; } - - inline void G4Track::SetLogicalVolumeAtVertex(G4LogicalVolume* aValue) - { fpLVAtVertex = aValue; } - - inline const G4VProcess* G4Track::GetCreatorProcess() const - { return fpCreatorProcess; } - // If the pointer is 0, this means the track is created - // by the event generator, i.e. the primary track.If it is not - // 0, it points to the process which created this track. - - inline void G4Track::SetCreatorProcess(G4VProcess* aValue) - { fpCreatorProcess = aValue; } - -// flag for "Below Threshold" - inline G4bool G4Track::IsBelowThreshold() const - { return fBelowThreshold; } - - inline void G4Track::SetBelowThresholdFlag(G4bool value) - { fBelowThreshold = value; } - -// flag for " Good for Tracking" - inline G4bool G4Track::IsGoodForTracking() const - { return fGoodForTracking; } - - inline void G4Track::SetGoodForTrackingFlag(G4bool value) - { fGoodForTracking = value; } - -// track weight - inline void G4Track::SetWeight(G4double aValue) - { fWeight = aValue; } - - inline G4double G4Track::GetWeight() const - { return fWeight; } - -// user information - inline G4VUserTrackInformation* G4Track::GetUserInformation() const - { return fpUserInformation; } - inline void G4Track::SetUserInformation(G4VUserTrackInformation* aValue) - { fpUserInformation = aValue; } - - - -//------------------------------------------------------------- -// To implement bi-directional association between G4Step and -// and G4Track, a combined usage of 'forward declaration' and -// 'include' is necessary. -//------------------------------------------------------------- -#include "G4Step.hh" - - inline const G4Step* G4Track::GetStep() const - { return fpStep; } - - inline void G4Track::SetStep(const G4Step* aValue) - { fpStep = (aValue); } - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4TrackFastVector.hh b/geant4/LEMuSR/G4Modified/track/include/G4TrackFastVector.hh deleted file mode 100644 index 5a6e3c0..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4TrackFastVector.hh +++ /dev/null @@ -1,47 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4TrackFastVector.hh,v 1.4 2001/07/11 10:08:37 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 8 Mar 1997, H.Kurashige -// ------------------------------------------------------------ - -#ifndef G4TrackFastVector_h -#define G4TrackFastVector_h 1 - -class G4Track; -#include "G4FastVector.hh" - -const G4int G4TrackFastVectorSize = 512; -typedef G4FastVector G4TrackFastVector; -// Contains pointers to G4Track objects which are -// generated by either primary or secondary interaction. - -#endif - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4TrackStatus.hh b/geant4/LEMuSR/G4Modified/track/include/G4TrackStatus.hh deleted file mode 100644 index e735b0a..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4TrackStatus.hh +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4TrackStatus.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4TrackStatus.hh -// -// Class Description: -// This is an enumerator to define the current status -// of the track which is under the transportation. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -//--------------------------------------------------------------- - -#ifndef G4TrackStatus_h -#define G4TrackStatus_h 1 - -////////////////// -enum G4TrackStatus -////////////////// -{ - - fAlive, // Continue the tracking - fStopButAlive, // Invoke active rest physics processes and - // and kill the current track afterward - fStopAndKill, // Kill the current track - - fKillTrackAndSecondaries, - // Kill the current track and also associated - // secondaries. - fSuspend, // Suspend the current track - fPostponeToNextEvent - // Postpones the tracking of thecurrent track - // to the next event. - -}; - -#endif - - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.hh b/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.hh deleted file mode 100644 index cd56c95..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.hh +++ /dev/null @@ -1,283 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VParticleChange.hh,v 1.11 2004/05/08 15:28:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// -// Class Description -// This class is the abstract class for ParticleChange. -//- -// The ParticleChange class ontains the results after invocation -// of a physics process. This includes final states of parent -// particle (momentum, energy, etc) and secondary particles generated -// by the interaction. -// The tracking assumes that all the values of energy and -// momentum are in global reference system, therefore all the -// needed Lorentz transformations must have been already Done -// when filling the data-members of this class. -//- -//- -// This abstract class has following four virtual methods -// virtual G4Step* UpdateStepForAtRest(G4Step* Step); -// virtual G4Step* UpdateStepForAlongStep(G4Step* Step); -// virtual G4Step* UpdateStepForPostStep(G4Step* Step); -// virtual void Initialize(const G4Track&); -// The UpdateStep methods return the pointer to the G4Step -// after updating the given Step information by using final state -// information of the track given by a physics process. -// User must add methods to keep the final state information -// in his derived class as well as implement UpdateStep methods -// which he want to use. -//- -// The Initialize methods is provided to refresh the final -// state information and should be called by each process -// at the beginning of DoIt. -// -// ------------------------------------------------------------ -// Implement Event Biasing Scheme 9 Nov.,98 H.Kurashige -// add CheckIt 13 Apr.,99 H.Kurashige -// add accuracy leveles 5 May, 99 H.Kurashige -// add check secondaries 11 June, 03 H.Kurashige -// add new methods of ProposeXXX 08 May, 04 H.Kurashige -#ifndef G4VParticleChange_h -#define G4VParticleChange_h 1 - -#include "globals.hh" -#include "G4ios.hh" - -class G4Track; -class G4Step; - -#include "G4TrackFastVector.hh" -#include "G4TrackStatus.hh" -#include "G4SteppingControl.hh" - - -class G4VParticleChange -{ - public: - // default constructor - G4VParticleChange(); - - // destructor - virtual ~G4VParticleChange(); - - // equal/unequal operator - G4bool operator==(const G4VParticleChange &right) const; - G4bool operator!=(const G4VParticleChange &right) const; - // "equal" means that teo objects have the same pointer. - - protected: - // hide copy constructor and assignment operaor as protected - G4VParticleChange(const G4VParticleChange &right); - G4VParticleChange & operator=(const G4VParticleChange &right); - - public: // with description - // --- the following methods are for updating G4Step ----- - virtual G4Step* UpdateStepForAtRest(G4Step* Step); - virtual G4Step* UpdateStepForAlongStep(G4Step* Step); - virtual G4Step* UpdateStepForPostStep(G4Step* Step); - // Return the pointer to the G4Step after updating the Step information - // by using final state information of the track given by a physics - // process - - protected: // with description - G4Step* UpdateStepInfo(G4Step* Step); - // Update the G4Step specific attributes - // (i.e. SteppingControl, LocalEnergyDeposit, and TrueStepLength) - - - public: // with description - virtual void Initialize(const G4Track&); - // This methods will be called by each process at the beginning of DoIt - // if necessary. - - protected: - void InitializeTrueStepLength(const G4Track&); - void InitializeLocalEnergyDeposit(const G4Track&); - void InitializeSteppingControl(const G4Track&); - void InitializeParentWeight(const G4Track&); - - void InitializeStatusChange(const G4Track&); - void InitializeSecondaries(const G4Track&); - // ------------------------------------------------------ - - public: // with description - //---- the following methods are for TruePathLength ---- - G4double GetTrueStepLength() const; - void ProposeTrueStepLength(G4double truePathLength); - // Get/Propose theTrueStepLength - - //---- the following methods are for LocalEnergyDeposit ---- - G4double GetLocalEnergyDeposit() const; - void ProposeLocalEnergyDeposit(G4double anEnergyPart); - // Get/Propose the locally deposited energy - - //---- the following methods are for TrackStatus ----- - G4TrackStatus GetTrackStatus() const; - void ProposeTrackStatus(G4TrackStatus status); - // Get/Propose the final TrackStatus of the current particle. - // ------------------------------------------------------ - - //---- the following methods are for managements of SteppingControl -- - G4SteppingControl GetSteppingControl() const; - void ProposeSteppingControl(G4SteppingControl StepControlFlag); - // Set/Propose a flag to control stepping manager behavier - // ------------------------------------------------------ - - //---- the following methods are for managements of secondaries -- - void Clear(); - // Clear the contents of this objects - // This method should be called after the Tracking(Stepping) - // manager removes all secondaries in theListOfSecondaries - - void SetNumberOfSecondaries(G4int totSecondaries); - // SetNumberOfSecondaries must be called just before AddSecondary() - // in order to secure memory space for theListOfSecondaries - // This method resets theNumberOfSecondaries to 0 - // (that will be incremented at every AddSecondary() call). - - G4int GetNumberOfSecondaries() const; - // Returns the number of secondaries current stored in - // G4TrackFastVector. - - G4Track* GetSecondary(G4int anIndex) const; - // Returns the pointer to the generated secondary particle - // which is specified by an Index. - - void AddSecondary(G4Track* aSecondary); - // Add a secondary particle to theListOfSecondaries. - // ------------------------------------------------------ - - G4double GetParentWeight() const ; - // Get weight of the parent (i.e. current) track - void ProposeParentWeight(G4double); - // Propse new weight of the parent (i.e. current) track - - void SetParentWeightByProcess(G4bool); - G4bool IsParentWeightSetByProcess() const; - // If fParentWeightByProcess flag is false (true in default), - // G4VParticleChange can change the weight of the parent track, - // in any DoIt by using SetParentWeight(G4double) - - - void SetSecondaryWeightByProcess(G4bool); - G4bool IsSecondaryWeightSetByProcess() const; - // If fSecondaryWeightByProcess flag is false (false in default), - // G4VParticleChange set the weight of the secondary tracks - // equal to the parent weight when the secondary tracks are added. - - virtual void DumpInfo() const; - // Print out information - - void SetVerboseLevel(G4int vLevel); - G4int GetVerboseLevel() const; - - public: - // Following methods will be removed in release 7.0 - // Using ProposeXXXX methods is recommended to setting - // properties in G4VParticleChange - - void SetTrueStepLength(G4double truePathLength); - void SetLocalEnergyDeposit(G4double anEnergyPart); - G4TrackStatus GetStatusChange() const; - void SetStatusChange(G4TrackStatus status); - void SetSteppingControl(G4SteppingControl StepControlFlag); - void SetParentWeight(G4double); - - protected: - - G4TrackFastVector* theListOfSecondaries; - // The vector of secondaries. - - G4int theNumberOfSecondaries; - // The total number of secondaries produced by each process. - - G4int theSizeOftheListOfSecondaries; - // TheSizeOftheListOfSecondaries; - - G4TrackStatus theStatusChange; - // The changed (final) track status of a given particle. - - G4SteppingControl theSteppingControlFlag; - // a flag to control stepping manager behavior - - G4double theLocalEnergyDeposit; - // It represents the part of the energy lost for discrete - // or semi-continuous processes which is due to secondaries - // not generated because they would have been below their cut - // threshold. - // The sum of the locally deposited energy + the delta-energy - // coming from the continuous processes gives the - // total energy loss localized in the current Step. - - G4double theTrueStepLength; - // The value of "True" Step Length - - G4int verboseLevel; - // The Verbose level - - public: // with description - // CheckIt method is provided for debug - virtual G4bool CheckIt(const G4Track&); - - // CheckIt method is activated - // if debug flag is set and 'G4VERBOSE' is defined - void ClearDebugFlag(); - void SetDebugFlag(); - G4bool GetDebugFlag() const; - - protected: - // CheckSecondary method is provided for debug - G4bool CheckSecondary(G4Track&); - - G4double GetAccuracyForWarning() const; - G4double GetAccuracyForException() const; - - protected: - G4bool debugFlag; - - // accuracy levels - static const G4double accuracyForWarning; - static const G4double accuracyForException; - - - protected: - G4double theParentWeight; - G4bool fSetSecondaryWeightByProcess; - G4bool fSetParentWeightByProcess; -}; - -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4VParticleChange.icc" - -#endif diff --git a/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.icc b/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.icc deleted file mode 100644 index 3921fa5..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4VParticleChange.icc +++ /dev/null @@ -1,345 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VParticleChange.icc,v 1.11 2004/05/08 15:28:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -//---------------------------------------------------------------- -// Virtual methods for updating G4Step -// - -inline G4Step* G4VParticleChange::UpdateStepInfo(G4Step* pStep) -{ - // Update the G4Step specific attributes - pStep->SetStepLength( theTrueStepLength ); - pStep->AddTotalEnergyDeposit( theLocalEnergyDeposit ); - pStep->SetControlFlag( theSteppingControlFlag ); - return pStep; -} - -inline - G4Step* G4VParticleChange::UpdateStepForAtRest(G4Step* Step) -{ - if (!fSetParentWeightByProcess){ - Step->GetPostStepPoint()->SetWeight( theParentWeight ); - } - return UpdateStepInfo(Step); -} - -inline - G4Step* G4VParticleChange::UpdateStepForAlongStep(G4Step* Step) -{ - if (!fSetParentWeightByProcess){ - G4double newWeight= theParentWeight/(Step->GetPreStepPoint()->GetWeight())*(Step->GetPostStepPoint()->GetWeight()); - Step->GetPostStepPoint()->SetWeight( newWeight ); - } - return UpdateStepInfo(Step); -} - -inline - G4Step* G4VParticleChange::UpdateStepForPostStep(G4Step* Step) -{ - if (!fSetParentWeightByProcess){ - Step->GetPostStepPoint()->SetWeight( theParentWeight ); - } - return UpdateStepInfo(Step); -} - -//---------------------------------------------------------------- -// Set/Get inline functions -// -inline - G4Track* G4VParticleChange::GetSecondary(G4int anIndex) const -{ - return (*theListOfSecondaries)[anIndex]; -} - -inline - G4int G4VParticleChange::GetNumberOfSecondaries() const -{ - return theNumberOfSecondaries; -} - -inline - void G4VParticleChange::ProposeTrackStatus(G4TrackStatus aStatus) -{ - theStatusChange = aStatus; -} - -inline - G4TrackStatus G4VParticleChange::GetTrackStatus() const -{ - return theStatusChange; -} - -inline -G4SteppingControl G4VParticleChange::GetSteppingControl() const -{ - return theSteppingControlFlag; -} - -inline -void G4VParticleChange::ProposeSteppingControl(G4SteppingControl StepControlFlag) -{ - theSteppingControlFlag = StepControlFlag; -} - -//---------------------------------------------------------------- -// Set/Get inline functions -// - -inline - G4double G4VParticleChange::GetLocalEnergyDeposit() const -{ - return theLocalEnergyDeposit; -} - -inline - void G4VParticleChange::ProposeLocalEnergyDeposit(G4double anEnergyPart) -{ - theLocalEnergyDeposit = anEnergyPart; -} - -inline - G4double G4VParticleChange::GetTrueStepLength() const -{ - return theTrueStepLength; -} - -inline - void G4VParticleChange::ProposeTrueStepLength(G4double aLength) -{ - theTrueStepLength = aLength; -} - - -inline - void G4VParticleChange::SetVerboseLevel(G4int vLevel) -{ - verboseLevel = vLevel; -} - -inline - G4int G4VParticleChange::GetVerboseLevel() const -{ - return verboseLevel; -} - -inline - G4double G4VParticleChange::GetParentWeight() const -{ - return theParentWeight; -} - -//---------------------------------------------------------------- -// inline functions for Initialization -// - -inline - void G4VParticleChange::InitializeLocalEnergyDeposit(const G4Track&) -{ - // clear theLocalEnergyDeposited - theLocalEnergyDeposit = 0.0; -} - -inline - void G4VParticleChange::InitializeSteppingControl(const G4Track& ) -{ - // SteppingControlFlag - theSteppingControlFlag = NormalCondition; -} - -inline - void G4VParticleChange::Clear() -{ - theNumberOfSecondaries = 0; -} - -//---------------------------------------------------------------- -// functions for Initialization -// - -inline void G4VParticleChange::InitializeStatusChange(const G4Track& track) -{ - // set TrackStatus equal to the parent track's one - theStatusChange = track.GetTrackStatus(); -} - -inline void G4VParticleChange::InitializeParentWeight(const G4Track& track) -{ - // set the parent track's weight - theParentWeight = track.GetWeight(); -} - -inline void G4VParticleChange::InitializeTrueStepLength(const G4Track& track) -{ - // Reset theTrueStepLength - // !! Caution !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - theTrueStepLength = track.GetStep()->GetStepLength(); - // !! TrueStepLength should be copied from G4Step not G4Track - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -} - -inline void G4VParticleChange::InitializeSecondaries(const G4Track&) -{ - // clear secondaries - if (theNumberOfSecondaries>0) { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::Initialize() Warning "; - G4cerr << "theListOfSecondaries is not empty " << G4endl; - G4cerr << "All objects in theListOfSecondaries are destroyed!" << G4endl; - } -#endif - for (G4int index= 0; index0) { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::SetNumberOfSecondaries() Warning "; - G4cerr << "theListOfSecondaries is not empty "; - } -#endif - for (G4int index= 0; indexInitialize(totSecondaries); -} - -inline void G4VParticleChange::Initialize(const G4Track& track) -{ - InitializeStatusChange(track); - InitializeLocalEnergyDeposit(track); - InitializeSteppingControl(track); - InitializeTrueStepLength(track); - InitializeSecondaries(track); - InitializeParentWeight(track); -} - -inline - void G4VParticleChange::ClearDebugFlag() -{ - debugFlag = false; -} - -inline - void G4VParticleChange::SetDebugFlag() -{ - debugFlag = true; -} - -inline - G4bool G4VParticleChange::GetDebugFlag() const -{ - return debugFlag; -} - -inline - void G4VParticleChange::SetSecondaryWeightByProcess(G4bool flag) -{ - fSetSecondaryWeightByProcess = flag; -} - -inline - G4bool G4VParticleChange::IsSecondaryWeightSetByProcess() const -{ - return fSetSecondaryWeightByProcess; -} - -inline - void G4VParticleChange::ProposeParentWeight(G4double w) -{ - theParentWeight = w; -} - -inline - void G4VParticleChange::SetParentWeightByProcess(G4bool flag) -{ - fSetParentWeightByProcess = flag; -} - -inline - G4bool G4VParticleChange::IsParentWeightSetByProcess() const -{ - return fSetParentWeightByProcess; -} - -// Following methods will be removed in release 7.0 -inline - void G4VParticleChange::SetStatusChange(G4TrackStatus aStatus) -{ - ProposeTrackStatus(aStatus); -} - -inline - G4TrackStatus G4VParticleChange::GetStatusChange() const -{ - return GetTrackStatus(); -} - -inline -void G4VParticleChange::SetSteppingControl(G4SteppingControl StepControlFlag) -{ - ProposeSteppingControl(StepControlFlag); -} - -inline - void G4VParticleChange::SetLocalEnergyDeposit(G4double anEnergyPart) -{ - ProposeLocalEnergyDeposit(anEnergyPart); -} - - -inline - void G4VParticleChange::SetTrueStepLength(G4double aLength) -{ - ProposeTrueStepLength(aLength); -} - -inline - void G4VParticleChange::SetParentWeight(G4double w) -{ - ProposeParentWeight(w); -} - diff --git a/geant4/LEMuSR/G4Modified/track/include/G4VUserTrackInformation.hh b/geant4/LEMuSR/G4Modified/track/include/G4VUserTrackInformation.hh deleted file mode 100644 index 77f22e8..0000000 --- a/geant4/LEMuSR/G4Modified/track/include/G4VUserTrackInformation.hh +++ /dev/null @@ -1,67 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VUserTrackInformation.hh,v 1.4 2003/05/09 20:42:27 asaim Exp $ -// GEANT4 tag $Name: geant4-05-01-ref-02 $ -// -// -//--------------------------------------------------------------- -// -// G4VUserTrackInformation -// -// Class Description: -// -// Abstract class which the user can derive his/her own concrete -// class for toring user's information associating with a G4Track -// class object. -// -// It is user's responsibility -// 1) Construct a concrete class object and set the pointer to -// proper G4Track object -// 2) Concrete class derived from this class is expected to use G4Allocator -// for memory management or something equivarent for performance reason -// -// To set a pointer of a concrete class object to G4Track in -// G4UserTrackingAction concrete implementation, given the G4Track -// object is available only by "pointer to const", SetUserTrackInformation() -// method of G4TrackingManager is available. -// -// The concrete class object is deleted by Geant4 kernel when -// associated G4Track object is deleted. - - -#ifndef G4VUserTrackInformation_H -#define G4VUserTrackInformation_H 1 - -class G4VUserTrackInformation -{ - public: - G4VUserTrackInformation() {;} - virtual ~G4VUserTrackInformation() {;} - - public: - virtual void Print() const = 0; -}; - -#endif - diff --git a/geant4/LEMuSR/G4Modified/track/src/CVS/Entries b/geant4/LEMuSR/G4Modified/track/src/CVS/Entries deleted file mode 100644 index 2a775ef..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/CVS/Entries +++ /dev/null @@ -1,10 +0,0 @@ -/G4ParticleChangeForDecay.cc/1.9/Sat Nov 1 03:24:48 2003//Tgeant4-06-02-ref-01 -/G4ParticleChangeForMSC.cc/1.11/Sat Jan 31 02:43:51 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForTransport.cc/1.16/Sat Jan 31 02:43:51 2004//Tgeant4-06-02-ref-01 -/G4Step.cc/1.5/Wed Jul 11 10:08:39 2001//Tgeant4-06-02-ref-01 -/G4StepPoint.cc/1.9/Wed Apr 9 00:20:49 2003//Tgeant4-06-02-ref-01 -/G4VParticleChange.cc/1.16/Sat Jan 31 02:43:51 2004//Tgeant4-06-02-ref-01 -/G4ParticleChange.cc/1.26/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4ParticleChangeForLoss.cc/1.13/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -/G4Track.cc/1.21/Thu Jul 29 19:08:22 2004//Tgeant4-06-02-ref-01 -D diff --git a/geant4/LEMuSR/G4Modified/track/src/CVS/Repository b/geant4/LEMuSR/G4Modified/track/src/CVS/Repository deleted file mode 100644 index 33dd060..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -geant4/source/track/src diff --git a/geant4/LEMuSR/G4Modified/track/src/CVS/Root b/geant4/LEMuSR/G4Modified/track/src/CVS/Root deleted file mode 100644 index 5e16d87..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:gum@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs diff --git a/geant4/LEMuSR/G4Modified/track/src/CVS/Tag b/geant4/LEMuSR/G4Modified/track/src/CVS/Tag deleted file mode 100644 index ed56d6f..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Ngeant4-06-02-ref-01 diff --git a/geant4/LEMuSR/G4Modified/track/src/G4ParticleChange.cc b/geant4/LEMuSR/G4Modified/track/src/G4ParticleChange.cc deleted file mode 100644 index 531a86d..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4ParticleChange.cc +++ /dev/null @@ -1,517 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChange.cc,v 1.26 2004/05/08 15:28:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// Change default debug flag to false 10 May. 1998 H.Kurahige -// Add Track weight 12 Nov. 1998 H.Kurashige -// Activate CheckIt method for VERBOSE mode 14 Dec. 1998 H.Kurashige -// Modified CheckIt method for time 9 Feb. 1999 H.Kurashige -// -------------------------------------------------------------- - -#include "G4ParticleChange.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4TrackFastVector.hh" -#include "G4DynamicParticle.hh" -#include "G4ExceptionSeverity.hh" - - -G4ParticleChange::G4ParticleChange():G4VParticleChange() -{ -} - -G4ParticleChange::~G4ParticleChange() -{ -#ifdef G4VERBOSE - if (verboseLevel>2) { - G4cout << "G4ParticleChange::~G4ParticleChange() " << G4endl; - } -#endif -} - -// copy constructor -G4ParticleChange::G4ParticleChange(const G4ParticleChange &right): G4VParticleChange(right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChange:: copy constructor is called " << G4endl; - } - theMomentumDirectionChange = right.theMomentumDirectionChange; - thePolarizationChange = right.thePolarizationChange; - thePositionChange = right.thePositionChange; - theTimeChange = right.theTimeChange; - theEnergyChange = right.theEnergyChange; - theMassChange = right.theMassChange; - theChargeChange = right.theChargeChange; - theWeightChange = right.theWeightChange; - theProperTimeChange = right.theProperTimeChange; -} - -// assignemnt operator -G4ParticleChange & G4ParticleChange::operator=(const G4ParticleChange &right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChange:: assignment operator is called " << G4endl; - } - if (this != &right) - { - theListOfSecondaries = right.theListOfSecondaries; - theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; - theNumberOfSecondaries = right.theNumberOfSecondaries; - theStatusChange = right.theStatusChange; - - theMomentumDirectionChange = right.theMomentumDirectionChange; - thePolarizationChange = right.thePolarizationChange; - thePositionChange = right.thePositionChange; - theTimeChange = right.theTimeChange; - theEnergyChange = right.theEnergyChange; - theMassChange = right.theMassChange; - theChargeChange = right.theChargeChange; - theWeightChange = right.theWeightChange; - - theTrueStepLength = right.theTrueStepLength; - theLocalEnergyDeposit = right.theLocalEnergyDeposit; - theSteppingControlFlag = right.theSteppingControlFlag; - } - return *this; -} - -G4bool G4ParticleChange::operator==(const G4ParticleChange &right) const -{ - return ((G4VParticleChange *)this == (G4VParticleChange *) &right); -} - -G4bool G4ParticleChange::operator!=(const G4ParticleChange &right) const -{ - return ((G4VParticleChange *)this != (G4VParticleChange *) &right); -} - - -//---------------------------------------------------------------- -// methods for handling secondaries -// - -void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, - G4bool IsGoodForTracking ) -{ - // create track - G4Track* aTrack = new G4Track(aParticle, theTimeChange, thePositionChange); - - // set IsGoodGorTrackingFlag - if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); - - // Touchable handle is copied to keep the pointer - aTrack->SetTouchableHandle(theCurrentTrack->GetTouchableHandle()); - - // add a secondary - G4VParticleChange::AddSecondary(aTrack); -} - -void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, - G4ThreeVector newPosition, - G4bool IsGoodForTracking ) -{ - // create track - G4Track* aTrack = new G4Track(aParticle, theTimeChange, newPosition); - - // set IsGoodGorTrackingFlag - if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); - - // Touchable is a temporary object, so you cannot keep the pointer - aTrack->SetTouchableHandle((G4VTouchable*)0); - - // add a secondary - G4VParticleChange::AddSecondary(aTrack); -} - -void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, - G4double newTime, - G4bool IsGoodForTracking ) -{ - // create track - G4Track* aTrack = new G4Track(aParticle, newTime, thePositionChange); - - // set IsGoodGorTrackingFlag - if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); - - // Touchable handle is copied to keep the pointer - aTrack->SetTouchableHandle(theCurrentTrack->GetTouchableHandle()); - - // add a secondary - G4VParticleChange::AddSecondary(aTrack); -} - -void G4ParticleChange::AddSecondary(G4Track* aTrack) -{ - // add a secondary - G4VParticleChange::AddSecondary(aTrack); -} - -//---------------------------------------------------------------- -// functions for Initialization -// - -void G4ParticleChange::Initialize(const G4Track& track) -{ - // use base class's method at first - G4VParticleChange::Initialize(track); - theCurrentTrack= &track; - - // set Energy/Momentum etc. equal to those of the parent particle - const G4DynamicParticle* pParticle = track.GetDynamicParticle(); - theEnergyChange = pParticle->GetKineticEnergy(); - theMomentumDirectionChange = pParticle->GetMomentumDirection(); - thePolarizationChange = pParticle->GetPolarization(); - theProperTimeChange = pParticle->GetProperTime(); - - // Set mass/charge of DynamicParticle - theMassChange = pParticle->GetMass(); - theChargeChange = pParticle->GetCharge(); - - // set Position/Time etc. equal to those of the parent track - thePositionChange = track.GetPosition(); - theTimeChange = track.GetGlobalTime(); - - theWeightChange = track.GetWeight(); -} - -//---------------------------------------------------------------- -// methods for updating G4Step -// - -G4Step* G4ParticleChange::UpdateStepForAlongStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the - // particle relative to the initial state at the beginning - // of the Step, i.e., based on information of G4Track (or - // equivalently the PreStepPoint). - // So, the differences (delta) between these two states have to be - // calculated and be accumulated in PostStepPoint. - - // Take note that the return type of GetMomentumDirectionChange is a - // pointer to G4ParticleMometum. Also it is a normalized - // momentum vector. - - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - G4double mass = theMassChange; - - // Set Mass/Charge - pPostStepPoint->SetMass(theMassChange); - pPostStepPoint->SetCharge(theChargeChange); - - // calculate new kinetic energy - G4double energy = pPostStepPoint->GetKineticEnergy() - + (theEnergyChange - pPreStepPoint->GetKineticEnergy()); - - // update kinetic energy and momentum direction - if (energy > 0.0) { - // calculate new momentum - G4ThreeVector pMomentum = pPostStepPoint->GetMomentum() - + ( CalcMomentum(theEnergyChange, theMomentumDirectionChange, mass) - - pPreStepPoint->GetMomentum()); - G4double tMomentum = pMomentum.mag(); - G4ThreeVector direction(1.0,0.0,0.0); - if( tMomentum > 0. ){ - G4double inv_Momentum= 1.0 / tMomentum; - direction= pMomentum * inv_Momentum; - } - pPostStepPoint->SetMomentumDirection(direction); - pPostStepPoint->SetKineticEnergy( energy ); - } else { - // stop case - //pPostStepPoint->SetMomentumDirection(G4ThreeVector(1., 0., 0.)); - pPostStepPoint->SetKineticEnergy(0.0); - } - - // update polarization - pPostStepPoint->AddPolarization( thePolarizationChange - - pPreStepPoint->GetPolarization()); - - // update position and time - pPostStepPoint->AddPosition( thePositionChange - - pPreStepPoint->GetPosition() ); - pPostStepPoint->AddGlobalTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - pPostStepPoint->AddLocalTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - pPostStepPoint->AddProperTime( theProperTimeChange - - pPreStepPoint->GetProperTime()); - - // update weight - G4double newWeight= theWeightChange/(pPreStepPoint->GetWeight())*(pPostStepPoint->GetWeight()); - pPostStepPoint->SetWeight( newWeight ); - -#ifdef G4VERBOSE - G4Track* aTrack = pStep->GetTrack(); - if (debugFlag) CheckIt(*aTrack); -#endif - - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - -G4Step* G4ParticleChange::UpdateStepForPostStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the particle - - // Take note that the return type of GetMomentumChange is a - // pointer to G4ParticleMometum. Also it is a normalized - // momentum vector. - - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - G4Track* aTrack = pStep->GetTrack(); - - // Set Mass/Charge - pPostStepPoint->SetMass(theMassChange); - pPostStepPoint->SetCharge(theChargeChange); - - // update kinetic energy and momentum direction - pPostStepPoint->SetMomentumDirection(theMomentumDirectionChange); - pPostStepPoint->SetKineticEnergy( theEnergyChange ); - - // update polarization - pPostStepPoint->SetPolarization( thePolarizationChange ); - - // update position and time - pPostStepPoint->SetPosition( thePositionChange ); - pPostStepPoint->SetGlobalTime( theTimeChange ); - pPostStepPoint->AddLocalTime( theTimeChange - - aTrack->GetGlobalTime()); - pPostStepPoint->SetProperTime( theProperTimeChange ); - - // update weight - pPostStepPoint->SetWeight( theWeightChange ); - -#ifdef G4VERBOSE - if (debugFlag) CheckIt(*aTrack); -#endif - - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - - -G4Step* G4ParticleChange::UpdateStepForAtRest(G4Step* pStep) -{ - // A physics process always calculates the final state of the particle - - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - G4Track* aTrack = pStep->GetTrack(); - - // Set Mass/Charge - pPostStepPoint->SetMass(theMassChange); - pPostStepPoint->SetCharge(theChargeChange); - - // update kinetic energy and momentum direction - pPostStepPoint->SetMomentumDirection(theMomentumDirectionChange); - pPostStepPoint->SetKineticEnergy( theEnergyChange ); - - // update polarization - pPostStepPoint->SetPolarization( thePolarizationChange ); - - // update position and time - pPostStepPoint->SetPosition( thePositionChange ); - pPostStepPoint->SetGlobalTime( theTimeChange ); - pPostStepPoint->AddLocalTime( theTimeChange - - aTrack->GetGlobalTime()); - pPostStepPoint->SetProperTime( theProperTimeChange ); - - // update weight - pPostStepPoint->SetWeight( theWeightChange ); - -#ifdef G4VERBOSE - if (debugFlag) CheckIt(*aTrack); -#endif - - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - -//---------------------------------------------------------------- -// methods for printing messages -// - -void G4ParticleChange::DumpInfo() const -{ -// use base-class DumpInfo - G4VParticleChange::DumpInfo(); - - G4cout.precision(3); - - G4cout << " Mass (GeV) : " - << std::setw(20) << theMassChange/GeV - << G4endl; - G4cout << " Charge (eplus) : " - << std::setw(20) << theChargeChange/eplus - << G4endl; - G4cout << " Position - x (mm) : " - << std::setw(20) << thePositionChange.x()/mm - << G4endl; - G4cout << " Position - y (mm) : " - << std::setw(20) << thePositionChange.y()/mm - << G4endl; - G4cout << " Position - z (mm) : " - << std::setw(20) << thePositionChange.z()/mm - << G4endl; - G4cout << " Time (ns) : " - << std::setw(20) << theTimeChange/ns - << G4endl; - G4cout << " Proper Time (ns) : " - << std::setw(20) << theProperTimeChange/ns - << G4endl; - G4cout << " Momentum Direct - x : " - << std::setw(20) << theMomentumDirectionChange.x() - << G4endl; - G4cout << " Momentum Direct - y : " - << std::setw(20) << theMomentumDirectionChange.y() - << G4endl; - G4cout << " Momentum Direct - z : " - << std::setw(20) << theMomentumDirectionChange.z() - << G4endl; - G4cout << " Kinetic Energy (MeV): " - << std::setw(20) << theEnergyChange/MeV - << G4endl; - G4cout << " Polarization - x : " - << std::setw(20) << thePolarizationChange.x() - << G4endl; - G4cout << " Polarization - y : " - << std::setw(20) << thePolarizationChange.y() - << G4endl; - G4cout << " Polarization - z : " - << std::setw(20) << thePolarizationChange.z() - << G4endl; - G4cout << " Track Weight : " - << std::setw(20) << theWeightChange - << G4endl; -} - -G4bool G4ParticleChange::CheckIt(const G4Track& aTrack) -{ - G4bool exitWithError = false; - G4double accuracy; - - // No check in case of "fStopAndKill" - if (GetTrackStatus() == fStopAndKill ) { - return G4VParticleChange::CheckIt(aTrack); - } - - // MomentumDirection should be unit vector - G4bool itsOKforMomentum = true; - if ( theEnergyChange >0.) { - accuracy = abs(theMomentumDirectionChange.mag2()-1.0); - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChange::CheckIt : "; - G4cout << "the Momentum Change is not unit vector !!" << G4endl; - G4cout << " Difference: " << accuracy << G4endl; -#endif - itsOKforMomentum = false; - if (accuracy > accuracyForException) exitWithError = true; - } - } - - // Both global and proper time should not go back - G4bool itsOKforGlobalTime = true; - accuracy = (aTrack.GetGlobalTime()- theTimeChange)/ns; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChange::CheckIt : "; - G4cout << "the global time goes back !!" << G4endl; - G4cout << " Difference: " << accuracy << "[ns] " < accuracyForException) exitWithError = true; - } - - G4bool itsOKforProperTime = true; - accuracy = (aTrack.GetProperTime() - theProperTimeChange )/ns; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChange::CheckIt : "; - G4cout << "the proper time goes back !!" << G4endl; - G4cout << " Difference: " << accuracy << "[ns] " < accuracyForException) exitWithError = true; - } - - // Kinetic Energy should not be negative - G4bool itsOKforEnergy = true; - accuracy = -1.0*theEnergyChange/MeV; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChange::CheckIt : "; - G4cout << "the kinetic energy is negative !!" << G4endl; - G4cout << " Difference: " << accuracy << "[MeV] " < accuracyForException) exitWithError = true; - } - - G4bool itsOK = itsOKforMomentum && itsOKforEnergy && itsOKforProperTime && itsOKforGlobalTime; - // dump out information of this particle change -#ifdef G4VERBOSE - if (!itsOK) { - G4cout << " G4ParticleChange::CheckIt " <2) { - G4cout << "G4ParticleChangeForDecay::G4ParticleChangeForDecay() " << G4endl; - } -#endif -} - -G4ParticleChangeForDecay::~G4ParticleChangeForDecay() -{ -#ifdef G4VERBOSE - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForDecay::~G4ParticleChangeForDecay() " << G4endl; - } -#endif -} - -// copy and assignment operators are implemented as "shallow copy" -G4ParticleChangeForDecay::G4ParticleChangeForDecay(const G4ParticleChangeForDecay &right): G4VParticleChange(right) -{ - theTimeChange = right.theTimeChange; - thePolarizationChange = right.thePolarizationChange; -} - - -G4ParticleChangeForDecay & G4ParticleChangeForDecay::operator=(const G4ParticleChangeForDecay &right) -{ - if (this != &right){ - theListOfSecondaries = right.theListOfSecondaries; - theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; - theNumberOfSecondaries = right.theNumberOfSecondaries; - theStatusChange = right.theStatusChange; - theTrueStepLength = right.theTrueStepLength; - theLocalEnergyDeposit = right.theLocalEnergyDeposit; - theSteppingControlFlag = right.theSteppingControlFlag; - - theTimeChange = right.theTimeChange; - thePolarizationChange = right.thePolarizationChange; - } - return *this; -} - -G4bool G4ParticleChangeForDecay::operator==(const G4ParticleChangeForDecay &right) const -{ - return ((G4VParticleChange *)this == (G4VParticleChange *) &right); -} - -G4bool G4ParticleChangeForDecay::operator!=(const G4ParticleChangeForDecay &right) const -{ - return ((G4VParticleChange *)this != (G4VParticleChange *) &right); -} - -//---------------------------------------------------------------- -// methods for Initialization -// -void G4ParticleChangeForDecay::Initialize(const G4Track& track) -{ - // use base class's method at first - G4VParticleChange::Initialize(track); - - const G4DynamicParticle* pParticle = track.GetDynamicParticle(); - - // set Time e equal to those of the parent track - theTimeChange = track.GetGlobalTime(); - - // set the Polarization equal to those of the parent track - thePolarizationChange = pParticle->GetPolarization(); -} - -//---------------------------------------------------------------- -// methods for updating G4Step -// - -G4Step* G4ParticleChangeForDecay::UpdateStepForPostStep(G4Step* pStep) -{ - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - - -G4Step* G4ParticleChangeForDecay::UpdateStepForAtRest(G4Step* pStep) -{ - // A physics process always calculates the final state of the particle - - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - - // update polarization - pPostStepPoint->SetPolarization( thePolarizationChange ); - - // update time - pPostStepPoint->SetGlobalTime( theTimeChange ); - pPostStepPoint->AddLocalTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - pPostStepPoint->AddProperTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - - -#ifdef G4VERBOSE - G4Track* aTrack = pStep->GetTrack(); - if (debugFlag) CheckIt(*aTrack); -#endif - - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - -void G4ParticleChangeForDecay::DumpInfo() const -{ -// Show header - G4VParticleChange::DumpInfo(); - - G4cout.precision(3); - G4cout << " Time (ns) : " - << std::setw(20) << theTimeChange/ns - << G4endl; -} - -G4bool G4ParticleChangeForDecay::CheckIt(const G4Track& aTrack) -{ - G4bool exitWithError = false; - - G4double accuracy; - - // global time should not go back - G4bool itsOK =true; - accuracy = -1.0*(theTimeChange - aTrack.GetGlobalTime())/ns; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChangeForDecay::CheckIt : "; - G4cout << "the global time goes back !!" << G4endl; - G4cout << " Difference: " << accuracy << "[ns] " < accuracyForException) exitWithError = true; - } - - // dump out information of this particle change -#ifdef G4VERBOSE - if (!itsOK) { - G4cout << " G4ParticleChangeForDecay::CheckIt " <2) { - G4cout << "G4ParticleChangeForLoss::G4ParticleChangeForLoss() " << G4endl; - } -#endif -} - -G4ParticleChangeForLoss::~G4ParticleChangeForLoss() -{ -#ifdef G4VERBOSE - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForLoss::~G4ParticleChangeForLoss() " << G4endl; - } -#endif -} - -G4ParticleChangeForLoss::G4ParticleChangeForLoss( - const G4ParticleChangeForLoss &right): G4VParticleChange(right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChangeForLoss:: copy constructor is called " << G4endl; - } - currentTrack = right.currentTrack; - proposedKinEnergy = right.proposedKinEnergy; - currentCharge = right.currentCharge; - //theProposedWeight = right.theProposedWeight; - proposedMomentumDirection = right.proposedMomentumDirection; -} - -// assignment operator -G4ParticleChangeForLoss & G4ParticleChangeForLoss::operator=( - const G4ParticleChangeForLoss &right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChangeForLoss:: assignment operator is called " << G4endl; - } - if (this != &right) - { - theListOfSecondaries = right.theListOfSecondaries; - theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; - theNumberOfSecondaries = right.theNumberOfSecondaries; - theStatusChange = right.theStatusChange; - theLocalEnergyDeposit = right.theLocalEnergyDeposit; - theSteppingControlFlag = right.theSteppingControlFlag; - - currentTrack = right.currentTrack; - proposedKinEnergy = right.proposedKinEnergy; - currentCharge = right.currentCharge; - //theProposedWeight = right.theProposedWeight; - proposedMomentumDirection = right.proposedMomentumDirection; - } - return *this; -} - -//---------------------------------------------------------------- -// methods for updating G4Step -// - -G4Step* G4ParticleChangeForLoss::UpdateStepForAlongStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the - // particle relative to the initial state at the beginning - // of the Step, i.e., based on information of G4Track (or - // equivalently the PreStepPoint). - // So, the differences (delta) between these two states have to be - // calculated and be accumulated in PostStepPoint. - - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - - // calculate new kinetic energy - G4double kinEnergy = pPostStepPoint->GetKineticEnergy() - + (proposedKinEnergy - pPreStepPoint->GetKineticEnergy()); - - // update kinetic energy and momentum direction - if (kinEnergy < 0.0) { - theLocalEnergyDeposit += kinEnergy; - kinEnergy = 0.0; - } - - pPostStepPoint->SetKineticEnergy( kinEnergy ); - pPostStepPoint->SetCharge( currentCharge ); - - // update weight - // this feature is commented out, it should be overwritten in case - // if energy loss processes will use biasing - // G4double newWeight = theProposedWeight/(pPreStepPoint->GetWeight())*(pPostStepPoint->GetWeight()); - // pPostStepPoint->SetWeight( newWeight ); - - -// Not necessary to check now -//#ifdef G4VERBOSE -// if (debugFlag) CheckIt(*aTrack); -//#endif - - // Update the G4Step specific attributes - pStep->AddTotalEnergyDeposit( theLocalEnergyDeposit ); - return pStep; -} - -G4Step* G4ParticleChangeForLoss::UpdateStepForPostStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the - // particle relative to the initial state at the beginning - // of the Step, i.e., based on information of G4Track (or - // equivalently the PreStepPoint). - // So, the differences (delta) between these two states have to be - // calculated and be accumulated in PostStepPoint. - - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - - pPostStepPoint->SetKineticEnergy( proposedKinEnergy ); - pPostStepPoint->SetCharge( currentCharge ); - pPostStepPoint->SetMomentumDirection( proposedMomentumDirection ); - - // update weight - // this feature is commented out, it should be overwritten in case - // if energy loss processes will use biasing - // pPostStepPoint->SetWeight( theProposedWeight ); - -// Not necessary to check now -//#ifdef G4VERBOSE -// if (debugFlag) CheckIt(*aTrack); -//#endif - - // Update the G4Step specific attributes - pStep->AddTotalEnergyDeposit( theLocalEnergyDeposit ); - return pStep; -} - -//---------------------------------------------------------------- -// methods for printing messages -// - -void G4ParticleChangeForLoss::DumpInfo() const -{ -// use base-class DumpInfo - G4VParticleChange::DumpInfo(); - - G4cout.precision(3); - G4cout << " Charge (eplus) : " - << std::setw(20) << currentCharge/eplus - << G4endl; - G4cout << " Kinetic Energy (MeV): " - << std::setw(20) << proposedKinEnergy/MeV - << G4endl; - G4cout << " Momentum Direct - x : " - << std::setw(20) << proposedMomentumDirection.x() - << G4endl; - G4cout << " Momentum Direct - y : " - << std::setw(20) << proposedMomentumDirection.y() - << G4endl; - G4cout << " Momentum Direct - z : " - << std::setw(20) << proposedMomentumDirection.z() - << G4endl; -} - -G4bool G4ParticleChangeForLoss::CheckIt(const G4Track& aTrack) -{ - G4bool itsOK = true; - G4bool exitWithError = false; - - G4double accuracy; - - // Energy should not be lager than initial value - accuracy = ( proposedKinEnergy - aTrack.GetKineticEnergy())/MeV; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << "G4ParticleChangeForLoss::CheckIt: "; - G4cout << "KinEnergy become larger than the initial value!" << G4endl; - G4cout << " Difference: " << accuracy << "[MeV] " < accuracyForException) exitWithError = true; - } - - // dump out information of this particle change -#ifdef G4VERBOSE - if (!itsOK) { - G4cout << "G4ParticleChangeForLoss::CheckIt " << G4endl; - DumpInfo(); - } -#endif - - // Exit with error - if (exitWithError) { - G4Exception("G4ParticleChangeForLoss::CheckIt", - "400", - EventMustBeAborted, - "energy was illegal"); - } - - //correction - if (!itsOK) { - proposedKinEnergy = aTrack.GetKineticEnergy(); - } - - itsOK = (itsOK) && G4VParticleChange::CheckIt(aTrack); - return itsOK; -} diff --git a/geant4/LEMuSR/G4Modified/track/src/G4ParticleChangeForMSC.cc b/geant4/LEMuSR/G4Modified/track/src/G4ParticleChangeForMSC.cc deleted file mode 100644 index 762f5c7..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4ParticleChangeForMSC.cc +++ /dev/null @@ -1,202 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4ParticleChangeForMSC.cc,v 1.11 2004/01/20 15:29:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-06-00-ref-01 $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// Update for model variant of msc 16 Jan 2004 V.Ivanchenko -// -------------------------------------------------------------- - -#include "G4ParticleChangeForMSC.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4DynamicParticle.hh" -#include "G4ExceptionSeverity.hh" - -G4ParticleChangeForMSC::G4ParticleChangeForMSC():G4VParticleChange() -{ -#ifdef G4VERBOSE - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForMSC::G4ParticleChangeForMSC() " << G4endl; - } -#endif -} - -G4ParticleChangeForMSC::~G4ParticleChangeForMSC() -{ -#ifdef G4VERBOSE - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForMSC::~G4ParticleChangeForMSC() " << G4endl; - } -#endif -} - -G4ParticleChangeForMSC::G4ParticleChangeForMSC( - const G4ParticleChangeForMSC &right): G4VParticleChange(right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChangeForMSC:: copy constructor is called " << G4endl; - } - theMomentumDirection = right.theMomentumDirection; - thePosition = right.thePosition; -} - -// assignment operator -G4ParticleChangeForMSC & G4ParticleChangeForMSC::operator=( - const G4ParticleChangeForMSC &right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChangeForMSC:: assignment operator is called " << G4endl; - } - if (this != &right) - { - theListOfSecondaries = right.theListOfSecondaries; - theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; - theNumberOfSecondaries = right.theNumberOfSecondaries; - theStatusChange = right.theStatusChange; - theLocalEnergyDeposit = right.theLocalEnergyDeposit; - theSteppingControlFlag = right.theSteppingControlFlag; - theTrueStepLength = right.theTrueStepLength; - - theMomentumDirection = right.theMomentumDirection; - thePosition = right.thePosition; - } - return *this; -} - -//---------------------------------------------------------------- -// methods for updating G4Step -// - -G4Step* G4ParticleChangeForMSC::UpdateStepForAlongStep(G4Step* pStep) -{ - // Update the G4Step specific attributes - pStep->SetStepLength(theTrueStepLength); - theStatusChange = pStep->GetTrack()->GetTrackStatus(); - return pStep; -} - -G4Step* G4ParticleChangeForMSC::UpdateStepForPostStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the particle - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - - // update momentum direction - pPostStepPoint->SetMomentumDirection(theMomentumDirection); - - // update position - pPostStepPoint->SetPosition( thePosition ); - - // Update the G4Step specific attributes - return pStep; -} - - -//---------------------------------------------------------------- -// methods for printing messages -// - -void G4ParticleChangeForMSC::DumpInfo() const -{ -// use base-class DumpInfo - G4VParticleChange::DumpInfo(); - - G4cout.precision(3); - G4cout << " Position - x (mm) : " - << std::setw(20) << thePosition.x()/mm - << G4endl; - G4cout << " Position - y (mm) : " - << std::setw(20) << thePosition.y()/mm - << G4endl; - G4cout << " Position - z (mm) : " - << std::setw(20) << thePosition.z()/mm - << G4endl; - G4cout << " Momentum Direct - x : " - << std::setw(20) << theMomentumDirection.x() - << G4endl; - G4cout << " Momentum Direct - y : " - << std::setw(20) << theMomentumDirection.y() - << G4endl; - G4cout << " Momentum Direct - z : " - << std::setw(20) << theMomentumDirection.z() - << G4endl; -} - - -G4bool G4ParticleChangeForMSC::CheckIt(const G4Track& aTrack) -{ - G4bool itsOK = true; - G4bool exitWithError = false; - - G4double accuracy; - - // check - - // MomentumDirection should be unit vector - accuracy = abs(theMomentumDirection.mag2()-1.0); - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4ParticleChangeForMSC::CheckIt : "; - G4cout << "the Momentum Change is not unit vector !!" << G4endl; - G4cout << " Difference: " << accuracy << G4endl; -#endif - itsOK = false; - if (accuracy > accuracyForException) exitWithError = true; - } - - // dump out information of this particle change -#ifdef G4VERBOSE - if (!itsOK) { - G4cout << " G4ParticleChangeForMSC::CheckIt " <0 19 Jan. 2004 V.Ivanchenko -// -------------------------------------------------------------- - -#include "G4ParticleChangeForTransport.hh" -#include "G4TouchableHandle.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4TrackFastVector.hh" -#include "G4DynamicParticle.hh" - -G4ParticleChangeForTransport::G4ParticleChangeForTransport():G4ParticleChange() -{ - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForTransport::G4ParticleChangeForTransport() " << G4endl; - } -} - -G4ParticleChangeForTransport::~G4ParticleChangeForTransport() -{ - if (verboseLevel>2) { - G4cout << "G4ParticleChangeForTransport::~G4ParticleChangeForTransport() " << G4endl; - } -} - - -G4ParticleChangeForTransport::G4ParticleChangeForTransport(const G4ParticleChangeForTransport &right):G4ParticleChange(right) -{ - if (verboseLevel>0) { - G4cout << "G4ParticleChangeForTransport:: copy constructor is called " << G4endl; - } - theTouchableHandle = right.theTouchableHandle; -} - -// assignemnt operator -G4ParticleChangeForTransport & G4ParticleChangeForTransport::operator=(const G4ParticleChangeForTransport &right) -{ - if (verboseLevel>1) { - G4cout << "G4ParticleChangeForTransport:: assignment operator is called " << G4endl; - } - if (this != &right) - { - theListOfSecondaries = right.theListOfSecondaries; - theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; - theNumberOfSecondaries = right.theNumberOfSecondaries; - theStatusChange = right.theStatusChange; - theTouchableHandle = right.theTouchableHandle; - theMaterialChange = right.theMaterialChange; - theMaterialCutsCoupleChange = right.theMaterialCutsCoupleChange; - theMomentumDirectionChange = right.theMomentumDirectionChange; - thePolarizationChange = right.thePolarizationChange; - thePositionChange = right.thePositionChange; - theTimeChange = right.theTimeChange; - theEnergyChange = right.theEnergyChange; - theTrueStepLength = right.theTrueStepLength; - theLocalEnergyDeposit = right.theLocalEnergyDeposit; - theSteppingControlFlag = right.theSteppingControlFlag; - } - return *this; -} - -//---------------------------------------------------------------- -// methods for updating G4Step -// - -G4Step* G4ParticleChangeForTransport::UpdateStepForAtRest(G4Step* pStep) -{ - // Nothing happens for AtRestDoIt - if (verboseLevel>0) { - G4cout << "G4ParticleChangeForTransport::UpdateStepForAtRest() is called" << G4endl; - G4cout << " Nothing happens for this method " << G4endl; - } - // Update the G4Step specific attributes - return UpdateStepInfo(pStep); -} - - -G4Step* G4ParticleChangeForTransport::UpdateStepForAlongStep(G4Step* pStep) -{ - // Smooth curved tajectory representation: let the Step know about - // the auxiliary trajectory points (jacek 30/10/2002) - pStep->SetPointerToVectorOfAuxiliaryPoints(fpVectorOfAuxiliaryPointsPointer); - - // copy of G4ParticleChange::UpdateStepForAlongStep - // i.e. no effect for touchable - - // A physics process always calculates the final state of the - // particle relative to the initial state at the beginning - // of the Step, i.e., based on information of G4Track (or - // equivalently the PreStepPoint). - // So, the differences (delta) between these two states have to be - // calculated and be accumulated in PostStepPoint. - - // Take note that the return type of GetMomentumChange is a - // pointer to G4ThreeVector. Also it is a normalized - // momentum vector. - - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - G4Track* aTrack = pStep->GetTrack(); - G4double mass = aTrack->GetDynamicParticle()->GetMass(); - - // uodate kinetic energy - // now assume that no energy change in transportation - // However it is not true in electric fields - // Case for changing energy will be implemented in future - - - // update momentum direction and energy - if (isMomentumChanged) { - G4double energy; - energy= pPostStepPoint->GetKineticEnergy() - + (theEnergyChange - pPreStepPoint->GetKineticEnergy()); - - // calculate new momentum - G4ThreeVector pMomentum = pPostStepPoint->GetMomentum() - + ( CalcMomentum(theEnergyChange, theMomentumDirectionChange, mass) - - pPreStepPoint->GetMomentum()); - G4double tMomentum = pMomentum.mag(); - G4ThreeVector direction(1.0,0.0,0.0); - if( tMomentum > 0. ){ - G4double inv_Momentum= 1.0 / tMomentum; - direction= pMomentum * inv_Momentum; - } - pPostStepPoint->SetMomentumDirection(direction); - pPostStepPoint->SetKineticEnergy( energy ); - } - - // stop case should not occur - //pPostStepPoint->SetMomentumDirection(G4ThreeVector(1., 0., 0.)); - - - // update polarization - pPostStepPoint->AddPolarization( thePolarizationChange - - pPreStepPoint->GetPolarization()); - - // update position and time - pPostStepPoint->AddPosition( thePositionChange - - pPreStepPoint->GetPosition() ); - pPostStepPoint->AddGlobalTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - pPostStepPoint->AddLocalTime( theTimeChange - - pPreStepPoint->GetGlobalTime()); - pPostStepPoint->AddProperTime( theProperTimeChange - - pPreStepPoint->GetProperTime()); - -#ifdef G4VERBOSE - if (debugFlag) CheckIt(*aTrack); -#endif - - // Update the G4Step specific attributes - //pStep->SetStepLength( theTrueStepLength ); - // pStep->AddTotalEnergyDeposit( theLocalEnergyDeposit ); - pStep->SetControlFlag( theSteppingControlFlag ); - return pStep; - // return UpdateStepInfo(pStep); -} - -G4Step* G4ParticleChangeForTransport::UpdateStepForPostStep(G4Step* pStep) -{ - // A physics process always calculates the final state of the particle - - // Change volume if any kinetic energy remanes - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - if(pPostStepPoint->GetKineticEnergy() > 0.0) { - - // update next touchable - // (touchable can be changed only at PostStepDoIt) - pPostStepPoint->SetTouchableHandle( theTouchableHandle ); - - pPostStepPoint->SetMaterial( theMaterialChange ); - pPostStepPoint->SetMaterialCutsCouple( theMaterialCutsCoupleChange ); - } - // It used to call base class's method - // - but this would copy uninitialised data members - // return G4ParticleChange::UpdateStepForPostStep(pStep); - - // Copying what the base class does would instead - // - also not useful - // return G4VParticleChange::UpdateStepInfo(pStep); - - return pStep; -} - -//---------------------------------------------------------------- -// methods for printing messages -// - -void G4ParticleChangeForTransport::DumpInfo() const -{ -// use base-class DumpInfo - G4ParticleChange::DumpInfo(); - - G4cout.precision(3); - G4cout << " Touchable (pointer) : " - << std::setw(20) << theTouchableHandle() - << G4endl; -} - - - - - - - - diff --git a/geant4/LEMuSR/G4Modified/track/src/G4Step.cc b/geant4/LEMuSR/G4Modified/track/src/G4Step.cc deleted file mode 100644 index 41203b2..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4Step.cc +++ /dev/null @@ -1,64 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Step.cc,v 1.5 2001/07/11 10:08:39 gunter Exp $ -// GEANT4 tag $Name: geant4-04-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4Step.cc -// -// Description: -// This class represents the Step of a particle tracked. -// It includes information of -// 1) List of Step points which compose the Step, -// 2) static information of particle which generated the -// Step, -// 3) trackID and parent particle ID of the Step, -// 4) termination condition of the Step, -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -// --------------------------------------------------------------- - -#include "G4Step.hh" - -//////////////// -G4Step::G4Step() -//////////////// -{ - fpPreStepPoint = new G4StepPoint(); - fpPostStepPoint = new G4StepPoint(); -} - -///////////////// -G4Step::~G4Step() -///////////////// -{ - delete fpPreStepPoint; - delete fpPostStepPoint; -} diff --git a/geant4/LEMuSR/G4Modified/track/src/G4StepPoint.cc b/geant4/LEMuSR/G4Modified/track/src/G4StepPoint.cc deleted file mode 100644 index a11f1e4..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4StepPoint.cc +++ /dev/null @@ -1,101 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4StepPoint.cc,v 1.9 2002/12/16 11:59:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-05-00-ref-03 $ -// -// -//--------------------------------------------------------------- -// -// G4StepPoint.cc -// -// Description: -// This class represents information associated with the -// each end of a Step like the space/time data of the -// particle. -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// -// --------------------------------------------------------------- - -#include "G4StepPoint.hh" - -////////////////////////// -G4StepPoint::G4StepPoint(): -////////////////////////// - fpTouchable(0), fpMaterial(0), fpMaterialCutsCouple(0), - fpProcessDefinedStep(0), fCharge(0.) -{ -} - -////////////////////////// -G4StepPoint::G4StepPoint(const G4StepPoint &right): -////////////////////////// - fPosition(right.fPosition), - fGlobalTime(right.fGlobalTime), - fLocalTime(right.fLocalTime), - fProperTime(right.fProperTime), - fMomentumDirection(right.fMomentumDirection), - fKineticEnergy(right.fKineticEnergy), - fVelocity(right.fVelocity), - fpTouchable(right.fpTouchable), - fpMaterial(right.fpMaterial), - fpMaterialCutsCouple(right.fpMaterialCutsCouple), - fSafety(right.fSafety), - fPolarization(right.fPolarization), - fStepStatus(right.fStepStatus), - fpProcessDefinedStep(right.fpProcessDefinedStep), - fMass(right.fMass), - fCharge(right.fCharge), - fWeight(right.fWeight) -{} - - -////////////////////////// -G4StepPoint & G4StepPoint::operator=(const G4StepPoint &right) -////////////////////////// -{ - if (this != &right) { - fPosition = right.fPosition; - fGlobalTime = right.fGlobalTime; - fLocalTime = right.fLocalTime; - fProperTime = right.fProperTime; - fMomentumDirection = right.fMomentumDirection; - fKineticEnergy = right.fKineticEnergy; - fpTouchable = right.fpTouchable; - fpMaterial = right.fpMaterial; - fpMaterialCutsCouple = right.fpMaterialCutsCouple; - fSafety = right.fSafety; - fPolarization = right.fPolarization; - fStepStatus = right.fStepStatus; - fpProcessDefinedStep = right.fpProcessDefinedStep; - fMass = right.fMass; - fCharge = right.fCharge; - fWeight = right.fWeight; - fVelocity = right.fVelocity; - } - return *this; -} diff --git a/geant4/LEMuSR/G4Modified/track/src/G4Track.cc b/geant4/LEMuSR/G4Modified/track/src/G4Track.cc deleted file mode 100644 index a75723a..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4Track.cc +++ /dev/null @@ -1,191 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4Track.cc,v 1.21 2004/06/11 14:28:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-06-02-ref-01 $ -// -// -//--------------------------------------------------------------- -// -// G4Track.cc -// -//--------------------------------------------------------------- -// Add copy constructor Hisaya Feb. 07 01 -// Fix GetVelocity Hisaya Feb. 17 01 -// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek// - -#include "G4Track.hh" - -G4Allocator aTrackAllocator; - -/////////////////////////////////////////////////////////// -G4Track::G4Track(G4DynamicParticle* apValueDynamicParticle, - G4double aValueTime, - const G4ThreeVector& aValuePosition) -/////////////////////////////////////////////////////////// - : fCurrentStepNumber(0), fPosition(aValuePosition), - fGlobalTime(aValueTime), fLocalTime(0.), - fTrackLength(0.), - fParentID(0), fTrackID(0), - fpDynamicParticle(apValueDynamicParticle), - fTrackStatus(fAlive), - fBelowThreshold(false), fGoodForTracking(false), - fStepLength(0.0), fWeight(1.0), - fpStep(0), - fVtxKineticEnergy(0.0), - fpLVAtVertex(0), fpCreatorProcess(0), - fpUserInformation(0) -{ -} - -////////////////// -G4Track::G4Track() -////////////////// - : fCurrentStepNumber(0), - fGlobalTime(0), fLocalTime(0.), - fTrackLength(0.), - fParentID(0), fTrackID(0), - fpDynamicParticle(0), - fTrackStatus(fAlive), - fBelowThreshold(false), fGoodForTracking(false), - fStepLength(0.0), fWeight(1.0), - fpStep(0), - fVtxKineticEnergy(0.0), - fpLVAtVertex(0), fpCreatorProcess(0), - fpUserInformation(0) -{ -} -////////////////// -G4Track::G4Track(const G4Track& right) -////////////////// -{ - *this = right; -} - -/////////////////// -G4Track::~G4Track() -/////////////////// -{ - delete fpDynamicParticle; - delete fpUserInformation; -} - -////////////////// -G4Track & G4Track::operator=(const G4Track &right) -////////////////// -{ - if (this != &right) { - fPosition = right.fPosition; - fGlobalTime = right.fGlobalTime; - fLocalTime = right.fLocalTime; - fTrackLength = right.fTrackLength; - fWeight = right.fWeight; - fStepLength = right.fStepLength; - - // Track ID (and Parent ID) is not copied and set to zero for new track - fTrackID = 0; - fParentID =0; - - // CurrentStepNumber is set to be 0 - fCurrentStepNumber = 0; - - // dynamic particle information - fpDynamicParticle = new G4DynamicParticle(*(right.fpDynamicParticle)); - - // track status and flags for tracking - fTrackStatus = right.fTrackStatus; - fBelowThreshold = right.fBelowThreshold; - fGoodForTracking = right.fGoodForTracking; - - // Step information (Step Length, Step Number, pointer to the Step,) - // are not copied - fpStep=0; - - // vertex information - fVtxPosition = right.fVtxPosition; - fpLVAtVertex = right.fpLVAtVertex; - fVtxKineticEnergy = right.fVtxKineticEnergy; - fVtxMomentumDirection = right.fVtxMomentumDirection; - - // CreatorProcess and UserInformation are not copied - fpCreatorProcess = 0; - fpUserInformation = 0; - } - return *this; -} - -/////////////////// -void G4Track::CopyTrackInfo(const G4Track& right) -////////////////// -{ - *this = right; -} - -#include "G4ParticleTable.hh" -/////////////////// -G4double G4Track::GetVelocity() const -/////////////////// -{ - static G4bool isFirstTime = true; - static G4ParticleDefinition* fOpticalPhoton =0; - - if ( isFirstTime ) { - isFirstTime = false; - // set fOpticalPhoton - fOpticalPhoton = G4ParticleTable::GetParticleTable()->FindParticle("opticalphoton"); - } - - G4double velocity ; - - G4double mass = fpDynamicParticle->GetMass(); - - // mass less particle - if( mass == 0. ){ - velocity = c_light ; - - // special case for photons - if ( (fOpticalPhoton !=0) && - (fpDynamicParticle->GetDefinition()==fOpticalPhoton) ){ - G4Material* - mat=fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); - - if(mat->GetMaterialPropertiesTable() != 0){ - if(mat->GetMaterialPropertiesTable()->GetProperty("RINDEX") != 0 ){ - // light velocity = c/reflection-index - velocity /= - mat->GetMaterialPropertiesTable()->GetProperty("RINDEX")-> - GetProperty(fpDynamicParticle->GetTotalMomentum()) ; - } - } - } - } else { - G4double T = fpDynamicParticle->GetKineticEnergy(); - velocity = c_light*sqrt(T*(T+2.*mass))/(T+mass) ; - } - - return velocity ; -} - - - - diff --git a/geant4/LEMuSR/G4Modified/track/src/G4VParticleChange.cc b/geant4/LEMuSR/G4Modified/track/src/G4VParticleChange.cc deleted file mode 100644 index 2e93e48..0000000 --- a/geant4/LEMuSR/G4Modified/track/src/G4VParticleChange.cc +++ /dev/null @@ -1,376 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VParticleChange.cc,v 1.16 2003/12/12 13:12:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-06-00-ref-01 $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// -// ------------------------------------------------------------ -// Implemented for the new scheme 23 Mar. 1998 H.Kurahige -// -------------------------------------------------------------- - -#include "G4VParticleChange.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4TrackFastVector.hh" -#include "G4ExceptionSeverity.hh" - -const G4double G4VParticleChange::accuracyForWarning = 1.0e-9; -const G4double G4VParticleChange::accuracyForException = 0.001; - -G4VParticleChange::G4VParticleChange(): - theNumberOfSecondaries(0), - theSizeOftheListOfSecondaries(G4TrackFastVectorSize), - theStatusChange(fAlive), - theSteppingControlFlag(NormalCondition), - theLocalEnergyDeposit(0.0), - verboseLevel(1), - theParentWeight(1.0), - fSetSecondaryWeightByProcess(false), - fSetParentWeightByProcess(true) -{ - debugFlag = false; -#ifdef G4VERBOSE - // activate CHeckIt if in VERBOSE mode - debugFlag = true; -#endif - theListOfSecondaries = new G4TrackFastVector(); -} - -G4VParticleChange::~G4VParticleChange() { - // check if tracks still exist in theListOfSecondaries - if (theNumberOfSecondaries>0) { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::~G4VParticleChange() Warning "; - G4cerr << "theListOfSecondaries is not empty "; - } -#endif - for (G4int index= 0; index0) { - G4cout << " Pointer to 2ndaries : " - << std::setw(20) << GetSecondary(0) - << G4endl; - G4cout << " (Showed only 1st one)" - << G4endl; - } - G4cout << " -----------------------------------------------" - << G4endl; - - G4cout << " Energy Deposit (MeV): " - << std::setw(20) << theLocalEnergyDeposit/MeV - << G4endl; - - G4cout << " Track Status : " - << std::setw(20); - if( theStatusChange == fAlive ){ - G4cout << " Alive"; - } else if( theStatusChange == fStopButAlive ){ - G4cout << " StopButAlive"; - } else if( theStatusChange == fStopAndKill ){ - G4cout << " StopAndKill"; - } else if( theStatusChange == fKillTrackAndSecondaries ){ - G4cout << " KillTrackAndSecondaries"; - } else if( theStatusChange == fSuspend ){ - G4cout << " Suspend"; - } else if( theStatusChange == fPostponeToNextEvent ){ - G4cout << " PostponeToNextEvent"; - } - G4cout << G4endl; - G4cout << " True Path Length (mm) : " - << std::setw(20) << theTrueStepLength/mm - << G4endl; - G4cout << " Stepping Control : " - << std::setw(20) << theSteppingControlFlag - << G4endl; - G4cout << G4endl; -} - -G4bool G4VParticleChange::CheckIt(const G4Track& ) -{ - - G4bool exitWithError = false; - G4double accuracy; - - // Energy deposit should not be negative - G4bool itsOKforEnergy = true; - accuracy = -1.0*theLocalEnergyDeposit/MeV; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4VParticleChange::CheckIt : "; - G4cout << "the energy deposit is negative !!" << G4endl; - G4cout << " Difference: " << accuracy << "[MeV] " < accuracyForException) exitWithError = true; - } - - // true path length should not be negative - G4bool itsOKforStepLength = true; - accuracy = -1.0*theTrueStepLength/mm; - if (accuracy > accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4VParticleChange::CheckIt : "; - G4cout << "the true step length is negative !!" << G4endl; - G4cout << " Difference: " << accuracy << "[MeV] " < accuracyForException) exitWithError = true; - } - - G4bool itsOK = itsOKforStepLength && itsOKforEnergy ; - // dump out information of this particle change -#ifdef G4VERBOSE - if (! itsOK ){ - G4cout << " G4VParticleChange::CheckIt " < accuracyForWarning) { -#ifdef G4VERBOSE - G4cout << " G4VParticleChange::CheckSecondary : "; - G4cout << "the Momentum direction is not unit vector !!" << G4endl; - G4cout << " Difference: " << accuracy << G4endl; -#endif - itsOKforMomentum = false; - if (accuracy > accuracyForException) exitWithError = true; - } - - // Kinetic Energy should not be negative - G4bool itsOKforEnergy; - accuracy = -1.0*(aTrack.GetKineticEnergy())/MeV; - if (accuracy < accuracyForWarning) { - itsOKforEnergy = true; - } else { -#ifdef G4VERBOSE - G4cout << " G4VParticleChange::CheckSecondary : "; - G4cout << "the kinetic energy is negative !!" << G4endl; - G4cout << " Difference: " << accuracy << "[MeV] " < accuracyForWarning) { -#ifdef G4VERBOSE - // G4cout << " G4VParticleChange::CheckSecondary : "; - // G4cout << "the proper time goes back !!" << G4endl; - // G4cout << " Difference: " << accuracy << "[ns] " < accuracyForException) exitWithError = true; - //} - - // Exit with error - if (exitWithError) { - G4Exception("G4VParticleChange::CheckSecondary", - "10", - EventMustBeAborted, - "momentum, energy and/or proper time was illegal"); - } - - G4bool itsOK = itsOKforMomentum && itsOKforEnergy && itsOKforProperTime; - - //correction - if (!itsOKforMomentum) { - G4double vmag = (aTrack.GetMomentumDirection()).mag(); - aTrack.SetMomentumDirection((1./vmag)*aTrack.GetMomentumDirection()); - } - //if (!itsOKforProperTime) { - // aTrack.SetProperTime(0.0); - //} - if (!itsOKforEnergy) { - aTrack.SetKineticEnergy(0.0); - } - - return itsOK; -} - - -G4double G4VParticleChange::GetAccuracyForWarning() const -{ - return accuracyForWarning; -} - -G4double G4VParticleChange::GetAccuracyForException() const -{ - return accuracyForException; -} - -void G4VParticleChange::AddSecondary(G4Track *aTrack) -{ - if (debugFlag) CheckSecondary(*aTrack); - - if (!fSetSecondaryWeightByProcess){ - // pass the weight of parent track - aTrack->SetWeight(theParentWeight); - } - - // add a secondary after size check - if (theSizeOftheListOfSecondaries > theNumberOfSecondaries) { - theListOfSecondaries->SetElement(theNumberOfSecondaries, aTrack); - theNumberOfSecondaries++; - } else { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::AddSecondary() Warning "; - G4cerr << "theListOfSecondaries is full !! " << G4endl; - G4cerr << " The object will not be added in theListOfSecondaries" << G4endl; - } -#endif - } -} - - - - - - - - - - - - - - - -