#include "AliEveTPCSectorData.h"
#include <AliTPCParamSR.h>
-#include <string.h>
+#include <set>
+
+//==============================================================================
+//==============================================================================
+// AliEveTPCSectorData
+//==============================================================================
//______________________________________________________________________________
//
fgNAllPads = 0;
fgRowBegs = new Int_t[fgNAllRows + 1];
- Int_t row = 0;
- for (Int_t i=0; i<fgParam->GetNRowLow(); ++i, ++row) {
- fgRowBegs[row] = fgNAllPads;
- fgNAllPads += fgParam->GetNPadsLow(i);
- }
- for (Int_t i=0; i<fgParam->GetNRowUp(); ++i, ++row) {
- fgRowBegs[row] = fgNAllPads;
- fgNAllPads += fgParam->GetNPadsUp(i);
+ {
+ Int_t row = 0;
+ for (Int_t i=0; i<fgParam->GetNRowLow(); ++i, ++row)
+ {
+ fgRowBegs[row] = fgNAllPads;
+ fgNAllPads += fgParam->GetNPadsLow(i);
+ }
+ for (Int_t i=0; i<fgParam->GetNRowUp(); ++i, ++row)
+ {
+ fgRowBegs[row] = fgNAllPads;
+ fgNAllPads += fgParam->GetNPadsUp(i);
+ }
+ fgRowBegs[fgNAllRows] = fgNAllPads;
}
- fgRowBegs[fgNAllRows] = fgNAllPads;
-
// Fill SegmentInfos, used by rendering classes.
fgOut2Seg.fNMaxPads = fgParam->GetNPadsUp(fgParam->GetNRowUp() - 1);
fgSegInfoPtrs[2] = &fgOut2Seg;
- // Set stepsize array
- Int_t k, npads;
- // Inn
- k=0, npads = fgParam->GetNPadsLow(0);
- for (int row = 0; row < fgInnSeg.fNRows; ++row) {
- if (fgParam->GetNPadsLow(row) > npads) {
- npads = fgParam->GetNPadsLow(row);
- fgInnSeg.fYStep[k] = row*fgInnSeg.fPadHeight + fgInnSeg.fRLow;
- k++;
+ // Set stepsize arrays
+
+ { // Inner
+ Int_t k=0, npads = fgParam->GetNPadsLow(0);
+ for (Int_t row = 0; row < fgInnSeg.fNRows; ++row)
+ {
+ if (fgParam->GetNPadsLow(row) > npads)
+ {
+ npads = fgParam->GetNPadsLow(row);
+ fgInnSeg.fYStep[k] = row*fgInnSeg.fPadHeight + fgInnSeg.fRLow;
+ k++;
+ }
}
+ fgInnSeg.fNYSteps = k;
}
- fgInnSeg.fNYSteps = k;
- // Out1 seg
- k=0; npads = fgParam->GetNPadsUp(0);
- for (int row = 0; row < fgOut1Seg.fNRows; ++row) {
- if (fgParam->GetNPadsUp(row) > npads) {
- npads = fgParam->GetNPadsUp(row);
- fgOut1Seg.fYStep[k] = row*fgOut1Seg.fPadHeight + fgOut1Seg.fRLow ;
- k++;
+
+ { // Outer 1 seg
+ Int_t k=0, npads = fgParam->GetNPadsUp(0);
+ for (Int_t row = 0; row < fgOut1Seg.fNRows; ++row)
+ {
+ if (fgParam->GetNPadsUp(row) > npads)
+ {
+ npads = fgParam->GetNPadsUp(row);
+ fgOut1Seg.fYStep[k] = row*fgOut1Seg.fPadHeight + fgOut1Seg.fRLow ;
+ k++;
+ }
}
+ fgOut1Seg.fNYSteps = k;
}
- fgOut1Seg.fNYSteps = k;
- // Out2 seg
- k=0; npads = fgParam->GetNPadsUp(fgOut1Seg.fNRows);
- for (int row = fgOut1Seg.fNRows; row < fgParam->GetNRowUp() ;row++ ) {
- if (fgParam->GetNPadsUp(row) > npads) {
- npads = fgParam->GetNPadsUp(row);
- fgOut2Seg.fYStep[k] = (row - fgOut1Seg.fNRows)*fgOut2Seg.fPadHeight + fgOut2Seg.fRLow ;
- k++;
+
+ { // Outer 2 seg
+ Int_t k=0, npads = fgParam->GetNPadsUp(fgOut1Seg.fNRows);
+ for (Int_t row = fgOut1Seg.fNRows; row < fgParam->GetNRowUp(); ++row)
+ {
+ if (fgParam->GetNPadsUp(row) > npads)
+ {
+ npads = fgParam->GetNPadsUp(row);
+ fgOut2Seg.fYStep[k] = (row - fgOut1Seg.fNRows)*fgOut2Seg.fPadHeight + fgOut2Seg.fRLow ;
+ k++;
+ }
}
+ fgOut2Seg.fNYSteps = k;
}
- fgOut2Seg.fNYSteps = k;
}
Int_t AliEveTPCSectorData::GetNPadsInRow(Int_t row)
{
// Return number of pads in given row.
- if(row < 0 || row >= fgNAllRows) return 0;
+ if (row < 0 || row >= fgNAllRows) return 0;
return fgRowBegs[row + 1] - fgRowBegs[row];
}
static const SegmentInfo null;
- if(seg < 0 || seg > 2)
+ if (seg < 0 || seg > 2)
return null;
else
return *fgSegInfoPtrs[seg];
{
// Create new data-block. Position is set to the beginning.
- fBlocks.push_back(new Short_t[fBlockSize]);
+ fBlocks.push_back(new Short_t[fkBlockSize]);
fBlockPos = 0;
}
/******************************************************************************/
AliEveTPCSectorData::AliEveTPCSectorData(Int_t sector, Int_t bsize) :
- fSectorID(sector), fNPadsFilled(0), fPads(),
- fBlockSize(bsize), fBlockPos(0), fBlocks(),
- fCurrentRow(0), fCurrentPad(0), fCurrentPos(0), fCurrentStep(0),
- fPadRowHackSet(0)
+ fSectorID(sector), fNPadsFilled(0), fPads(),
+ fkBlockSize(bsize), fBlockPos(0), fBlocks(),
+ fCurrentRow(0), fCurrentPad(0), fCurrentPos(0), fCurrentStep(0)
{
// Constructor.
- if(fgParam == 0) InitStatics();
+ if (fgParam == 0) InitStatics();
fPads.assign(fgNAllPads, PadData());
fBlocks.reserve(16);
- fBlockPos = fBlockSize; // Enforce creation of a new block.
+ fBlockPos = fkBlockSize; // Enforce creation of a new block.
}
{
// Destructor.
- for(std::vector<Short_t*>::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b)
+ for (std::vector<Short_t*>::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b)
delete [] *b;
- DeletePadRowHack();
}
void AliEveTPCSectorData::DropData()
// Drop data, deallocate data-blocks.
fPads.assign(fgNAllPads, PadData());
- for(std::vector<Short_t*>::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b)
+ for (std::vector<Short_t*>::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b)
delete [] *b;
fBlocks.clear();
- fBlockPos = fBlockSize; // Enforce creation of a new block.
+ fBlockPos = fkBlockSize; // Enforce creation of a new block.
}
/******************************************************************************/
// Print summary information.
printf("AliEveTPCSectorData sector=%d, NPadsFilled=%d, NBlocks=%d, BlockPos=%d\n",
- fSectorID, fNPadsFilled, fBlocks.size(), fBlockPos);
+ fSectorID, fNPadsFilled, (Int_t) fBlocks.size(), fBlockPos);
}
/******************************************************************************/
fCurrentRow = row;
fCurrentPad = pad;
- if(reverseTime) {
+ if (reverseTime) {
fCurrentPos = 2046;
fCurrentStep = -2;
} else {
Short_t array[1024];
Short_t* val;
val = beg + 1;
- while(val <= end) {
+ while (val <= end) {
array[(val-beg)/2] = *val;
val += 2;
}
Short_t t = spos[0];
while (true) {
rpos += 2;
- if(rpos >= end || *rpos > t + 1 || t == 0)
+ if (rpos >= end || *rpos > t + 1 || t == 0)
break;
++t;
}
// Copy buffer to storage, set PadData
if (wpos > beg) {
Short_t len = wpos - beg;
- if (len > fBlockSize - fBlockPos)
+ if (len > fkBlockSize - fBlockPos)
NewBlock();
Short_t *dest = fBlocks.back() + fBlockPos;
memcpy(dest, beg, len*sizeof(Short_t));
/******************************************************************************/
-const AliEveTPCSectorData::PadData& AliEveTPCSectorData::GetPadData(Int_t padAddr)
+const AliEveTPCSectorData::PadData& AliEveTPCSectorData::GetPadData(Int_t padAddr) const
{
// Get pad-data reference by absolute index.
- static const PadData null;
+ static const PadData kNull;
- if(padAddr < 0 || padAddr >= fgNAllPads) return null;
+ if (padAddr < 0 || padAddr >= fgNAllPads) return kNull;
return fPads[padAddr];
}
-const AliEveTPCSectorData::PadData& AliEveTPCSectorData::GetPadData(Int_t row, Int_t pad)
+const AliEveTPCSectorData::PadData& AliEveTPCSectorData::GetPadData(Int_t row, Int_t pad) const
{
// Get pad-data reference by row and pad number.
- static const PadData null;
+ static const PadData kNull;
Int_t np = GetNPadsInRow(row);
- if(np == 0 || pad < 0 || pad >= np) return null;
+ if (np == 0 || pad < 0 || pad >= np) return kNull;
return GetPadData(fgRowBegs[row] + pad);
}
// Get row iterator.
Short_t npads = GetNPadsInRow(row);
- if(npads > 0)
+ if (npads > 0)
return RowIterator(&fPads[fgRowBegs[row]], npads, thr);
else
return RowIterator(0, 0);
// Print summary information.
printf("addr=%p, len=%hd>\n", (void*)fData, fLength);
- for(Int_t i=0; i<fLength; ++i)
+ for (Int_t i=0; i<fLength; ++i)
printf(" %3d %hd\n", i, fData[i]);
}
void AliEveTPCSectorData::PadIterator::Test()
{
- while(Next())
+ while (Next())
printf(" %3d %d\n", fTime, fSignal);
}
{
// Constructor.
- memset(fYStep, sizeof(fYStep), 0);
-}
-
-/******************************************************************************/
-// AliEveTPCSectorData::PadRowHack
-/******************************************************************************/
-
-AliEveTPCSectorData::PadRowHack* AliEveTPCSectorData::GetPadRowHack(Int_t r, Int_t p)
-{
- // Get PadRowHack applicable to given row and pad.
-
- if (fPadRowHackSet == 0) return 0;
- std::set<PadRowHack>* hs = static_cast<std::set<PadRowHack>*>(fPadRowHackSet);
- std::set<PadRowHack>::iterator i = hs->find(PadRowHack(r,p));
- return (i == hs->end()) ? 0 : const_cast<PadRowHack*>(&*i);
-}
-
-void AliEveTPCSectorData::AddPadRowHack(Int_t r, Int_t p, Int_t te, Float_t tf)
-{
- // Register PadRowHack for given row and pad.
-
- if (fPadRowHackSet == 0) fPadRowHackSet = new std::set<PadRowHack>;
-
- PadRowHack* prh = GetPadRowHack(r, p);
- if (prh == 0) {
- std::set<PadRowHack>* hs = static_cast<std::set<PadRowHack>*>(fPadRowHackSet);
- hs->insert(PadRowHack(r, p, te, tf));
- } else {
- prh->fThrExt += te;
- prh->fThrFac *= tf;
- }
-}
-
-void AliEveTPCSectorData::RemovePadRowHack(Int_t r, Int_t p)
-{
- // Remove PadRowHack for given row and pad.
-
- if (fPadRowHackSet == 0) return;
- std::set<PadRowHack>*hs = static_cast<std::set<PadRowHack>*>(fPadRowHackSet);
- std::set<PadRowHack>::iterator i = hs->find(PadRowHack(r,p));
- if(i != hs->end()) hs->erase(i);
-}
-
-void AliEveTPCSectorData::DeletePadRowHack()
-{
- // Delete all PadRowHacks and their container.
-
- if (fPadRowHackSet != 0) {
- std::set<PadRowHack>*hs = static_cast<std::set<PadRowHack>*>(fPadRowHackSet);
- delete hs;
- fPadRowHackSet = 0;
- }
+ memset(fYStep, 0, sizeof(fYStep));
}