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));}