#ifndef HEVENTHEADER_H
#define HEVENTHEADER_H

#include "TObject.h"
#include "hgeomvector.h"

class HVertex : public TObject {
public:
 HVertex(void) { iterations=-1; }
 ~HVertex(void) {}

 void setPos(HGeomVector &p)      { pos = p; }
 void setIterations(Short_t i)    { iterations = i; }
 void setChi2(Float_t c)          { chi2 = c; }
 void setSumOfWeights(Float_t sw) { sumOfWeights = sw; }

 Short_t      getIterations(void)     { return iterations; }
 Float_t      getChi2(void)           { return chi2; }
 Float_t      getSumOfWeights(void)   { return sumOfWeights; }
 Double_t     getX()                  { return pos.getX(); }
 Double_t     getY()                  { return pos.getY(); }
 Double_t     getZ()                  { return pos.getZ(); }
 HGeomVector &getPos(void)            { return pos; }

protected:
 HGeomVector pos;          // Vertex position
 Short_t     iterations;   // Iterations until convergence. < 0, if no convergence
 Float_t     chi2; 
 Float_t     sumOfWeights; 

public:
 ClassDef(HVertex,2) // Event primary vertex
};


class HEventHeader : public TObject
{
private:
  HVertex fVertex;            // Vertex information (x, y, z (in mm) in lab system)
  Int_t   timeInSpill;        // Time in spill
  UInt_t  downscaling;        // DAQ downscaling factor
  UInt_t  downscalingFlag;    // DAQ downscaling flag (bit 4 of EvtId)
  UInt_t  fDate;              // Date in DAQ format
  UInt_t  fErrorBit;          // Error bit (the MSB of EvtId)
  UInt_t  fEventDecoding;     // Decoding flag
  UInt_t  fEventPad;          // 64 bit alignment
  UInt_t  fEventRunNumber;    // Run number
  UInt_t  fEventSeqNumber;    // Event number
  UInt_t  fEventSize;         // Event size in bytes
  UInt_t  fId;                // Event id (bits 0...3 of EvtId)
  UInt_t  fTBit;              // Trigger bits (8 bits of LVL1 trigger box)
  UInt_t  fTime;              // Time in DAQ format
  UInt_t  fVersion;           // Version info (bits 12...15 of EvtId)
  UInt_t  triggerDecision;    // LVL2 decision in lower 16 bit (bits 5...7 of EvtId)
  UInt_t  triggerDecisionEmu; // MU emulation of LVL2 decission 

public:
  HEventHeader(void) : 
    timeInSpill(0),
    downscaling(0),
    downscalingFlag(0),
    fDate(0),
    fErrorBit(0),
    fEventDecoding(0),
    fEventPad(0),
    fEventRunNumber(0),
    fEventSeqNumber(0),
    fEventSize(0),
    fId(0),
    fTBit(0),
    fTime(0),
    fVersion(0),
    triggerDecision(0),
    triggerDecisionEmu(0) {;}

  ~HEventHeader(void) {;}

  void setDate(UInt_t date)                     { fDate = date; }
  void setDownscaling(UInt_t d)                 { downscaling = d; }
  void setDownscalingFlag(UInt_t df)            { downscalingFlag = (df & 0x01); }
  void setErrorBit(UInt_t eb)                   { fErrorBit = (eb & 0x01); }
  void setEventDecoding(UInt_t eventDecod)      { fEventDecoding = eventDecod; }
  void setEventPad(UInt_t evPad)                { fEventPad = evPad; }
  void setEventRunNumber(UInt_t evFileNr)       { fEventRunNumber = evFileNr; }
  void setEventSeqNumber(UInt_t evSeqNr)        { fEventSeqNumber = evSeqNr; }
  void setEventSize(UInt_t eventSize)           { fEventSize = eventSize; }
  void setId(UInt_t id)                         { fId = id; }
  void setMuEmuTriggerDecision(UInt_t td)       { triggerDecisionEmu = (td & 0xFF); }
  void setTBit(UInt_t bits)                     { fTBit = (bits & 0xFF); }
  void setTime(UInt_t time)                     { fTime = time; }
  void setTimeInSpill(Int_t val)                { timeInSpill = val; }
  void setTriggerDecision(UInt_t td)            { triggerDecision = (td & 0x07); }
  void setVersion(Int_t v)                      { fVersion = (v & 0x0F); }

  Bool_t   IsTBit(Int_t i)                      { return ((fTBit >> i) & 1); }
  Double_t getVertexZ()                         { return fVertex.getZ(); }
  HVertex  &getVertex(void)                     { return fVertex; }
  Int_t    getTimeInSpill()                     { return timeInSpill; }
  UInt_t   getDate(void)                        { return fDate; }
  UInt_t   getDownscaling()                     { return downscaling; }
  UInt_t   getDownscalingFlag()                 { return downscalingFlag; }
  UInt_t   getErrorBit(void)                    { return fErrorBit; }
  UInt_t   getEventDecoding(void)               { return fEventDecoding; }
  UInt_t   getEventPad(void)                    { return fEventPad; }
  UInt_t   getEventRunNumber(void)              { return fEventRunNumber; }
  UInt_t   getEventSeqNumber(void)              { return fEventSeqNumber; }
  UInt_t   getEventSize(void)                   { return fEventSize; }
  UInt_t   getId(void)                          { return fId; }
  UInt_t   getMuEmuTriggerDecision()            { return triggerDecisionEmu; }
  UInt_t   getTBit(void)                        { return fTBit; }
  UInt_t   getTime(void)                        { return fTime; }
  UInt_t   getTriggerDecision()                 { return triggerDecision; }
  UInt_t   getVersion()                         { return fVersion; }
  inline Bool_t isNewDAQ()                      { return (fVersion==1); }   // new DAQ version (>= Sep03)
  inline Bool_t isOldDAQ()                      { return (fVersion==0); }   // old DAQ version (< Sep03)

  ClassDef(HEventHeader,7) // HADES event header class
};

#endif /* !HEVENTHEADER_H */



Last change: Sat May 22 12:55:03 2010
Last generated: 2010-05-22 12:55

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.