fIsADCEOB(kFALSE),
fSODReading(kFALSE),
fIsMapRead(kFALSE),
+ fReadCDH(kFALSE),
fDeadfaceOffset(-1),
fDeadbeefOffset(-1),
fDataOffset(0),
fCurrentCh(-1),
fCabledSignal(-1),
fCurrScCh(-1),
+ fCurrTDCCh(-1),
fIsADCEventGood(kTRUE),
fIsL0BitSet(kTRUE),
fIsPileUpEvent(kFALSE),
for(Int_t i=0; i<kNch; i++){
for(Int_t j=0; j<5; j++){
fMapADC[i][j]=-1;
- if(i<32) fScalerMap[i][j]=-1;
+ if(i<32){
+ fScalerMap[i][j]=-1;
+ if(j<3) fTDCMap[i][j]=-1;
+ }
}
}
fIsADCEOB(stream.fIsADCEOB),
fSODReading(stream.fSODReading),
fIsMapRead(stream.fIsMapRead),
+ fReadCDH(stream.fReadCDH),
fDeadfaceOffset(stream.GetDeadfaceOffset()),
fDeadbeefOffset(stream.GetDeadbeefOffset()),
fDataOffset(stream.GetDataOffset()),
fCurrentCh(stream.fCurrentCh),
fCabledSignal(stream.GetCabledSignal()),
fCurrScCh(stream.fCurrScCh),
+ fCurrTDCCh(stream.fCurrTDCCh),
fIsADCEventGood(stream.fIsADCEventGood),
fIsL0BitSet(stream.fIsL0BitSet),
fIsPileUpEvent(stream.fIsPileUpEvent),
for(Int_t i=0; i<kNch; i++){
fMapADC[i][0] = chMap->GetADCModule(i);
fMapADC[i][1] = chMap->GetADCChannel(i);
- fMapADC[i][2] = -1;
+ fMapADC[i][2] = chMap->GetADCSignalCode(i);
fMapADC[i][3] = chMap->GetDetector(i);
fMapADC[i][4] = chMap->GetSector(i);
}
//
fIsHeaderMapping = kFALSE; fIsChMapping = kFALSE;
fIsADCHeader = kFALSE; fIsADCDataWord = kFALSE; fIsADCEOB = kFALSE;
- fIsADDChannel = kFALSE; fIsADDTDCHeader= kFALSE; fIsADDTDCdatum=kFALSE;
+ fIsZDCTDCdatum = kFALSE; fIsADDChannel = kFALSE; fIsADDTDCdatum=kFALSE;
fIsUnderflow = kFALSE; fIsOverflow = kFALSE; fIsScalerWord = kFALSE;
fSector[0] = fSector[1] = -1;
for(Int_t kl=0; kl<4; kl++) fCPTInput[kl] = 0;
fEvType = fRawReader->GetType();
if(fPosition==0){
- //if(fEvType==7 || fEvType ==8){ //Physics or calibration event
- ReadCDHHeader();
- //}
- fCurrentCh=0; fCurrScCh=0; fNChannelsOn=0;
+ ReadCDHHeader();
+ // Needed to read simulated raw data (temporary solution?)
+ if(!fReadCDH) fReadOutCard=1;
+ fCurrentCh=0; fCurrScCh=0; fCurrTDCCh=0;fNChannelsOn=0;
// Ch. debug
//printf("\n AliZDCRawStream::Next() - ev. type %d",fEvType);
}
-
// Ch. debug
//printf("\n AliZDCRawStream::Next() - fBuffer[%d] = %x\n",fPosition, fBuffer);
// DARC 1st datum @ fDataOffset+1 \ ZRC 1st valid datum @ fDataOffset=0
if((fPosition==fDataOffset+1) || (fPosition==fDataOffset)){
printf("\n\n ------ AliZDCRawStream -> Reading mapping from StartOfData event ------\n");
- fCurrentCh=0; fCurrScCh=0;
+ fCurrentCh=0; fCurrScCh=0; fCurrTDCCh=0;
}
else{
printf(" ------ AliZDCRawStream -> End of ZDC StartOfData event ------\n\n");
else if(fCabledSignal==kZEM2 || fCabledSignal==kZEM2D) fScalerMap[fCurrScCh][4]=2;
}
// Ch debug.
- //printf("\t VME scaler mod. %d ch. %d, signal %d",fScalerMap[fCurrScCh][0],fADCChannel,fCabledSignal);
- //if(fCabledSignal!=0 && fCabledSignal!=1) printf(" det. %d sec. %d\n",fScalerMap[fCurrScCh][3],fScalerMap[fCurrScCh][4]);
- //else printf(" Signal void/not connected\n");
+ /*printf("\t VME scaler mod. %d ch. %d, signal %d",fScalerMap[fCurrScCh][0],fADCChannel,fCabledSignal);
+ if(fCabledSignal!=0 && fCabledSignal!=1) printf(" det. %d sec. %d\n",fScalerMap[fCurrScCh][3],fScalerMap[fCurrScCh][4]);
+ else printf(" Signal void/not connected\n");*/
fCurrScCh++;
}
+ else if(fModType==KV1290 && fADCModule==kZDCTDCGeo){ // ******** ZDC TDC **************************
+ fIsChMapping = kTRUE;
+ fTDCMap[fCurrTDCCh][0] = fADCModule;
+ fTDCMap[fCurrTDCCh][1] = fADCChannel;
+ fTDCMap[fCurrTDCCh][2] = fCabledSignal;
+
+ fCurrTDCCh++;
+
+ // Ch debug.
+ //printf("\tZDC TDC: mod. %d ch. %d, signal %d\n",fADCModule,fADCChannel,fCabledSignal);
+ }
/*else if(fModType == kTRG){ // **** scalers from trigger card
//printf("\t Trigger scaler mod. %d ch. %d, signal %d\n",fADCModule,fADCChannel,fCabledSignal);
}
// ---------------------------------------------
else if(fPosition>=fDataOffset){
- //printf("AliZDCRawStream: fSODReading = %d\n", fSODReading);
if(!fSODReading && !fIsMapRead) ReadChMap();
// !!!!!!!!!!!!!!! DARC readout card only !!!!!!!!!!!
if((fBuffer & 0x07000000) != 0x06000000){
fRawReader->AddMajorErrorLog(kZDCDataError);
}
- else if((fBuffer & 0x07000000) == 0x06000001){ // Corrupted event!!!
- fIsADCEventGood = kFALSE;
- }
+ //else if((fBuffer & 0x07000000) == 0x06000001){ // Corrupted event!!!
+ // fIsADCEventGood = kFALSE;
+ //}
}
// If the not valid datum isn't followed by the 1st ADC header
else fADCModule = (Int_t) ((fBuffer & 0xf8000000)>>27);
// ************************************ ADC MODULES ************************************
- if(fADCModule>=kFirstADCGeo && fADCModule<=kLastADCGeo){
+ if(fADCModule>=kFirstADCGeo && fADCModule<=kLastADCGeo &&
+ !fIsTriggerHistory && !fIsScHeaderRead && !fIsTriggerScaler){
// *** ADC header
if((fBuffer & 0x07000000) == 0x02000000){
fIsADCHeader = kTRUE;
fADCValue = (fBuffer & 0xfff);
//
//printf(" AliZDCRawStream -> ADC DATUM: mod. %d ch. %d gain %d value %d\n",
- // fADCModule,fADCChannel,fADCGain,fADCValue);
+ //fADCModule,fADCChannel,fADCGain,fADCValue);
// Checking if the channel map for the ADCs has been provided/read
if(fMapADC[0][0]==-1){
break;
}
}
- if(foundMapEntry==kFALSE){
+ if(foundMapEntry==kFALSE && fEvType==7){
AliWarning(Form(" No valid entry in ADC mapping for raw data %d ADCmod. %d ch. %d\n",
fPosition,fADCModule,fADCChannel));
}
- //
- //printf("AliZDCRawStream -> ADCmod. %d ch. %d -> det %d sec %d\n",
- // fADCModule,fADCChannel,fSector[0],fSector[1]);
-
+
// Final checks
- if(foundMapEntry==kTRUE){
+ if(foundMapEntry==kTRUE && fEvType==7){
if(fSector[0]<1 || fSector[0]>5){
AliWarning(Form(" No valid detector assignment: %d",fSector[0]));
fRawReader->AddMajorErrorLog(kInvalidSector);
// *** ADC EOB
else if((fBuffer & 0x07000000) == 0x04000000){
fIsADCEOB = kTRUE;
- //printf(" AliZDCRawStream -> EOB --------------------------\n");
+ //printf(" AliZDCRawStream -> ADC EOB --------------------------\n");
}
}//ADC module
// ********************************* ADD ADC *********************************
// *** ADC EOB
else if((fBuffer & 0x07000000) == 0x04000000){
fIsADCEOB = kTRUE;
- //printf(" AliZDCRawStream -> EOB --------------------------\n");
+ //printf(" AliZDCRawStream -> ADD ADC EOB --------------------------\n");
}
}
// ********************************* TDC *********************************
if(fADCModule==kZDCTDCGeo){ // *** ZDC TDC
fIsZDCTDCHeader = kTRUE;
//Ch. debug
- //printf(" AliZDCRawStream -> ZDC TDC: mod.%d\n",fADCModule);
+ //printf(" AliZDCRawStream -> ZDC TDC header: mod.%d\n",fADCModule);
}
- else if (fADCModule==kADDTDCGeo){ // *** ADD TDC
+ else if(fADCModule==kADDTDCGeo){ // *** ADD TDC
fIsADDTDCHeader = kTRUE;
//Ch. debug
//printf(" AliZDCRawStream -> ADD TDC: mod.%d\n",fADCModule);
//printf(" AliZDCRawStream -> VME SCALER HEADER: geo %d Nwords %d TrigSource %d TrigNo. %d\n",
// fScGeo,fScNWords,fScTriggerSource,fScTriggerNumber);
}
- else if(!(fBuffer & 0x04000000)){
- fIsScEventGood = kFALSE;
- }
+ // Commented by C.O. & M.G. (23/09/2011)
+ //else if(!(fBuffer & 0x04000000) && fIsScHeaderRead==kFALSE){
+ // fIsScEventGood = kFALSE;
+ //}
}
// *********************************** PATTERN UNIT ***********************************
else if(fADCModule == kPUGeo){
// ********************************** VME SCALER DATA **********************************
// Reading VME scaler data
if(fIsScHeaderRead && fPosition>=fScStartCounter+1){ // *** Scaler word
- fADCModule=kScalerGeo; fIsADCDataWord=kFALSE; fIsScalerWord=kTRUE;
+ fADCModule=kScalerGeo;
+ fIsADCDataWord=kFALSE;
+ fIsScalerWord=kTRUE;
fScEvCounter = fBuffer;
Int_t nWords = (Int_t) (fScNWords);
if(fPosition == fScStartCounter+nWords) fIsScHeaderRead = kFALSE;
//Ch. debug
- //printf(" AliZDCRawStream -> scaler datum %d", fScEvCounter);
+ //printf(" AliZDCRawStream -> scaler datum %x \n", fScEvCounter);
}
// ********************************** ZDC TDC DATA **********************************
// ZDC TDC data
fIsADCDataWord=kFALSE; fIsScalerWord=kFALSE;
if(((fBuffer & 0xf0000000)==0x00000000) && (((fBuffer & 0x08000000) >> 27) == 0)){ // TDC datum
fADCChannel = (Int_t) ((fBuffer & 0x3e00000) >> 21);
+ fIsZDCTDCdatum = kTRUE;
fZDCTDCdatum = (Int_t) (fBuffer & 0x1fffff);
// Ch. debug
//printf(" AliZDCRawStream -> ZDC TDC mod. %d ch. %d datum %d\n",fADCModule,fADCChannel,fZDCTDCdatum);
fIsADCDataWord=kFALSE; fIsScalerWord=kFALSE;
if(((fBuffer & 0xf0000000)==0x00000000) && (((fBuffer & 0x08000000) >> 27) == 0)){ // TDC datum
fADCChannel = (Int_t) ((fBuffer & 0x3e00000) >> 21);
+ fIsADDTDCdatum = kTRUE;
fADDTDCdatum = (Int_t) (fBuffer & 0x1fffff);
// Ch. debug
//printf(" AliZDCRawStream -> ADD TDC mod. %d ch. %d datum %d\n",fADCModule,fADCChannel,fADDTDCdatum);
}
}
// Ch. debug
- //printf(" AliZDCRawStream -> Trigger history word %d\n", fPosition-fTrigHistStart);
+ //printf(" AliZDCRawStream -> Trigger history word[%d] %x\n", fPosition, fBuffer);
}
}