_HADES_CLASS_DESCRIPTION HTofUnpacker This is the unpacker used to read HTof data from LMD files
HTofUnpacker(UInt_t id = 411) | |
HTofUnpacker(const HTofUnpacker&) | |
virtual | ~HTofUnpacker() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | TObject::Copy(TObject& object) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual Int_t | execute() |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual Bool_t | HldUnpack::finalize() |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
HldUnpack::HPP | HldUnpack::getpSubEvt() |
virtual Int_t | getSubEvtId() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual Bool_t | init() |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::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) |
HTofUnpacker& | operator=(const HTofUnpacker&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TObject::Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
virtual Bool_t | HldUnpack::reinit() |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | HldUnpack::setCategory(HCategory* aCat) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
virtual void | Streamer(TBuffer& b) |
void | StreamerNVirtual(TBuffer& b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
HLocation | loc | |
HTofLookup* | lookup | |
HCategory* | HldUnpack::pRawCat | ! pointer to category where data will be stored; |
HldSubEvt* | HldUnpack::pSubEvt | ! pointer to subevent where data are read from |
UInt_t | subEvtId |
This function fills the TOF raw data structure. November 2000 Subevent Format for TOF, TOFINO and START The new subevent format for TOF and START/TOFINO will look like this. The first four words are the usual subevent header: subEvtSize size of subevent including header (bytes) subEvtDecoding 0x00020001 subEvtId TOF: 411 START: 511 subEvtTrigNr trigger number The next 32 bit word contains the data word, which was sent by the trigger distribution system to the readout board. It contains information about the trigger type, which produced the event (normal, calibration...). dtuTrigWord 0x a1 02 00 01 (example) \/ \current trigger tag (should always be equal to the 8 LSB of the subEvtTrigNr!) \/ \always 0x00 (for future use) \/ \trigger tag, which was distributed with this trigger (will be the current trigger tag of the following event, when triggered positive) \/ \trigger type, 4 MSB are always 0xa 4 LSB are: 0x1=normal trigger 0x4=calibration currently only these two trigger types are in use, might be extended during this beamtime Now come the "real" data, which is equivalent to the corresponding part of the old subevent format. Example for TOF: 1st TDC: 0x32002000 V878 header word (see v878 doku) 0x30000fd7 V878 data word (channel 0) 0x30010fb7 V878 data word (channel 1) 0x30020f97 V878 data word (channel 2) ... 0x301e0fb0 V878 data word (channel 30) 0x301f0fb4 V878 data word (channel 31) 0x34000002 V878 end-of-block word 2nd TDC: 0x3a002000 see above and see V878 doku for details 0x38000fcb ... 0x381f0f93 0x3c000002 The number of TDC "blocks" depends on the number of TDC/ADCs mounted to a certain crate. The number of V878 data words per TDC depends on the number of channels fired (zero and overflow are suppressed). Anyhow, every TDC/ADC will send at least the V878 header word and the end-of-block word independently of the number of fired channels. That's it, there is no end-of-event word or something like this. After the last V878 end-of-block word the next subevent starts. Here is a memory dump of my readout board. It contains one subevent marked with [ ]. It's a subevent containing three TDCs. TOF-RTU memory dump start address : 0x1000000 length [byte] : 0x100000 1000000:[000001ac 00020001 00000191 00000001 1000010: a1020001 32002000 30000fd7 30010fb7 1000020: 30020f97 30030f96 30040f89 30050f9f 1000030: 30060f90 30070f7c 30080f89 30090f8e 1000040: 300a0f8f 300b0f8a 300c0f97 300d0f91 1000050: 300e0f96 300f0f87 30100f93 30110f8e 1000060: 30120f94 30130f8e 30140f9c 30150f95 1000070: 30160fa8 30170f97 30180fa8 30190fa9 1000080: 301a0fad 301b0fa6 301c0fb5 301d0fae 1000090: 301e0fb0 301f0fb4 34000002 3a002000 10000a0: 38000fcb 38010fad 38020f86 38030f6b 10000b0: 38040f7f 38050f80 38060f90 38070f6e 10000c0: 38080f81 38090f80 380a0f8f 380b0f9a 10000d0: 380c0f7a 380d0f7e 380e0f8a 380f0f74 10000e0: 38100f84 38110f83 38120f82 38130f76 10000f0: 38140f8a 38150f81 38160f89 38170f84 1000100: 38180f90 38190f90 381a0f90 381b0f87 1000110: 381c0f93 381d0f8e 381e0f8b 381f0f93 1000120: 3c000002 42002000 40000fcf 40010fb1 1000130: 40020f87 40030f7f 40040f88 40050f8d 1000140: 40060f8c 40070f88 40080f86 40090f87 1000150: 400a0f8c 400b0f97 400c0f84 400d0f87 1000160: 400e0f8b 400f0f86 40100f8d 40110f92 1000170: 40120f97 40130f8e 40140f94 40150f90 1000180: 40160f9d 40170f9a 40180f97 40190fa6 1000190: 401a0fa2 401b0f93 401c0f9b 401d0f94 10001a0: 401e0fa6 401f0f93 44000002]000001ac 10001b0: 00020001 00000191 00000002 a1030002 10001c0: 32002000 30000fec 30010fd1 30020fae 10001d0: 30030f94 30040f88 30050f9e 30060f97 10001e0: 30070f7f 30080f89 30090f89 300a0f8d 10001f0: 300b0f8c 300c0f97 300d0f90 300e0f96 Raw type (bits 24,25,26) in the header header = 2, trailer = 4, 0=valid dataword, 1=known bug, 6=invalid data !!!!!!!!!!!!!!!!!!!!!! Watch out !!!!!!!!!!!!!!!!!!!!!! The 1st bit of the raw type (bits 24,25,26) is undefined and should not be checked. The bug is in the manual, not in the data. A 'filler' word can show up in between a trailer and a header or at the end of the data transfer. It is identified by raw type 11?, where the ? refers to the undefined bit.