ROOT logo
HYDRA - THE HADES ANALYSIS PACKAGE » DATASOURCE » HTrb2Unpacker

class HTrb2Unpacker: public HldUnpack

_HADES_CLASS_DESCRIPTION

                     HTrb2Unpacker
            Base class for TRB data unpacking.
  Any detector connected to TRB board should use this class to decode the subevent.
  Decode() method fills the arrays with information about:
  channel number (0-127),
  measured time,
  measured width.

  The goal is to provide data which can be directly used by subsystems
  (tof, start, hodo, wall) in order to directly fill raw categories.

  The most important information is stored in:
  trbLeadingTime[ TrbChanNb ][ hitNb ],
  trbADC[ TrbChanNb ][ hitNb ].
  trbLeadingMult[ TrbChanNb ]

  In case of Leading and Trailing mode the leading time and trailing time
  are delivered in separate data words. In this mode it can happen that
  a trailing time is missing. In such case trailing time is set to -1000000
  and width is set to -1.

  The information in Arrays is ordered in following way:
  1. Leading Time has to exist -> fill trbLeadingTime[ TrbChanNb ][ hitNb ];
  2. If Trailing time is found we try to marge it with last Leading Time.
     If Trailing time does not exist trbLeadingTime[ TrbChanNb ][ hitNb ] = -1000000
     If more than 1 Trailing time exist for one Leading Time the last one is used.
  3. Width is calculated only if Trailing time exist.

  Max. number of hits per channel is currently set to 10.

  Decode:
  The decode function returns dfferent values for different cases:
    100  - end of subevent, stop decoding by purpose
     10  - CTS information -> go to next subsubevt
      0  - error, decoding failed
      1  - data  decode


  Special :

  Try recover wrong blocksize information ( like corrupted data beam apr12, day 116)
  To fixes are implemented and active by default.
  The fixes (tryRecover_1,tryRecover_2, see decode())
  can be enabled/disabled by  :   void tryRecover(Bool_t case1=kTRUE,Bool_t case2=kTRUE);


  In addition this class should perform basic data corrections and error handling.
  (in preparation)

Function Members (Methods)

public:
HTrb2Unpacker(const HTrb2Unpacker&)
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
voidclearAll()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual Int_tcorrectOverflow()
virtual Int_tcorrectRefTimeCh(Int_t)
virtual Int_tcorrectRefTimeCh127()
virtual Int_tcorrectRefTimeCh31()
virtual Int_tcorrectRefTimeStartDet23()
virtual Int_tdecode()
Int_tHldUnpack::decodeTrbNet(UInt_t* data, Int_t subEventId = 0)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual Float_tdoINLCorrection(Int_t nTrbCh, Int_t nRawTime)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual Int_texecute()
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
Bool_tfill_lead(Int_t ch, Float_t d)
Bool_tfill_pair(Int_t ch, Float_t time, Float_t length)
Bool_tfill_trail(Int_t ch, Float_t d)
virtual Bool_tHldUnpack::finalize()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Int_tgetDebugFlag()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
HldEvt*HldUnpack::getHldEvt()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
HldSubEvt**HldUnpack::getpSubEvt()
virtual Int_tgetSubEvtId()
virtual const char*TObject::GetTitle() const
Int_tgetTrbDataVer() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual Bool_tinit()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
HTrb2Unpacker&operator=(const HTrb2Unpacker&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidprintTdcError(UInt_t e, UInt_t trbId)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_tHldUnpack::reinit()
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidHldUnpack::setCategory(HCategory* aCat)
voidsetcorrectINL()
voidsetDebugFlag(Int_t db)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidHldUnpack::setHldEvt(HldEvt* evt)
static voidTObject::SetObjectStat(Bool_t stat)
voidsetQuietMode()
voidsetReportCritical()
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidtryRecover(Bool_t trycase1 = kTRUE, Bool_t trycase2 = kTRUE)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
HTrb2Unpacker(UInt_t id = 0)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
(unknown)()

Data Members

protected:
Bool_tcorrectINL! if > 0 performs the INL correction
Bool_tcorrectINLboard! if > 0 performs the INL correction for this TRB
Int_tdebugFlag! allows to print subevent information to the STDOUT
Bool_thighResModeOn! is set the data are collected in High Res. Mode - 25ps binning
UInt_tnCountWordsat which data to start decoding
HldEvt*HldUnpack::pEvt!
HCategory*HldUnpack::pRawCat! pointer to category where data will be stored;
HldSubEvt*HldUnpack::pSubEvt! pointer to subevent where data are read from
Bool_tquietMode! do not print errors!
Bool_treportCritical! report critical errors!
UInt_tsubEvtIdsubevent id
Float_ttrbADC[128][10]
Int_ttrbDataExtension[128]
Bool_ttrbDataPairFlag! data in pair mode (leading and width in one word)
Int_ttrbDataVerdata structure version:
UInt_ttrbExtensionSize
Int_ttrbLeadingMult[128]
Float_ttrbLeadingTime[128][10]
HTrbNetUnpacker*HldUnpack::trbNetUnpacker! Poinetr to unpacker for TRB Net data structures
Int_ttrbTrailingMult[128]
Float_ttrbTrailingTime[128][10]
Int_ttrbTrailingTotalMult[128]FIXME: Pablos private version; total multiplicity for trailings
HTrbnetAddressMapping*trbaddressmapmapping table trbnet-address to TRB board
HTrb2Correction*trbinlcorrTDC correctirons for the TRB boards
Bool_ttryRecover_1! try to recover broken data format (blocksize out of subevent)
Bool_ttryRecover_2! try to recover broken data format (trbnet subsub size not equal subsubsize)
UInt_tuStartPositionposition at which to start decoding.
UInt_tuSubBlockSizeBlockSize of SubSubEvent (one TRB)
UInt_tuTrbNetAdressTrbNetAdress

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HTrb2Unpacker(UInt_t id = 0)
void clearAll(void)
Int_t correctRefTimeCh(Int_t )
Int_t correctRefTimeCh31(void)
Int_t correctRefTimeCh127(void)
Int_t correctRefTimeStartDet23(void)
Int_t correctOverflow(void)
Bool_t fill_pair(Int_t ch, Float_t time, Float_t length)
Bool_t fill_lead(Int_t ch, Float_t d)
Bool_t fill_trail(Int_t ch, Float_t d)
Float_t doINLCorrection(Int_t nTrbCh, Int_t nRawTime)
void printTdcError(UInt_t e, UInt_t trbId)
Int_t decode(void)
HTrb2Unpacker(UInt_t id = 0)
Int_t getSubEvtId(void)
{ return subEvtId; }
Int_t getTrbDataVer(void)
{ return trbDataVer; }
Int_t execute(void)
{ return 0;}
Bool_t init(void)
{ return kFALSE; }
void setQuietMode(void)
void setReportCritical(void)
void setcorrectINL(void)
void setDebugFlag(Int_t db)
{debugFlag = db;}
Int_t getDebugFlag()
{ return debugFlag;}
void tryRecover(Bool_t trycase1 = kTRUE, Bool_t trycase2 = kTRUE)
{ tryRecover_1=trycase1; tryRecover_2=trycase2;}