Example application to display DIS of muon. 
   26{
   29 
   31  int            numberOfEvents;
   32  ULong_t        seed;
   34 
   35  try { 
   36 
   37    JParser<> zap(
"Example application to display DIS of muon.");
 
   38 
   43 
   44    zap(argc, argv);
   45  }
   46  catch(const exception &error) {
   47    FATAL(error.what() << endl);
 
   48  }
   49 
   50  gRandom->SetSeed(seed);
   51 
   52 
   54 
   55 
   56  TH1D h0("sigma", NULL, 1000, -1.0, 9.0);
   57 
   58  JManager<double, TH1D> HA(new TH1D("v  [% GeV]", NULL, 1000, -5.0, 0.0));
   59  JManager<double, TH1D> H1(new TH1D("ran[% GeV]", NULL, 1000, -5.0, 0.0));
   60  JManager<double, TH1D> HB(new TH1D("RMS[% GeV]", NULL, 1000, -5.0, 0.0));
   61 
   62  H1->Sumw2();
   63 
   65                                       { 1.0e3, 0.6 },
   66                                       { 1.0e4, 0.5 } };
   67 
   68 
   69  for (int i = 1; i <= h0.GetNbinsX(); ++i) {
   70      
   71    const double x = h0.GetBinCenter(i);
 
   72    const double E = 
pow(10.0, x);
 
   74    
   75    h0.SetBinContent(i, y * 1.0e+30);  
   76  }
   77  
   78  for (const auto& setup : setups) {
   79 
   80    const double E = setup.first;
   81 
   82    TH1D* ha = HA[E];
   83    TH1D* h1 = H1[E];
   84    TH1D* hb = HB[E];
   85 
   86    for (int i = 1; i <= ha->GetNbinsX(); ++i) {
   87      
   88      const double x = ha->GetBinCenter(i);
 
   89      const double v = 
pow(10.0, x);
 
   90 
   91      double y = dis.
getP(E, v);
 
   92      
   93      if (numberOfEvents == 0) {
   94        y *= setup.second / dis.
getP(E, dis.
getV(E));
 
   95      }
   96 
   97      ha->SetBinContent(i, y);
   98    }
   99 
  100    if (numberOfEvents != 0) {
  101 
  102      for (int i = 0; i != numberOfEvents; ++i) {
  103 
  104        const double Es = dis.
getE(E);
 
  105        const double v  = Es/E;
  106 
  107        h1->Fill(log10(v));
  108      }
  109 
  110      for (int i = 1; i <= h1->GetNbinsX(); ++i) {
  111 
  112        const double y =  h1->GetBinContent(i);
 
  113        const double z =  h1->GetBinError  (i);
  114 
  115        const double xmin = h1->GetXaxis()->GetBinLowEdge(i);
 
  116        const double xmax = h1->GetXaxis()->GetBinUpEdge (i);
 
  117 
  118        const double w = (
pow(10.0,xmax) - 
pow(10.0,xmin)) * numberOfEvents;
 
  119 
  120        h1->SetBinContent(i, y / w);
  121        h1->SetBinError  (i, z / w);
  122      }
  123    }
  124 
  125    for (int i = 1; i <= hb->GetNbinsX(); ++i) {
  126      
  127      const double x = hb->GetBinCenter(i);
 
  128      const double v = 
pow(10.0, x);
 
  130 
  131      hb->SetBinContent(i, y);
  132    }
  133  }
  134 
  135 
  137 
  138  out << h0 << HA << H1 << HB;
  139 
  140  out.Write();
  141  out.Close();
  142}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
Deep-inelastic muon-nucleon scattering.
 
double getCrossSection(const double E) const
Get cross section.
 
double getP(const double E, const double v) const
Get probability of given energy fraction.
 
double getThetaRMS(const double E, const double v) const
Get RMS of scattering angle.
 
double getV(const double E) const
Get breakpoint.
 
double getE(const double E) const
Get shower energy.
 
T pow(const T &x, const double y)
Power .
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).