X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVE%2FEveDet%2FAliEveTPCSectorData.cxx;h=771932cbc9517f3c4e3027a858c77fe59135bf7e;hb=40c1d55399aec25eeb2b4ddb8b597c2ee9001a02;hp=58c4ec44536e2dacd518c9848ff8ef485c27d716;hpb=a97abca8c112f895e1a70b1612803e3fe8cac9ac;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVE/EveDet/AliEveTPCSectorData.cxx b/EVE/EveDet/AliEveTPCSectorData.cxx index 58c4ec44536..771932cbc95 100644 --- a/EVE/EveDet/AliEveTPCSectorData.cxx +++ b/EVE/EveDet/AliEveTPCSectorData.cxx @@ -10,7 +10,12 @@ #include "AliEveTPCSectorData.h" #include -#include +#include + +//============================================================================== +//============================================================================== +// 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; iGetNRowLow(); ++i, ++row) { - fgRowBegs[row] = fgNAllPads; - fgNAllPads += fgParam->GetNPadsLow(i); - } - for (Int_t i=0; iGetNRowUp(); ++i, ++row) { - fgRowBegs[row] = fgNAllPads; - fgNAllPads += fgParam->GetNPadsUp(i); + { + Int_t row = 0; + for (Int_t i=0; iGetNRowLow(); ++i, ++row) + { + fgRowBegs[row] = fgNAllPads; + fgNAllPads += fgParam->GetNPadsLow(i); + } + for (Int_t i=0; iGetNRowUp(); ++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::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b) + for (std::vector::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::iterator b=fBlocks.begin(); b!=fBlocks.end(); ++b) + for (std::vector::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* hs = static_cast*>(fPadRowHackSet); - std::set::iterator i = hs->find(PadRowHack(r,p)); - return (i == hs->end()) ? 0 : const_cast(&*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* prh = GetPadRowHack(r, p); - if (prh == 0) { - std::set* hs = static_cast*>(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*hs = static_cast*>(fPadRowHackSet); - std::set::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*hs = static_cast*>(fPadRowHackSet); - delete hs; - fPadRowHackSet = 0; - } + memset(fYStep, 0, sizeof(fYStep)); }