\r
/** Constructor */\r
AliHLTCaloClusterizer(TString det); \r
- \r
+\r
/** Destructor */\r
virtual ~AliHLTCaloClusterizer();\r
\r
//Assignment\r
return *this; \r
}\r
- \r
+\r
/** Set digit container */\r
void SetDigitContainer(AliHLTCaloDigitContainerDataStruct* digitContainerPtr)\r
{ fDigitContainerPtr = digitContainerPtr; }\r
Int_t fMaxDigitIndexDiff; //COMMENT\r
\r
private:\r
+\r
AliHLTCaloClusterizer();\r
\r
- AliHLTCaloClusterizer (const AliHLTCaloClusterizer & );\r
+ // AliHLTCaloClusterizer (const AliHLTCaloClusterizer & );\r
// AliHLTCaloClusterizer & operator = (const AliHLTCaloClusterizer &);\r
\r
\r
//-*- Mode: C++ -*-
-// $Id: AliHLTPHOSConstants.h 34622 2009-09-04 13:22:01Z odjuvsla $
+// $Id$
/**************************************************************************
* This file is property of and copyright by the Experimental Nuclear *
AliHLTCaloConstantsHandler();
/** Keep the copy constructor private since it should not be used */
- AliHLTCaloConstantsHandler(const AliHLTCaloConstantsHandler & );
+ // AliHLTCaloConstantsHandler(const AliHLTCaloConstantsHandler & );
/** Keep the assignement operator private since it should not be used */
- AliHLTCaloConstantsHandler & operator = (const AliHLTCaloConstantsHandler &);
+ AliHLTCaloConstantsHandler & operator = (const AliHLTCaloConstantsHandler &);
void Initialize(TString det);
/** Channel book keeping variable */\r
AliHLTCaloDigitDataStruct ***fChannelBook; //! transient\r
\r
- AliHLTCaloDigitMaker (const AliHLTCaloDigitMaker & );\r
+ // AliHLTCaloDigitMaker (const AliHLTCaloDigitMaker & );\r
// AliHLTCaloDigitMaker & operator = (const AliHLTCaloDigitMaker &);\r
\r
ClassDef(AliHLTCaloDigitMaker, 0); \r
class AliHLTCaloMapper : public AliHLTLogging, public AliHLTCaloConstantsHandler
{
public:
- AliHLTCaloMapper(TString det);
+
AliHLTCaloMapper(const unsigned long specification, TString det);
virtual ~AliHLTCaloMapper();
virtual void InitAltroMapping( const unsigned long specification ) = 0;
# -*- mode: cmake -*-
-# $Id: CMake_libAliHLTCALO.txt 34927 2009-09-22 12:48:47Z richterm $
+# $Id$
set(SRCS
CALO/AliHLTCaloMapper.cxx
AliHLTPHOSClusterAnalyser::SetRecPointDataPtr(AliHLTPHOSRecPointHeaderStruct *recPointDataPtr, AliHLTPHOSDigitHeaderStruct *digitHeaderPtr)
{
fNRecPoints = recPointDataPtr->fNRecPoints;
+
fRecPointDataPtr = reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(reinterpret_cast<Char_t*>(recPointDataPtr)+sizeof(AliHLTPHOSRecPointHeaderStruct));
fDigitHeaderPtr = digitHeaderPtr;
}
//AliPHOSGeometry * phosgeom = AliPHOSGeometry::GetInstance() ;
AliHLTPHOSRecPointDataStruct *recPoint = fRecPointDataPtr;
-
- // UInt_t iDigit = 0;
-
+ UInt_t iDigit = 0;
+ if(!recPoint) return 0;
for(Int_t iRecPoint=0; iRecPoint < fNRecPoints; iRecPoint++)
{
- digit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fDigitHeaderPtr) + recPoint->fStartDigitOffset);
+ // cout << "CA: start digit offset: " << recPoint->fStartDigitOffset << endl;
+ digit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(fDigitHeaderPtr) + recPoint->fStartDigitOffset);
+ // cout << "CA: digit offset: " << digit->fMemOffsetNext << endl;
AliHLTPHOSDigitReader reader;
- reader.SetCurrentDigit(digit);
+ reader.SetNextDigit(digit);
while(digit)
{
xi = digit->fX;
zi = digit->fZ;
- // cout << "COG digits (x:z:E:time): " << xi << " : " << zi << " : " << digit->fEnergy << " : " << digit->fTime << endl;
+ // cout << "COG digits (x:z:E:time): " << xi << " : " << zi << " : " << digit->fEnergy << " : " << digit->fTime << endl;
if (recPoint->fAmp > 0 && digit->fEnergy > 0)
{
Float_t w = TMath::Max( 0., fLogWeight + TMath::Log( digit->fEnergy / recPoint->fAmp ) ) ;
recPoint->fX = x/wtot ;
recPoint->fZ = z/wtot ;
}
+
else
{
recPoint->fAmp = 0;
}
- recPoint = reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(digit);
- }
+ recPoint++;
+}
+
+
return 0;
}
for(Int_t i = 0; i < fNRecPoints; i++) //TODO needs fix when we start unfolding (number of clusters not necessarily same as number of recpoints gotten from the clusterizer
{
digitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fDigitHeaderPtr) + recPointPtr->fStartDigitOffset);
- reader.SetCurrentDigit(digitPtr);
+ reader.SetNextDigit(digitPtr);
if(availableSize < (totSize + maxClusterSize))
{
caloClusterPtr->fGlobalPos[0] = globalPos[0];
caloClusterPtr->fGlobalPos[1] = globalPos[1];
caloClusterPtr->fGlobalPos[2] = globalPos[2];
-
+ cout << "Global position: " << globalPos[0] << ", " << globalPos[1] << ", " << globalPos[2] << endl;
caloClusterPtr->fNCells = recPointPtr->fMultiplicity;
cellIDPtr = &(caloClusterPtr->fCellsAbsId);
totSize += sizeof(AliHLTCaloClusterDataStruct) + (caloClusterPtr->fNCells-1)*(sizeof(Short_t) + sizeof(Float_t));
caloClusterPtr = reinterpret_cast<AliHLTCaloClusterDataStruct*>(cellIDPtr);
- recPointPtr = reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(digitPtr);
+ // recPointPtr = reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(digitPtr);
+ recPointPtr++;
}
}
specification = specification|iter->fSpecification;
AliHLTPHOSDigitHeaderStruct *digitHeader = reinterpret_cast<AliHLTPHOSDigitHeaderStruct*>(iter->fPtr);
-
fClusterAnalyserPtr->SetRecPointDataPtr(reinterpret_cast<AliHLTPHOSRecPointHeaderStruct*>(reinterpret_cast<Long_t>(iter->fPtr) + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeader->fNDigits*sizeof(AliHLTPHOSDigitDataStruct)), digitHeader);
if(fDoDeconvolution)
{
//See headerfile for documentation
+ HLTError("Doing init...");
+
fClusterAnalyserPtr = new AliHLTPHOSClusterAnalyser();
const char *path = "HLT/ConfigPHOS/ClusterAnalyserComponent";
GetGeometryFromCDB();
- ConfigureFromCDBTObjString(path);
+ // ConfigureFromCDBTObjString(path);
for (int i = 0; i < argc; i++)
{
int
AliHLTPHOSClusterAnalyserComponent::GetGeometryFromCDB()
{
+ HLTError("Getting geometry...");
+
+ AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
AliCDBPath path("GRP","Geometry","Data");
if(path.GetPath())
}
gGeoManager = (TGeoManager*) pEntry->GetObject();
-
- fPHOSGeometry = new AliPHOSGeoUtils("PHOS", "noCPV");
- fClusterAnalyserPtr->SetGeometry(fPHOSGeometry);
+ HLTError("gGeoManager = 0x%x", gGeoManager);
+ if(gGeoManager)
+ {
+ fPHOSGeometry = new AliPHOSGeoUtils("PHOS", "noCPV");
+ fClusterAnalyserPtr->SetGeometry(fPHOSGeometry);
+ }
}
else
// UInt_t maxRecPointSize = sizeof(AliHLTPHOSRecPointDataStruct) + (sizeof(AliHLTPHOSDigitDataStruct) << 7); //Reasonable estimate...
+ // HLTError("Starting clusterisation");
+
//Clusterization starts
while((fCurrentDigit = fDigitReader->NextDigit()) != 0)
{
-
+ // HLTError("Digit with energy: %f", fCurrentDigit->fEnergy);
fDigitsInCluster = 0;
if(fCurrentDigit->fEnergy < fEmcClusteringThreshold)
continue;
}
+ // HLTError("Have cluster candidate (x,z): %d, %d, with energy: %f", fCurrentDigit->fX, fCurrentDigit->fZ, fCurrentDigit->fEnergy);
+
if(fAvailableSize < (sizeof(AliHLTPHOSRecPointDataStruct)))
{
HLTError("Out of buffer, stopping clusterisation");
fPreviousDigit = fStartDigit;
// Get the offset of the digit starting the cluster relative to the start of the digit block
fRecPointDataPtr->fStartDigitOffset = fDigitReader->GetCurrentDigitOffset();
+ // HLTError("Start digit offset: %d", fRecPointDataPtr->fStartDigitOffset);
+ // cout << "Start digit offset: " << fRecPointDataPtr->fStartDigitOffset << endl;
fDigitReader->DropDigit();
fRecPointDataPtr->fAmp = 0;
nRecPoints++;
// Scanning for the neighbours
- if(ScanForNeighbourDigits(fRecPointDataPtr) < 0)
+ if(ScanForNeighbourDigits(fRecPointDataPtr, fCurrentDigit) < 0)
{
return -1;
}
+ fPreviousDigit->fMemOffsetNext = 0;
+
totSize += sizeof(AliHLTPHOSRecPointDataStruct) + (fDigitsInCluster-1)*sizeof(AliHLTPHOSDigitDataStruct);
HLTDebug("Initial available size: %d, used size: %d, remaining available size: %d, should be: %d", availableSize, totSize, fAvailableSize, availableSize-totSize);
fRecPointDataPtr->fMultiplicity = fDigitsInCluster;
-
+ HLTDebug("Number of digits in cluster: %d", fDigitsInCluster);
fRecPointDataPtr++;
+
+ fDigitReader->Rewind(); // TODO: jump to the next instead of rewind
}//end of clusterization
- return nRecPoints;
+ return nRecPoints;
}
Int_t
-AliHLTPHOSClusterizer::ScanForNeighbourDigits(AliHLTPHOSRecPointDataStruct* recPoint)
+AliHLTPHOSClusterizer::ScanForNeighbourDigits(AliHLTPHOSRecPointDataStruct* recPoint, AliHLTPHOSDigitDataStruct *digit)
{
//see header file for documentation
// Int_t max = fDigitContainerPtr->fNDigits;
// Int_t min = 0;
+ AliHLTPHOSDigitDataStruct *tmpDigit = 0;
+
fDigitReader->Rewind();
- while((fCurrentDigit = fDigitReader->NextDigit()))
+ while((tmpDigit = fDigitReader->NextDigit()))
{
- if(fCurrentDigit->fEnergy > fEmcMinEnergyThreshold)
+ //HLTError("Checking digit (x,z): %d, %d, with energy: %f", tmpDigit->fX, tmpDigit->fZ, tmpDigit->fEnergy);
+ // HLTError("Checking digit (x,z): %d, %d, with energy: %f for neighbourship of digit (x,z): %d, %d", tmpDigit->fX, tmpDigit->fZ, tmpDigit->fEnergy, digit->fX, digit->fZ);
+ // if(tmpDigit->fEnergy > fEmcMinEnergyThreshold)
+ if(tmpDigit->fEnergy > 0.2)
{
- if(AreNeighbours(fStartDigit, fCurrentDigit))
+ //HLTError("Checking digit (x,z): %d, %d, with energy: %f for neighbourship of digit (x,z): %d, %d", tmpDigit->fX, tmpDigit->fZ, tmpDigit->fEnergy, digit->fX, digit->fZ);
+
+ // if(AreNeighbours(fStartDigit, tmpDigit))
+ if(AreNeighbours(digit, tmpDigit))
{
+ // HLTError("Adding digit (x,z): %d, %d, with energy: %f", tmpDigit->fX, tmpDigit->fZ, tmpDigit->fEnergy);
fDigitReader->DropDigit();
- fPreviousDigit->fMemOffsetNext = reinterpret_cast<Long_t>(fCurrentDigit) - reinterpret_cast<Long_t>(fPreviousDigit);
- recPoint->fAmp += fCurrentDigit->fEnergy;
+ fPreviousDigit->fMemOffsetNext = reinterpret_cast<Long_t>(tmpDigit) - reinterpret_cast<Long_t>(fPreviousDigit);
+ // cout << "Digit offset: " << fPreviousDigit->fMemOffsetNext << endl;
+ // fPreviousDigit->fMemOffsetNext += tmpDigit->fMemOffsetNext;
+ recPoint->fAmp += tmpDigit->fEnergy;
+ fPreviousDigit = tmpDigit;
fDigitsInCluster++;
- ScanForNeighbourDigits(recPoint);
+ ScanForNeighbourDigits(recPoint, tmpDigit);
+ fDigitReader->SetCurrentDigit(tmpDigit);
}
}
}
{
Int_t rowdiff = TMath::Abs( digit1->fZ - digit2->fZ );
Int_t coldiff = TMath::Abs( digit1->fX - digit2->fX );
+ // HLTError("coldiff: %d, rowdiff: %d, timediff: %f", coldiff, rowdiff, TMath::Abs(digit1->fTime - digit2->fTime ));
if (( coldiff <= 1 && rowdiff == 0 ) || ( coldiff == 0 && rowdiff <= 1 ))
{
// cout << "Are neighbours: digit (E = " << digit1->fEnergy << ") with x = " << digit1->fX << " and z = " << digit1->fZ <<
// " is neighbour with digit (E = " << digit2->fEnergy << ") with x = " << digit2->fX << " and z = " << digit2->fZ << endl;
- if(TMath::Abs(digit1->fTime - digit2->fTime ) < fEmcTimeGate)
+ // if(TMath::Abs(digit1->fTime - digit2->fTime ) < fEmcTimeGate)
{
return 1;
}
* it is added to the current rec point
* @param recPoint pointer to the current rec point
*/
- virtual Int_t ScanForNeighbourDigits(AliHLTPHOSRecPointDataStruct* recPoint);
+ virtual Int_t ScanForNeighbourDigits(AliHLTPHOSRecPointDataStruct* recPoint, AliHLTPHOSDigitDataStruct *digit);
/**
* Checks if two digits are neighbours
AliHLTPHOSDigitHeaderStruct *digitHeaderPtr = 0;
AliHLTPHOSDigitHeaderStruct *outputDigitHeaderPtr = reinterpret_cast<AliHLTPHOSDigitHeaderStruct*>(outBPtr);
+ // HLTError("Header pointer before screwing around: 0x%x", outputDigitHeaderPtr);
+
AliHLTPHOSDigitDataStruct *firstDigitPtr = 0;
AliHLTPHOSDigitDataStruct *lastDigitPtr = 0;
iter = blocks+ndx;
if (iter->fDataType == AliHLTPHOSDefinitions::fgkDigitDataType)
{
+ // Get the digit header
+ digitHeaderPtr = reinterpret_cast<AliHLTPHOSDigitHeaderStruct*>(iter->fPtr);
+
// Update the number of digits
nDigits += digitHeaderPtr->fNDigits;
// Get the specification
specification = specification|iter->fSpecification;
- // Get the digit header
- digitHeaderPtr = reinterpret_cast<AliHLTPHOSDigitHeaderStruct*>(iter->fPtr);
-
// Check if we have the first buffer in the event
if(!firstDigitPtr)
{
memcpy(outBPtr, iter->fPtr, digitHeaderPtr->fNDigits*sizeof(AliHLTPHOSDigitDataStruct) + sizeof(AliHLTPHOSDigitHeaderStruct));
// Set the pointer to the first digit in the list
- firstDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fFirstDigitOffset);
+ // firstDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fFirstDigitOffset);
+ firstDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + digitHeaderPtr->fFirstDigitOffset);
- lastDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fLastDigitOffset);
+ // lastDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fLastDigitOffset);
+ lastDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + digitHeaderPtr->fLastDigitOffset);
// Update the amount of the output buffer we have used
mysize += digitHeaderPtr->fNDigits*sizeof(AliHLTPHOSDigitDataStruct) + sizeof(AliHLTPHOSDigitHeaderStruct);
}
// If we already have copied the first buffer to the output copy only the digits
- memcpy(outBPtr, reinterpret_cast<const void*>(reinterpret_cast<Long_t>(iter->fPtr)+sizeof(AliHLTPHOSDigitHeaderStruct)), digitHeaderPtr->fNDigits*sizeof(AliHLTPHOSDigitDataStruct));
+ memcpy(outBPtr, reinterpret_cast<const void*>(reinterpret_cast<UChar_t*>(iter->fPtr)+sizeof(AliHLTPHOSDigitHeaderStruct)), digitHeaderPtr->fNDigits*sizeof(AliHLTPHOSDigitDataStruct));
// Check if the first digit in this buffer has a ID less than the first digit in the previous
- if(firstDigitPtr->fID > reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(iter->fPtr) + sizeof(AliHLTPHOSDigitDataStruct) + digitHeaderPtr->fFirstDigitOffset)->fID)
+ // if(firstDigitPtr->fID > reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(iter->fPtr) + sizeof(AliHLTPHOSDigitDataStruct) + digitHeaderPtr->fFirstDigitOffset)->fID)
+ AliHLTPHOSDigitDataStruct *thisFirst =
+ reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(iter->fPtr) + digitHeaderPtr->fFirstDigitOffset);
+ if(firstDigitPtr->fID > thisFirst->fID)
{
// If that is the case we have to take care of the ordering
+ HLTError("Re-ordering digit blocks...");
// The last digit in the current buffer has to link to the first digit in the previous buffer
- lastDigitPtr->fMemOffsetNext = reinterpret_cast<Long_t>(outBPtr) + digitHeaderPtr->fFirstDigitOffset - reinterpret_cast<Long_t>(lastDigitPtr);
+ // AliHLTPHOSDigitDataStruct *thisLast = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fLastDigitOffset);
+ AliHLTPHOSDigitDataStruct *thisLast = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr - sizeof(AliHLTPHOSDigitHeaderStruct) + digitHeaderPtr->fLastDigitOffset);
+ thisLast->fMemOffsetNext = reinterpret_cast<Long_t>(firstDigitPtr) - reinterpret_cast<Long_t>(thisLast);
// Setting the pointer to the new first digit
- firstDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + digitHeaderPtr->fFirstDigitOffset);
+ firstDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(outBPtr + digitHeaderPtr->fFirstDigitOffset - sizeof(AliHLTPHOSDigitHeaderStruct));
}
else
{
// Previous last digit need to link to the current first digit
- lastDigitPtr->fMemOffsetNext = reinterpret_cast<Long_t>(outBPtr) + digitHeaderPtr->fFirstDigitOffset;
+ lastDigitPtr->fMemOffsetNext = reinterpret_cast<Long_t>(lastDigitPtr) - (reinterpret_cast<Long_t>(outBPtr) + digitHeaderPtr->fFirstDigitOffset - sizeof(AliHLTPHOSDigitHeaderStruct));
// We need to change the last digit pointer
- lastDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(outBPtr) + digitHeaderPtr->fLastDigitOffset);
+ lastDigitPtr = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(outBPtr) + digitHeaderPtr->fLastDigitOffset - sizeof(AliHLTPHOSDigitHeaderStruct));
}
// Update the amount of the output buffer we have used
mysize += digitHeaderPtr->fNDigits*sizeof(AliHLTPHOSDigitDataStruct);
}
}
- // The digit header in the output needs to know about the position of the new first digit (the last digit is still the same)
- outputDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(firstDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
+ // The digit header in the output needs to know about the position of the new first digit
+ // outputDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(firstDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
+ outputDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(firstDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr);
- // The digit header in the output needs to know about the position of the new last digit (the first digit is still the same)
- outputDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(lastDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
-
+ // The digit header in the output needs to know about the position of the new last digit
+ // outputDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(lastDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
+ outputDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(lastDigitPtr) - reinterpret_cast<Long_t>(outputDigitHeaderPtr);
+ if(firstDigitPtr)
+ {
+ // HLTError("Header pointer after screwing around: 0x%x", outputDigitHeaderPtr);
+ // HLTError("First/last offset: %d / %d, first digit ID: %d, energy: %f", outputDigitHeaderPtr->fFirstDigitOffset, outputDigitHeaderPtr->fLastDigitOffset, firstDigitPtr->fID, firstDigitPtr->fEnergy);
+ }
HLTDebug("Number of digits: %d", nDigits);
- AliHLTPHOSRecPointHeaderStruct* recPointHeaderPtr = reinterpret_cast<AliHLTPHOSRecPointHeaderStruct*>(outBPtr);
+ if(nDigits > 0)
+ {
- fClusterizerPtr->SetRecPointDataPtr(reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(outBPtr+sizeof(AliHLTPHOSRecPointHeaderStruct)));
+ AliHLTPHOSRecPointHeaderStruct* recPointHeaderPtr = reinterpret_cast<AliHLTPHOSRecPointHeaderStruct*>(outBPtr);
- nRecPoints = fClusterizerPtr->ClusterizeEvent(outputDigitHeaderPtr, availableSize, mysize);
- recPointHeaderPtr->fNRecPoints = nRecPoints;
+ fClusterizerPtr->SetRecPointDataPtr(reinterpret_cast<AliHLTPHOSRecPointDataStruct*>(outBPtr+sizeof(AliHLTPHOSRecPointHeaderStruct)));
- mysize += sizeof(AliHLTPHOSRecPointHeaderStruct);
-
- HLTDebug("Number of clusters: %d", nRecPoints);
+ nRecPoints = fClusterizerPtr->ClusterizeEvent(outputDigitHeaderPtr, availableSize, mysize);
+ recPointHeaderPtr->fNRecPoints = nRecPoints;
+ mysize += sizeof(AliHLTPHOSRecPointHeaderStruct);
+
+ HLTDebug("Number of clusters: %d", nRecPoints);
+ }
AliHLTComponentBlockData clusterBd;
FillBlockData( clusterBd );
clusterBd.fOffset = offset;
const int MAXHOSTS = 20;
const int DEFAULTEVENTPORT = 42001;
const int MAXBINVALUE = 1023;
- const int HIGHGAIN = 1;
- const int LOWGAIN = 0;
+ const int HIGHGAIN = 0;
+ const int LOWGAIN = 1;
const int ALTROMAXSAMPLES = 1008; /**<The maximum number of samples of the ALTRO*/
const int ALTROMAXPRESAMPLES = 15;
struct AliHLTPHOSDigitDataStruct
{
/** The x coordinate */
- Float_t fX;
+ Int_t fX;
/** The z coordinate */
- Float_t fZ;
+ Int_t fZ;
/** The local x coordinate */
Float_t fLocX;
}
}
}
-
+ if(fDigitCount > 1) SortDigits();
return fDigitCount;
}
// See header file for documentation
// Int_t (*funcPtr)(const void*, const void*) = &AliHLTPHOSDigitMaker::CompareDigits;
-
+ // HLTError("fDigitPtrArray[0]: %lu, fDigitHeaderPtr: %lu, sizeof(AliHLTPHOSDigitHeaderStruct): %d", fDigitPtrArray[0], fDigitHeaderPtr, sizeof(AliHLTPHOSDigitHeaderStruct));
+ // HLTError("First digit offset: %d, first digit ptr: %ld, sizeof(AliHLTPHOSDigitDataStruct) = %d", fDigitHeaderPtr->fFirstDigitOffset, fDigitPtrArray[0], sizeof(AliHLTPHOSDigitDataStruct));
qsort(fDigitPtrArray, fDigitCount, sizeof(AliHLTPHOSDigitDataStruct*), CompareDigits);
- fDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[0]) - reinterpret_cast<Long_t>(fDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
+ // HLTError("fDigitPtrArray[0]: %lu, fDigitHeaderPtr: %lu, sizeof(AliHLTPHOSDigitHeaderStruct): %d", fDigitPtrArray[0], fDigitHeaderPtr, sizeof(AliHLTPHOSDigitHeaderStruct));
+ // fDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[0]) - reinterpret_cast<Long_t>(fDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct);
+ fDigitHeaderPtr->fFirstDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[0]) - reinterpret_cast<Long_t>(fDigitHeaderPtr);
+ // HLTError("First digit offset: %d, first digit ptr: %ld, sizeof(AliHLTPHOSDigitDataStruct) = %d", fDigitHeaderPtr->fFirstDigitOffset, fDigitPtrArray[0], sizeof(AliHLTPHOSDigitDataStruct));
for(Int_t i = 0; i < fDigitCount-1; i++)
{
- fDigitPtrArray[0]->fMemOffsetNext = fDigitPtrArray[i+1] - fDigitPtrArray[i];
+ fDigitPtrArray[i]->fMemOffsetNext = reinterpret_cast<Long_t>(fDigitPtrArray[i+1]) - reinterpret_cast<Long_t>(fDigitPtrArray[i]);
+ // HLTError("Adding digit with energy: %f, ID: %d, offset: %d and pointer %lu", fDigitPtrArray[i]->fEnergy, fDigitPtrArray[i]->fID, fDigitPtrArray[i]->fMemOffsetNext, fDigitPtrArray[i]);
}
- fDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[fDigitCount-1]) - (reinterpret_cast<Long_t>(fDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct));
+ // fDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[fDigitCount-1]) - (reinterpret_cast<Long_t>(fDigitHeaderPtr) + sizeof(AliHLTPHOSDigitHeaderStruct));
+ fDigitHeaderPtr->fLastDigitOffset = reinterpret_cast<Long_t>(fDigitPtrArray[fDigitCount-1]) - reinterpret_cast<Long_t>(fDigitHeaderPtr);
+ // HLTError("Last digit offset: %d, last digit ptr: %ld", fDigitHeaderPtr->fLastDigitOffset, fDigitPtrArray[fDigitCount-1]);
fDigitPtrArray[fDigitCount-1]->fMemOffsetNext = 0;
+ // HLTError("Number of digits: %d", fDigitCount);
+ fDigitHeaderPtr->fNDigits = fDigitCount;
+
}
Int_t
*/
bool AddDigit(AliHLTPHOSChannelDataStruct* channelData, UShort_t* channelCoordinates, Float_t* localCoordinates)
{
+ // HLTError("Available size: %d", fAvailableSize);
+
if(fAvailableSize < sizeof(AliHLTPHOSDigitDataStruct))
{
- HLTError("Output buffer is full, stopping digit making");
+ HLTError("Output buffer is full, stopping digit making.");
return false;
}
+
+
fAvailableSize -= sizeof(AliHLTPHOSDigitDataStruct);
fDigitStructPtr->fX = channelCoordinates[0];
if(channelCoordinates[2] == HIGHGAIN)
{
fDigitStructPtr->fEnergy = channelData->fEnergy*fHighGainFactors[channelCoordinates[0]][channelCoordinates[1]];
- // HLTDebug("HG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f \n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy);
+ // HLTError("HG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f \n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy);
}
else
{
fDigitStructPtr->fEnergy = channelData->fEnergy*fLowGainFactors[channelCoordinates[0]][channelCoordinates[1]];
- // HLTDebug("LG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f\n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy);
+ // HLTError("LG channel (x = %d, z = %d) with amplitude: %f --> Digit with energy: %f\n", channelCoordinates[0], channelCoordinates[1], channelData->fEnergy, fDigitStructPtr->fEnergy);
}
fDigitStructPtr->fTime = channelData->fTime * 0.0000001; //TODO
fDigitStructPtr->fCrazyness = channelData->fCrazyness;
mysize += digitCount*sizeof(AliHLTPHOSDigitDataStruct);
- // HLTDebug("# of digits: %d, used memory size: %d, available size: %d", digitCount, mysize, size);
+ HLTDebug("# of digits: %d, used memory size: %d, available size: %d", digitCount, mysize, size);
if(mysize > 0)
{
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
+#include "AliHLTLogging.h"
#include "AliHLTPHOSDigitReader.h"
#include "AliHLTPHOSDigitDataStruct.h"
fPrevDigit = fCurrentDigit;
fCurrentDigit = fNextDigit;
+ if(fCurrentDigit == 0) return 0;
+
if(fCurrentDigit->fMemOffsetNext != 0)
{
- fNextDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fCurrentDigit) + fCurrentDigit->fMemOffsetNext);
+ fNextDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(fCurrentDigit) + fCurrentDigit->fMemOffsetNext);
}
else
{
fNextDigit = 0;
}
-
+ // cout << "Digit is (x, z): " << fCurrentDigit->fX << ", " << fCurrentDigit->fZ << endl;
return fCurrentDigit;
}
{
if(fCurrentDigit == fFirstDigit)
{
- fFirstDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fFirstDigit) + fFirstDigit->fMemOffsetNext);
+ fFirstDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(fFirstDigit) + fFirstDigit->fMemOffsetNext);
fDigitHeader->fFirstDigitOffset += fCurrentDigit->fMemOffsetNext;
+ // HLTError("Dropping digit (x,z): %d, %d was first in list", fCurrentDigit->fX, fCurrentDigit->fZ);
}
else if(fCurrentDigit != 0)
{
fPrevDigit->fMemOffsetNext = fPrevDigit->fMemOffsetNext + fCurrentDigit->fMemOffsetNext;
+ // HLTError("Dropping digit (x,z): %d, %d, first digit is (x,z): %d, %d", fCurrentDigit->fX, fCurrentDigit->fZ, fFirstDigit->fX, fFirstDigit->fZ);
}
fCurrentDigit = fPrevDigit;
}
// or
// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-
+#include "AliHLTLogging.h"
#include "AliHLTPHOSDigitDataStruct.h"
/**
* the list of digits following the header
* @ingroup alihlt_phos
*/
-class AliHLTPHOSDigitReader
+class AliHLTPHOSDigitReader : public AliHLTLogging
{
public:
fDigitHeader = digitHeader;
if(fDigitHeader->fNDigits != 0)
{
- fFirstDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fDigitHeader) + sizeof(AliHLTPHOSDigitHeaderStruct) + fDigitHeader->fFirstDigitOffset);
+ fFirstDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<Long_t>(fDigitHeader) + fDigitHeader->fFirstDigitOffset);
}
else
{
fNextDigit = fFirstDigit;
}
- void SetCurrentDigit(AliHLTPHOSDigitDataStruct *currentDigit) { fCurrentDigit = currentDigit; }
+ void SetCurrentDigit(AliHLTPHOSDigitDataStruct *currentDigit)
+ {
+ fCurrentDigit = currentDigit;
+ // fNextDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(fCurrentDigit) + fCurrentDigit->fMemOffsetNext);
+ }
+ void SetNextDigit(AliHLTPHOSDigitDataStruct *nextDigit)
+ {
+ fNextDigit = nextDigit;
+ // fNextDigit = reinterpret_cast<AliHLTPHOSDigitDataStruct*>(reinterpret_cast<UChar_t*>(fCurrentDigit) + fCurrentDigit->fMemOffsetNext);
+ }
AliHLTPHOSDigitDataStruct* NextDigit();
void DropDigit();
- void Rewind() { fCurrentDigit = fFirstDigit; }
+ void Rewind()
+ {
+ fNextDigit = fFirstDigit;
+ fPrevDigit = 0;
+ }
+
+ // Int_t GetCurrentDigitOffset() { return reinterpret_cast<Long_t>(fCurrentDigit) - reinterpret_cast<Long_t>(fDigitHeader) + sizeof(AliHLTPHOSDigitHeaderStruct); }
+
+ Int_t GetCurrentDigitOffset() { return reinterpret_cast<Long_t>(fCurrentDigit) - reinterpret_cast<Long_t>(fDigitHeader); }
- Int_t GetCurrentDigitOffset() { return reinterpret_cast<Long_t>(fCurrentDigit) - reinterpret_cast<Long_t>(fDigitHeader) + sizeof(AliHLTPHOSDigitHeaderStruct); }
private:
/** Pointer to the digit header */
// Then comes the channel data
AliHLTPHOSChannelDataStruct *channelDataPtr = reinterpret_cast<AliHLTPHOSChannelDataStruct*>(outputPtr+sizeof(AliHLTPHOSChannelDataHeaderStruct));
+
//Adding to the total size of data written
totSize += sizeof( AliHLTPHOSChannelDataHeaderStruct );
+
fRawReaderMemoryPtr->SetMemory(reinterpret_cast<UChar_t*>(iter->fPtr), static_cast<ULong_t>(iter->fSize));
fRawReaderMemoryPtr->SetEquipmentID(fMapperPtr->GetDDLFromSpec(iter->fSpecification) + 1792);
fRawReaderMemoryPtr->Reset();
// {
// fRawDataWriter->NewEvent( );
// }
+
if(fAltroRawStreamPtr != NULL)
{
delete fAltroRawStreamPtr;
fAltroRawStreamPtr=NULL;
}
+
+ fAltroRawStreamPtr = new AliAltroRawStreamV3(fRawReaderMemoryPtr);
// fAltroRawStreamPtr = new AliCaloRawStreamV3(fRawReaderMemoryPtr, TString("PHOS"));
- fAltroRawStreamPtr = new AliAltroRawStreamV3(fRawReaderMemoryPtr);
if(fAltroRawStreamPtr->NextDDL())
{
// }
while( fAltroRawStreamPtr->NextBunch() == true )
{
- nSamples = fAltroRawStreamPtr->GetBunchLength();
-
+
// if( fDoPushRawData == true)
// {
// fRawDataWriter->WriteBunchData( fAltroRawStreamPtr->GetSignals(), nSamples, fAltroRawStreamPtr->GetEndTimeBin() );
// }
+
firstBunchPtr = const_cast< UShort_t* >( fAltroRawStreamPtr->GetSignals() );
+
+ nSamples = fAltroRawStreamPtr->GetBunchLength();
+
}
if(firstBunchPtr)
{
-// $Id: AliHLTPHOSOnlineDisplayTH2D.cxx 31490 2009-03-15 16:27:11Z odjuvsla $
+// $Id$
/**************************************************************************
* This file is property of and copyright by the Experimental Nuclear *
-// $Id:$
+// $Id$
//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project *
-// $Id:$
+// $Id$
//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project *
AliHLTGlobalAgent.h \
AliHLTGlobalVertexerComponent.h \
AliHLTGlobalTrackMatcher.h \
- physics/AliHLTV0HistoComponent.h
+ physics/AliHLTV0HistoComponent.h
+# physics/AliHLTPHOSHistoProdInvMass.h \
+# physics/AliHLTPHOSHistoProdMatchedTracks.h \
+# physics/AliHLTPHOSHistoProdClusterEnergy.h \
+# physics/AliHLTPHOSHistoProdCellEnergy.h
+
+# physics/AliHLTPHOSHistogramProducerComponent.h \
+#physics/AliHLTPHOSHistogramProducerComponent.h
#
MODULE_SRCS= $(CLASS_HDRS:.h=.cxx)
AliHLTPHOSRcuDAComponent.h \
AliHLTPHOSUtilities.h \
AliHLTPHOSHistogramProducer.h \
- AliHLTPHOSHistogramProducerComponent.h \
AliHLTPHOSMonitorTriggerComponent.h \
AliHLTPHOSESDEntriesMakerComponent.h \
AliHLTPHOSESDCaloClusterWriterComponent.h \
- AliHLTPHOSHistoProdInvMass.h \
- AliHLTPHOSHistoProdMatchedTracks.h \
- AliHLTPHOSHistoProdClusterEnergy.h \
- AliHLTPHOSHistoProdCellEnergy.h \
- AliHLTPHOSPhysicsHistogramProducer.h \
AliHLTPHOSFourier.h \
AliHLTPHOSDigitReader.h