Changeset 8944


Ignore:
Timestamp:
06/12/08 17:18:28 (17 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mraw
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mraw/MRawCrateData.cc

    r8344 r8944  
    1818!   Author(s): Thomas Bretz 12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!
    20 !   Copyright: MAGIC Software Development, 2000-2004
     20!   Copyright: MAGIC Software Development, 2000-2008
    2121!
    2222!
     
    3333#include "MRawCrateData.h"
    3434
    35 #include <iostream>
    36 #include <iomanip>
     35#include <fstream>
    3736
    38 #include <fstream>
     37#include <TArrayC.h>
    3938
    4039#include "MLog.h"
     
    5453//  like specified in a TDAS note
    5554//
    56 void MRawCrateData::ReadEvt(istream& fin, UShort_t ver)
     55Bool_t MRawCrateData::ReadEvtOld(istream& fin, UShort_t ver)
    5756{
    5857    if (ver<7)
     
    9796        fin.read((char*)&dummys, 2); //   U16 TrigTimeInterpol;
    9897    }
     98
     99    return fin.eof() ? kFALSE : kTRUE;
     100}
     101
     102Bool_t MRawCrateData::ReadEvt(istream& fin, UShort_t ver, UInt_t size)
     103{
     104    if (ver<11)
     105        return ReadEvtOld(fin, ver);
     106
     107    if (size==0)
     108    {
     109        *fLog << err << "ERROR - Event header size unknown." << endl;
     110        return kFALSE;
     111    }
     112
     113    if (size<28)
     114    {
     115        *fLog << err << "ERROR - Event header too small (<28b)." << endl;
     116        return kFALSE;
     117    }
     118
     119    TArrayC h(size);
     120    fin.read(h.GetArray(), h.GetSize());
     121    if (!fin)
     122        return kFALSE;
     123
     124    // ----- convert -----
     125    //const Byte_t  *Char  = reinterpret_cast<Byte_t* >(h.GetArray());
     126    const UInt_t  *Int   = reinterpret_cast<UInt_t* >(h.GetArray());
     127    //const Float_t *Float = reinterpret_cast<Float_t*>(h.GetArray());
     128
     129    fDAQCrateNumber = Int[0];
     130    fFADCEvtNumber  = Int[3];
     131
     132    return kTRUE;
    99133}
    100134
  • trunk/MagicSoft/Mars/mraw/MRawCrateData.h

    r3800 r8944  
    1818    Byte_t   fABFlags;         // flag describing in which two-slice block the trigger was raised
    1919
     20    Bool_t ReadEvtOld(istream& fin, UShort_t ver);
     21
    2022public:
    2123    MRawCrateData();
     
    2830    void Print(Option_t *t=NULL) const;
    2931
    30     void ReadEvt(istream& fin, UShort_t ver);
    31     void SkipEvt(istream& fin, UShort_t ver);
     32    Bool_t ReadEvt(istream& fin, UShort_t ver, UInt_t size);
     33    void   SkipEvt(istream& fin, UShort_t ver);
    3234
    3335    ClassDef(MRawCrateData, 2) //Container to store the Raw CRATE DATA
  • trunk/MagicSoft/Mars/mraw/MRawEvtHeader.cc

    r8344 r8944  
    1818!   Author(s): Thomas Bretz 12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!
    20 !   Copyright: MAGIC Software Development, 2000-2004
     20!   Copyright: MAGIC Software Development, 2000-2008
    2121!
    2222!
     
    109109#include "MRawEvtHeader.h"
    110110
    111 #include <iomanip>
    112111#include <fstream>
     112
     113#include <TArrayC.h>
    113114
    114115#include "MLog.h"
     
    268269// source code.
    269270//
    270 Bool_t MRawEvtHeader::DecodeTime(UInt_t abstime[2], UShort_t ver) const
     271Bool_t MRawEvtHeader::DecodeTime(const UInt_t tm[2], UShort_t ver) const
    271272{
    272273    //
     
    277278    // Swap bits: 23->16, 22->17, 21->16, 20->19
    278279    //
     280    UInt_t abstime[2] = { tm[0], tm[1] };
     281
    279282    abstime[0] =
    280283        abstime[0]>>7 & 0x00010000 |
     
    338341// Remark: This 'feature' disallows single runs of more than 11h!
    339342//
    340 Int_t MRawEvtHeader::ReadEvt(istream &fin, UShort_t ver)
    341 {
    342     Bool_t rc = kTRUE;
     343Int_t MRawEvtHeader::ReadEvtOld(istream &fin, UShort_t ver)
     344{
     345    Int_t rc = kTRUE;
    343346
    344347    fin.read((char*)&fDAQEvtNumber, 4);  // Total=4
     
    379382
    380383    return fin.eof() ? kFALSE : rc;
     384}
     385
     386// --------------------------------------------------------------------------
     387//
     388Int_t MRawEvtHeader::ReadEvt(istream &fin, UShort_t ver, UInt_t size)
     389{
     390    if (ver<11)
     391        return ReadEvtOld(fin, ver);
     392
     393    if (size==0)
     394    {
     395        *fLog << err << "ERROR - Event header size unknown." << endl;
     396        return kFALSE;
     397    }
     398
     399    if (size<32)
     400    {
     401        *fLog << err << "ERROR - Event header too small (<32b)." << endl;
     402        return kFALSE;
     403    }
     404
     405    TArrayC h(size);
     406    fin.read(h.GetArray(), h.GetSize());
     407    if (!fin)
     408        return kFALSE;
     409
     410    // ----- convert -----
     411    //const Byte_t  *Char  = reinterpret_cast<Byte_t* >(h.GetArray());
     412    const UInt_t  *Int   = reinterpret_cast<UInt_t* >(h.GetArray());
     413    //const Float_t *Float = reinterpret_cast<Float_t*>(h.GetArray());
     414
     415    fDAQEvtNumber   = Int[0];
     416    // Decode Time
     417    fNumTrigLvl1    = Int[3];
     418    fNumTrigLvl2    = Int[4];
     419    fTrigPattern[0] = Int[5];
     420    fTrigPattern[1] = Int[6];
     421    fTrigType       = Int[7];
     422
     423    // No LoGains for version 7 data
     424    fPixLoGainOn->Reset();
     425    fNumLoGainOn = 0;
     426
     427    return DecodeTime(Int+1, ver) ? kTRUE : kCONTINUE;
    381428}
    382429
  • trunk/MagicSoft/Mars/mraw/MRawEvtHeader.h

    r6306 r8944  
    6969    MArrayB *fPixLoGainOn;     //! Array which tell you which pixels have lo gain on
    7070
    71     Bool_t DecodeTime(UInt_t abstime[2], UShort_t ver) const;
     71    Bool_t DecodeTime(const UInt_t abstime[2], UShort_t ver) const;
    7272
    7373    Int_t GetNumBytes() const;
     74
     75    Int_t ReadEvtOld(istream& fin, UShort_t ver);
    7476
    7577public:
     
    7779    ~MRawEvtHeader();
    7880
     81    // MRawEvtHeader
    7982    void InitRead(MRawRunHeader *rh, MTime *t);
    8083
     84    // Getter
     85    UShort_t GetTrigType() const     { return fTrigType; }
     86    UInt_t   GetNumTrigLvl1() const  { return fNumTrigLvl1; }
     87    UInt_t   GetNumTrigLvl2() const  { return fNumTrigLvl2; }
     88    UInt_t   GetDAQEvtNumber() const { return fDAQEvtNumber; }
     89   
     90    UInt_t   GetTriggerID() const;
     91    UInt_t   GetCalibrationPattern() const;
     92    UInt_t   GetPulserSlotPattern()  const;
     93
     94    // Setter
     95    void FillHeader(UInt_t, Float_t=0);
     96
     97    void  SetTriggerPattern( const UInt_t pattern )  {  fTrigPattern[0] = pattern; } // Only for MC!
     98    void  SetCalibrationPattern( const UInt_t pattern )  {  fTrigPattern[1] = pattern; } // Only for MC!
     99
     100    // TObject
    81101    void Clear(Option_t * = NULL);
    82102    void Print(Option_t * = NULL) const;
    83103
    84     void FillHeader(UInt_t, Float_t=0);
    85 
    86     UShort_t   GetTrigType() const     { return fTrigType; }
    87     UInt_t     GetNumTrigLvl1() const  { return fNumTrigLvl1; }
    88     UInt_t     GetNumTrigLvl2() const  { return fNumTrigLvl2; }
    89     UInt_t     GetDAQEvtNumber() const { return fDAQEvtNumber; }
    90    
    91     UInt_t     GetTriggerID() const;
    92     UInt_t     GetCalibrationPattern() const;
    93     UInt_t     GetPulserSlotPattern()  const;
    94 
    95     void       SetTriggerPattern( const UInt_t pattern )  {  fTrigPattern[0] = pattern; } // Only for MC!
    96     void       SetCalibrationPattern( const UInt_t pattern )  {  fTrigPattern[1] = pattern; } // Only for MC!
    97 
    98     Int_t ReadEvt(istream& fin, UShort_t ver);
     104    // I/O
     105    Int_t ReadEvt(istream& fin, UShort_t ver, UInt_t size);
    99106    void  SkipEvt(istream& fin, UShort_t ver);
    100107
Note: See TracChangeset for help on using the changeset viewer.