
| AliHMPIDRawStream() | |
| AliHMPIDRawStream(AliRawReader* rawReader) | |
| virtual | ~AliHMPIDRawStream() |
| void | TObject::AbstractMethod(const char* method) const |
| virtual void | TObject::AppendPad(Option_t* option = "") |
| virtual void | TObject::Browse(TBrowser* b) |
| Bool_t | CheckDilogic(UInt_t dilogic) |
| Bool_t | CheckEoE(Int_t& nDil) |
| Bool_t | CheckPad(UInt_t pad) |
| Bool_t | CheckRow(UInt_t row) |
| Bool_t | CheckRowMarker() |
| Bool_t | CheckSegment() |
| 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 |
| void | DelVars() |
| 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 |
| void | DumpData(Int_t nw) |
| virtual void | TObject::Error(const char* method, const char* msgfmt) const |
| 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 TObject* | TObject::FindObject(const char* name) const |
| virtual TObject* | TObject::FindObject(const TObject* obj) const |
| Int_t* | GetChargeArray() const |
| Double_t | GetDdlDataSize() |
| Int_t | GetDDLNumber() const |
| virtual Option_t* | TObject::GetDrawOption() const |
| static Long_t | TObject::GetDtorOnly() |
| static const Char_t* | GetErrName(Int_t eType) |
| Int_t | GetErrors(Int_t ddl, Int_t eType) const |
| static Int_t | GetFee(Int_t ddl, Int_t row) |
| virtual const char* | TObject::GetIconName() const |
| UInt_t | GetLDCNumber() const |
| virtual const char* | TObject::GetName() const |
| static Int_t | GetNDDL() |
| Int_t* | GetnDDLInStream() const |
| Int_t* | GetnDDLOutStream() const |
| static Int_t | GetNErrors() |
| Int_t | GetNPads() const |
| virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
| static Bool_t | TObject::GetObjectStat() |
| virtual Option_t* | TObject::GetOption() const |
| static Int_t | GetPad(Int_t ddl, Int_t row, Int_t dil, Int_t pad) |
| Int_t* | GetPadArray() const |
| UInt_t | GetTimeStamp() const |
| virtual const char* | TObject::GetTitle() const |
| Bool_t | GetTurbo() |
| virtual UInt_t | TObject::GetUniqueID() const |
| Bool_t | GetZeroSup() 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 |
| void | InitVars(Int_t n) |
| 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 | Next() |
| virtual Bool_t | TObject::Notify() |
| void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
| 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) |
| Int_t | PadPcX(Int_t ddl, Int_t row, Int_t dil, Int_t pad) |
| Int_t | PadPcY(Int_t ddl, Int_t row, Int_t dil, Int_t pad) |
| virtual void | TObject::Paint(Option_t* option = "") |
| Int_t | Pc(Int_t ddl, Int_t row, Int_t dil, Int_t pad) |
| virtual void | TObject::Pop() |
| virtual void | TObject::Print(Option_t* option = "") const |
| virtual Int_t | TObject::Read(const char* name) |
| Bool_t | ReadDilogic(Int_t& cntDilogic) |
| Bool_t | ReadHMPIDRawData() |
| Bool_t | ReadRow(Int_t& cntRow) |
| Bool_t | ReadSegment(Int_t& cntSegment) |
| virtual void | TObject::RecursiveRemove(TObject* obj) |
| virtual void | Reset() |
| 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) |
| virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
| static void | TObject::SetDtorOnly(void* obj) |
| static void | TObject::SetObjectStat(Bool_t stat) |
| void | SetTurbo(Bool_t isTurbo) |
| virtual void | TObject::SetUniqueID(UInt_t uid) |
| Bool_t | SetZeroSup(Bool_t isSup) |
| virtual void | ShowMembers(TMemberInspector&) |
| void | StorePosition() |
| virtual void | Streamer(TBuffer&) |
| void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_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 |
| Bool_t | Turbo() |
| 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 |
| void | Write5FirmwareWords(AliFstream* ddl) |
| void | WriteEoE(AliFstream* ddl, UInt_t row, UInt_t dil, UInt_t wordCnt) |
| void | WriteRaw(TObjArray* pDigAll) |
| void | WriteRowMarker(AliFstream* ddl, UInt_t size) |
| void | WriteSegMarker(AliFstream* ddl, UInt_t row, Int_t nwInSeg) |
| virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
| void | TObject::MakeZombie() |
| AliHMPIDRawStream(const AliHMPIDRawStream& stream) | |
| UInt_t | GetNextWord() |
| Bool_t | GetWord(Int_t n = 1, AliHMPIDRawStream::EDirection dir = kFwd) |
| AliHMPIDRawStream& | operator=(const AliHMPIDRawStream& stream) |
| enum EDirection { | kFwd | |
| kBwd | ||
| }; | ||
| enum Ebits { | kbit0 | |
| kbit1 | ||
| kbit2 | ||
| kbit3 | ||
| kbit4 | ||
| kbit5 | ||
| kbit6 | ||
| kbit7 | ||
| kbit8 | ||
| kbit9 | ||
| kbit10 | ||
| kbit11 | ||
| kbit12 | ||
| kbit13 | ||
| kbit14 | ||
| kbit15 | ||
| kbit16 | ||
| kbit17 | ||
| kbit18 | ||
| kbit19 | ||
| kbit20 | ||
| kbit21 | ||
| kbit22 | ||
| kbit23 | ||
| kbit24 | ||
| kbit25 | ||
| kbit26 | ||
| kbit27 | ||
| kbit28 | ||
| kbit29 | ||
| kbit30 | ||
| kbit31 | ||
| kbit32 | ||
| }; | ||
| enum EHMPIDRawStreamError { | kRawDataSizeErr | |
| kRowMarkerErr | ||
| kWrongRowErr | ||
| kWrongDilogicErr | ||
| kWrongPadErr | ||
| kEoEFlagErr | ||
| kEoESizeErr | ||
| kEoEDILOGICErr | ||
| kEoERowErr | ||
| kBadSegWordErr | ||
| kWrongSegErr | ||
| kRowMarkerSizeErr | ||
| kPedQZero | ||
| kSumErr | ||
| }; | ||
| enum { | kNRows | |
| kNDILOGICAdd | ||
| kNPadAdd | ||
| kNRowsPerSegment | ||
| kNDDL | ||
| }; | ||
| enum EHMPIDRawError { | kInvalidRawDataWord | |
| }; | ||
| enum TObject::EStatusBits { | kCanDelete | |
| kMustCleanup | ||
| kObjInCanvas | ||
| kIsReferenced | ||
| kHasUUID | ||
| kCannotPick | ||
| kNoContextMenu | ||
| kInvalidObject | ||
| }; | ||
| enum TObject::[unnamed] { | kIsOnHeap | |
| kNotDeleted | ||
| kZombie | ||
| kBitMask | ||
| kSingleKey | ||
| kOverwrite | ||
| kWriteDelete | ||
| }; |
| Int_t* | fCharge | Array for charge values for all channels in one DDL |
| Int_t | fDDLNumber | index of current DDL number |
| UChar_t* | fData | raw data |
| UInt_t | fLDCNumber | index of current LDC number |
| Int_t | fNPads | counter of pads in one DDL |
| Int_t** | fNumOfErr | Store the numner of errors for a given error type and a given DDL |
| Int_t* | fPad | Array for abs pad values for all channels in one DDL |
| Int_t* | fPos | for debug purposes |
| Int_t | fPosition | current word |
| Int_t | fRawDataSize | |
| AliRawReader* | fRawReader | object for reading the raw data |
| UInt_t | fTimeStamp | TimeStamp |
| Bool_t | fTurbo | kTRUE = Turbo decoding is called. DEFAULT: kFALSE = normal decoding is called |
| UInt_t | fWord | current position in fData |
| Bool_t | fZeroSup | set if zero suppression is applied |
| Int_t | fiPos | counter for debug |
| Int_t* | fnDDLInStream | if the DDL is in the raw data |
| Int_t* | fnDDLOutStream | if the DDL is in the raw data |
| Inheritance Chart: | ||||||||
|
read next DDL raw data from the HMPID raw data stream return kFALSE in case of error or no data left
This method returns the n-th 32 bit word inside the raw data payload. The method is supposed to be endian (platform) independent.
void AliHMPIDRawStream::Raw(UInt_t &w32,Int_t &ddl,Int_t &r,Int_t &d,Int_t &a) { Convert raw stream word to raw word format Arguments: w32,ddl,r,d,a where to write the results Returns: none Int_t y2a[6]={5,3,1,0,2,4}; ddl=2*Ch(ddl,r,d,a)+Pc(ddl,r,d,a)%2; //DDL# 0..13 Int_t tmp=1+Pc(ddl,r,d,a)/2*8+PadPcY(ddl,r,d,a)/6; r=(Pc(ddl,r,d,a)%2)? 25-tmp:tmp; //row r=1..24 d=1+PadPcX(ddl,r,d,a)/8; //DILOGIC# 1..10 a=y2a[PadPcY(ddl,r,d,a)%6]+6*(PadPcX(ddl,r,d,a)%8); //ADDRESS 0..47 w32=0; AliBitPacking::PackWord((fCharge[fNPads]>4095)?4095:(UInt_t)fCharge[fNPads],w32, 0,11); // 0000 0rrr rrdd ddaa aaaa qqqq qqqq qqqq Qdc bits (00..11) counts (0..4095) //molnarl: Since in simulation the the charge can be > than 4095 but not in real life we need to protect. If fQ>4095 after packing we will get 0 for the charge! assert(0<=a&&a<=47);AliBitPacking::PackWord( a ,w32,12,17); // 3322 2222 2222 1111 1111 1000 0000 0000 DILOGIC address bits (12..17) counts (0..47) assert(1<=d&&d<=10);AliBitPacking::PackWord( d ,w32,18,21); // 1098 7654 3210 9876 5432 1098 7654 3210 DILOGIC number bits (18..21) counts (1..10) assert(1<=r&&r<=24);AliBitPacking::PackWord( r ,w32,22,26); // Row number bits (22..26) counts (1..24) } Int_t AliHMPIDRawStream::Raw(Int_t ddl,Int_t r,Int_t d,Int_t a) { //Assign absolute pad ID based on ddl,row,dil,pad //Arguments: DDL, row number, dilogic number, dilogic address(pad) //Returns : nothing assert(0<=ddl&&ddl<=13); assert(1<=r&&r<=24); assert(1<=d&&d<=10); assert(0<=a&&a<=47); Int_t a2y[6]={3,2,4,1,5,0};//pady for a given address (for single DILOGIC chip) Int_t ch=ddl/2; Int_t tmp=(r-1)/8; Int_t pc=(ddl%2)? 5-2*tmp:2*tmp; Int_t px=(d-1)*8+a/6; tmp=(ddl%2)?(24-r):r-1; Int_t py=6*(tmp%8)+a2y[a%6]; return AliHMPIDParam::Abs(ch,pc,px,py); } Bool_t AliHMPIDRawStream::Raw(UInt_t w32,Int_t ddl, AliRawReader *pRR) { Converts a given raw data word to a digit Arguments: w32 - 32 bits raw data word ddl - DDL idx 0 1 2 3 4 ... 13 Returns: none Int_t r = AliBitPacking::UnpackWord(w32,22,26); assert(1<=r&&r<=24); // Row number (1..24) Int_t d = AliBitPacking::UnpackWord(w32,18,21); assert(1<=d&&d<=10); // 3322 2222 2222 1111 1111 1000 0000 0000 DILOGIC number (1..10) Int_t a = AliBitPacking::UnpackWord(w32,12,17); assert(0<=a&&a<=47); // 1098 7654 3210 9876 5432 1098 7654 3210 DILOGIC address (0..47) Int_t q = AliBitPacking::UnpackWord(w32, 0,11); assert(0<=q&&q<=4095); // 0000 0rrr rrdd ddaa aaaa qqqq qqqq qqqq Qdc (0..4095) if (r<1 || r>24 || d<1 || d>10 || a<0 || a>47 || q<0 || q>4095) { AliWarning(Form("Invalid raw data word %x",w32)); pRR->AddMajorErrorLog(kInvalidRawDataWord,Form("w=%x",w32)); return kFALSE; } Raw(ddl,r,d,a); fCharge[ddl][r][d][a]=q; return kTRUE; }
{return AliHMPIDParam::A2P(GetPad(ddl,row,dil,pad));}{return AliHMPIDParam::A2X(GetPad(ddl,row,dil,pad));}{return AliHMPIDParam::A2Y(GetPad(ddl,row,dil,pad));}