ROOT logo
#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; }
 
 
 Bool_t       isPileupCluster(void)   { return TestBit(BIT(16)); } // For default cuts
 Bool_t       isPileupCluster(Float_t cutType1,Float_t cutType2);
 Int_t        getPileupClusterType(void);
 Int_t        getPileupClusterTarget(void);
 Float_t      getPileupClusterSignal(void);

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)
  HVertex fVertexCluster;     // Vertex information (x, y, z (in mm) in lab system from Clusters)
  HVertex fVertexReco;        // Vertex information (x, y, z (in mm) in lab system from Clusters)
  Int_t   timeInSpill;        // Time in spill old
  Double_t timeInSpillF;       // Time in spill                (in ns)
  Double_t timeToLastTrigger;  // Time to last Trigger         (in ns)
  Double_t timeToLastAntiCoinc;// Time to last AntiCoincidence (in ns)

  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),
    timeInSpillF(0),
    timeToLastTrigger(0),
    timeToLastAntiCoinc(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 & 0xFFFFFFFF); }
  void setTime(UInt_t time)                     { fTime = time; }
  void setTimeInSpillOld(Int_t val)             { timeInSpill = val; }
  void setTimeInSpill(Double_t val)             { timeInSpillF = val; }
  void setTimeToLastTrigger(Double_t val)       { timeToLastTrigger = val; }
  void setTimeToLastAntiCoinc(Double_t val)     { timeToLastAntiCoinc = 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(); }
  Double_t getVertexClusterZ()                  { return fVertexCluster.getZ(); }
  Double_t getVertexRecoZ()                     { return fVertexReco.getZ(); }
  HVertex  &getVertex(void)                     { return fVertex; }
  HVertex  &getVertexCluster(void)              { return fVertexCluster; }
  HVertex  &getVertexReco(void)                 { return fVertexReco; }
  Int_t    getTimeInSpillOld()                  { return timeInSpill; }
  Double_t getTimeInSpill()                     { return timeInSpill ? (Float_t)timeInSpill : timeInSpillF; }
  Double_t getTimeToLastTrigger()               { return timeToLastTrigger; }
  Double_t getTimeToLastAntiCoinc()             { return timeToLastAntiCoinc; }
  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,10) // HADES event header class
};

#endif /* !HEVENTHEADER_H */


 heventheader.h:1
 heventheader.h:2
 heventheader.h:3
 heventheader.h:4
 heventheader.h:5
 heventheader.h:6
 heventheader.h:7
 heventheader.h:8
 heventheader.h:9
 heventheader.h:10
 heventheader.h:11
 heventheader.h:12
 heventheader.h:13
 heventheader.h:14
 heventheader.h:15
 heventheader.h:16
 heventheader.h:17
 heventheader.h:18
 heventheader.h:19
 heventheader.h:20
 heventheader.h:21
 heventheader.h:22
 heventheader.h:23
 heventheader.h:24
 heventheader.h:25
 heventheader.h:26
 heventheader.h:27
 heventheader.h:28
 heventheader.h:29
 heventheader.h:30
 heventheader.h:31
 heventheader.h:32
 heventheader.h:33
 heventheader.h:34
 heventheader.h:35
 heventheader.h:36
 heventheader.h:37
 heventheader.h:38
 heventheader.h:39
 heventheader.h:40
 heventheader.h:41
 heventheader.h:42
 heventheader.h:43
 heventheader.h:44
 heventheader.h:45
 heventheader.h:46
 heventheader.h:47
 heventheader.h:48
 heventheader.h:49
 heventheader.h:50
 heventheader.h:51
 heventheader.h:52
 heventheader.h:53
 heventheader.h:54
 heventheader.h:55
 heventheader.h:56
 heventheader.h:57
 heventheader.h:58
 heventheader.h:59
 heventheader.h:60
 heventheader.h:61
 heventheader.h:62
 heventheader.h:63
 heventheader.h:64
 heventheader.h:65
 heventheader.h:66
 heventheader.h:67
 heventheader.h:68
 heventheader.h:69
 heventheader.h:70
 heventheader.h:71
 heventheader.h:72
 heventheader.h:73
 heventheader.h:74
 heventheader.h:75
 heventheader.h:76
 heventheader.h:77
 heventheader.h:78
 heventheader.h:79
 heventheader.h:80
 heventheader.h:81
 heventheader.h:82
 heventheader.h:83
 heventheader.h:84
 heventheader.h:85
 heventheader.h:86
 heventheader.h:87
 heventheader.h:88
 heventheader.h:89
 heventheader.h:90
 heventheader.h:91
 heventheader.h:92
 heventheader.h:93
 heventheader.h:94
 heventheader.h:95
 heventheader.h:96
 heventheader.h:97
 heventheader.h:98
 heventheader.h:99
 heventheader.h:100
 heventheader.h:101
 heventheader.h:102
 heventheader.h:103
 heventheader.h:104
 heventheader.h:105
 heventheader.h:106
 heventheader.h:107
 heventheader.h:108
 heventheader.h:109
 heventheader.h:110
 heventheader.h:111
 heventheader.h:112
 heventheader.h:113
 heventheader.h:114
 heventheader.h:115
 heventheader.h:116
 heventheader.h:117
 heventheader.h:118
 heventheader.h:119
 heventheader.h:120
 heventheader.h:121
 heventheader.h:122
 heventheader.h:123
 heventheader.h:124
 heventheader.h:125
 heventheader.h:126
 heventheader.h:127
 heventheader.h:128
 heventheader.h:129
 heventheader.h:130
 heventheader.h:131
 heventheader.h:132
 heventheader.h:133
 heventheader.h:134
 heventheader.h:135
 heventheader.h:136
 heventheader.h:137
 heventheader.h:138
 heventheader.h:139
 heventheader.h:140
 heventheader.h:141
 heventheader.h:142
 heventheader.h:143
 heventheader.h:144
 heventheader.h:145
 heventheader.h:146
 heventheader.h:147
 heventheader.h:148