fCurrScCh(-1),
fIsADCEventGood(kTRUE),
fIsL0BitSet(kTRUE),
- fIsPileUpEvent(kFALSE)
+ fIsPileUpEvent(kFALSE),
+ fIsZDCTDCHeader(kFALSE),
+ fIsTDCHeaderRead(kFALSE),
+ fTDCStartCounter(0),
+ fIsADDChannel(kFALSE),
+ fIsADDTDCHeader(kFALSE),
+ fIsADDTDCdatum(kFALSE)
{
// Create an object to read ZDC raw digits
fRawReader->Reset();
fCurrScCh(stream.fCurrScCh),
fIsADCEventGood(stream.fIsADCEventGood),
fIsL0BitSet(stream.fIsL0BitSet),
- fIsPileUpEvent(stream.fIsPileUpEvent)
+ fIsPileUpEvent(stream.fIsPileUpEvent),
+ fIsZDCTDCHeader(stream.fIsZDCTDCHeader),
+ fIsTDCHeaderRead(stream.fIsTDCHeaderRead),
+ fTDCStartCounter(stream.fTDCStartCounter),
+ fIsADDChannel(stream.fIsADDChannel),
+ fIsADDTDCHeader(stream.fIsADDTDCHeader),
+ fIsADDTDCdatum(stream.fIsADDTDCdatum)
{
// Copy constructor
if((message & 0x08) == 0){ // ** DARC card
fReadOutCard = 0;
fIsDARCHeader = kTRUE;
- AliInfo("\t ZDC readout card used: DARC");
+ //AliInfo("\t ZDC readout card used: DARC");
}
else if((message & 0x08) == 0x08){ // ** ZRC card
fReadOutCard = 1;
- AliInfo("\t ZDC readout card used: ZRC");
+ //AliInfo("\t ZDC readout card used: ZRC");
}
if(header->GetL1TriggerMessage() & 0x1){ // Calibration bit set in CDH
//printf("\t AliZDCRawStream::ReadCDHHeader -> L1TriggerMessage %x\n",header->GetL1TriggerMessage());
//printf("\t AliZDCRawStream::ReadCDHHeader -> Calibration bit = %d\n",fIsCalib);
- UInt_t status = header->GetStatus();
+/* UInt_t status = header->GetStatus();
//printf("\t AliZDCRawStream::ReadCDHHeader -> status = %d\n",status);
if((status & 0x000f) == 0x0001){
AliDebug(2,"CDH -> DARC trg0 overlap error");
AliDebug(2,"CDH -> DARC other error");
fRawReader->AddMajorErrorLog(kDARCError);
}
+ */
}
}
if(!fRawReader->ReadNextInt((UInt_t&) fBuffer)) return kFALSE;
const int kNch = 48;
- Int_t kFirstADCGeo=0, kLastADCGeo=3, kAddADCGeo=4;
- Int_t kScalerGeo=8, kPUGeo=29, kTrigScales=30, kTrigHistory=31;
+ Int_t kFirstADCGeo=0, kLastADCGeo=3;
+ Int_t kADDADCGeo=5, kADDTDCGeo=6;
+ Int_t kZDCTDCGeo=8, kScalerGeo=16;
+ Int_t kPUGeo=29, kTrigScales=30, kTrigHistory=31;
+ //
fIsHeaderMapping = kFALSE; fIsChMapping = kFALSE;
fIsADCHeader = kFALSE; fIsADCDataWord = kFALSE; fIsADCEOB = kFALSE;
+ fIsADDChannel = kFALSE; fIsADDTDCHeader= kFALSE; fIsADDTDCdatum=kFALSE;
fIsUnderflow = kFALSE; fIsOverflow = kFALSE; fIsScalerWord = kFALSE;
fSector[0] = fSector[1] = -1;
-// fTrigCountNWords = 9; fTrigHistNWords = 2;
for(Int_t kl=0; kl<4; kl++) fCPTInput[kl] = 0;
fEvType = fRawReader->GetType();
// look the enum in AliZDCRawStream.h file
// -----------------------------------------
// NOT CONSIDERING OUT OF TIME OR REFERENCE SIGNALS FOR SCALER!!!!!
- if(fCabledSignal>=2 && fCabledSignal<=6 ||
- fCabledSignal>=61 && fCabledSignal<=65){
+ if((fCabledSignal>=2 && fCabledSignal<=6) ||
+ (fCabledSignal>=61 && fCabledSignal<=65)){
fScalerMap[fCurrScCh][3] = 4; //ZNA
//
if(fCabledSignal==2 || fCabledSignal==61) fScalerMap[fCurrScCh][4]=0;
else if(fCabledSignal==5 || fCabledSignal==64) fScalerMap[fCurrScCh][4]=3;
else if(fCabledSignal==6 || fCabledSignal==65) fScalerMap[fCurrScCh][4]=4;
}
- else if(fCabledSignal>=7 && fCabledSignal<=11 ||
- fCabledSignal>=66 && fCabledSignal<=70){
+ else if((fCabledSignal>=7 && fCabledSignal<=11) ||
+ (fCabledSignal>=66 && fCabledSignal<=70)){
fScalerMap[fCurrScCh][3] = 5; //ZPA
//
if(fCabledSignal==7 || fCabledSignal==66) fScalerMap[fCurrScCh][4]=0;
else if(fCabledSignal==10 || fCabledSignal==69) fScalerMap[fCurrScCh][4]=3;
else if(fCabledSignal==11 || fCabledSignal==70) fScalerMap[fCurrScCh][4]=4;
}
- else if(fCabledSignal>=12 && fCabledSignal<=16 ||
- fCabledSignal>=71 && fCabledSignal<=75){
+ else if((fCabledSignal>=12 && fCabledSignal<=16) ||
+ (fCabledSignal>=71 && fCabledSignal<=75)){
fScalerMap[fCurrScCh][3] = 1; //ZNC
//
if(fCabledSignal==12 || fCabledSignal==71) fScalerMap[fCurrScCh][4]=0;
else if(fCabledSignal==15 || fCabledSignal==74) fScalerMap[fCurrScCh][4]=3;
else if(fCabledSignal==16 || fCabledSignal==75) fScalerMap[fCurrScCh][4]=4;
}
- else if(fCabledSignal>=17 && fCabledSignal<=21 ||
- fCabledSignal>=76 && fCabledSignal<=80){
+ else if((fCabledSignal>=17 && fCabledSignal<=21) ||
+ (fCabledSignal>=76 && fCabledSignal<=80)){
fScalerMap[fCurrScCh][3] = 2; //ZPC
//
if(fCabledSignal==17 || fCabledSignal==76) fScalerMap[fCurrScCh][4]=0;
}
// Get geo address of current word
- // - ADC GEO = 0, 1, 2, 3
- // - VME scaler GEO = 8
- // - PU GEO = 29
- // - Trigger card scales GEO = 30
- // - Trigger card history GEO = 31
fADCModule = (Int_t) ((fBuffer & 0xf8000000)>>27);
+ if(fIsTDCHeaderRead)fADCModule = kZDCTDCGeo;
// ************************************ ADC MODULES ************************************
if(fADCModule>=kFirstADCGeo && fADCModule<=kLastADCGeo){
}
}//ADC module
// ********************************* ADD ADC *********************************
- else if(fADCModule == kAddADCGeo){
+ else if(fADCModule == kADDADCGeo){
// *** ADC header
if((fBuffer & 0x07000000) == 0x02000000){
fIsADCHeader = kTRUE;
fADCNChannels = ((fBuffer & 0x00003f00)>>8);
- //printf(" AliZDCRawStream -> ADC HEADER: mod.%d has %d ch. \n",fADCModule,fADCNChannels);
+ //printf(" AliZDCRawStream -> ADD ADC HEADER: mod.%d has %d ch. \n",fADCModule,fADCNChannels);
}
// *** ADC data word
else if((fBuffer & 0x07000000) == 0x00000000){
- fIsADCDataWord = kTRUE;
+ fIsADDChannel = kTRUE;
fADCChannel = ((fBuffer & 0x1e0000) >> 17);
fADCGain = ((fBuffer & 0x10000) >> 16);
fADCValue = (fBuffer & 0xfff);
//printf(" ADD ADC DATUM -> mod. %d ch. %d gain %d value %d\n",
// fADCModule,fADCChannel,fADCGain,fADCValue);
}
+ // *** ADC EOB
+ else if((fBuffer & 0x07000000) == 0x04000000){
+ fIsADCEOB = kTRUE;
+ //printf(" AliZDCRawStream -> EOB --------------------------\n");
+ }
+ }
+ // ********************************* ZDC TDC *********************************
+ else if(fADCModule==kZDCTDCGeo && fIsTDCHeaderRead==kFALSE){
+ fIsZDCTDCHeader = kTRUE;
+ fIsTDCHeaderRead = kTRUE;
+ fTDCStartCounter = fPosition;
+ //Ch. debug
+ //printf(" AliZDCRawStream -> ZDC TDC: mod.%d\n",fADCModule);
}
+ // ********************************* ADD TDC *********************************
+ else if(fADCModule == kADDTDCGeo){
+ // *** TDC header
+ if((fBuffer & 0x07000000) == 0x02000000){
+ fIsADDTDCHeader = kTRUE;
+ fADCNChannels = ((fBuffer & 0x00003f00)>>8);
+ //printf(" AliZDCRawStream -> ADD TDC: mod.%d has %d ch. \n",fADCModule,fADCNChannels);
+ }
+ // *** TDC word
+ else if((fBuffer & 0x07000000) == 0x00000000){
+ fIsADDTDCdatum = kTRUE;
+ }
+ // *** TDC EOB
+ if((fBuffer & 0x07000000) == 0x04000000){
+ fIsADCEOB = kTRUE;
+ //printf(" AliZDCRawStream -> ADD TDC EOB\n");
+ }
+ }
// ********************************* VME SCALER HEADER *********************************
else if(fADCModule == kScalerGeo){
if(fBuffer & 0x04000000 && fIsScHeaderRead==kFALSE){ // *** Scaler header
//Ch. debug
//printf(" AliZDCRawStream -> scaler datum %d", fScEvCounter);
}
+ // ********************************** ZDC TDC DATA **********************************
+ // ZDC TDC data
+ if(fIsTDCHeaderRead && fPosition>=fTDCStartCounter+1){
+ fIsADCDataWord=kFALSE; fIsScalerWord=kFALSE;
+ //printf(" AliZDCRawStream -> ...skipping ZDC TDC datum\n");
+ // For the moment we skip the TDC data
+ if(((fBuffer & 0xf0000000) == 0x80000000) && ((fBuffer & 0x08000000) >> 27) == 0){
+ fIsTDCHeaderRead = kFALSE;
+ // Ch. debug
+ //printf(" AliZDCRawStream -> ZDC TDC trailer\n");
+ }
+ }
// ******************************** TRIGGER SCALER DATA ********************************
// Reading trigger scaler data
if(fIsTriggerScaler && fPosition>=fTrigCountStart+1){