X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFDecoder.cxx;h=c71d00a75c33cacd04c46b55648f8bfea723aac2;hb=f96a5cb161f7e7f121354906e69ae3ba8230585c;hp=509a0cc55d7e5caaa505f9693557e28471da6e0d;hpb=4748b094966bb57720280ec1860ab50832f3d302;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFDecoder.cxx b/TOF/AliTOFDecoder.cxx index 509a0cc55d7..c71d00a75c3 100644 --- a/TOF/AliTOFDecoder.cxx +++ b/TOF/AliTOFDecoder.cxx @@ -50,6 +50,7 @@ TOF Raw Data decoder #include "AliTOFDecoder.h" #include "AliTOFGeometry.h" #include "AliRawDataHeader.h" +#include "AliRawDataHeaderV3.h" #include "AliTOFRawDataFormat.h" ClassImp(AliTOFDecoder) @@ -76,6 +77,10 @@ AliTOFDecoder::AliTOFDecoder() : fSpiderCurrentTDC(-1) { //default constructor + + for (Int_t chan=0;chanGetMiniEventID() : (Short_t)-1; - Short_t currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)-1; - AliInfo(Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh->GetEventID2(), currentMiniEventID)); - if (!cdh) + Short_t currentL0BCID = -1; + Short_t currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)(-1); + currentMiniEventID = cdhV3 ? cdhV3->GetMiniEventID() : currentMiniEventID; + Short_t currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)(-1); + currentEventID1 = cdhV3 ? cdhV3->GetEventID1() : currentEventID1; + if (!cdh && !cdhV3) AliWarning("CDH not valid: deltaBunchID not reliable "); + else + AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh? cdh->GetEventID2() : cdhV3->GetEventID2(), currentMiniEventID)); /*** V2718 patch ***/ if (fV2718Patch){ @@ -251,9 +271,18 @@ AliTOFDecoder::Decode(UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh decodeStatus = decodeStatus | DRM_BIT; //skip DRM data - for (Int_t i = 0; i < DRM_DATA_WORDS; i++, iWord++, rawData++){ + for (Int_t i = 0; i < DRM_DATA_WORDS; i++, iWord++){ + rawData++; if (fVerbose) - AliInfo(Form(" %02x - 0x%08x \t DRM data",decodeStatus,*rawData)); + AliInfo(Form(" %02x - 0x%08x \t DRM data",decodeStatus,*rawData)); + switch (i) { + case 2: + lDRMStatusHeader3 = (AliTOFDRMStatusHeader3*)rawData; + currentL0BCID = lDRMStatusHeader3->GetL0BCID(); + break; + default: + break; + } } break; @@ -271,7 +300,8 @@ AliTOFDecoder::Decode(UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh decodeStatus = decodeStatus | LTM_BIT; //skip LTM data - for (Int_t i = 0; i < LTM_DATA_WORDS; i++, iWord++, rawData++){ + for (Int_t i = 0; i < LTM_DATA_WORDS; i++, iWord++){ + rawData++; if (fVerbose) AliInfo(Form(" %02x - 0x%08x \t LTM data",decodeStatus,*rawData)); } @@ -458,6 +488,7 @@ AliTOFDecoder::Decode(UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh hitData.SetTOT((float)lTDCPackedHit->GetTOTWidth() * TOT_BIN_WIDTH); hitData.SetTOTBin(lTDCPackedHit->GetTOTWidth()); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //orphane leading hit if (hitData.GetPS()==LEADING_HIT_PS){ hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH); @@ -552,6 +583,7 @@ AliTOFDecoder::Decode(UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh hitData.SetTOT(-1.); hitData.SetTOTBin(-1); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //push hit data in data buffer if (fDataBuffer != 0x0) fDataBuffer->Add(hitData); @@ -589,6 +621,7 @@ AliTOFDecoder::Decode(UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh hitData.SetTOT(-1.); hitData.SetTOTBin(-1); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //push hit data in data buffer if (fDataBuffer != 0x0) fDataBuffer->Add(hitData); @@ -805,10 +838,9 @@ void AliTOFDecoder::GetArrayDDL(Int_t* array, Int_t ddl){ AliTOFGeometry *geom = new AliTOFGeometry(); Int_t indexDDL = ddl%4; Int_t iSector = Int_t(ddl/4); - //AliInfo(Form(" Sector = %i, DDL within sector = %i",iSector, indexDDL)); - if (fVerbose){ + if (fVerbose) AliInfo(Form(" Sector = %i, DDL within sector = %i",iSector, indexDDL)); - } + Int_t volume[5]; volume[0]=iSector; Int_t minPlate=0, maxPlate=0, minStrip2=0, maxStrip2=0, minPadz=0, maxPadz=0, minPadx=0, maxPadx=0; @@ -877,20 +909,20 @@ void AliTOFDecoder::GetArrayDDL(Int_t* array, Int_t ddl){ volume[2]=iStrip; volume[3]=iPadz; volume[4]=iPadx; - if (fVerbose){ + if (fVerbose) AliInfo(Form(" volume[0] = %i, volume[1] = %i, volume[2] = %i, volume[3] = %i, volume[4] = %i",volume[0],volume[1],volume[2],volume[3],volume[4])); - } + if (indexDDL==0 || indexDDL==2){ array[ichTOF]=geom->GetIndex(volume); - if (fVerbose){ + if (fVerbose) AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF])); - } + } else { array[ichTOF]=geom->GetIndex(volume); - if (fVerbose){ + if (fVerbose) AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF])); - } + } ichTOF++; } @@ -898,12 +930,37 @@ void AliTOFDecoder::GetArrayDDL(Int_t* array, Int_t ddl){ } } //AliInfo(Form("ichTOF = %i",ichTOF)); - if ((((indexDDL==0 || indexDDL==2)&ichTOF)!=2160) || (((indexDDL==1 || indexDDL==3)&ichTOF)!=2208)){ + if ((indexDDL%2==0 && ichTOF!=2160) || + (indexDDL%2==1 && ichTOF!=2208)) { AliWarning(Form("Something strange occurred, number of entries in array different from expected! Please, check! ichTOF = %i",ichTOF)); } return; } +//------------------------------------------------------------ +void AliTOFDecoder::PrintStack(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3) +{ + /* It loops over nWords 32-bit words + * starting at *rawData and prints them in 0x format. + * It does not decode them! + */ - - + Short_t currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)(-1); + currentMiniEventID = cdhV3 ? cdhV3->GetMiniEventID() : currentMiniEventID; + Short_t currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)(-1); + currentEventID1 = cdhV3 ? cdhV3->GetEventID1() : currentEventID1; + if (!cdh && !cdhV3) + AliWarning("CDH not valid: deltaBunchID not reliable "); + else + AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh ? cdh->GetEventID2() : cdhV3->GetEventID2(), currentMiniEventID)); + + AliInfo("Printing raw data stack for current equipment\n"); + AliInfo(" wordN - Hex Word "); + //loop over raw data + for (Int_t iWord = 0; iWord < nWords; iWord++, rawData++){ + if (iWord<10) AliInfo(Form(" %i - 0x%08x",iWord,*rawData)); + if (iWord>9 &&iWord<100) AliInfo(Form(" %i - 0x%08x",iWord,*rawData)); + if (iWord>99) AliInfo(Form(" %i - 0x%08x",iWord,*rawData)); + } + return; +}