Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Header.h

Go to the documentation of this file.
00001 #ifndef ANP_HEADER_H
00002 #define ANP_HEADER_H
00003 
00004 // $Id: Header.h,v 1.22 2008/06/17 21:44:18 rustem Exp $
00005 //
00006 // Store relevant information about snarl:
00007 //   1) DAQ data: trigger, time, detector, run period, etc
00008 //   2) Detector data: coil current, LI status, etc
00009 //   3) Beam spill data: time, intensity and configuration
00010 //   4) Software: reconstruction and Monte-Release release types
00011 //
00012 // This header file contains include file for assert macro.
00013 
00014 // C++
00015 #include <cassert> 
00016 #include <iosfwd>
00017 #include <string>
00018 
00019 // ROOT
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;         // run number
00095       Int_t    subrun;      // sub run number
00096       Int_t    snarl;       // snarl number 
00097       Int_t    timeframe;   // time frame number
00098       Int_t    sec;         // detector trigger time (seconds)
00099       Int_t    nsec;        // detector trigger time (nanoseconds)
00100       Int_t    trigger;     // trigger source
00101       Int_t    spilltype;   // remote spill type
00102       Int_t    detector;    // nd=1, fd=2, caldet=3, unknown=0
00103       Int_t    simflag;     // data=1, for mc=2, unknown=0
00104       Int_t    runperiod;   // run period
00105       Int_t    relitype;    // reconstruction and MC release type
00106       Int_t    spillsec;    // beam spill time from GPS timing system (seconds)
00107       Int_t    spillnsec;   // beam spill time from GPS timing system (nanoseconds)
00108       Int_t    gpstime;     // far only: time when GPS timing error is reported (seconds)
00109       Int_t    gpserror;    // far only: GPS timing error (nanoseconds)
00110       Int_t    litime;      // far only: time of trigger PMP hit (nanoseconds)
00111       Int_t    cratemask;   // far only: number of enabled crates (detector crate mask)
00112       Int_t    beamdsec;    // beam spill time from beam data monitoring (seconds)
00113       Int_t    beamdnsec;   // beam spill time from beam data monitoring (nanoseconds)
00114       Float_t  tor101;      // toroid tor101 reading
00115       Float_t  tr101d;      // toroid tr101d reading
00116       Float_t  tortgt;      // toroid tortgt reading
00117       Float_t  trtgtd;      // toroid trtgtd reading
00118       Float_t  coilcur;     // detector coil current
00119       Double_t time2spill;  // time to nearest spill, computed by SpillTimeFinder
00120 
00121       Bool_t   coilrevs;    // detector coil current is reverse
00122       Bool_t   goodbeam;    // snarl passed good beam cuts
00123       Bool_t   goodcoil;    // detector coil is in good state
00124       Bool_t   gooddetc;    // detector readout is in good state
00125       Bool_t   goodhv;      // far only: detector high voltage is in good state
00126       Bool_t   valid;       // header is correctly initilized
00127 
00128       char beamtype[9];     // beam type as array of 9 characters
00129    };
00130 
00131    //
00132    // Compare Headers using run, subrun and snarl numbers
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    // Inlined global functions
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

Generated on Mon Feb 15 11:06:47 2010 for loon by  doxygen 1.3.9.1