-// $Id: AliHLTCalorimeterMapper.cxx 34622 2009-09-04 13:22:01Z odjuvsla $
+// $Id$
/**************************************************************************
* This file is property of and copyright by the Experimental Nuclear *
fCellSize(0),
fSpecification(specification),
fIsInitializedMapping(false),
- fSpecificationMapPtr(0)
+ fSpecificationMapPtr(0),
+ fCaloDet(det)
{
//see header file for class documentation
fFilepath[0] = '\0';
AliHLTCaloMapper::~AliHLTCaloMapper()
{
- delete [] fHw2geomapPtr;
- fHw2geomapPtr = 0;
+ if (fSpecificationMapPtr) delete [] fSpecificationMapPtr;
+ fSpecificationMapPtr = NULL;
+ if (fHw2geomapPtr) delete [] fHw2geomapPtr;
+ fHw2geomapPtr = NULL;
}
int
AliHLTCaloMapper::GetChannelID(const AliHLTUInt32_t spec, const Int_t hadd)
{
+ if (!fSpecificationMapPtr) return -ENODEV;
Short_t index = GetDDLFromSpec(spec);
if( index < 0 )
{
Int_t
-AliHLTCaloMapper::GetModuleFromSpec(Int_t specification)
+AliHLTCaloMapper::GetModuleFromSpec(UInt_t specification)
{
- Int_t module;
-
- if(specification & 0xf) module = 0;
- else if((specification >> 4) & 0xf) module = 1;
- else if((specification >> 8) & 0xf) module = 2;
- else if((specification >> 12) & 0xf) module = 3;
- else if((specification >> 16) & 0xf) module = 4;
- else {
- HLTDebug("Specification 0x%X not consistent with single module in PHOS", specification);
- module = -1;
+
+ Int_t module = -1;
+ // get rid of too much string operations
+
+ // if (fCaloDet.CompareTo("PHOS") == 0) {
+
+ if (fCaloDet[0]=='P') {
+ // P = is the short for PHOS
+ // 1 module = 4 bits
+ if(specification & 0xf) module = 0;
+ else if((specification >> 4) & 0xf) module = 1;
+ else if((specification >> 8) & 0xf) module = 2;
+ else if((specification >> 12) & 0xf) module = 3;
+ else if((specification >> 16) & 0xf) module = 4;
+ else {
+ HLTDebug("Specification 0x%X not consistent with single module in PHOS", specification);
+ }
+
+ return module;
+ }
+ //else if (fCaloDet.CompareTo("EMCAL") == 0) {
+ else if (fCaloDet[0]=='E') {
+
+ // E = is the short for EMCAL
+ // 1 module = 2 bits
+ if(specification & 0x3) module = 0;
+ else if((specification >> 2) & 0x3) module = 1;
+ else if((specification >> 4) & 0x3) module = 2;
+ else if((specification >> 6) & 0x3) module = 3;
+ else if((specification >> 8) & 0x3) module = 4;
+ else if((specification >> 10) & 0x3) module = 5;
+ else if((specification >> 12) & 0x3) module = 6;
+ else if((specification >> 14) & 0x3) module = 7;
+ else if((specification >> 16) & 0x3) module = 8;
+ else if((specification >> 18) & 0x3) module = 9;
+ else {
+ HLTDebug("Specification 0x%X not consistent with single module in EMCAL", specification);
+ }
+ return module;
+
+ } else {
+ HLTDebug("Specification 0x%X not consistent with single module in EMCAL or PHOS", specification);
}
return module;
}