fZeroSup(kTRUE),
fPos(0x0),
fiPos(0),
- fTurbo(kFALSE)
+ fTurbo(kFALSE),
+ fRawDataSize(0)
{
//
// Constructor
fZeroSup(kTRUE),
fPos(0x0),
fiPos(0),
- fTurbo(kFALSE)
+ fTurbo(kFALSE) ,
+ fRawDataSize(0)
{
//
// Constructor
for(Int_t iddl=0;iddl<kNDDL;iddl++)
for(Int_t ierr=0; ierr < kSumErr; ierr++) fNumOfErr[iddl][ierr]=0; //reset errors
+
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliHMPIDRawStream::~AliHMPIDRawStream()
fWord=0;
fZeroSup=0;
fTurbo=0;
- for(Int_t i=0;i<kSumErr;i++) delete [] fNumOfErr[i];
+ fRawDataSize=0;
+ for(Int_t i=0;i<kNDDL;i++) delete [] fNumOfErr[i];
delete [] fNumOfErr;
- if(fnDDLInStream) { delete [] fnDDLInStream; fnDDLInStream = 0x0; }
+ delete [] fnDDLInStream;
+ delete [] fnDDLOutStream;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDRawStream::Reset()
do {
if (!fRawReader->ReadNextData(fData)) return kFALSE;
} while (fRawReader->GetDataSize() == 0);
+
+ Int_t runNumber = fRawReader->GetRunNumber();
+
+ Int_t ddlArray[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
+
+ // next line: fix for link chamber2 cables inversion for period LHC11d, LHC11e, LHC11f and LHC11h.
+ if(runNumber>=156620 && runNumber<=170593) {ddlArray[4] = 5; ddlArray[5] = 4;}
+ else {ddlArray[4] = 4; ddlArray[5] = 5;}
/*
Event type is selected as in $ALICE_ROOT/RAW/event.h
*/
fPosition = 0;
- Bool_t status=kTRUE;
- Int_t rawDataSize=0;
+ Bool_t status=kFALSE;
+ fRawDataSize=0;
+ fDDLNumber = -1;
+ if (fRawReader->GetDDLID()>=0)
+ fDDLNumber = ddlArray[fRawReader->GetDDLID()];
+
+ if(fDDLNumber<0) {
+ AliWarning(Form("fDDLNumber not a acceptable value %i",fDDLNumber));
+ return kFALSE;
+ }
+
if(fRawReader->GetType() == 7 || fRawReader->GetType() == 8 ) { //New: Select Physics events, Old: Raw data size is not 0 and not 47148 (pedestal)
- fDDLNumber = fRawReader->GetDDLID();
fnDDLInStream[fDDLNumber]=1; fnDDLOutStream[fDDLNumber]=0;
fLDCNumber = fRawReader->GetLDCId();
fTimeStamp = fRawReader->GetTimestamp();
AliDebug(1,Form("DDL %i started to be decoded!",fDDLNumber));
- rawDataSize=fRawReader->GetDataSize()/4;
- DelVars(); //We have to delete the variables initialized in the InitVars before recall IntiVars!!!
- InitVars(rawDataSize); //To read the charge and pads we cannot delete before the status return
+ fRawDataSize=fRawReader->GetDataSize()/4;
+ DelVars(); //We have to delete the variables initialized in the InitVars before recall IntiVars!!!
+ InitVars(fRawDataSize); //To read the charge and pads we cannot delete before the status return
if(fTurbo==kTRUE) status=Turbo();
else status = ReadHMPIDRawData();
if(status) AliDebug(1,Form("Event DDL %i successfully decoded!.",fDDLNumber));
else AliDebug(1,Form("Event DDL %i ERROR in decoding!.",fDDLNumber));
-// DumpData(fRawReader->GetDataSize());
+ //DumpData(fRawReader->GetDataSize());
}
fPad = new Int_t[n];
//for debug purpose
fPos = new Int_t[4*n+4]; //reset debug
+ for(Int_t ie = 0 ; ie < 4*n+4; ie++) fPos[ie] = 0; //initialize for 0, otherwise the position is considered filled and will not be updated for the dump
fiPos = 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cnt--;
- while (cnt>0) {
-
+ while (cnt>20) { //counter limit is changed from 0 to 20 to take into account (skipp) the 5 extra words in the equipment header
nwSeg = (fWord >> kbit8) & 0xfff;
if(!CheckSegment()) return kFALSE;
if(!ReadSegment(cntSegment)) return kFALSE;
// fRawReader->AddMajorErrorLog(kEoEDILOGICErr,Form("eoe dil %d != %d",da,dilogic));
// AliDebug(1,Form("Wrong DILOGIC address found in end-of-event: %d, expected %d!",da,dilogic));
// fNumOfErr[kEoEDILOGICErr]++;
-// return kFALSE; AliQAChecker::Instance()->Run(AliQA::kHMPID, task, obj) ;
+// return kFALSE; AliQAChecker::Instance()->Run(AliQAv1::kHMPID, task, obj) ;
// }
// UInt_t ca = (eOfEvent >> 22) & 0x1f;