#include "AliTRDarrayDictionary.h"
#include "AliTRDtrackletMCM.h"
#include "AliTRDmcmSim.h"
+#include "TTreeStream.h"
ClassImp(AliTRDmcmSim)
const Int_t AliTRDmcmSim::fgkFormatIndex = std::ios_base::xalloc();
-const Int_t AliTRDmcmSim::fgkNADC = AliTRDfeeParam::GetNadcMcm();
const UShort_t AliTRDmcmSim::fgkFPshifts[4] = {11, 14, 17, 21};
fTailAmplLong(NULL),
fTailAmplShort(NULL),
fNHits(0),
- fFitReg(NULL)
+ fFitReg(NULL),
+ fDebugStream(0x0)
{
//
// AliTRDmcmSim default constructor
//
if(fInitialized) {
- for( Int_t iAdc = 0 ; iAdc < fgkNADC; iAdc++ ) {
+ for( Int_t iAdc = 0 ; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++ ) {
delete [] fADCR[iAdc];
delete [] fADCF[iAdc];
}
fRow = fFeeParam->GetPadRowFromMCM( fRobPos, fMcmPos );
if (!fInitialized) {
- fADCR = new Int_t *[fgkNADC];
- fADCF = new Int_t *[fgkNADC];
- fZSMap = new Int_t [fgkNADC];
- fGainCounterA = new UInt_t[fgkNADC];
- fGainCounterB = new UInt_t[fgkNADC];
+ fADCR = new Int_t *[AliTRDfeeParam::GetNadcMcm()];
+ fADCF = new Int_t *[AliTRDfeeParam::GetNadcMcm()];
+ fZSMap = new Int_t [AliTRDfeeParam::GetNadcMcm()];
+ fGainCounterA = new UInt_t[AliTRDfeeParam::GetNadcMcm()];
+ fGainCounterB = new UInt_t[AliTRDfeeParam::GetNadcMcm()];
fNTimeBin = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kC13CPUA, fDetector, fRobPos, fMcmPos);
- for( Int_t iAdc = 0 ; iAdc < fgkNADC; iAdc++ ) {
+ for( Int_t iAdc = 0 ; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++ ) {
fADCR[iAdc] = new Int_t[fNTimeBin];
fADCF[iAdc] = new Int_t[fNTimeBin];
}
// filter registers
- fPedAcc = new UInt_t[fgkNADC]; // accumulator for pedestal filter
- fTailAmplLong = new UShort_t[fgkNADC];
- fTailAmplShort = new UShort_t[fgkNADC];
+ fPedAcc = new UInt_t[AliTRDfeeParam::GetNadcMcm()]; // accumulator for pedestal filter
+ fTailAmplLong = new UShort_t[AliTRDfeeParam::GetNadcMcm()];
+ fTailAmplShort = new UShort_t[AliTRDfeeParam::GetNadcMcm()];
// tracklet calculation
- fFitReg = new FitReg_t[fgkNADC];
+ fFitReg = new FitReg_t[AliTRDfeeParam::GetNadcMcm()];
fTrackletArray = new TClonesArray("AliTRDtrackletMCM", fgkMaxTracklets);
fMCMT = new UInt_t[fgkMaxTracklets];
if( !CheckInitialized() )
return;
- for( Int_t iAdc = 0 ; iAdc < fgkNADC; iAdc++ ) {
+ for( Int_t iAdc = 0 ; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++ ) {
for( Int_t it = 0 ; it < fNTimeBin ; it++ ) {
fADCR[iAdc][it] = 0;
fADCF[iAdc][it] = 0;
return;
fNTimeBin = ntimebins;
- for( Int_t iAdc = 0 ; iAdc < fgkNADC; iAdc++ ) {
+ for( Int_t iAdc = 0 ; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++ ) {
delete [] fADCR[iAdc];
delete [] fADCF[iAdc];
fADCR[iAdc] = new Int_t[fNTimeBin];
TH2F *hist = new TH2F("mcmdata", Form("Data of MCM %i on ROB %i in detector %i", \
fMcmPos, fRobPos, fDetector), \
- fgkNADC, -0.5, fgkNADC-.5, fNTimeBin, -.5, fNTimeBin-.5);
+ AliTRDfeeParam::GetNadcMcm(), -0.5, AliTRDfeeParam::GetNadcMcm()-.5, fNTimeBin, -.5, fNTimeBin-.5);
hist->GetXaxis()->SetTitle("ADC Channel");
hist->GetYaxis()->SetTitle("Timebin");
hist->SetStats(kFALSE);
if (opt.Contains("R")) {
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
hist->SetBinContent(iAdc+1, iTimeBin+1, fADCR[iAdc][iTimeBin] >> fgkAddDigits);
}
}
}
else {
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
hist->SetBinContent(iAdc+1, iTimeBin+1, fADCF[iAdc][iTimeBin] >> fgkAddDigits);
}
}
if( !CheckInitialized() ) return;
- if( adc < 0 || adc >= fgkNADC ) {
- AliError(Form ("Error: ADC %i is out of range (0 .. %d).", adc, fgkNADC-1));
+ if( adc < 0 || adc >= AliTRDfeeParam::GetNadcMcm() ) {
+ AliError(Form ("Error: ADC %i is out of range (0 .. %d).", adc, AliTRDfeeParam::GetNadcMcm()-1));
return;
}
if( !CheckInitialized() ) return;
- if( adc < 0 || adc >= fgkNADC ) {
- AliError(Form ("Error: ADC %i is out of range (0 .. %d).", adc, fgkNADC-1));
+ if( adc < 0 || adc >= AliTRDfeeParam::GetNadcMcm() ) {
+ AliError(Form ("Error: ADC %i is out of range (0 .. %d).", adc, AliTRDfeeParam::GetNadcMcm()-1));
return;
}
Int_t offset = (fMcmPos % 4 + 1) * 21 + (fRobPos % 2) * 84 - 1;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
Int_t value = adcArray->GetDataByAdcCol(GetRow(), offset - iAdc, iTimeBin);
// treat 0 as suppressed,
// this is not correct but reported like that from arrayADC
Int_t offset = (fMcmPos % 4 + 1) * 18 + (fRobPos % 2) * 72 + 1;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
Int_t value = -1;
Int_t pad = offset - iAdc;
if (pad > -1 && pad < 144)
if( !CheckInitialized() )
return;
- if( adc < 0 || adc >= fgkNADC ) {
+ if( adc < 0 || adc >= AliTRDfeeParam::GetNadcMcm() ) {
return;
}
// n : unused , c : ADC count, m : selected ADCs
if( rawVer >= 3 &&
(fTrapConfig->GetTrapReg(AliTRDtrapConfig::kC15CPUA, fDetector, fRobPos, fMcmPos) & (1 << 13))) { // check for zs flag in TRAP configuration
- for( Int_t iAdc = 0 ; iAdc < fgkNADC ; iAdc++ ) {
+ for( Int_t iAdc = 0 ; iAdc < AliTRDfeeParam::GetNadcMcm() ; iAdc++ ) {
if( ~fZSMap[iAdc] != 0 ) { // 0 means not suppressed
adcMask |= (1 << (iAdc+4) ); // last 4 digit reserved for 1100=0xc
nActiveADC++; // number of 1 in mmm....m
UShort_t fptc = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kFPTC, fDetector, fRobPos, fMcmPos); // 0..3, 0 - fastest, 3 - slowest
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++)
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++)
fPedAcc[iAdc] = (baseline << 2) * (1 << fgkFPshifts[fptc]);
}
// the input has been stable for a sufficiently long time.
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
fADCF[iAdc][iTimeBin] = FilterPedestalNextSample(iAdc, iTimeBin, fADCR[iAdc][iTimeBin]);
}
}
// Initializes the gain filter. In this case, only threshold
// counters are reset.
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
// these are counters which in hardware continue
// until maximum or reset
fGainCounterA[iAdc] = 0;
{
// Read data from fADCF and apply gain filter.
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
fADCF[iAdc][iTimeBin] = FilterGainNextSample(iAdc, fADCF[iAdc][iTimeBin]);
}
ql = lambdaL * (1 - lambdaS) * alphaL;
qs = lambdaS * (1 - lambdaL) * (1 - alphaL);
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
Int_t value = baseline & 0xFFF;
Int_t corr = (value * fTrapConfig->GetTrapReg(AliTRDtrapConfig::TrapReg_t(AliTRDtrapConfig::kFGF0 + iAdc), fDetector, fRobPos, fMcmPos)) >> 11;
corr = corr > 0xfff ? 0xfff : corr;
// Apply tail cancellation filter to all data.
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
fADCF[iAdc][iTimeBin] = FilterTailNextSample(iAdc, fADCF[iAdc][iTimeBin]);
}
}
Int_t **adc = fADCF;
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++)
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++)
fZSMap[iAdc] = -1;
for( Int_t it = 0 ; it < fNTimeBin ; it++ ) {
}
// ----- last channel -----
- iAdc = fgkNADC - 1;
+ iAdc = AliTRDfeeParam::GetNadcMcm() - 1;
ap = adc[iAdc-1][it]; // previous
ac = adc[iAdc ][it]; // current
}
// ----- middle channels -----
- for( iAdc = 1 ; iAdc < fgkNADC-1; iAdc++ ) {
+ for( iAdc = 1 ; iAdc < AliTRDfeeParam::GetNadcMcm()-1; iAdc++ ) {
ap = adc[iAdc-1][it]; // previous
ac = adc[iAdc ][it]; // current
an = adc[iAdc+1][it]; // next
if (fgStoreClusters) {
timebin1 = 0;
- timebin2 = fNTimeBin - 1;
+ timebin2 = fNTimeBin;
}
else {
// find first timebin to be looked at
// reset the fit registers
fNHits = 0;
- for (adcch = 0; adcch < fgkNADC-2; adcch++) // due to border channels
+ for (adcch = 0; adcch < AliTRDfeeParam::GetNadcMcm()-2; adcch++) // due to border channels
{
fFitReg[adcch].fNhits = 0;
fFitReg[adcch].fQ0 = 0;
{
// first find the hit candidates and store the total cluster charge in qTotal array
// in case of not hit store 0 there.
- for (adcch = 0; adcch < fgkNADC-2; adcch++) {
+ for (adcch = 0; adcch < AliTRDfeeParam::GetNadcMcm()-2; adcch++) {
if ( ( (adcMask >> adcch) & 7) == 7) //??? all 3 channels are present in case of ZS
{
adcLeft = fADCF[adcch ][timebin];
// The accumulated charge is with the pedestal!!!
qtotTemp = adcLeft + adcCentral + adcRight;
+ if ((fDebugStream) && (qtotTemp > 130)) {
+ (*fDebugStream) << "testtree"
+ << "qtot=" << qtotTemp
+ << "qleft=" << adcLeft
+ << "qcent=" << adcCentral
+ << "qright=" << adcRight
+ << "\n";
+ }
if ( (hitQual) &&
(qtotTemp >= fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPHT, fDetector, fRobPos, fMcmPos)) &&
(adcLeft <= adcCentral) &&
}
}
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
if (fFitReg[iAdc].fNhits != 0) {
AliDebug(2, Form("fitreg[%i]: nHits = %i, sumX = %i, sumY = %i, sumX2 = %i, sumY2 = %i, sumXY = %i", iAdc,
fFitReg[iAdc].fNhits,
(Int_t) fTrapConfig->GetDmemUnsigned(fgkDmemAddrDeflCutStart + 2*fFitPtr[cpu], fDetector, fRobPos, fMcmPos),
(Int_t) fTrapConfig->GetDmemUnsigned(fgkDmemAddrDeflCutStart + 1 + 2*fFitPtr[cpu], fDetector, fRobPos, fMcmPos)));
- AliDebug(5, Form("Fit sums: x = %i, X = %i, y = %i, Y = %i, Z = %i",
- sumX, sumX2, sumY, sumY2, sumXY));
+ AliDebug(5, Form("Fit sums: x = %i, X = %i, y = %i, Y = %i, Z = %i, q0 = %i, q1 = %i",
+ sumX, sumX2, sumY, sumY2, sumXY, q0, q1));
fitSlope = (Float_t) (nHits * sumXY - sumX * sumY) / (nHits * sumX2 - sumX*sumX);
// assemble and store the tracklet word
fMCMT[cpu] = (pid << 24) | (padrow << 20) | (slope << 13) | offset;
- // calculate MC label
+ // calculate number of hits and MC label
Int_t mcLabel[] = { -1, -1, -1};
Int_t nHits0 = 0;
Int_t nHits1 = 0;
- if (fDigitsManager) {
- const Int_t maxLabels = 30;
- Int_t label[maxLabels] = {0}; // up to 30 different labels possible
- Int_t count[maxLabels] = {0};
- Int_t nLabels = 0;
- for (Int_t iHit = 0; iHit < fNHits; iHit++) {
- if ((fHits[iHit].fChannel - fFitPtr[cpu] < 0) ||
- (fHits[iHit].fChannel - fFitPtr[cpu] > 1))
- continue;
-
- // counting contributing hits
- if (fHits[iHit].fTimebin >= fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos) &&
- fHits[iHit].fTimebin < fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos))
- nHits0++;
- if (fHits[iHit].fTimebin >= fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos) &&
- fHits[iHit].fTimebin < fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos))
- nHits1++;
+ const Int_t maxLabels = 30;
+ Int_t label[maxLabels] = {0}; // up to 30 different labels possible
+ Int_t count[maxLabels] = {0};
+ Int_t nLabels = 0;
+
+ for (Int_t iHit = 0; iHit < fNHits; iHit++) {
+ if ((fHits[iHit].fChannel - fFitPtr[cpu] < 0) ||
+ (fHits[iHit].fChannel - fFitPtr[cpu] > 1))
+ continue;
+
+ // counting contributing hits
+ if (fHits[iHit].fTimebin >= fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos) &&
+ fHits[iHit].fTimebin < fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos))
+ nHits0++;
+ if (fHits[iHit].fTimebin >= fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos) &&
+ fHits[iHit].fTimebin < fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos))
+ nHits1++;
+
+ // label calculation only if there is a digitsmanager to get the labels from
+ if (fDigitsManager) {
for (Int_t i = 0; i < 3; i++) {
Int_t currLabel = fHits[iHit].fLabel[i];
for (Int_t iLabel = 0; iLabel < nLabels; iLabel++) {
}
}
}
- Int_t index[2*maxLabels];
- TMath::Sort(maxLabels, count, index);
- for (Int_t i = 0; i < 3; i++) {
- if (count[index[i]] <= 0)
- break;
- mcLabel[i] = label[index[i]];
+
+ if (fDigitsManager) {
+ Int_t index[2*maxLabels];
+ TMath::Sort(maxLabels, count, index);
+ for (Int_t i = 0; i < 3; i++) {
+ if (count[index[i]] <= 0)
+ break;
+ mcLabel[i] = label[index[i]];
+ }
}
}
new ((*fTrackletArray)[fTrackletArray->GetEntriesFast()]) AliTRDtrackletMCM((UInt_t) fMCMT[cpu], fDetector*2 + fRobPos%2, fRobPos, fMcmPos);
if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kEBSF, fDetector, fRobPos, fMcmPos) != 0) // store unfiltered data
{
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
if (~fZSMap[iAdc] == 0) {
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
digits->SetDataByAdcCol(GetRow(), offset - iAdc, iTimeBin, -1);
}
}
else {
- for (Int_t iAdc = 0; iAdc < fgkNADC; iAdc++) {
+ for (Int_t iAdc = 0; iAdc < AliTRDfeeParam::GetNadcMcm(); iAdc++) {
if (~fZSMap[iAdc] != 0) {
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
digits->SetDataByAdcCol(GetRow(), offset - iAdc, iTimeBin, (fADCF[iAdc][iTimeBin] >> fgkAddDigits) - fgAddBaseline);
os << "----- Unfiltered ADC data (10 bit) -----" << std::endl;
os << "ch ";
- for (Int_t iChannel = 0; iChannel < mcm.fgkNADC; iChannel++)
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++)
os << std::setw(5) << iChannel;
os << std::endl;
for (Int_t iTimeBin = 0; iTimeBin < mcm.fNTimeBin; iTimeBin++) {
os << "tb " << std::setw(2) << iTimeBin << ":";
- for (Int_t iChannel = 0; iChannel < mcm.fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << std::setw(5) << (mcm.fADCR[iChannel][iTimeBin] >> mcm.fgkAddDigits);
}
os << std::endl;
os << "----- Filtered ADC data (10+2 bit) -----" << std::endl;
os << "ch ";
- for (Int_t iChannel = 0; iChannel < mcm.fgkNADC; iChannel++)
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++)
os << std::setw(4) << iChannel
<< ((~mcm.fZSMap[iChannel] != 0) ? "!" : " ");
os << std::endl;
for (Int_t iTimeBin = 0; iTimeBin < mcm.fNTimeBin; iTimeBin++) {
os << "tb " << std::setw(2) << iTimeBin << ":";
- for (Int_t iChannel = 0; iChannel < mcm.fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << std::setw(4) << (mcm.fADCF[iChannel][iTimeBin])
<< (((mcm.fZSMap[iChannel] & (1 << iTimeBin)) == 0) ? "!" : " ");
}
Int_t addrStep = 0x80;
for (Int_t iTimeBin = 0; iTimeBin < mcm.fNTimeBin; iTimeBin++) {
- for (Int_t iChannel = 0; iChannel < mcm.fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << std::setw(5) << 10
<< std::setw(5) << addrOffset + iChannel * addrStep + iTimeBin
<< std::setw(5) << (mcm.fADCF[iChannel][iTimeBin])
for(int adcch=fFitPtr[cpu]; adcch<fFitPtr[cpu]+2; adcch++) {
os << " <ch chnr=\"" << adcch << "\">"<< std::endl;
os << " <hits>" << fFitReg[adcch].fNhits << "</hits>"<< std::endl;
- os << " <q0>" << fFitReg[adcch].fQ0/4 << "</q0>"<< std::endl; // divided by 4 because in simulation we have 2 additional decimal places
- os << " <q1>" << fFitReg[adcch].fQ1/4 << "</q1>"<< std::endl; // in the output
+ os << " <q0>" << fFitReg[adcch].fQ0 << "</q0>"<< std::endl;
+ os << " <q1>" << fFitReg[adcch].fQ1 << "</q1>"<< std::endl;
os << " <sumx>" << fFitReg[adcch].fSumX << "</sumx>"<< std::endl;
os << " <sumxsq>" << fFitReg[adcch].fSumX2 << "</sumxsq>"<< std::endl;
os << " <sumy>" << fFitReg[adcch].fSumY << "</sumy>"<< std::endl;
}
+void AliTRDmcmSim::PrintAdcDatTxt(ostream& os) const
+{
+ // print ADC data in text format (suitable as Modelsim stimuli)
+
+ os << "# MCM " << fMcmPos << " on ROB " << fRobPos <<
+ " in detector " << fDetector << std::endl;
+
+ for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); ++iChannel) {
+ os << std::setw(5) << (fADCR[iChannel][iTimeBin] >> fgkAddDigits);
+ }
+ os << std::endl;
+ }
+}
+
+
void AliTRDmcmSim::PrintAdcDatHuman(ostream& os) const
{
// print ADC data in human-readable format
os << "----- Unfiltered ADC data (10 bit) -----" << std::endl;
os << "ch ";
- for (Int_t iChannel = 0; iChannel < fgkNADC; iChannel++)
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++)
os << std::setw(5) << iChannel;
os << std::endl;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
os << "tb " << std::setw(2) << iTimeBin << ":";
- for (Int_t iChannel = 0; iChannel < fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << std::setw(5) << (fADCR[iChannel][iTimeBin] >> fgkAddDigits);
}
os << std::endl;
os << "----- Filtered ADC data (10+2 bit) -----" << std::endl;
os << "ch ";
- for (Int_t iChannel = 0; iChannel < fgkNADC; iChannel++)
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++)
os << std::setw(4) << iChannel
<< ((~fZSMap[iChannel] != 0) ? "!" : " ");
os << std::endl;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
os << "tb " << std::setw(2) << iTimeBin << ":";
- for (Int_t iChannel = 0; iChannel < fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << std::setw(4) << (fADCF[iChannel][iTimeBin])
<< (((fZSMap[iChannel] & (1 << iTimeBin)) == 0) ? "!" : " ");
}
os << " <ro-board rob=\"" << fRobPos << "\">" << std::endl;
os << " <m mcm=\"" << fMcmPos << "\">" << std::endl;
- for(Int_t iChannel = 0; iChannel < fgkNADC; iChannel++) {
+ for(Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
os << " <ch chnr=\"" << iChannel << "\">" << std::endl;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
os << "<tb>" << fADCF[iChannel][iTimeBin]/4 << "</tb>";
Int_t addrOffsetEBSIA = 0x20;
for (Int_t iTimeBin = 0; iTimeBin < fNTimeBin; iTimeBin++) {
- for (Int_t iChannel = 0; iChannel < fgkNADC; iChannel++) {
+ for (Int_t iChannel = 0; iChannel < AliTRDfeeParam::GetNadcMcm(); iChannel++) {
if ((iTimeBin < timeBinOffset) || (iTimeBin >= fNTimeBin+timeBinOffset)) {
if(broadcast==kFALSE)
fTrapConfig->PrintDatx(os, addrOffset+iChannel*addrStep+addrOffsetEBSIA+iTimeBin, 10, GetRobPos(), GetMcmPos());