void SetNdet(Int_t ndet) {fNdet=ndet;};
Int_t GetNdet() const {return fNdet;};
void SetDataByAdcCol(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value)
- {fADC[(nrow*fNumberOfChannels+ncol)*fNtime+ntime]=value-fBaseline;};
+ {fADC[(nrow*fNumberOfChannels+ncol)*fNtime+ntime]=value;}
Bool_t HasData() const {return fNtime ? 1 : 0;};
Short_t GetDataByAdcCol(Int_t nrow, Int_t ncol, Int_t ntime) const
{return fADC[(nrow*fNumberOfChannels+ncol)*fNtime+ntime];};
void DeleteNegatives();
void Reset();
void ConditionalReset(AliTRDSignalIndex* idx);
- Short_t GetData(Int_t nrow, Int_t ncol, Int_t ntime) const;
- void SetData(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value);
+ inline Short_t* GetDataAddress(Int_t nrow, Int_t ncol, Int_t ntime = 0) const;
+ inline Short_t GetData(Int_t nrow, Int_t ncol, Int_t ntime) const;
+ inline void SetData(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value);
static void CreateLut();
- void SetBaseline(Short_t baseline) {fBaseline=baseline;}
protected:
Int_t fNumberOfChannels; // Number of MCM channels per row
Int_t fNtime; //Number of time bins
Int_t fNAdim; //Dimension of the ADC array
- Short_t fBaseline;
Short_t* fADC; //[fNAdim] //Pointer to adc values
static Short_t *fgLutPadNumbering; // [fNcol] Look Up Table
};
-inline void AliTRDarrayADC::GetData(Int_t r, Int_t c, Int_t t, Int_t n, Short_t *vals) const
+//________________________________________________________________________________
+Short_t* AliTRDarrayADC::GetDataAddress(Int_t nrow, Int_t ncol, Int_t ntime) const
+{
+ //
+ // Get the address of the given pad
+ //
+
+ Int_t corrcolumn = fgLutPadNumbering[ncol];
+
+ return &fADC[(nrow*fNumberOfChannels+corrcolumn)*fNtime+ntime];
+
+}
+//________________________________________________________________________________
+Short_t AliTRDarrayADC::GetData(Int_t nrow, Int_t ncol, Int_t ntime) const
+{
+ //
+ // Get the data using the pad numbering.
+ // To access data using the mcm scheme use instead
+ // the method GetDataByAdcCol
+ //
+
+ Int_t corrcolumn = fgLutPadNumbering[ncol];
+
+ return fADC[(nrow*fNumberOfChannels+corrcolumn)*fNtime+ntime];
+
+}
+//________________________________________________________________________________
+void AliTRDarrayADC::SetData(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value)
+{
+ //
+ // Set the data using the pad numbering.
+ // To write data using the mcm scheme use instead
+ // the method SetDataByAdcCol
+ //
+
+ Int_t colnumb = fgLutPadNumbering[ncol];
+
+ fADC[(nrow*fNumberOfChannels+colnumb)*fNtime+ntime] = value;
+
+}
+
+void AliTRDarrayADC::GetData(Int_t r, Int_t c, Int_t t, Int_t n, Short_t *vals) const
{
Int_t colNum = fgLutPadNumbering[c];
for(Int_t ic=n, idx = (r*fNumberOfChannels+colNum)*fNtime+t; ic--; idx+=fNtime) vals[ic] = fADC[idx];