iceCube.uhe.muonModel
Class AtmMuonBundleFlux

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

public class AtmMuonBundleFlux
extends java.lang.Object
implements Function

UHE Atmospheric Muon fluxes based on the Elbert model
taking into account the muon bundles from EAS cascades.


Field Summary
 CascadeFluctuationFactory cascade
          Cascade flucutation calculator object
 double confidenceLevel_of_R
          Confidence level of the Energy rato parameter R = (E_muon/E0)/ Bar(E_muon/E0).
protected  boolean considerAtmosphericCurvature
           
static double criticalEnergy
          critical energy of ionization loss
 boolean fluctuateEventByEvent
          Options to calculate flux with/without taking into account fluxcuation of muon energies due to the EAS cascade process
 boolean includeFluctuationEffects
           
 
Constructor Summary
AtmMuonBundleFlux()
          Default Constructor.
AtmMuonBundleFlux(double alpha, double mass_number, double energy_threshold)
          This constuctor sets alpha, mass number, and muon energy threshold by the values given in its arguments.
 
Method Summary
 void considerAtmosphericCurvature(boolean consider)
          If true, then the Elbert formula takes into account the atmosphere density profile is curved following the earth curvature.
 double getAlpha()
          Get the alpha parameter
 double getCosineOfZenithAngleAtAtmosphericMuonHeight(double cos_theta_earth)
          Calculate the zenith angle at the muon production height up in the atmosphere.
 double getCosineOfZenithAngleAtEarthSurface(double cos_theta_ice3)
          Calculate the zenith angle at the earth surface.
 double getDFDLogCREDLogE(double logCosmicRayEnergy, double logMuonBundleEnergy, double cosTheta)
          Calculate d^2F/dLogEcrdLogEmuon [/cm^2 sec sr] as a function of cosmic ray energy and muon (bundle) energy at the earth surface.
 double getDFDLogE(double logEnergy, double cosTheta)
          Calculate dF/dLogE [/cm^2 sec sr] at the earth surface as a function of log E [GeV] and cosine of zenith angle
 double getDFDLogE(double logEnergy, double cosTheta, double slantDepth)
          Calculate in-ice dF/dLogE [/cm^2 sec sr] at the slant depth x [g/cm^2] as a function of log E [GeV] in ice and cosine of zenith angle.
 double getDFDLogE(double logEnergy, double cosTheta, double beta_loss, double slantDepth)
          Calculate in-ice dF/dLogE [/cm^2 sec sr] at the slant depth x [g/cm^2] as a function of log E [GeV] in ice and cosine of zenith angle.
 double getEffectiveEnergyOfCRs(double muonBundleEnergy, double cosTheta_ice3)
          Calculate the effective energy [GeV] of the parent cosmic ray for a given energy of the EHE muon bundle and its zenith angle at the IceCube depth.
 double getEffectiveEnergyOfCRs(double logEnergy, double cosTheta, double beta_loss, double slantDepth)
          Calculate the effective energy [GeV] of the parent cosmic ray for a given IN-ICE energy of the EHE muon bundle and its zenith angle at the IceCube depth.
 double getEFlux(double logEnergy, double cosTheta)
          Calculate energy flux E^2 dF/dE [GeV/cm^2 sec sr]
 double getEFlux(double logEnergy, double cosTheta, double beta, double slantDepth)
          Calculate energy flux E^2 dF/dE [GeV/cm^2 sec sr] at the slant depth x [g/cm^2].
 double getFluctuatedRelativeFlux(double logEnergy, double cosTheta, double slantDepth)
          Calculate the net fluctuation of the flux due to the cascade process.
 double getFunction(int functionIndex, double[] parameters, double x)
          Implementation of interface numRecipes.Function used for numerical integration of the probability of (E_muon/E0)/ Bar(E_muon/E0) multiplied by CosmicRayFlux (Energy x R)
 double getMassNumber()
          Get the mass number
 double getMuonThresholdEnergy()
          Get the threshold energy of muons [GeV]
 double integralDFDLogCREDLogEOverCREnergy(double lowerLogCosmicRayEnergy, double upperLogCosmicRayEnergy, double logMuonBundleEnergy, double cosTheta)
           
 boolean isValidAlpha(double alpha)
          Check if the alpha value in setting is within the valid range of the Elbert model.
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 setAlpha(double alpha)
          Set the alpha paramerter
 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 on/off the GZK feature of the primary cosmic ray spectrum
 void setFluxCalculationMode(boolean includeFluctuationEffects, boolean fluctuateEventByEvent)
          set the mode on the flux caulation
 void setMassNumber(double mass_number)
          set mass number of the primary cosmic rays
 void setMuonThresholdEnergy(double energy_threshold)
          Set the threshold energy [GeV] of muons contained in a bundle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

criticalEnergy

public static final double criticalEnergy
critical energy of ionization loss

See Also:
Constant Field Values

cascade

public CascadeFluctuationFactory cascade
Cascade flucutation calculator object


includeFluctuationEffects

public boolean includeFluctuationEffects

fluctuateEventByEvent

public boolean fluctuateEventByEvent
Options to calculate flux with/without taking into account fluxcuation of muon energies due to the EAS cascade process
        true :  Flux is calculated such that an event by event flucuation is included.
                Useful to evaluate flucuation of number of background events
        false: 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
       


confidenceLevel_of_R

public double confidenceLevel_of_R
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.


considerAtmosphericCurvature

protected boolean considerAtmosphericCurvature
Constructor Detail

AtmMuonBundleFlux

public AtmMuonBundleFlux()
Default Constructor. Fill alpha, mass number, and muon energy threshold with their moninal vlues. It also instansizes the cosmic ray flux class.


AtmMuonBundleFlux

public AtmMuonBundleFlux(double alpha,
                         double mass_number,
                         double energy_threshold)
This constuctor sets alpha, mass number, and muon energy threshold by the values given in its arguments. The cosmic ray flux object is also generated.

Method Detail

isValidAlpha

public boolean isValidAlpha(double alpha)
Check if the alpha value in setting is within the valid range of the Elbert model.


setAlpha

public void setAlpha(double alpha)
Set the alpha paramerter


getAlpha

public double getAlpha()
Get the alpha parameter


setMassNumber

public void setMassNumber(double mass_number)
set mass number of the primary cosmic rays


getMassNumber

public double getMassNumber()
Get the mass number


setMuonThresholdEnergy

public void setMuonThresholdEnergy(double energy_threshold)
Set the threshold energy [GeV] of muons contained in a bundle


getMuonThresholdEnergy

public double getMuonThresholdEnergy()
Get the threshold energy of muons [GeV]


setCutOffFeature

public void setCutOffFeature(boolean cutoffExists)
Set on/off the GZK feature of the primary cosmic ray spectrum


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 integral over R which correponds to taking the central value of R-distribution.


getCosineOfZenithAngleAtEarthSurface

public double getCosineOfZenithAngleAtEarthSurface(double cos_theta_ice3)
Calculate the zenith angle at the earth surface. The zenith angle at the IceCube depth is transformed to that at the surface accounting the earth curvature.


getCosineOfZenithAngleAtAtmosphericMuonHeight

public double getCosineOfZenithAngleAtAtmosphericMuonHeight(double cos_theta_earth)
Calculate the zenith angle at the muon production height up in the atmosphere. This angle is equal to the value returned by getCosineOfZenithAngleAtEarthSurface(double cos_theta_ice3) IF YOU NEGLET the EARTH CURVATURE effect in the atomosphere. Here this method considers the curvature effect.
        double cos_theta_earth: cosZenith at the earth surface
        


considerAtmosphericCurvature

public void considerAtmosphericCurvature(boolean consider)
If true, then the Elbert formula takes into account the atmosphere density profile is curved following the earth curvature. This is a newly added function. The older version is equal to the case of false.


getEffectiveEnergyOfCRs

public double getEffectiveEnergyOfCRs(double muonBundleEnergy,
                                      double cosTheta_ice3)
Calculate the effective energy [GeV] of the parent cosmic ray for a given energy of the EHE muon bundle and its zenith angle at the IceCube depth.


getEffectiveEnergyOfCRs

public double getEffectiveEnergyOfCRs(double logEnergy,
                                      double cosTheta,
                                      double beta_loss,
                                      double slantDepth)
Calculate the effective energy [GeV] of the parent cosmic ray for a given IN-ICE energy of the EHE muon bundle and its zenith angle at the IceCube depth. The muon propagation effects are accounted by the simple approximation exp[-beta*x] ignoring the ionization loss.


getDFDLogE

public double getDFDLogE(double logEnergy,
                         double cosTheta)
Calculate dF/dLogE [/cm^2 sec sr] at the earth surface as a function of log E [GeV] and cosine of zenith angle


getDFDLogE

public double getDFDLogE(double logEnergy,
                         double cosTheta,
                         double beta_loss,
                         double slantDepth)
Calculate in-ice dF/dLogE [/cm^2 sec sr] at the slant depth x [g/cm^2] as a function of log E [GeV] in ice and cosine of zenith angle. The muon propagation effects are accounted by the simple approximation exp[-beta*x] ignoring the ionization loss.


getDFDLogE

public double getDFDLogE(double logEnergy,
                         double cosTheta,
                         double slantDepth)
Calculate in-ice dF/dLogE [/cm^2 sec sr] at the slant depth x [g/cm^2] as a function of log E [GeV] in ice and cosine of zenith angle. The muon propagation effects are accounted by the simple approximation exp[-beta*x] ignoring the ionization loss. The "beta" term used in this method is caluclated inside this function by the value given by CELbeta static class in the interaction package.


getFluctuatedRelativeFlux

public double getFluctuatedRelativeFlux(double logEnergy,
                                        double cosTheta,
                                        double slantDepth)
Calculate the net fluctuation of the flux due to the cascade process. Returns the relative flux, i.e., multiplying this factor to the bare intrinsic flux gives the flux including the fluctuation effect. Depending on the option set by setFluxCalculationMode(), this method calculate the value in the average basis or with MC samping.
       double logEnergy       : Log(Muon Bundle Energy in ice [GeV])
       
The muon propagation effects are accounted by the simple CEL approximation.


getEFlux

public double getEFlux(double logEnergy,
                       double cosTheta)
Calculate energy flux E^2 dF/dE [GeV/cm^2 sec sr]


getEFlux

public double getEFlux(double logEnergy,
                       double cosTheta,
                       double beta,
                       double slantDepth)
Calculate energy flux E^2 dF/dE [GeV/cm^2 sec sr] at the slant depth x [g/cm^2]. The muon propagation effects are accounted by the simple approximation exp[-beta*x] ignoring the ionization loss.


getDFDLogCREDLogE

public double getDFDLogCREDLogE(double logCosmicRayEnergy,
                                double logMuonBundleEnergy,
                                double cosTheta)
Calculate d^2F/dLogEcrdLogEmuon [/cm^2 sec sr] as a function of cosmic ray energy and muon (bundle) energy at the earth surface. When neglect the airshower cascade flucutation, these two energies are related on one-on-one, but introducing the fluctuation leads to cosmic ray energy distribution that is responsieble for bundles with a given energy. The method getDFDLogE(double logEnergy, double cosTheta) with includeFluctuationEffects =true, and fluctuateEventByEvent =false corresponds to integral of this flux over the cosmic ray energy.
       double logCosmicRayEneergy  : log10(Cosmic Ray   Energy [GeV])
       double logMuonBundleEneergy : log10(Muone Bundle Energy [GeV])
       double cosTheta             : cos(Zenith) of the bundle
       


integralDFDLogCREDLogEOverCREnergy

public double integralDFDLogCREDLogEOverCREnergy(double lowerLogCosmicRayEnergy,
                                                 double upperLogCosmicRayEnergy,
                                                 double logMuonBundleEnergy,
                                                 double cosTheta)

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 probability of (E_muon/E0)/ Bar(E_muon/E0) multiplied by CosmicRayFlux (Energy x R)
        int functionIndex  :  1 calculation with inice muon, 2 with the surface
        double x = R = (E_muon/E0)/ Bar(E_muon/E0)

        functionIndex =3 then x = logCosmicRayEnergy

        parameter[0]   : log10(primary Cosmic Ray Energy [GeV]) to be responsible
                         for the muon bundle in AVERAGE i.e. R=1
        parameter[1]   : cosine(Zenith angle)

        

Specified by:
getFunction in interface Function