//
AliTPCcalibDB* const calib=AliTPCcalibDB::Instance();
AliTPCRecoParam *recoParam = calib->GetRecoParam(0);
- cout << " ================= DigitizeWithTailAndCrossTalk is being processed ================ " << endl;
-
+ cout << " ====================================================================================================================================== " << endl;
+ cout << " ============================================ DigitizeWithTailAndCrossTalk is being processed ======================================= " << endl;
+ cout << " ====================================================================================================================================== " << endl;
+ cout << " recoParam->GetCrosstalkCorrection() = " << recoParam->GetCrosstalkCorrection() << endl;
+ cout << " recoParam->GetUseIonTailCorrection() = " << recoParam->GetUseIonTailCorrection() << endl;
Int_t nROCs = 72;
char s[100];
char ss[100];
for (Int_t isec = 0;isec<nROCs;isec++){ //loop overs sectors
// Array of TGraphErrors for a given sector
TGraphErrors ** graphRes = new TGraphErrors *[20];
- Float_t * indexAmpGraphs = new Float_t[20];
+ Float_t * trfIndexArr = new Float_t[20];
for (Int_t icache=0; icache<20; icache++)
{
graphRes[icache] = NULL;
- indexAmpGraphs[icache] = 0;
+ trfIndexArr[icache] = 0;
}
- if (!AliTPCcalibDB::Instance()->GetTailcancelationGraphs(isec,graphRes,indexAmpGraphs)) continue;
+ if (!AliTPCcalibDB::Instance()->GetTailcancelationGraphs(isec,graphRes,trfIndexArr)) continue;
+
// fill all TGraphErrors of trfs (time response function) of a given sector to a TObjArray
TObjArray *timeResArr = new TObjArray(20); timeResArr -> SetOwner(kTRUE);
for (Int_t ires = 0;ires<20;ires++) timeResArr->AddAt(graphRes[ires],ires);
timeResFunc.AddAt(timeResArr,isec); // Fill all trfs into a single TObjArray
nIonTailBins = graphRes[3]->GetN();
- delete timeResArr;
+ cout << " nIonTailBins = " << nIonTailBins << " sector = " << isec << " bin 30 = " << graphRes[3]->GetY()[30] << endl;
}
//
cerr<<"AliTPC warning: invalid segment ID ! "<<globalRowID<<endl;
continue;
}
+ TObjArray *arrTRF = (TObjArray*)timeResFunc.At(sector);
+ TGraphErrors *graphTRF = (TGraphErrors*)arrTRF->At(1);
Int_t wireSegmentID = param->GetWireSegment(sector,padRow);
Float_t nPadsPerSegment = (Float_t)(param->GetNPadsPerSegment(wireSegmentID));
const Float_t ampfactor = (sector<36)?factorIROC:factorOROC; // factor for the iontail which is ROC type dependent
// Ion tail correction: being elem=padNumber*nTimeBins+timeBin;
Int_t lowerElem=elem-nIonTailBins;
Int_t zeroElem =(elem/nTimeBins)*nTimeBins;
+ if (zeroElem<0) zeroElem=0;
if (lowerElem<zeroElem) lowerElem=zeroElem;
if (lowerElem) lowerElem = padNumber*nTimeBins;
//
for (Int_t celem=elem-1; celem>lowerElem; celem--){
//for Mesut - her we substact the ion tail
Double_t qCElem=pdigC[celem];
- //if (graph->GetY()[elem-celem]<0 )qIonTail+=qCElem*graph->GetY()[elem-celem];
+ if (graphTRF->GetY()[elem-celem]<0)qIonTail+=qCElem*graphTRF->GetY()[elem-celem];
}
}
}
//
+ q+=qIonTail;
Float_t noisePad = noiseROC->GetValue(padRow,padNumber);
- // Float_t noise = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());
Float_t noise = pTPC->GetNoise();
q/=16.; //conversion factor
q+=noise*noisePad;