30 #include "G4StepPoint.hh"    31 #include "G4VParticleChange.hh"    65     G4cout<<
"\n ExExChProcessChanneling::Constructor:";
    66     G4cout<<
"Geometry surface tolerance is: ";
   201         G4cout << 
"ChannelingProcess::UpdatePositionMomentumDensity::";
   208                                 aTrack.GetStep()->GetPreStepPoint());
   220         bHasToComputeTrajectory = 
false;
   238     if(
GetXPL(aTrack)->IsBent()){
   264             kBeta = aTrack.GetVelocity()/
c_light;
   275             fPosHalf += (fMom * kPos * 0.5);
   282                             fMomHalf.
x() + kBR * 0.5 /
   287             fPos += (fMomHalf * kPos);
   353     if(
GetXPL(aTrack)->IsBent() == 
false){
   355             (
G4Box*) vStepVol->GetPhysicalVolume()
   356             ->GetLogicalVolume()->GetSolid();
   363             (
G4Tubs*) vStepVol->GetPhysicalVolume()
   364             ->GetLogicalVolume()->GetSolid();
   375     G4StepPoint* vStepPre = aTrack.GetStep()->GetPreStepPoint();
   376     G4StepPoint* vStepPost = aTrack.GetStep()->GetPostStepPoint();
   385             && vStep == vStepPost &&
   386             vStepPost->GetStepStatus() == fGeomBoundary) {
   394             vStepPre->GetStepStatus() == fGeomBoundary) {
   407     G4StepPoint* vStepPre = aTrack.GetStep()->GetPreStepPoint();
   408     G4StepPoint* vStepPost = aTrack.GetStep()->GetPostStepPoint();
   417             vStep == vStepPost &&
   418             vStepPost->GetStepStatus() == fGeomBoundary) {
   426             vStepPre->GetStepStatus() == fGeomBoundary) {
   439     if(vMom.
x() != 0.0 || vMom.
y() != 0.0){
   440         double xy2 = vMom.
x() * vMom.
x() + vMom.
y()*vMom.
y();
   445                     aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy() /
   450                 aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy() /
   580     return vTransverseEnergy;
   592         aTrack.GetStep()->GetPostStepPoint()->GetTotalEnergy();
   599                       (vMom.
z() * vMom.
z())  / vTotalEnergy);
   601     return vKineticEnergy;
   620     return vPotentialEnergy;
   633         aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy();
   642     if(
GetXPL(aTrack)->IsBent()){ 
   645                       GetXPL(aTrack)->GetCurvatureRadius().
x(),
   650     return vEnergyVariation;
   667     ProjectMomentumVectorFromWorldToLattice(vMomentum,vPosition);
   682         aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy();
   685     if(
GetXPL(aTrack)->IsBent()){
   687                     GetXPL(aTrack)->ComputeInterplanarPeriod() /
   688                     GetXPL(aTrack)->GetCurvatureRadius().
x(),
   693     return vEnergyVariation;
   721     return vCriticalEnergy;
   746     return vCriticalEnergy;
   759         aTrack.GetStep()->GetPostStepPoint()->GetTotalEnergy();
   760     G4double vCriticalAngle = std::pow( 2.0 *
   763                            / vTotalEnergy ) , 0.5);
   764     return vCriticalAngle;
   780     return vOscillationPeriod;
   793         aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy();
   797         vCriticalRadius = vTotalEnergy 
   800     return vCriticalRadius;
   814     G4double vCentreX = vInterplanarPeriodHalf;
   816     if(
GetXPL(aTrack)->IsBent()){
   818             aTrack.GetStep()->GetPreStepPoint()->GetTotalEnergy();
   824         vCentreX *= (1. - 0.5 * vTotalEnergy /
   825                      vPotentialWellDepth /
   827                      vInterplanarPeriodHalf );
   858                 aTrack.GetStep()->GetPostStepPoint()->GetPhysicalVolume())){
   860                             ->GetPostStepPoint()->GetPhysicalVolume());
   863                     ->GetPhysicalVolume()) &&
   864             aTrack.GetStep()->GetPostStepPoint()->GetStepStatus()
   867                     ->GetPreStepPoint()->GetPhysicalVolume());
   879                     ->GetPostStepPoint()->GetPhysicalVolume())){
   904                 GetPhysicalVolume()) &&
   905        aTrack.GetStep()->GetPreStepPoint()->GetStepStatus() == fGeomBoundary) {
   918                     GetPostStepPoint()->GetPhysicalVolume()) &&
   919        aTrack.GetStep()->GetPostStepPoint()->GetStepStatus() == fGeomBoundary) {
   944     if(aTrack.GetStep()->GetPreStepPoint()->GetStepStatus() != fGeomBoundary){
   956     if(aTrack.GetStep()->GetPostStepPoint()->GetStepStatus() != fGeomBoundary){
 
XLatticeManager3 * fLatticeManager
 
G4double condition(const G4ErrorSymMatrix &m)
 
G4ThreeVector ComputeCentrifugalEnergy(const G4Track &, G4ThreeVector)
 
G4double ComputeCriticalEnergyMinimum(const G4Track &)
 
XVCrystalCharacteristic * fElectronDensity
 
G4bool HasLattice(const G4Track &)
 
G4double ComputeCriticalRadius(const G4Track &)
 
static XLatticeManager3 * GetXLatticeManager()
 
void SetMomentumChanneledInitial(G4ThreeVector)
 
virtual ~ExExChProcessChanneling()
 
CLHEP::Hep3Vector G4ThreeVector
 
XVCrystalCharacteristic * GetNucleiDensity()
 
const G4NavigationHistory * GetHistory() const
 
G4bool ParticleIsNegative(const G4Track &)
 
G4ThreeVector ComputeMomentum(const G4Track &, G4StepPoint *)
 
ExExChProcessChanneling(const G4String &processName="ExExChProcessChanneling")
 
G4ThreeVector GetCurvatureRadius()
 
G4ThreeVector ComputeKineticEnergy(const G4Track &)
 
G4String fFileCharacteristicsName
 
G4double GetSurfaceTolerance() const
 
virtual G4double GetMinimum(XPhysicalLattice *)
 
G4ThreeVector ComputePotentialEnergy(const G4Track &)
 
G4ThreeVector ComputeCentrifugalEnergyMaximumVariation(const G4Track &)
 
G4double fIntegrationPeriod
 
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
 
XCrystalIntegratedDensityHub * fIntegratedDensity
 
G4double GetXHalfLength() const
 
G4bool HasBeenInitialized(XPhysicalLattice *)
 
void SetXPhysicalLattice(XPhysicalLattice *)
 
G4double ComputeCriticalEnergyMaximum(const G4Track &)
 
void SetMomentumChanneled(G4ThreeVector)
 
const G4String & GetProcessName() const
 
static const double angstrom
 
void SetInTheCrystal(G4int aInt)
 
G4bool ParticleIsNotOnBoundary(const G4Track &)
 
G4GLOB_DLL std::ostream G4cout
 
XVCrystalCharacteristic * GetElectronDensity()
 
G4StepPoint * CheckStepPointLatticeForVolume(G4StepPoint *, const G4Track &)
 
G4double GetZHalfLength() const
 
void SetPositionChanneled(G4ThreeVector)
 
G4bool HasLatticeOnBoundary(const G4Track &)
 
XVCrystalCharacteristic * GetElectricField()
 
G4double fTransverseVariationMax
 
XVCrystalCharacteristic * fNucleiDensity
 
void SetPotential(XVCrystalCharacteristic *)
 
Hep3Vector & rotateZ(double)
 
virtual void PrintOnFile(const G4String &, XPhysicalLattice *, G4double=1)=0
 
G4bool bHasToComputeTrajectory
 
void SetElectronDensity(G4double)
 
G4StepPoint * CheckStepPointLatticeForPosition(G4StepPoint *, const G4Track &)
 
XVCrystalCharacteristic * fElectricField
 
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
 
void SetIntegratedDensity(XCrystalIntegratedDensityHub *)
 
G4bool UpdateInitialParameters(const G4Track &)
 
G4double GetYHalfLength() const
 
G4ThreeVector ComputeTransverseEnergy(const G4Track &)
 
G4ParticleDefinition * GetParticleDefinition(const G4Track &aTrack)
 
G4ThreeVector ProjectMomentumVectorFromLatticeToWorld(G4ThreeVector &, G4ThreeVector &)
 
G4bool ParticleIsNotOnBoundaryPost(const G4Track &)
 
G4ThreeVector ComputePotentialWellCentre(const G4Track &)
 
void SetElectricField(XVCrystalCharacteristic *)
 
void UpdateParameters(const G4Track &)
 
void InitializePhysicalLattice(XPhysicalLattice *)
 
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
 
G4bool HasLatticeOnBoundaryPre(const G4Track &)
 
virtual G4double GetMaximum(XPhysicalLattice *)
 
XVCrystalCharacteristic * GetPotential()
 
G4double ComputeOscillationPeriod(const G4Track &)
 
G4double GetChannelingMeanFreePath(const G4Track &)
 
virtual G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *)
 
XCrystalIntegratedDensityHub * GetIntegratedDensity()
 
void SetNucleiDensity(XVCrystalCharacteristic *)
 
G4bool HasLatticeOnBoundaryPost(const G4Track &)
 
G4ParticleChange aParticleChange
 
G4bool UpdateIntegrationStep(const G4Track &, G4ThreeVector &)
 
const G4AffineTransform & GetTopTransform() const
 
ExExChParticleUserInfo * GetInfo(const G4Track &)
 
void SetElectronDensity(XVCrystalCharacteristic *)
 
XPhysicalLattice * GetXPL(const G4Track &)
 
G4ThreeVector ComputePositionInTheCrystal(G4StepPoint *, const G4Track &)
 
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
 
G4double ComputeCriticalAngle(const G4Track &)
 
void ComputeCrystalCharacteristic(const G4Track &)
 
void ReadFromFiles(const G4String &)
 
G4double GetStartPhiAngle() const
 
void StoreDensityPreviousStep()
 
void ResetDensity(const G4Track &)
 
G4double ComputeInterplanarPeriod()
 
G4double GetPDGCharge() const
 
void SetPositionChanneledInitial(G4ThreeVector)
 
G4bool ParticleIsNotOnBoundaryPre(const G4Track &)
 
virtual G4bool IsApplicable(const G4ParticleDefinition &)
 
XVCrystalCharacteristic * fPotentialEnergy
 
static G4GeometryTolerance * GetInstance()
 
G4ThreeVector GetPositionChanneled()
 
void SetNucleiDensity(G4double)
 
virtual void ReadFromECHARM(const G4String &, G4double=1)=0
 
G4ThreeVector GetMomentumChanneled()
 
bool HasLattice(G4VPhysicalVolume *)