iceCube.uhe.muonModel
Class PropagatingAtmMuonFlux

java.lang.Object
  extended by iceCube.uhe.muonModel.PropagatingAtmMuonFlux
All Implemented Interfaces:
Function

public class PropagatingAtmMuonFlux
extends java.lang.Object
implements Function

This class calculates differential flux dF/dLogE [/cm^2 sec sr] of neutrinos and charged leptons after propagation in the earth for a given model of primary cosmic neutrino production in the Universe. The primary flux of UHE cosmic neutrinos is given by the AtmMuonFlux class. The transfer(propagation) matrix of particles during the propagation in the earth, for example, FnuMuToTau = dN(nuMu -> tau)/dLogE_tau (E_nuMu, E_tau) is read out from the file generated a priori by PropagationMatrix.java in the propagation package. The argument for the constructor, "model" is for the AtmMuonFlux class. Consult the details to the API document of the AtmMuonFlux.java in this package.


Constructor Summary
PropagatingAtmMuonFlux()
          Constructor
PropagatingAtmMuonFlux(double muonThresholdEnergy, boolean cutoffExists)
          Constructor
PropagatingAtmMuonFlux(double alpha, double muonThresholdEnergy, boolean cutoffExists)
          Constructor
 
Method Summary
protected  double getAverageMuonEnergyLossAfterPropagation()
          Calculate and return the averaged relative energy loss of a muon after its propagation in the Earth.
 double getDFMuDLogCREDLogE(double logCosmicRayEnergy, double halfWidthOfLogE, double logE, double cos_th)
          Calculate dF^2/dLogEcrDLogE [/cm^2 sec sr] for nu-mu Because the cosmic ray follows the rapidly falling spectrum, the flux is averaged over a given log(cosmic ray energy [GeV]) in a half width given by halfWidthOfLogE.
 double getDFMuDLogE(double logE, double cos_th)
          Calculate dF/dLogE [/cm^2 sec sr] for nu-mu
 double getFunction(int functionIndex, double[] parameters, double x)
          Implementation of interface numRecipes.Function used for numerical integration of the d^F/dLogEcrDlogEmu over logEcr, the cosmic ray energy.
protected  void listFluxes(double logEnergy, double cosTheta)
          integrate getDFDLogCREDLogE(logEcr,logEmu,cosTheta) over logEcr and compare with getDFDLogE(logEmu,cosTheta) for the consistency check
 void readMatrix(java.io.DataInputStream in)
          Read the calculated propagation matrix
 void setConfidenceLevelOfFluctuation(double prob)
          Set Confidence level of the Energy rato parameter R = (E_muon/E0)/ Bar(E_muon/E0).
 void setCutOffFeature(boolean cutoffExists)
          set the GZK cutoff feature or not
 void setFluxCalculationMode(boolean includeFluctuationEffects, boolean fluctuateEventByEvent)
          set the mode on the flux caulation
 void whetherPropagationMatrixWithGlashowResonance(boolean flag)
          or Glashow Resonance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PropagatingAtmMuonFlux

public PropagatingAtmMuonFlux()
Constructor


PropagatingAtmMuonFlux

public PropagatingAtmMuonFlux(double muonThresholdEnergy,
                              boolean cutoffExists)
Constructor


PropagatingAtmMuonFlux

public PropagatingAtmMuonFlux(double alpha,
                              double muonThresholdEnergy,
                              boolean cutoffExists)
Constructor

Method Detail

readMatrix

public void readMatrix(java.io.DataInputStream in)
                throws java.io.IOException
Read the calculated propagation matrix

Throws:
java.io.IOException

setFluxCalculationMode

public void setFluxCalculationMode(boolean includeFluctuationEffects,
                                   boolean fluctuateEventByEvent)
set the mode on the flux caulation
        boolean includeFluctuationEffects : 
                    true  default. calculate the flux taking into account flucuation of 
                          muon energies due to the EAS cascading. 
                          CascadeFluctuationFactory class does this part of calculation.
                    false calculate the bare flux given by the Elbert formula.
                          an energy of muon bundles is associated with the energy of primary
                          cosmic ray by one-on-one relation.

        boolean fluctuateEventByEvent : Valid when includeFluctuationEffects = true

           true :  Flux is calculated such that an event by event flucuation is included.
                   Useful to evaluate flucuation of number of background events
           false: default. the flucuation effects is included in average way. i.e.,
                  The systematic factor of the flux shift due the cascade flucuation
                  is calculated and multiplied in the flux calculation.
                  Useful to the MC-data fitting, calculation of average number of events
        


setConfidenceLevelOfFluctuation

public void setConfidenceLevelOfFluctuation(double prob)
Set Confidence level of the Energy rato parameter R = (E_muon/E0)/ Bar(E_muon/E0). If this value is non zero (zero in its default) and (includeFluctuationEffect fluctuateEventByEvent) = (true, true) then all the relevant fluxes are calculated based on a fixed value of R given by this confidence level. If zero (default), the fluxes are given by the interal over R which correponds to taking the central value of R-distribution.


setCutOffFeature

public void setCutOffFeature(boolean cutoffExists)
set the GZK cutoff feature or not


getDFMuDLogE

public double getDFMuDLogE(double logE,
                           double cos_th)
Calculate dF/dLogE [/cm^2 sec sr] for nu-mu


getDFMuDLogCREDLogE

public double getDFMuDLogCREDLogE(double logCosmicRayEnergy,
                                  double halfWidthOfLogE,
                                  double logE,
                                  double cos_th)
Calculate dF^2/dLogEcrDLogE [/cm^2 sec sr] for nu-mu Because the cosmic ray follows the rapidly falling spectrum, the flux is averaged over a given log(cosmic ray energy [GeV]) in a half width given by halfWidthOfLogE. Because the bin width of the propagation matrix is Particle.getDeltaLogEnergy() (presently 0.01), the width should be set as equal to or larger than this value.
        double logCosmicRayEnergy     : log10(Cosmic Ray Energy [GeV]) producing muon bundles with logE
        double halfWidthOfLogE        : a half width of integration for averaging the cosmic ray flux
        double logE                   : log10(Muon Bundle Energy [GeV])
        double cos_th                 : cos(zenith angle)
        


getAverageMuonEnergyLossAfterPropagation

protected double getAverageMuonEnergyLossAfterPropagation()
Calculate and return the averaged relative energy loss of a muon after its propagation in the Earth. This value is used as the threshold energy of muons in a bundle in the calulcation of the parent Cosmic Ray energy with the
      AtmMuonBundle.getEffectiveEnergyOfCRs(double muonBundleEnergy, 
                                           double cosTheta_ice3)
      


whetherPropagationMatrixWithGlashowResonance

public void whetherPropagationMatrixWithGlashowResonance(boolean flag)
or Glashow Resonance


listFluxes

protected void listFluxes(double logEnergy,
                          double cosTheta)
integrate getDFDLogCREDLogE(logEcr,logEmu,cosTheta) over logEcr and compare with getDFDLogE(logEmu,cosTheta) for the consistency check


getFunction

public double getFunction(int functionIndex,
                          double[] parameters,
                          double x)
Implementation of interface numRecipes.Function used for numerical integration of the d^F/dLogEcrDlogEmu over logEcr, the cosmic ray energy. This should be equal to dF/dLogEmu, the return value of the method getDFMuDLogE(logE, cosZenith). This implementation is only for debugging purpose.
        double x = logCosmicRayEnergy

        parameter[0]   : log10(Muon Energy [GeV])
        parameter[1]   : cosine(Zenith angle)

        

Specified by:
getFunction in interface Function