//*-- Author: Alberica Toia
//*-- Modified: Joern Wuestenfeld 05/11/2005
//*-- Version: $Id: htriggerparmommap.cc,v 1.11 2006/08/12 13:05:57 halo Exp $

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
// HTriggerParMomMap
//
// Parameters for TRIGGER Emulation
//
///////////////////////////////////////////////////////////////////////////////
#include "htriggerparmommap.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "htriggerdetector.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hmessagemgr.h"

ClassImp(HTriggerParMomMap)

 void HTriggerParMomMap::setDefaults(void)
{
  // sets the default values
  //
  // Input parameters:
  //   none
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  for (Int_t xx=0; xx < 63; xx++)
    {
      for (Int_t yy=0; yy < 63; yy++)
        {
          for (Int_t zz=0; zz < 7; zz++)
            {
              mu_mom[xx][yy][zz]=0;
            }
        }
    }
}


 HTriggerParMomMap::HTriggerParMomMap(const char* name,const char* title, const char* context)
          : HParSet(name,title,context)
{
  //Default constructor
  ////
  // Input parameters:
  //   const char *name
  //     Name of the parametercontainer, default "TriggerParMuMomMap"
  //   const char *title
  //     Title of the container, used by ROOT
  //   const chat *context
  //     Parameter context to read parameters for
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  strcpy(detName,"Trigger");
}


 HTriggerParMomMap::~HTriggerParMomMap(void)
{
  // Destructor
  //
  // Input parameters:
  //   none
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
}

 Bool_t HTriggerParMomMap::init(HParIo* inp,Int_t* set)
{
  // Intitializes the container from an input
  //
  // Input parameters:
  //   HParIo *inp
  //     Input from which to read parameters
  //   Int_t *set
  //     Pointer to parameter set, ito which to store the data
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   If valid input can be found, returns result of initialization function of the
  //   input, kFALSE otherwise.
  HDetParIo* input=inp->getDetParIo("HTriggerParIo");
  if (input) return (input->init(this,set));
  return kFALSE;
}

 Int_t HTriggerParMomMap::write(HParIo* output)
{
  // Writes the container to an output
  //
  // Input parameters:
  //   HParIo *output
  //     Pointer to parameter output
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   If valid output can be found, returns result of the write function of
  //   this output, -1 otherwise.
  HDetParIo* out=output->getDetParIo("HTriggerParIo");
  if (out) return out->write(this);
  return -1;
}

 void HTriggerParMomMap::clear()
{
  // Sets the default values
  //
  // Input parameters:
  //   none
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  setDefaults();
  status=kFALSE;
  resetInputVersions();
}


 void HTriggerParMomMap::readline(const char *buf, Int_t *set)
{
  // Decodes one line read from ascii file I/O
  //
  // Input parameters:
  //   const char *buf
  //      Buffer with data from file
  //   Int_t *set
  //      Pointer of parameter set to which to write parameters
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  Int_t th,ph,Delta_th;
  Int_t theta,phi,Delta_theta;
  Float_t mom;


  mom = -111; // dummy value
  sscanf(buf,"%i%i%i%f",&th,&Delta_th,&ph,&mom);

  if (mom == -111)
    {
      theta =th;
      phi=ph;
      Delta_theta=th;
      setTheta_bins(th);
      setDeltatheta_bins(Delta_th);
      setPhi_bins(ph);
      gHades->getMsg()->debug(1,HMessageMgr::DET_TRIGGER,GetName(),"%s %i %s %i %s %i",
                            "READLINE theta bins",th,"delta theta bins",Delta_th,"phi bins",ph);
    }
  else
    {
      if(getTheta_bins()>63||getDeltatheta_bins()>63||getPhi_bins()>7)
        {
          ERROR_msg(HMessageMgr::DET_TRIGGER,"readline():: array out of bounds! skipp!");
          return;
        }
      if( (Delta_th > -1) && (Delta_th <  getTheta_bins() )
          && (th > -1) && (th < getDeltatheta_bins() ) 
          && (ph > -1) && (ph < getPhi_bins() ) )
        {
          setMom(th,Delta_th,ph,mom);
        }
      else
        {
          ERROR_msg(HMessageMgr::DET_TRIGGER,"variables not properly set");
        }
    }
}

 void HTriggerParMomMap::putAsciiHeader(TString& header)
{
  // Puts the ascii header to the string used in HTriggerParAsciiFileIo
  //
  // Input parameters:
  //   TString &header
  //     Reference of string which should contain the header
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  header=
    "# Parameters for the MU Momentum Mappingn"
    "# Format:n"
    "# theta bins  Delta_theta bins  phi binsn"
    "# theta       Delta_theta       phi       momentumn";
}

 Bool_t HTriggerParMomMap::writeline(char *buf,Int_t s, Int_t m, Int_t c)
{
  // Writes one line to the buffer used by ascii file I/O
  //
  // Input Parameters:
  //    char *buf
  //      Pointer to buffer to which to write the parameters
  //    Int_t s
  //
  //    Int_t m
  //
  //    Int_t c
  //
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   Returns kFALSE if s > 63 or m > 63 or c > 7, otherwise kTRUE
    if(s>63||m>63||c>7)
    {
      ERROR_msg(HMessageMgr::DET_TRIGGER,"writeline():: array out of bounds! skipp!");
      return kFALSE;
    }
    sprintf(buf,"%i %i %i %fn",s,m,c,getMom(s,m,c));
    return kTRUE;
}

 Bool_t HTriggerParMomMap::writesize(char *buf)
{
  // writes one line to the buffer used by ascii file I/O
  //
  // Input Parameters:
  //    char *buf
  //      Pointer to buffer to which to write the parameters
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   kTRUE always.
  sprintf(buf,"%i %i %in",getTheta_bins(),getDeltatheta_bins(),getPhi_bins());	
  return kTRUE;
}

 void HTriggerParMomMap::printParam(void)
{
  // Print the parameters
  //
  // Input parameters:
  //   none
  //
  // Output parameters:
  //   none
  //
  // Return code:
  //   none
  INFO_msg(10,HMessageMgr::DET_TRIGGER,"n Parameters for the MU Momentun Mappingn");
  INFO_msg(10,HMessageMgr::DET_TRIGGER," Format:n");
  INFO_msg(10,HMessageMgr::DET_TRIGGER," theta bins  Delta_theta bins  phi binsn");
  INFO_msg(10,HMessageMgr::DET_TRIGGER," theta       Delta_theta       phi       momentumn");
  SEPERATOR_msg("=",60);

  gHades->getMsg()->info(10,HMessageMgr::DET_TRIGGER,GetName(),"%s %i %s %i %s %i",
                        "PRINTPARAM theta bins",getTheta_bins(),"delta theta bins",getDeltatheta_bins(),
                        "phi bins",getPhi_bins());

  for (Int_t xx=0; xx < getTheta_bins(); xx++)
    {
      for (Int_t yy=0; yy< getDeltatheta_bins(); yy++)
        {
          for (Int_t zz=0; zz< getPhi_bins(); zz++)
            {
              if(xx>63||yy>63||zz>7)
                {
                  ERROR_msg(HMessageMgr::DET_TRIGGER,"printParam():: array out of bounds! skipp!");
                  continue;
                }
              gHades->getMsg()->info(10,HMessageMgr::DET_TRIGGER,GetName(),"%i %s%i%s%i%s%f",
                                      xx,"   ",yy,"   ",zz,"   ",getMom(xx,yy,zz));
            }
        }
    }
  SEPERATOR_msg("=",60);
}


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.