iceCube.uhe.propagation
Class PropagationMatrix

java.lang.Object
  extended by iceCube.uhe.propagation.PropagationMatrix

public class PropagationMatrix
extends java.lang.Object

   Matrix of the Energy and particle spiecies Transfer 
    by the Interactions and Particle Decays.
    The matrix elements are a priori calculated by the methods supplied
    by the InteractionMatrix in iceCube/uhe/interactions/ and
    by the Decay classes in iceCube/uhe/decay/ .


The infinitesimal propagation over dX is calculated as

nuToNu        : by the Neutral Current Intereactions.
nuEToLepton   : by the Charged Current Intereactions.
nuEToHadron   : by the Neutral/Charged currents.
nuEToNuE      : by the Electronic Glashow Resonance.

For Glashow Resonance
nuEToNuMu     : by the Muonic Glashow Resonance.
nuEToNuTau    : by the Tauonic Glashow Resonance.
nuEToHadron   : by the Hadrinic Glashow Resonance.

muToNuE       : by                                     Decay
muToNuMu      : by the Charged Current Intereactions   Decay
muToE         : by Pair Creation and Bremsstrahlung    Decay
muToMu        : by Pair Creation and survival.         Decay
muToTau       : by Pair Creation.
muToHadron    : by PhotoNuclear Interactions.
tauToNuE      : by                                     Decay
tauToNuMu     : by                                     Decay
tauToNuTau    : by the Charged Current Intereactions   Decay
tauToE        : by Pair Creation and Bremsstrahlung    Decay
tauToMu       : by Pair Creation.                      Decay
tauToTau      : by Pair Creation and survival
tauToHadron   : by PhotoNuclear Interactions.          Decay

Allocated memory for these array can also be used for
storing the finite propagation length.

The Main finite Propagation Matrix are formed such as


FnuEToNuE(logEin,logEout),FnuMuToNuE(logEin,logEout),FnuTauToNuE(logEin,logEout),
FmuToNuE(logEin,logEout),FtauToNuE(logEin,logEout)


FnuMuToTau(logEin,logEout),FnuTauToTau(logEin,logEout),
FmuToTau(logEin,logEout),FtauToTau(logEin,logEout)

etc.



Switching on/off an individual interactions channels
are done by the bits patemeter interactionsSwitch and decaySwitch.

interactionsSwitch
 bit8    bit7     bit6      bit5     bit4     bit3     bit2     bit1     bit0
GlaRes  LepWeak  PhotoNucl Bremss  KnockOn  PairCHeavy PairC  Neutral  Charged

decaySwitch
bit7-2   bit 1     bit0
Reserv.  TauDecay  MuDecay


These switches are read when generate this object.


Field Summary
static double c
          Speed of light [cm/sec].
 double dX
          Step size of the propagation [g/cm^2].
 double dXDecay
          Step size of the propagation [g/cm^2] determined by the shortest decay length.
protected  double neutrinoFactor
           
 
Constructor Summary
PropagationMatrix(Particle nuE, Particle nuMu, Particle nuTau, Particle e, Particle mu, Particle tau, Particle pi, ParticlePoint s, int interactionsSwitch, int decaySwitch)
          Constructor.
PropagationMatrix(Particle nuE, Particle nuMu, Particle nuTau, Particle e, Particle mu, Particle tau, Particle pi, ParticlePoint s, int interactionsSwitch, int decaySwitch, double neutrinoFactor)
          Constructor.
 
Method Summary
 void calculateTransferMatrix()
          Calculate the elementary interaction/decay transfer matrix.
 void copyTransferMatrix()
          Copy the transfer matrix
 void copyTransferMatrixFromStore()
          Copy the transfer matrix from Store matrix
 double getFmuToE(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to Electron with energy jLogE
 double getFmuToHadron(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to Hadron with energy jLogE
 double getFmuToMu(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to Muon with energy jLogE
 double getFmuToNuE(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to nuE with energy jLogE
 double getFmuToNuMu(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to nuMu with energy jLogE
 double getFmuToNuTau(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to nuTau with energy jLogE
 double getFmuToTau(int iLogE, int jLogE)
          Get the propagation matrix element from Muon with energy iLogE to Tau with energy jLogE
 double getFnuEToE(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to Electron with energy jLogE
 double getFnuEToHadron(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to Hadron with energy jLogE
 double getFnuEToMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to Muon with energy jLogE
 double getFnuEToNuE(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to nuE with energy jLogE
 double getFnuEToNuMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to nuMu with energy jLogE
 double getFnuEToNuTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to nuTau with energy jLogE
 double getFnuEToTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuE with energy iLogE to Tau with energy jLogE
 double getFnuMuToE(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to Electron with energy jLogE
 double getFnuMuToHadron(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to Hadron with energy jLogE
 double getFnuMuToMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to Muon with energy jLogE
 double getFnuMuToNuE(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to nuE with energy jLogE
 double getFnuMuToNuMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to nuMu with energy jLogE
 double getFnuMuToNuTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to nuTau with energy jLogE
 double getFnuMuToTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuMu with energy iLogE to Tau with energy jLogE
 double getFnuTauToE(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to Electron with energy jLogE
 double getFnuTauToHadron(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to Hadron with energy jLogE
 double getFnuTauToMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to Muon with energy jLogE
 double getFnuTauToNuE(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to nuE with energy jLogE
 double getFnuTauToNuMu(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to nuMu with energy jLogE
 double getFnuTauToNuTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to nuTau with energy jLogE
 double getFnuTauToTau(int iLogE, int jLogE)
          Get the propagation matrix element from nuTau with energy iLogE to Tau with energy jLogE
 double getFtauToE(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to Electron with energy jLogE
 double getFtauToHadron(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to Hadron with energy jLogE
 double getFtauToMu(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to Muon with energy jLogE
 double getFtauToNuE(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to nuE with energy jLogE
 double getFtauToNuMu(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to nuMu with energy jLogE
 double getFtauToNuTau(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to nuTau with energy jLogE
 double getFtauToTau(int iLogE, int jLogE)
          Get the propagation matrix element from Tauon with energy iLogE to Tau with energy jLogE
 void init()
          Initialize the propagation matrices.
 void initALL()
          Initialize ALL the propagation matrices including the store matrix.
 void propagateDX()
          Propagate the particles involved over a dX [g/cm^2].
 void propagateDXpowered()
          Propagate the particles involved over a 2^n Delta x [g/cm^2] where Delta x is the propagation distance for the finite propagation matrix.
 void propagateX()
          Propagate the particles involved over X [g/cm^2] where Delta x is the propagation distance for the finite propagation matrix.
 void setDx(double dX)
          Change the infinitesimal propagation length
 void storePropagateMatrix()
          Store the propagation matrix calculated so far to the store matrix which save energy distribution of neutrinos and leptons propagating to the current location.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dX

public double dX
Step size of the propagation [g/cm^2]. Initialized in the constructor.


dXDecay

public double dXDecay
Step size of the propagation [g/cm^2] determined by the shortest decay length. Initialized in the constructor.


c

public static final double c
Speed of light [cm/sec].

See Also:
Constant Field Values

neutrinoFactor

protected double neutrinoFactor
Constructor Detail

PropagationMatrix

public PropagationMatrix(Particle nuE,
                         Particle nuMu,
                         Particle nuTau,
                         Particle e,
                         Particle mu,
                         Particle tau,
                         Particle pi,
                         ParticlePoint s,
                         int interactionsSwitch,
                         int decaySwitch,
                         double neutrinoFactor)
                  throws java.io.IOException
Constructor. Reading all the InteractiosMatrix objects and generating the DecayMatrix objects. The infinitesimal propagation distance dX [g/cm^2] is also determined here.

Throws:
java.io.IOException

PropagationMatrix

public PropagationMatrix(Particle nuE,
                         Particle nuMu,
                         Particle nuTau,
                         Particle e,
                         Particle mu,
                         Particle tau,
                         Particle pi,
                         ParticlePoint s,
                         int interactionsSwitch,
                         int decaySwitch)
                  throws java.io.IOException
Constructor. Reading all the InteractiosMatrix objects and generating the DecayMatrix objects. The infinitesimal propagation distance dX [g/cm^2] is also determined here. Use the default value of the neutrino CC/NC enhancement foactor

Throws:
java.io.IOException
Method Detail

init

public void init()
Initialize the propagation matrices.


initALL

public void initALL()
Initialize ALL the propagation matrices including the store matrix.


calculateTransferMatrix

public void calculateTransferMatrix()
Calculate the elementary interaction/decay transfer matrix. The mass density of the proagation medium is approxed to be constant and equal to the cuurent particle location for saving CPU time. The infinitesimal propagation over dX is a subject to consider here. All the calculated matrix elements are stored in nuToNu[kLogE][jLogE], tauToNuE[kLogE][jLogE] etc. The bin width and the relation between energy index kLogE (integer) and energy are defined in Particle.class as usual since it relies on InteractionMatrix object which is pre-calculated and stored in the file. InteractionMatrix object for each interaction is read by the constructor PropagationMatrix( ).


propagateDX

public void propagateDX()
Propagate the particles involved over a dX [g/cm^2]. The calculation is performed by multiplication of the elemental transfer matrix calculated by calculateTransferMatrix( ) called in the constructor PropagationMatrix( ). The particle energy distribution after propagation over n x dX [g] can be, for example, obtained by calling this method n times. The resultant energy distributions are stored in FmuToNuE[iLogE][kLogE] etc.


propagateDXpowered

public void propagateDXpowered()
Propagate the particles involved over a 2^n Delta x [g/cm^2] where Delta x is the propagation distance for the finite propagation matrix. "n" is the times to call this method. It doubles the finit propagation matrix (FnuEtoNuE[iLogE][jLog] for example) calculated by propagateDX( ). The resultant matrix element describes the energy distribution of particles.


propagateX

public void propagateX()
Propagate the particles involved over X [g/cm^2] where Delta x is the propagation distance for the finite propagation matrix. It multiples the finit propagation matrix calculated by propagateDX( ) and proagateDXpowerd( ) and storerd in nuETonuE[][] etc by copyTransferMatrix( ).


copyTransferMatrix

public void copyTransferMatrix()
Copy the transfer matrix


storePropagateMatrix

public void storePropagateMatrix()
Store the propagation matrix calculated so far to the store matrix which save energy distribution of neutrinos and leptons propagating to the current location. You can then initialize the propagation matrix by init( ) and start another propagation calculation in a different section of the trajectory. You can get the results stored here back to the propagation matrix by calling the method copyTransferMatrixFromStore( ).


copyTransferMatrixFromStore

public void copyTransferMatrixFromStore()
Copy the transfer matrix from Store matrix


setDx

public void setDx(double dX)
Change the infinitesimal propagation length


getFnuEToNuE

public double getFnuEToNuE(int iLogE,
                           int jLogE)
Get the propagation matrix element from nuE with energy iLogE to nuE with energy jLogE


getFnuEToNuMu

public double getFnuEToNuMu(int iLogE,
                            int jLogE)
Get the propagation matrix element from nuE with energy iLogE to nuMu with energy jLogE


getFnuEToNuTau

public double getFnuEToNuTau(int iLogE,
                             int jLogE)
Get the propagation matrix element from nuE with energy iLogE to nuTau with energy jLogE


getFnuEToE

public double getFnuEToE(int iLogE,
                         int jLogE)
Get the propagation matrix element from nuE with energy iLogE to Electron with energy jLogE


getFnuEToMu

public double getFnuEToMu(int iLogE,
                          int jLogE)
Get the propagation matrix element from nuE with energy iLogE to Muon with energy jLogE


getFnuEToTau

public double getFnuEToTau(int iLogE,
                           int jLogE)
Get the propagation matrix element from nuE with energy iLogE to Tau with energy jLogE


getFnuEToHadron

public double getFnuEToHadron(int iLogE,
                              int jLogE)
Get the propagation matrix element from nuE with energy iLogE to Hadron with energy jLogE


getFnuMuToNuE

public double getFnuMuToNuE(int iLogE,
                            int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to nuE with energy jLogE


getFnuMuToNuMu

public double getFnuMuToNuMu(int iLogE,
                             int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to nuMu with energy jLogE


getFnuMuToNuTau

public double getFnuMuToNuTau(int iLogE,
                              int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to nuTau with energy jLogE


getFnuMuToE

public double getFnuMuToE(int iLogE,
                          int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to Electron with energy jLogE


getFnuMuToMu

public double getFnuMuToMu(int iLogE,
                           int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to Muon with energy jLogE


getFnuMuToTau

public double getFnuMuToTau(int iLogE,
                            int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to Tau with energy jLogE


getFnuMuToHadron

public double getFnuMuToHadron(int iLogE,
                               int jLogE)
Get the propagation matrix element from nuMu with energy iLogE to Hadron with energy jLogE


getFnuTauToNuE

public double getFnuTauToNuE(int iLogE,
                             int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to nuE with energy jLogE


getFnuTauToNuMu

public double getFnuTauToNuMu(int iLogE,
                              int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to nuMu with energy jLogE


getFnuTauToNuTau

public double getFnuTauToNuTau(int iLogE,
                               int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to nuTau with energy jLogE


getFnuTauToE

public double getFnuTauToE(int iLogE,
                           int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to Electron with energy jLogE


getFnuTauToMu

public double getFnuTauToMu(int iLogE,
                            int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to Muon with energy jLogE


getFnuTauToTau

public double getFnuTauToTau(int iLogE,
                             int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to Tau with energy jLogE


getFnuTauToHadron

public double getFnuTauToHadron(int iLogE,
                                int jLogE)
Get the propagation matrix element from nuTau with energy iLogE to Hadron with energy jLogE


getFmuToNuE

public double getFmuToNuE(int iLogE,
                          int jLogE)
Get the propagation matrix element from Muon with energy iLogE to nuE with energy jLogE


getFmuToNuMu

public double getFmuToNuMu(int iLogE,
                           int jLogE)
Get the propagation matrix element from Muon with energy iLogE to nuMu with energy jLogE


getFmuToNuTau

public double getFmuToNuTau(int iLogE,
                            int jLogE)
Get the propagation matrix element from Muon with energy iLogE to nuTau with energy jLogE


getFmuToE

public double getFmuToE(int iLogE,
                        int jLogE)
Get the propagation matrix element from Muon with energy iLogE to Electron with energy jLogE


getFmuToMu

public double getFmuToMu(int iLogE,
                         int jLogE)
Get the propagation matrix element from Muon with energy iLogE to Muon with energy jLogE


getFmuToTau

public double getFmuToTau(int iLogE,
                          int jLogE)
Get the propagation matrix element from Muon with energy iLogE to Tau with energy jLogE


getFmuToHadron

public double getFmuToHadron(int iLogE,
                             int jLogE)
Get the propagation matrix element from Muon with energy iLogE to Hadron with energy jLogE


getFtauToNuE

public double getFtauToNuE(int iLogE,
                           int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to nuE with energy jLogE


getFtauToNuMu

public double getFtauToNuMu(int iLogE,
                            int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to nuMu with energy jLogE


getFtauToNuTau

public double getFtauToNuTau(int iLogE,
                             int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to nuTau with energy jLogE


getFtauToE

public double getFtauToE(int iLogE,
                         int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to Electron with energy jLogE


getFtauToMu

public double getFtauToMu(int iLogE,
                          int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to Muon with energy jLogE


getFtauToTau

public double getFtauToTau(int iLogE,
                           int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to Tau with energy jLogE


getFtauToHadron

public double getFtauToHadron(int iLogE,
                              int jLogE)
Get the propagation matrix element from Tauon with energy iLogE to Hadron with energy jLogE