class TPCSectorData : public TObject
{
+ TPCSectorData(const TPCSectorData&); // Not implemented
+ TPCSectorData& operator=(const TPCSectorData&); // Not implemented
+
public:
class PadData
public:
PadData(Short_t* d=0, Short_t l=0) : fData(d), fLength(l) {}
+ PadData(const PadData& p) : fData(p.fData), fLength(p.fLength) {}
+ PadData& operator=(const PadData& p)
+ { fData = p.fData; fLength = p.fLength; return *this; }
+
Short_t* Data() const { return fData; }
Short_t Length() const { return fLength; }
fBeg(pd.Data()), fEnd(pd.Data() + pd.Length()), fPos(pd.Data()),
fTime(-1), fSignal(-1), fThreshold(thr), fNChunk(0)
{}
+ PadIterator(const PadIterator& i) :
+ fBeg(i.fBeg), fEnd(i.fEnd), fPos(i.fPos),
+ fTime(i.fTime), fSignal(i.fSignal), fThreshold(i.fThreshold), fNChunk(i.fNChunk)
+ {}
+ virtual ~PadIterator() {}
+
+ PadIterator& operator=(const PadIterator& i) {
+ fBeg = i.fBeg; fEnd = i.fEnd; fPos = i.fPos;
+ fTime = i.fTime; fSignal = i.fSignal; fThreshold = i.fThreshold; fNChunk = i.fNChunk;
+ return *this;
+ }
Bool_t Next();
void Reset();
fPadArray(first), fNPads(npads),
fPad(-1)
{}
+ RowIterator(const RowIterator& i) :
+ PadIterator(i),
+ fPadArray(i.fPadArray), fNPads(i.fNPads), fPad(i.fPad)
+ {}
+
+ RowIterator& operator=(const RowIterator& i) {
+ fPadArray = i.fPadArray; fNPads = i.fNPads; fPad = i.fPad;
+ return *this;
+ }
Bool_t NextPad();
void ResetRow();
private:
static AliTPCParam *fgParam;
+ static Float_t fgZLength;
static Int_t fgNAllRows;
static Int_t fgNAllPads;
static Int_t *fgRowBegs;
// --- Static functions
static const AliTPCParam& GetParam() { return *fgParam; }
- static Int_t GetNAllRows() { return fgNAllRows; }
- static Int_t GetNAllPads() { return fgNAllPads; }
+ static Float_t GetZLength() { return fgZLength; }
+ static Int_t GetNAllRows() { return fgNAllRows; }
+ static Int_t GetNAllPads() { return fgNAllPads; }
static Int_t GetNPadsInRow(Int_t row);
static void InitStatics();
+
+ //----------------------------------------------------------------
+ // Hack for noisy pad-row removal
+ //----------------------------------------------------------------
+
+ class PadRowHack
+ {
+ public:
+ Int_t fRow, fPad;
+ Int_t fThrExt;
+ Float_t fThrFac; // Actual threshold = fThrExt + fThrFac*thr
+
+ PadRowHack(Int_t r, Int_t p, Int_t te=0, Float_t tf=1) :
+ fRow(r), fPad(p), fThrExt(te), fThrFac(tf) {}
+ bool operator<(const PadRowHack& a) const
+ { return (fRow == a.fRow) ? fPad < a.fPad : fRow < a.fRow; }
+ };
+
+ PadRowHack* GetPadRowHack(Int_t r, Int_t p);
+ void AddPadRowHack(Int_t r, Int_t p, Int_t te=0, Float_t tf=1);
+ void RemovePadRowHack(Int_t r, Int_t p);
+ void DeletePadRowHack();
+
+protected:
+ void* fPadRowHackSet;
+
+
ClassDef(TPCSectorData, 0);
}; // endclass TPCSectorData