AtNuEnergyCorrections Class Reference

#include <AtNuEnergyCorrections.h>

List of all members.

Static Public Member Functions

static AtNuEnergyCorrectionsInstance ()
static Double_t GetMuonMomentumRange (AtmosEvent *event)
static Double_t GetMuonMomentumCurve (AtmosEvent *event)
static Double_t GetHadronicShowerEnergy (AtmosEvent *event)
static Double_t GetNeutrinoShowerEnergy (AtmosEvent *event)

Private Member Functions

 AtNuEnergyCorrections ()
 ~AtNuEnergyCorrections ()

Detailed Description

Definition at line 8 of file AtNuEnergyCorrections.h.


Constructor & Destructor Documentation

AtNuEnergyCorrections::AtNuEnergyCorrections (  )  [private]

Definition at line 31 of file AtNuEnergyCorrections.cxx.

00032 {
00033 
00034 }

AtNuEnergyCorrections::~AtNuEnergyCorrections (  )  [private]

Definition at line 36 of file AtNuEnergyCorrections.cxx.

00037 {
00038 
00039 }


Member Function Documentation

Double_t AtNuEnergyCorrections::GetHadronicShowerEnergy ( AtmosEvent event  )  [static]

Definition at line 88 of file AtNuEnergyCorrections.cxx.

Referenced by AtNuEventViewer::DisplayInfo(), and AtNuEventNtuple::WriteVariables().

00089 {
00090   // check for event
00091   if( event==0 ) return 0.0;
00092 
00093   // get deweighted shower energy
00094   Double_t recoeshwdwgt = event->RecoInfo.ShwEnergyGeVDeweighted;    
00095 
00096   // calculate corrected shower energy
00097   Double_t reco2true = 1.0;
00098 
00099   if( recoeshwdwgt>0.0 ){
00100     reco2true = (1.0-0.65*exp(-recoeshwdwgt/0.25));
00101     if( recoeshwdwgt>0.30 ){
00102       reco2true *= (1.0-0.30*(recoeshwdwgt-0.30)/(0.60+recoeshwdwgt*recoeshwdwgt));
00103     }
00104     recoeshwdwgt *= reco2true;
00105   }
00106 
00107   // return corrected shower energy
00108   return recoeshwdwgt;
00109 }

Double_t AtNuEnergyCorrections::GetMuonMomentumCurve ( AtmosEvent event  )  [static]

Definition at line 70 of file AtNuEnergyCorrections.cxx.

Referenced by AtNuEventViewer::DisplayInfo(), and AtNuEventNtuple::WriteVariables().

00071 {
00072   // check for event
00073   if( event==0 ) return 0.0;
00074   
00075   // get momentum from curvature
00076   Double_t recoemu = event->RecoInfo.MuMomentumCurve;
00077 
00078   // calculate corrected muon momentum
00079   if( recoemu>500.0 ){
00080     recoemu = pow(10.0, log10(500.0) 
00081                         + 0.66*(1.0-exp(-0.66*log(recoemu/500.0))));
00082   }
00083 
00084   // return corrected muon momentum
00085   return recoemu;
00086 }

Double_t AtNuEnergyCorrections::GetMuonMomentumRange ( AtmosEvent event  )  [static]

Definition at line 41 of file AtNuEnergyCorrections.cxx.

Referenced by AtNuEventViewer::DisplayInfo(), and AtNuEventNtuple::WriteVariables().

00042 {
00043   // check for event
00044   if( event==0 ) return 0.0;
00045 
00046   // get momentum from range
00047   Double_t recoemu = event->RecoInfo.MuMomentumRange;
00048 
00049   // calculate corrected muon momentum
00050   Double_t reco2true = 1.0;
00051 
00052   if( recoemu>0.0 ){    
00053     reco2true = (1.0-0.0270*(recoemu-0.85)*exp(-recoemu/1.85));
00054     if( recoemu<0.85 ){
00055       reco2true *= (1.0-0.0540*(recoemu-0.40)/(0.20+(recoemu-0.40)*(recoemu-0.40)));
00056     }
00057     else{
00058       reco2true *= (1.0-0.0237/(0.30+(recoemu-0.66)*(recoemu-0.66)));
00059       if( recoemu>3.0 ){
00060         reco2true *= (1.0-0.025*(recoemu-3.0)*(recoemu-3.0)/((recoemu-3.0)*(recoemu-3.0)+9.0));
00061       }
00062     }
00063     recoemu *= reco2true;
00064   }
00065      
00066   // return corrected muon momentum
00067   return recoemu;
00068 }

Double_t AtNuEnergyCorrections::GetNeutrinoShowerEnergy ( AtmosEvent event  )  [static]

Definition at line 111 of file AtNuEnergyCorrections.cxx.

References AtmosShower::Energy, AtmosShower::Nplanes, AtmosShower::Nstrips, and AtmosEvent::ShowerList.

Referenced by AtNuEventViewer::DisplayInfo(), and AtNuEventNtuple::WriteVariables().

00112 {
00113   // check for event
00114   if( event==0 ) return 0.0;  
00115 
00116   // find largest shower
00117   AtmosShower* myshower = 0;
00118   for( Int_t i=0; i<event->NShowers; i++){
00119     AtmosShower* shower = (AtmosShower*)(event->ShowerList->At(i));
00120     if( shower ){
00121       if( myshower==0 ) myshower = shower;
00122       else if( shower->Nplanes>myshower->Nplanes ) myshower = shower;
00123     }
00124   }
00125 
00126   // check for shower
00127   if( myshower==0 ) return 0.0;
00128 
00129   // get linear shower energy
00130   Double_t recoeshwlin = 0.24 + 6.38e-3*150.0*(myshower->Energy-0.3);
00131                     // = -0.047 + 0.957*shw.energy
00132   if( recoeshwlin<0.0 ) recoeshwlin = 0.0; // just in case
00133 
00134   // get 'deweighted' shower energy
00135   Double_t nstrips = myshower->Nstrips;
00136   Double_t recoeshwdgwt = -0.21 + 0.11*nstrips;
00137                      // = 0.05*ndigits; // this also works
00138   if( recoeshwdgwt<0.0 ) recoeshwdgwt = 0.0; // just in case
00139 
00140   // get relative weights
00141   Double_t w = 0.10;
00142   if( nstrips>10.0 ){
00143     w = 1.00 - 0.90/(1.0+(nstrips-10.0)*(nstrips-10.0)/(5.0*5.0));
00144   }
00145 
00146   // calculate corrected shower energy
00147   Double_t recoeshwnue = w*recoeshwlin + (1.0-w)*recoeshwdgwt;
00148 
00149   // return corrected shower energy
00150   return recoeshwnue;
00151 }

AtNuEnergyCorrections * AtNuEnergyCorrections::Instance (  )  [static]

Definition at line 14 of file AtNuEnergyCorrections.cxx.

00015 {
00016   if( !fgAtNuEnergyCorrections ){
00017     fgAtNuEnergyCorrections = new AtNuEnergyCorrections();
00018   }
00019 
00020   if( !fgAtNuEnergyCorrections ){
00021     assert(fgAtNuEnergyCorrections);
00022   }
00023 
00024   if( fgAtNuEnergyCorrections ){
00025 
00026   }
00027 
00028   return fgAtNuEnergyCorrections;
00029 }


The documentation for this class was generated from the following files:

Generated on 2 Nov 2017 for loon by  doxygen 1.6.1