00001 #ifndef ANP_HEADER_H
00002 #define ANP_HEADER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <cassert>
00016 #include <iosfwd>
00017 #include <string>
00018
00019
00020 #include "Rtypes.h"
00021
00022 namespace Anp
00023 {
00024 class Header
00025 {
00026 public:
00027
00028 Header();
00029 ~Header();
00030
00031 int Run() const;
00032 int SubRun() const;
00033 int Snarl() const;
00034 int TimeFrame() const;
00035 int Sec() const;
00036 int NSec() const;
00037 int Trigger() const;
00038 int SpillType() const;
00039 int Detector() const;
00040 int SimFlag() const;
00041
00042 int RunPeriod() const;
00043 int Release() const;
00044 int SpillSec() const;
00045 int SpillNSec() const;
00046 int GPSTime() const;
00047 int GPSError() const;
00048 int LITime() const;
00049 int CrateMask() const;
00050 int BeamDSec() const;
00051 int BeamDNSec() const;
00052
00053 float Tor101() const;
00054 float Tr101D() const;
00055 float TorTgt() const;
00056 float TrTgtD() const;
00057 float CoilCur() const;
00058 double Time2Spill() const;
00059
00060 bool CoilRevs() const;
00061 bool GoodBeam() const;
00062 bool GoodCoil() const;
00063 bool GoodDetc() const;
00064 bool GoodHV() const;
00065 bool IsValid() const;
00066
00067 bool IsData() const;
00068 bool IsNear() const;
00069 bool IsFar() const;
00070
00071 long double BeamDTime() const;
00072 long double SpillTime() const;
00073 long double TriggTime() const;
00074
00075 const std::string GetBEAMTYPE() const;
00076 const std::string GetDATATYPE() const;
00077 const std::string GetDETECTOR() const;
00078 const std::string GetMCRLTYPE() const;
00079 const std::string GetRECOTYPE() const;
00080 const std::string GetRUNCYCLE() const;
00081
00082 void Clear();
00083
00084 void Print(std::ostream &o = std::cout) const;
00085
00086 private:
00087
00088 int SetBeamType(const std::string &value);
00089
00090 private:
00091
00092 friend class FillHeader;
00093
00094 Int_t run;
00095 Int_t subrun;
00096 Int_t snarl;
00097 Int_t timeframe;
00098 Int_t sec;
00099 Int_t nsec;
00100 Int_t trigger;
00101 Int_t spilltype;
00102 Int_t detector;
00103 Int_t simflag;
00104 Int_t runperiod;
00105 Int_t relitype;
00106 Int_t spillsec;
00107 Int_t spillnsec;
00108 Int_t gpstime;
00109 Int_t gpserror;
00110 Int_t litime;
00111 Int_t cratemask;
00112 Int_t beamdsec;
00113 Int_t beamdnsec;
00114 Float_t tor101;
00115 Float_t tr101d;
00116 Float_t tortgt;
00117 Float_t trtgtd;
00118 Float_t coilcur;
00119 Double_t time2spill;
00120
00121 Bool_t coilrevs;
00122 Bool_t goodbeam;
00123 Bool_t goodcoil;
00124 Bool_t gooddetc;
00125 Bool_t goodhv;
00126 Bool_t valid;
00127
00128 char beamtype[9];
00129 };
00130
00131
00132
00133
00134 bool operator==(const Header &lhs, const Header &rhs);
00135 bool operator!=(const Header &lhs, const Header &rhs);
00136
00137 std::ostream& operator<<(std::ostream& o, const Header &self);
00138
00139
00140
00141
00142 inline int Header::Run() const { return run; }
00143 inline int Header::SubRun() const { return subrun; }
00144 inline int Header::Snarl() const { return snarl; }
00145 inline int Header::TimeFrame() const { return timeframe; }
00146 inline int Header::Sec() const { return sec; }
00147 inline int Header::NSec() const { return nsec; }
00148 inline int Header::Trigger() const { return trigger; }
00149 inline int Header::SpillType() const { return spilltype; }
00150 inline int Header::Detector() const { return detector; }
00151 inline int Header::SimFlag() const { return simflag; }
00152 inline int Header::RunPeriod() const { return runperiod; }
00153 inline int Header::Release() const { return relitype; }
00154 inline int Header::SpillSec() const { return spillsec; }
00155 inline int Header::SpillNSec() const { return spillnsec; }
00156 inline int Header::GPSError() const { return gpstime; }
00157 inline int Header::GPSTime() const { return gpserror; }
00158 inline int Header::LITime() const { return litime; }
00159 inline int Header::CrateMask() const { return cratemask; }
00160 inline int Header::BeamDSec() const { return beamdsec; }
00161 inline int Header::BeamDNSec() const { return beamdnsec; }
00162
00163 inline float Header::Tor101() const { return tor101; }
00164 inline float Header::Tr101D() const { return tr101d; }
00165 inline float Header::TorTgt() const { return tortgt; }
00166 inline float Header::TrTgtD() const { return trtgtd; }
00167 inline float Header::CoilCur() const { return coilcur; }
00168 inline double Header::Time2Spill() const { return time2spill; }
00169
00170 inline bool Header::CoilRevs() const { return coilrevs; }
00171 inline bool Header::GoodBeam() const { return goodbeam; }
00172 inline bool Header::GoodCoil() const { return goodcoil; }
00173 inline bool Header::GoodDetc() const { return gooddetc; }
00174 inline bool Header::GoodHV() const { return goodhv; }
00175 inline bool Header::IsValid() const { return valid; }
00176 }
00177
00178 #endif