using namespace std;
#endif
-#if defined(HAVE_TPC_MAPPING)
-
#include "AliHLTTPCDigitReaderRaw.h"
#include "AliHLTTPCTransform.h"
#include "AliHLTTPCRootTypes.h"
fNMaxRows(0),
fNMaxPads(0),
fNTimeBins(0),
- fData(NULL)
+ fData(NULL),
+ fMapErrThrown(0)
{
+#ifndef HAVE_TPC_MAPPING
+ memset(fMapping0, 0, fMapping0Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping1, 0, fMapping1Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping2, 0, fMapping2Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping3, 0, fMapping3Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping4, 0, fMapping4Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping5, 0, fMapping5Size*fMappingDimension*sizeof(Int_t));
+#endif //#ifndef HAVE_TPC_MAPPING
+
if ( fDataFormatVersion==0 || fDataFormatVersion==2 || fDataFormatVersion==4 )
{
fNMaxRows(0),
fNMaxPads(0),
fNTimeBins(0),
- fData(NULL)
+ fData(NULL),
+ fMapErrThrown(0)
{
+#ifndef HAVE_TPC_MAPPING
+ memset(fMapping0, 0, fMapping0Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping1, 0, fMapping1Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping2, 0, fMapping2Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping3, 0, fMapping3Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping4, 0, fMapping4Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping5, 0, fMapping5Size*fMappingDimension*sizeof(Int_t));
+#endif //#ifndef HAVE_TPC_MAPPING
HLTFatal("copy constructor not for use");
}
AliHLTTPCDigitReaderRaw& AliHLTTPCDigitReaderRaw::operator=(const AliHLTTPCDigitReaderRaw& src)
{
+#ifndef HAVE_TPC_MAPPING
+ memset(fMapping0, 0, fMapping0Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping1, 0, fMapping1Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping2, 0, fMapping2Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping3, 0, fMapping3Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping4, 0, fMapping4Size*fMappingDimension*sizeof(Int_t));
+ memset(fMapping5, 0, fMapping5Size*fMappingDimension*sizeof(Int_t));
+#endif //#ifndef HAVE_TPC_MAPPING
fBuffer=NULL;
fBufferSize=0;
fPatch=-1;
fNMaxPads=0;
fNTimeBins=0;
fData=NULL;
+ fMapErrThrown=0;
HLTFatal("assignment operator not for use");
return (*this);
}
Bool_t AliHLTTPCDigitReaderRaw::ApplyMapping(){
+#ifndef HAVE_TPC_MAPPING
+ if (fMapErrThrown++==0) {
+ HLTFatal("mapping not available, you must compile with HAVE_TPC_MAPPING");
+ }
+ return -1;
+#endif //#ifndef HAVE_TPC_MAPPING
if ( (unsigned)fAltroBlockHWAddress > fMaxHWA[fPatch]){
fPad = -1;
fRow = -1;
switch(fPatch){
case 0:
- fRow = fMapping_0[(unsigned)fAltroBlockHWAddress][0];
- fPad = fMapping_0[(unsigned)fAltroBlockHWAddress][1];
+ fRow = fMapping0[(unsigned)fAltroBlockHWAddress][0];
+ fPad = fMapping0[(unsigned)fAltroBlockHWAddress][1];
break;
case 1:
- fRow = AliHLTTPCDigitReaderRaw::fMapping_1[(unsigned)fAltroBlockHWAddress][0];
- fPad = AliHLTTPCDigitReaderRaw::fMapping_1[(unsigned)fAltroBlockHWAddress][1];
+ fRow = AliHLTTPCDigitReaderRaw::fMapping1[(unsigned)fAltroBlockHWAddress][0];
+ fPad = AliHLTTPCDigitReaderRaw::fMapping1[(unsigned)fAltroBlockHWAddress][1];
#if 0
- printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping_1[(unsigned)fAltroBlockHWAddress][0],fMapping_1[(unsigned)fAltroBlockHWAddress][1], (unsigned)fAltroBlockHWAddress, (unsigned)fAltroBlockHWAddress);
- printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping_1[(unsigned)fAltroBlockHWAddress-1][0],fMapping_1[(unsigned)fAltroBlockHWAddress-1][1], (unsigned)fAltroBlockHWAddress-1, (unsigned)fAltroBlockHWAddress-1);
- printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping_1[(unsigned)fAltroBlockHWAddress+1][0],fMapping_1[(unsigned)fAltroBlockHWAddress+1][1], (unsigned)fAltroBlockHWAddress+1, (unsigned)fAltroBlockHWAddress+1);
+ printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping1[(unsigned)fAltroBlockHWAddress][0],fMapping1[(unsigned)fAltroBlockHWAddress][1], (unsigned)fAltroBlockHWAddress, (unsigned)fAltroBlockHWAddress);
+ printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping1[(unsigned)fAltroBlockHWAddress-1][0],fMapping1[(unsigned)fAltroBlockHWAddress-1][1], (unsigned)fAltroBlockHWAddress-1, (unsigned)fAltroBlockHWAddress-1);
+ printf ("pad %d # row %d (hwa: %u / 0x%08X\n", fMapping1[(unsigned)fAltroBlockHWAddress+1][0],fMapping1[(unsigned)fAltroBlockHWAddress+1][1], (unsigned)fAltroBlockHWAddress+1, (unsigned)fAltroBlockHWAddress+1);
#endif
break;
case 2:
- fRow = fMapping_2[(unsigned)fAltroBlockHWAddress][0];
- fPad = fMapping_2[(unsigned)fAltroBlockHWAddress][1];
+ fRow = fMapping2[(unsigned)fAltroBlockHWAddress][0];
+ fPad = fMapping2[(unsigned)fAltroBlockHWAddress][1];
break;
case 3:
- fRow = fMapping_3[(unsigned)fAltroBlockHWAddress][0];
- fPad = fMapping_3[(unsigned)fAltroBlockHWAddress][1];
+ fRow = fMapping3[(unsigned)fAltroBlockHWAddress][0];
+ fPad = fMapping3[(unsigned)fAltroBlockHWAddress][1];
break;
case 4:
- fRow = fMapping_4[(unsigned)fAltroBlockHWAddress][0];
- fPad = fMapping_4[(unsigned)fAltroBlockHWAddress][1];
+ fRow = fMapping4[(unsigned)fAltroBlockHWAddress][0];
+ fPad = fMapping4[(unsigned)fAltroBlockHWAddress][1];
break;
case 5:
- fRow = fMapping_5[(unsigned)fAltroBlockHWAddress][0];
- fPad = fMapping_5[(unsigned)fAltroBlockHWAddress][1];
+ fRow = fMapping5[(unsigned)fAltroBlockHWAddress][0];
+ fPad = fMapping5[(unsigned)fAltroBlockHWAddress][1];
break;
default:
fRow = -1;
}
-Int_t AliHLTTPCDigitReaderRaw::GetRow( unsigned patch, unsigned hw_addr )
+Int_t AliHLTTPCDigitReaderRaw::GetRow( unsigned patch, unsigned hwAddr )
{
- if ( (unsigned)hw_addr > fMaxHWA[fPatch]){
+#ifndef HAVE_TPC_MAPPING
+ if (fMapErrThrown++==0) {
+ HLTFatal("mapping not available, you must compile with HAVE_TPC_MAPPING");
+ }
+ return -1;
+#endif //#ifndef HAVE_TPC_MAPPING
+ if ( (unsigned)hwAddr > fMaxHWA[fPatch]){
return -1;
}
switch(fPatch){
case 0:
- return fMapping_0[hw_addr][0];
+ return fMapping0[hwAddr][0];
case 1:
- return fMapping_1[hw_addr][0];
+ return fMapping1[hwAddr][0];
case 2:
- return fMapping_2[hw_addr][0];
+ return fMapping2[hwAddr][0];
case 3:
- return fMapping_3[hw_addr][0];
+ return fMapping3[hwAddr][0];
case 4:
- return fMapping_4[hw_addr][0];
+ return fMapping4[hwAddr][0];
case 5:
- return fMapping_5[hw_addr][0];
+ return fMapping5[hwAddr][0];
default:
return -1;
}
}
-Int_t AliHLTTPCDigitReaderRaw::GetPad( unsigned patch, unsigned hw_addr )
+Int_t AliHLTTPCDigitReaderRaw::GetPad( unsigned patch, unsigned hwAddr )
{
- if ( (unsigned)hw_addr > fMaxHWA[fPatch]){
+#ifndef HAVE_TPC_MAPPING
+ if (fMapErrThrown++==0) {
+ HLTFatal("mapping not available, you must compile with HAVE_TPC_MAPPING");
+ }
+ return -1;
+#endif //#ifndef HAVE_TPC_MAPPING
+ if ( (unsigned)hwAddr > fMaxHWA[fPatch]){
return -1;
}
switch(fPatch){
case 0:
- return fMapping_0[hw_addr][1];
+ return fMapping0[hwAddr][1];
case 1:
- return fMapping_1[hw_addr][1];
+ return fMapping1[hwAddr][1];
case 2:
- return fMapping_2[hw_addr][1];
+ return fMapping2[hwAddr][1];
case 3:
- return fMapping_3[hw_addr][1];
+ return fMapping3[hwAddr][1];
case 4:
- return fMapping_4[hw_addr][1];
+ return fMapping4[hwAddr][1];
case 5:
- return fMapping_5[hw_addr][1];
+ return fMapping5[hwAddr][1];
default:
return -1;
}
unsigned AliHLTTPCDigitReaderRaw::GetMaxHWA( unsigned patch )
{
- if ( patch>=6 )
+ if ( patch>=fNofPatches )
return 0;
return fMaxHWA[patch];
}
// ----- MAPPING ARRAYS
+#if defined(HAVE_TPC_MAPPING)
#include "mapping_array_out.inc"
-
+#else
+// dummy definitions in case of missing mapping
+Int_t AliHLTTPCDigitReaderRaw::fMapping0[fMapping0Size][fMappingDimension];
+Int_t AliHLTTPCDigitReaderRaw::fMapping1[fMapping1Size][fMappingDimension];
+Int_t AliHLTTPCDigitReaderRaw::fMapping2[fMapping2Size][fMappingDimension];
+Int_t AliHLTTPCDigitReaderRaw::fMapping3[fMapping3Size][fMappingDimension];
+Int_t AliHLTTPCDigitReaderRaw::fMapping4[fMapping4Size][fMappingDimension];
+Int_t AliHLTTPCDigitReaderRaw::fMapping5[fMapping5Size][fMappingDimension];
#endif //#if defined(HAVE_TPC_MAPPING)
#include "TObject.h"
-#if defined(HAVE_TPC_MAPPING)
#include "AliHLTTPCDigitReader.h"
#include "AliHLTDataTypes.h"
/**
* Init the reader with a data block.
* The function fetches the first and last row for the readout partition
- * from @ref AliHLTTransform.
+ * from @ref AliHLTTPCTransform.
* @param ptr pointer to data buffer
* @param size size of the data buffer
* @param patch patch (readout partition) number within the slice
protected:
- AliHLTUInt8_t* fBuffer;
+ AliHLTUInt8_t* fBuffer; //! transient value
unsigned long fBufferSize;
/*
Int_t fFirstRow;
bool fVerify;
private:
- static Int_t fMapping_0[3200][2];
- static Int_t fMapping_1[3584][2];
- static Int_t fMapping_2[3200][2];
- static Int_t fMapping_3[3328][2];
- static Int_t fMapping_4[3328][2];
- static Int_t fMapping_5[3328][2];
-
- static unsigned fMaxHWA[6];
+ /** number of patches */
+ static const Int_t fNofPatches=6;
+ /** dimension of each mapping array */
+ static const Int_t fMappingDimension=2;
+
+ /** size of mapping arrays */
+ static const Int_t fMapping0Size=3200;
+ /** size of mapping array for patch 1 */
+ static const Int_t fMapping1Size=3584;
+ /** size of mapping array for patch 2 */
+ static const Int_t fMapping2Size=3200;
+ /** size of mapping array for patch 3 */
+ static const Int_t fMapping3Size=3328;
+ /** size of mapping array for patch 4 */
+ static const Int_t fMapping4Size=3328;
+ /** size of mapping array for patch 5 */
+ static const Int_t fMapping5Size=3328;
+
+ /** mapping array for patch 0 */
+ static Int_t fMapping0[fMapping0Size][fMappingDimension];
+ /** mapping array for patch 1 */
+ static Int_t fMapping1[fMapping1Size][fMappingDimension];
+ /** mapping array for patch 2 */
+ static Int_t fMapping2[fMapping2Size][fMappingDimension];
+ /** mapping array for patch 3 */
+ static Int_t fMapping3[fMapping3Size][fMappingDimension];
+ /** mapping array for patch 4 */
+ static Int_t fMapping4[fMapping4Size][fMappingDimension];
+ /** mapping array for patch 5 */
+ static Int_t fMapping5[fMapping5Size][fMappingDimension];
+
+ static unsigned fMaxHWA[fNofPatches];
// For reordering
Int_t fCurrentRow;
Int_t fNMaxPads;
Int_t fNTimeBins;
- Int_t *fData;
+ Int_t *fData; //! transient value
+ /** indicate a virgin object and throw the warnig only once */
+ Int_t fMapErrThrown; //! transient value
- ClassDef(AliHLTTPCDigitReaderRaw, 0)
+ ClassDef(AliHLTTPCDigitReaderRaw, 1)
};
-#else
-// add a dummy class to make CINT happy
-class AliHLTTPCDigitReaderRaw : public AliHLTLogging{
-public:
- AliHLTTPCDigitReaderRaw()
- {
- HLTFatal("AliHLTTPCDigitReaderRaw not build");
- }
-};
-#endif //#if defined(HAVE_TPC_MAPPING)
-
#endif
-