#ifndef __JACOUSTICS__JSUPPORT__
#define __JACOUSTICS__JSUPPORT__

#include "JLang/JType.hh"
#include "JLang/JTypeList.hh"
#include "JROOT/JTreeParameters.hh"


/**
 * \file
 *
 * ROOT TTree parameter settings.\n
 * \author mdejong
 */

using JLANG::JType;
using JROOT::JTreeParameters;

/**
 * Auxiliary classes and methods for acoustic position calibration.
 */
namespace JACOUSTICS {

  struct JEvent;
  struct JEvt;
  struct JSuperEvt;
  struct JTriggerParameters;
  struct JFitParameters;


  /**
   * \param  type   data type
   * \return        TTree parameters
   */
  inline JTreeParameters getTreeParameters(const JType<JEvent>& type)
  {
    return JTreeParameters("ACOUSTICS", "acoustics_event", "",  2, 65536, 2);
  }

  /**
   * \param  type   data type
   * \return        TTree parameters
   */
  inline JTreeParameters getTreeParameters(const JType<JEvt>& type)
  {
    return JTreeParameters("ACOUSTICS_FIT", "acoustics_fit", "",  2, 65536, 2);
  }

  /**
   * \param  type   data type
   * \return        TTree parameters
   */
  inline JTreeParameters getTreeParameters(const JType<JSuperEvt>& type)
  {
    return JTreeParameters("ACOUSTICS_SUPER_FIT", "acoustics_super_fit", "",  2, 65536, 2);
  }
}

/**
 * Type list of acoustics data types for I/O.
 */
typedef JLANG::JTYPELIST<JACOUSTICS::JEvent,
			 JACOUSTICS::JEvt,
			 JACOUSTICS::JSuperEvt,
			 JACOUSTICS::JTriggerParameters,
			 JACOUSTICS::JFitParameters>::typelist  JAcousticsTypes_t;

#endif