}
//____________________________________________________________________________
-Int_t AliTRDRawStream::NextChamber(AliTRDdigitsManager *man, UInt_t *trackletContainer)
+Int_t AliTRDRawStream::NextChamber(AliTRDdigitsManager *man, UInt_t** /*trackletContainer*/)
{
//
// Updates the next data word pointer
virtual ~AliTRDRawStream();
virtual Bool_t Next(); // Read the next data
- virtual Int_t NextChamber(AliTRDdigitsManager *man, UInt_t *trackletContainer); // Read next chamber data
+ virtual Int_t NextChamber(AliTRDdigitsManager *man, UInt_t **trackletContainer); // Read next chamber data
virtual Bool_t Init(); // Init for the fRawVersion > 1
enum { kDDLOffset = 0x400 }; // Offset for DDL numbers
}
//____________________________________________________________________________
-Int_t AliTRDRawStreamV2::NextChamber(AliTRDdigitsManager *man, UInt_t *trackletContainer)
+Int_t AliTRDRawStreamV2::NextChamber(AliTRDdigitsManager *man, UInt_t** /*trackletContainer*/)
{
//
// Fills single chamber digit array
virtual ~AliTRDRawStreamV2();
virtual Bool_t Next(); // Read the next data
- virtual Int_t NextChamber(AliTRDdigitsManager *man, UInt_t *trackletContainer); // Read next chamber data
+ virtual Int_t NextChamber(AliTRDdigitsManager *man, UInt_t **trackletContainer); // Read next chamber data
virtual Bool_t Init(); // Init for the fRawVersion > 1
enum { kDDLOffset = 0x400 }; // Offset for DDL numbers
Int_t AliTRDrawStreamTB::fgLastHC = -1;
Int_t AliTRDrawStreamTB::fgLastROB = -1;
Int_t AliTRDrawStreamTB::fgLastIndex = -1;
+Bool_t AliTRDrawStreamTB::fDumpingEnable = kFALSE;
+Int_t AliTRDrawStreamTB::fDumpingSM = -1;
+Int_t AliTRDrawStreamTB::fDumpingStack = -1;
+Int_t AliTRDrawStreamTB::fDumpingLayer = -1;
+Int_t AliTRDrawStreamTB::fDumpingROB = -1;
+Int_t AliTRDrawStreamTB::fDumpingMCM = -1;
+
AliTRDrawStreamTB::AliTRDrawStreamTB()
: AliTRDrawStreamBase()
//
if (fgDebugFlag) AliDebug(5, Form("Equipment ID: %d",fRawReader->GetEquipmentId()));
+ if (fRawReader->GetEquipmentId()<1024 || fRawReader->GetEquipmentId()>1041) //tmp protection
+ return kFALSE;
if(fgStreamEventCounter == 0) fgFirstEquipmentID = fRawReader->GetEquipmentId();
fEquipmentID = fRawReader->GetEquipmentId();
fLinkTrackletCounter = 0;
fEndOfTrackletCount = 0;
+ fHC->fNTracklets = 0;
for (Int_t i = 0; i < MAX_TRACKLETS_PERHC; i++) //[mj]
fHC->fTrackletWords[i] = 0; //[mj]
//
DecodeMCMheader(fpPos, fMCM);
+
+ if (fDumpingEnable)
+ {
+ if (fMCM->fMCM == fDumpingMCM)
+ {
+ if (fMCM->fROB == fDumpingROB && fHC->fLayer == fDumpingLayer)
+ {
+ if (fHC->fSM == fDumpingSM && fHC->fStack == fDumpingStack)
+ {
+ if (fgDebugFlag) {
+ AliDebug(4,DumpHCinfoH0(fHC));
+ AliDebug(4,DumpMCMinfo(fMCM));
+ }
+ DumpWords(fpPos, 212);
+ }
+ }
+ }
+ }
+
if (fHC->fCorrupted >= 16)
{
fpPos--;
if (fgDebugFlag) AliDebug(11,Form("Wrong column! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s",
fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));
}
- else
- {
+ //else
+ //{
// we are out of the det when the pad is shared
- if (fgDebugFlag) AliDebug(11, Form("Column out of the detector! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s",
- fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));
- fADC->fCorrupted += 32;
- }
+ //if (fgDebugFlag) AliDebug(11, Form("Column out of the detector! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s",
+ // fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));
+ //fADC->fCorrupted += 32;
+ //}
}
if (fADC->fCorrupted > 0)
Bool_t IsTrackletEnableBitSet() const {return fSM.fTrackletEnable;} // get status of tracklet enable bit
Bool_t IsStackActive(Int_t is) const {return fSM.fStackActive[is];} // get status of stack enable bit
Int_t GetNofActiveStacks() const {return fSM.fActiveStacks;} // get number of active stacks from stack mask
+ UInt_t *GetGTUheaderWords() const {return fSM.fPos;} // get number of active stacks from stack mask
// info from Stack Index Word
Int_t GetNexpectedHalfChambers() const {return fSM.fNexpectedHalfChambers;} // get number of expected HC in a sm
Int_t GetSide(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fSide;}
Int_t GetH0ErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fH0Corrupted;}
Int_t GetH1ErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fH1Corrupted;}
+ Int_t GetNumberOfTimeBins(Int_t is, Int_t il) const { return fSM.fStacks[is].fHalfChambers[il].fTimeBins;}
+ UInt_t *GetTrackletWords(Int_t is, Int_t il) { return fSM.fStacks[is].fHalfChambers[il].fTrackletWords;}
// info from HC data
Int_t GetHCErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fCorrupted;}
static void DisableStackNumberChecker() {fgStackNumberChecker = kFALSE;} // set false to cleanroom data
static void DisableStackLinkNumberChecker() {fgStackLinkNumberChecker = kFALSE;}
static void DisableSkipData() {fgSkipData = kFALSE;} // keep reading next words even previous words were corrupted - debugging purpose
+ static void SetDumpingEnable() {fDumpingEnable = kTRUE;}
+ static void SetDumpingMCM(Int_t sm, Int_t stack, Int_t layer, Int_t rob, Int_t mcm) {fDumpingSM = sm; fDumpingStack = stack; fDumpingLayer = layer; fDumpingROB = rob; fDumpingMCM = mcm;}
// this is a temporary solution!
// baseline should come with the HC header word 2 (count from 0!)
Bool_t fSharedPadsOn; // do we want to output shared pads - default is off
Int_t fMaxADCgeom; // maximum ADC channels per mcm
- Bool_t fBufferRead;
+ Bool_t fBufferRead;
AliTRDgeometry *fGeometry; //! TRD geometry
AliRawReader *fRawReader; //! raw reader
static Int_t fgEmptySignals[30]; // empty signals in case of ADC pointer = NULL
static Short_t fgMCMordering[16]; // mcm number odering for mcm header corruption check
static Short_t fgROBordering[16]; // mcm number odering for mcm header corruption check
- static Int_t fgLastHC;
- static Int_t fgLastROB;
- static Int_t fgLastIndex;
+ static Int_t fgLastHC;
+ static Int_t fgLastROB;
+ static Int_t fgLastIndex;
+
+ static Bool_t fDumpingEnable;
+
+ static Int_t fDumpingSM;
+ static Int_t fDumpingStack;
+ static Int_t fDumpingLayer;
+ static Int_t fDumpingROB;
+ static Int_t fDumpingMCM;
// this is a temporary solution!
// baseline should come with the HC header word 2 (count from 0!)