iceCube.uhe.propagation
Class NeutrinoQuickPropagator

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

public class NeutrinoQuickPropagator
extends java.lang.Object

This class provides the methods to cauculate energy distribution of particles resulted from the neutrino propagation in the handy approximated way. You can let PropagationMatrix do the same job, but it would take more CPU time. Instead this class uses the analytical expressons for neutrino propagation and the precalculated PropagationMatrix for the secondary generated muon and tau propagation, assuming that the regeneration of neutrinos and their successive interactions can be neglected as a first order approximation.


     |-----------neutrino -----|----------- charged lepton --------------|
     |-------------------------XX----------------------------------------|
     <----    analytical ------>
                                <---  PropagationMatrix mutiplication --->

As illustrated above, the charged lepton part is taken care of by multiplying the matrix with step size Delta X. The PropagationMatrixFactory object, one of the protected member in this class, is responsible for interface with the matrix data with step size of Delta X. The vertex point XX is integrated from the begining though the end inside the method propagateNeutrino().


Field Summary
protected static double detectorDepth
           
protected static double distanceMaximum
           
protected  InteractionsMatrix grLeptonMtx
          The Leptonic Glashow Resonance interaction to generate the charged lepton
protected static java.lang.String[] intMtxPathname
           
protected  PropagationMatrixFactory matrix
          Propagation Matrix to handle the charged lepton propgation after the neutrino interaction
protected static java.lang.String[] matrixFile
           
 double nuCCEnhancementFactor
           
protected  InteractionsMatrix nuCCMtx
          The default neutrino matrix charged current interaction to generate the charged lepton
protected static java.lang.String[] pathname
           
protected  ParticlePoint s
          Propagated medium class
protected static double[] stepSizeBase
           
 
Constructor Summary
NeutrinoQuickPropagator(ParticlePoint s)
          Constructor.
 
Method Summary
protected  void calculateNeutrinoToLeptonTransfer(double slantDepth, double deltaX)
          Calculate the charged leptron generation matrix which plays a role of propagation matrix from neutrino to charged lepton.
 double getDF(int neutrinoFlavor, double logEneutrino, int outputFlavor, int outputDoublet, double logEoutput)
          Returns dF/dLogE * deltaLogE (inputNeutrino ---> outputParticle) calculated by th method propagateNeutrino().
protected  void initLeptonMatrix()
          initialized the propagation matrix elements
protected  void initNeutrinoMatrix()
          initialized the propagation matrix elements
protected  void propagateChargedLepton()
          propagate the charged leptons by the propagation matrix step size deltaX.
 void propagateNeutrino(double propagationDepth, double nuCCEnhancementFactor)
          Calculation of the neutrino propagation with the methods of propagateNeutrinoToNeutrino() and propagateNeutrinoToLepton()
 void propagateNeutrinoToIceCubeDepth(double nadirAngle, double nuCCEnhancementFactor)
          Calculation of the neutrino propagation with the methods of propagateNeutrinoToNeutrino() and propagateNeutrinoToLepton()
 void propagateNeutrinoToLepton(double totalPropagationLength, double neutrinoOffSetLength, double deltaX, double nuCCEnhancementFactor)
          Calculate the neutrino propagation generating leptons in the appriximated handy method.
 void propagateNeutrinoToNeutrino(double slantDepth, double nuCCEnhancementFactor)
          Calculate the neutrino propagation in the appriximated handy method.
 void readMatrix(java.io.DataInputStream in)
          Read the propagation matrix data for handing the charged lepton propagation.
protected  void readPropagationMatrix(java.lang.String filename)
          Let the propagationMatrixFactory read the propagation matrix data corresponds to the "fileName"
 void setParticlePoint(ParticlePoint s)
          Set the particle point class.
 void whetherPropagationMatrixWithGlashowResonance(boolean flag)
          If you need to read the matrix data without the Glashow Resonance call this method first with flag=false before readMatrix(in).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pathname

protected static java.lang.String[] pathname

intMtxPathname

protected static java.lang.String[] intMtxPathname

matrixFile

protected static final java.lang.String[] matrixFile

stepSizeBase

protected static double[] stepSizeBase

distanceMaximum

protected static double distanceMaximum

detectorDepth

protected static double detectorDepth

matrix

protected PropagationMatrixFactory matrix
Propagation Matrix to handle the charged lepton propgation after the neutrino interaction


s

protected ParticlePoint s
Propagated medium class


nuCCMtx

protected InteractionsMatrix nuCCMtx
The default neutrino matrix charged current interaction to generate the charged lepton


grLeptonMtx

protected InteractionsMatrix grLeptonMtx
The Leptonic Glashow Resonance interaction to generate the charged lepton


nuCCEnhancementFactor

public double nuCCEnhancementFactor
Constructor Detail

NeutrinoQuickPropagator

public NeutrinoQuickPropagator(ParticlePoint s)
                        throws java.io.IOException
Constructor.
        (1). Register the particle point class
        (2). Read the neutrino interaction matrix 
        (3). Generate the PropagationMatrixFactory object to calculate
             the muon/tau propagation
        

Throws:
java.io.IOException
Method Detail

readMatrix

public void readMatrix(java.io.DataInputStream in)
                throws java.io.IOException
Read the propagation matrix data for handing the charged lepton propagation. The PropagationMatrixFactory object is responsible for this task.

Throws:
java.io.IOException

initLeptonMatrix

protected void initLeptonMatrix()
initialized the propagation matrix elements


initNeutrinoMatrix

protected void initNeutrinoMatrix()
initialized the propagation matrix elements


whetherPropagationMatrixWithGlashowResonance

public void whetherPropagationMatrixWithGlashowResonance(boolean flag)
If you need to read the matrix data without the Glashow Resonance call this method first with flag=false before readMatrix(in).


setParticlePoint

public void setParticlePoint(ParticlePoint s)
Set the particle point class. You may need to call this method, for instance, when you switch the material from ice to rock, or run the method of propagateNeutrinoToIceCubeDepth(nadir, nuCCenhancement) with various nadir angles.


propagateNeutrinoToLepton

public void propagateNeutrinoToLepton(double totalPropagationLength,
                                      double neutrinoOffSetLength,
                                      double deltaX,
                                      double nuCCEnhancementFactor)
Calculate the neutrino propagation generating leptons in the appriximated handy method. The propagation is divided into the two part and calculated separately.
     double nuCCEnhancementFactor : multiplication factor to the standard CC cross section
     double slantDepth            :depth [g/cm^2] of the neutrino interaction vertex.
     double deltaX                : step size [g/cm^2] of the particle propagation

               |-----------neutrino -----|----------- charged lepton ---------|
               |-------------------------XX-----------------------------------|
<-----    slantDepth ------------------->
               <-------------------  totalPropagationLength ------------------>
<-offSetLength->
        


calculateNeutrinoToLeptonTransfer

protected void calculateNeutrinoToLeptonTransfer(double slantDepth,
                                                 double deltaX)
Calculate the charged leptron generation matrix which plays a role of propagation matrix from neutrino to charged lepton.
     double slantDepth            :depth [g/cm^2] of the neutrino interaction vertex.
     double deltaX                : step size [g/cm^2] of the particle propagation

     |-----------neutrino -----|----------- charged lepton --------------|
     |-------------------------XX----------------------------------------|
     <----    slantDepth ------>
        


propagateChargedLepton

protected void propagateChargedLepton()
propagate the charged leptons by the propagation matrix step size deltaX. by Mutiplication of the lepton propagation matrix mu->mu, tau->mu, mu->tau and tau->tau


propagateNeutrinoToNeutrino

public void propagateNeutrinoToNeutrino(double slantDepth,
                                        double nuCCEnhancementFactor)
Calculate the neutrino propagation in the appriximated handy method. The propagation is divided into the two part and calculated separately.
     double nuCCEnhancementFactor : multiplication factor to the standard CC cross section
     double slantDepth            :depth [g/cm^2] of the neutrino interaction vertex.

          |-----------neutrino -------------------------|
          <-----------    slantDepth ------------------->
        


readPropagationMatrix

protected void readPropagationMatrix(java.lang.String filename)
                              throws java.io.IOException
Let the propagationMatrixFactory read the propagation matrix data corresponds to the "fileName"

Throws:
java.io.IOException

propagateNeutrino

public void propagateNeutrino(double propagationDepth,
                              double nuCCEnhancementFactor)
                       throws java.io.IOException
Calculation of the neutrino propagation with the methods of propagateNeutrinoToNeutrino() and propagateNeutrinoToLepton()
     double propagationDepth   : the neutrino-lepton total propagation distance [g/cm^2]
     

Throws:
java.io.IOException

propagateNeutrinoToIceCubeDepth

public void propagateNeutrinoToIceCubeDepth(double nadirAngle,
                                            double nuCCEnhancementFactor)
                                     throws java.io.IOException
Calculation of the neutrino propagation with the methods of propagateNeutrinoToNeutrino() and propagateNeutrinoToLepton()
     double nadirAngle   : nadire (upgoing) zenith (down) of the neutrino-lepton track [deg]

     
Note : nadir_angle must be registered in the ParticlePoint object member s

Throws:
java.io.IOException

getDF

public double getDF(int neutrinoFlavor,
                    double logEneutrino,
                    int outputFlavor,
                    int outputDoublet,
                    double logEoutput)
Returns dF/dLogE * deltaLogE (inputNeutrino ---> outputParticle) calculated by th method propagateNeutrino().
        int   neutrinoFlavor   : flavor of the NEUTRINO entering into the earth.
        double logEneutrino    : logE [GeV] of the NEUTRINO entering into the earth.
        int   outputFlavor   : flavor of the Particle object after the propagation.
        int   outputDoublet  : doublet of the Particle object after the propagation.
        double logEoutput    : logE [GeV] of the particle after the propagation.
        
delta LogE is the bin size of the propagation matrix. It is defined by Particle.getDimensionOfLogEnergyMatrix()