]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveDet/AliEveTPCSectorData.cxx
extending unit test for AliHLTComponent by a sample event processing sequence
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTPCSectorData.cxx
index 58c4ec44536e2dacd518c9848ff8ef485c27d716..771932cbc9517f3c4e3027a858c77fe59135bf7e 100644 (file)
 #include "AliEveTPCSectorData.h"
 #include <AliTPCParamSR.h>
 
-#include <string.h>
+#include <set>
+
+//==============================================================================
+//==============================================================================
+// AliEveTPCSectorData
+//==============================================================================
 
 //______________________________________________________________________________
 //
@@ -54,17 +59,20 @@ void AliEveTPCSectorData::InitStatics()
   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.
 
@@ -96,45 +104,56 @@ void AliEveTPCSectorData::InitStatics()
   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];
 }
 
@@ -145,7 +164,7 @@ const AliEveTPCSectorData::SegmentInfo& AliEveTPCSectorData::GetSeg(Int_t seg)
 
   static const SegmentInfo null;
 
-  if(seg < 0 || seg > 2)
+  if (seg < 0 || seg > 2)
     return null;
   else
     return *fgSegInfoPtrs[seg];
@@ -159,25 +178,24 @@ void AliEveTPCSectorData::NewBlock()
 {
   // 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.
 }
 
 
@@ -185,9 +203,8 @@ AliEveTPCSectorData::~AliEveTPCSectorData()
 {
   // 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()
@@ -195,10 +212,10 @@ 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.
 }
 
 /******************************************************************************/
@@ -208,7 +225,7 @@ void AliEveTPCSectorData::Print(Option_t* /*opt*/) const
   // 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);
 }
 
 /******************************************************************************/
@@ -219,7 +236,7 @@ void AliEveTPCSectorData::BeginPad(Int_t row, Int_t pad, Bool_t reverseTime)
 
   fCurrentRow = row;
   fCurrentPad = pad;
-  if(reverseTime) {
+  if (reverseTime) {
     fCurrentPos  = 2046;
     fCurrentStep = -2;
   } else {
@@ -255,7 +272,7 @@ void AliEveTPCSectorData::EndPad(Bool_t autoPedestal, Short_t threshold)
     Short_t array[1024];
     Short_t* val;
     val = beg + 1;
-    while(val <= end) {
+    while (val <= end) {
       array[(val-beg)/2] = *val;
       val += 2;
     }
@@ -287,7 +304,7 @@ void AliEveTPCSectorData::EndPad(Bool_t autoPedestal, Short_t threshold)
     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;
     }
@@ -311,7 +328,7 @@ void AliEveTPCSectorData::EndPad(Bool_t autoPedestal, Short_t threshold)
   // 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));
@@ -326,24 +343,24 @@ void AliEveTPCSectorData::EndPad(Bool_t autoPedestal, Short_t threshold)
 
 /******************************************************************************/
 
-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);
 }
 
@@ -366,7 +383,7 @@ AliEveTPCSectorData::RowIterator AliEveTPCSectorData::MakeRowIterator(Int_t row,
   // 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);
@@ -381,7 +398,7 @@ void AliEveTPCSectorData::PadData::Print(Option_t* /*opt*/)
   // 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]);
 }
 
@@ -438,7 +455,7 @@ void AliEveTPCSectorData::PadIterator::Reset(const PadData& pd)
 
 void AliEveTPCSectorData::PadIterator::Test()
 {
-  while(Next())
+  while (Next())
     printf("  %3d %d\n", fTime, fSignal);
 }
 
@@ -495,56 +512,5 @@ AliEveTPCSectorData::SegmentInfo::SegmentInfo() :
 {
   // 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));
 }