// Author: Andrew M. Rogers, NSCL 07/01/2006
// Original Design: Daniel Bazin, NSCL
//* Copyright (C) 2006-2008 Andrew M. Rogers

#include <math.h>

#include "TS800Trigger.h"

#include <TBranch.h>
#include <TNamed.h>
#include <TList.h>

ClassImp(TS800Trigger);

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TS800Trigger                                                         //
//                                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


//______________________________________________________________________________
TS800Trigger::TS800Trigger(const TS800Trigger & trigger) : TObject(trigger)
{
  // -- Copy Constructor.
  ((TS800Trigger&)trigger).Copy(*this);
}


//______________________________________________________________________________
Int_t TS800Trigger::Calculate(Long64_t entry) 
{
  // -- Calculate an entry.
  //

  return 1;
}


//______________________________________________________________________________
void TS800Trigger::Clear(Option_t*) 
{
  // -- Clear data members.
  // Currently, branch data members are set to zero.

  registr   = 0;
  s800      = 0;
  external1 = 0;
  external2 = 0;
  secondary = 0;
}


//______________________________________________________________________________
void TS800Trigger::Copy(TObject &trigger) const
{
  // -- Copy this method.
  TObject::Copy((TObject&)trigger);
  ((TS800Trigger&)trigger).fRandom.SetSeed(0);
  ((TS800Trigger&)trigger).name = name;
  
  // Clear();
}


//______________________________________________________________________________
void TS800Trigger::InitClass(TString iname) 
{
  // -- Initialize the class.
  // Set the class name.

  name = iname;
}


//______________________________________________________________________________
void TS800Trigger::InitTree(TTree *tree) 
{
  // -- Initialize class branch pointers to the tree.
  //

  fChain = tree;
  fCurrent = -1;
  //  TNamed *aState = (TNamed*)fChain->GetUserInfo()->FindObject("Analysis State");

  b_registr   = fChain->GetBranch(name+".register");
  b_s800      = fChain->GetBranch(name+".s800");
  b_external1 = fChain->GetBranch(name+".external1");
  b_external2 = fChain->GetBranch(name+".external2");
  b_secondary = fChain->GetBranch(name+".secondary");
}


//______________________________________________________________________________
void TS800Trigger::GetEntry(Int_t i) 
{
  // --
  //

  b_registr->GetEntry(i);
  b_s800->GetEntry(i);
  b_external1->GetEntry(i);
  b_external2->GetEntry(i);
  b_secondary->GetEntry(i);
}

//______________________________________________________________________________
UShort_t* TS800Trigger::Unpack(UShort_t *p) 
{
  // -- Unpack a S800 trigger packet.
  //

  UShort_t words = (*(p-2))-2, ch;
  registr = *p++;
  words--;
  while (words > 0) {
    ch = ((*p)&0xf000)>>12;
    if (ch == 8)  s800      = (UShort_t)((*p++)&0xfff);
    if (ch == 9)  external1 = (UShort_t)((*p++)&0xfff);
    if (ch == 10) external2 = (UShort_t)((*p++)&0xfff);
    if (ch == 11) secondary = (UShort_t)((*p++)&0xfff);
    words--;
  }
  return p;
}


Last change: Sun Dec 21 12:38:58 2008
Last generated: 2008-12-21 12:38

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.