////////////////////////////////////////////////////////////////////////
//
// $Id: NuoscParam.h,v 1.3 2001/11/21 18:35:07 bviren Exp $
//
// NuoscParam
//
// Package: elbo
//
// Neutrino oscillation parameters.
//
// Contact: bv@bnl.gov
//
// Created on: Sat Nov 17 14:25:50 2001
//
////////////////////////////////////////////////////////////////////////

#ifndef ELBO_NUOSCPARAM_H
#define ELBO_NUOSCPARAM_H

#include <cmath>
class Options;
class NuoscParam {
public:
    int type;               // 1=nue, 2=numu, 3=nutau, nu=-antinu.
    int matter;             // uses matter effects
    double baseline;        // in cm (1e-5 km)
    double ss2t12, ss2t23, ss2t13; // sin^2(2theta_ij)
    double cpphase;         // in radians
    double dm2sol, dm2atm;  // in eV^2

    double theta_12() { return 0.5*asin(sqrt(ss2t12)); }
    double theta_23() { return 0.5*asin(sqrt(ss2t23)); }
    double theta_13() { return 0.5*asin(sqrt(ss2t13)); }

    NuoscParam();
    NuoscParam(int& argc, const char** argv);
    ~NuoscParam();

    Options* parse_args(int& argc, const char** argv);
    void usage(const char* msg);

private:
    void init();
    Options* options;
};
    
#endif  // ELBO_NUOSCPARAM_H
