25 #include <TDirectory.h>
29 #include "AliRawReader.h"
30 #include "AliRawReaderRoot.h"
31 #include "AliRawReaderDate.h"
34 #include "AliMathBase.h"
35 #include "TTreeStream.h"
207 fTimeAnalysis(kFALSE),
208 fCalRocArrayPedestal(72),
209 fCalRocArraySigma(72),
210 fHistoPedestalArray(72),
212 fCalRocArrayMean(72),
218 SetNameTitle(
"AliTPCCalibPedestal",
"AliTPCCalibPedestal");
227 fAdcMin(ped.GetAdcMin()),
228 fAdcMax(ped.GetAdcMax()),
229 fAnaMeanDown(ped.fAnaMeanDown),
230 fAnaMeanUp(ped.fAnaMeanUp),
231 fTimeAnalysis(ped.fTimeAnalysis),
232 fCalRocArrayPedestal(72),
233 fCalRocArraySigma(72),
234 fHistoPedestalArray(72),
235 fTimeSignal(ped.fTimeSignal),
236 fCalRocArrayMean(72),
241 for (Int_t iSec = 0; iSec < 72; ++iSec){
250 TH2F *hNew =
new TH2F(*hPed);
251 hNew->SetDirectory(0);
262 fTimeAnalysis(kFALSE),
263 fCalRocArrayPedestal(72),
264 fCalRocArraySigma(72),
265 fHistoPedestalArray(72),
267 fCalRocArrayMean(72),
272 SetNameTitle(
"AliTPCCalibPedestal",
"AliTPCCalibPedestal");
275 if (config->GetValue(
"FirstTimeBin"))
fFirstTimeBin = ((TObjString*)config->GetValue(
"FirstTimeBin"))->GetString().Atoi();
276 if (config->GetValue(
"LastTimeBin"))
fLastTimeBin = ((TObjString*)config->GetValue(
"LastTimeBin"))->GetString().Atoi();
277 if (config->GetValue(
"AdcMin"))
fAdcMin = ((TObjString*)config->GetValue(
"AdcMin"))->GetString().Atoi();
278 if (config->GetValue(
"AdcMax"))
fAdcMax = ((TObjString*)config->GetValue(
"AdcMax"))->GetString().Atoi();
279 if (config->GetValue(
"TimeAnalysis"))
SetTimeAnalysis(((TObjString*)config->GetValue(
"TimeAnalysis"))->GetString().Atoi());
288 if (&source ==
this)
return *
this;
306 for (Int_t i = 0; i < 159; i++) {
337 for (Int_t i = 0; i < 159; i++) {
339 for (Int_t j = 0; j < 140; j++) {
341 for (Int_t k = 0; k < 1024; k++) {
353 const Int_t icTimeBin,
354 const Float_t csignal)
358 if (icRow<0)
return 0;
359 if (icPad<0)
return 0;
360 if (icTimeBin<0)
return 0;
371 if ( ((Int_t)csignal>
fAdcMax) || ((Int_t)csignal<
fAdcMin) )
return 0;
392 for (UInt_t iSec=0; iSec<72; ++iSec){
393 if (iSec%36>0)
continue;
394 for (UInt_t iRow=0; iRow <
fROC->
GetNRows(iSec); ++iRow){
395 for (UInt_t iPad=0; iPad <
fROC->
GetNPads(iSec,iRow); ++iPad){
396 for (UInt_t iTimeBin=0; iTimeBin<1024; ++iTimeBin){
397 Float_t signal=(Int_t)(iRow+3+gRandom->Gaus(0,.7));
398 if ( signal>0 )
Update(iSec,iRow,iPad,iTimeBin,signal);
409 Int_t nbinsY, Float_t ymin, Float_t ymax,
410 const Char_t *type, Bool_t force)
415 if ( !force || arr->UncheckedAt(sector) )
416 return (TH2F*)arr->UncheckedAt(sector);
420 TH2F* hist =
new TH2F(Form(
"hCalib%s%.2d",type,sector),
421 Form(
"%s calibration histogram sector %.2d;ADC channel;Channel (pad)",type,sector),
425 hist->SetDirectory(0);
426 arr->AddAt(hist,sector);
448 if ( !force || arr->UncheckedAt(sector) )
455 arr->AddAt(croc,sector);
508 for (Int_t iSec=0; iSec<72; ++iSec){
516 TDirectory *dir = hRefPedMerge->GetDirectory(); hRefPedMerge->SetDirectory(0);
518 if ( hRefPed ) hRefPed->Add(hRefPedMerge);
520 TH2F *hist =
new TH2F(*hRefPedMerge);
521 hist->SetDirectory(0);
524 hRefPedMerge->SetDirectory(dir);
544 while ( (o=next()) ){
565 TH1F *hChannel=
new TH1F(
"hChannel",
"hChannel",nbinsAdc,fAdcMin,
fAdcMax);
569 for (Int_t iSec=0; iSec<72; ++iSec){
572 hP->SetEntries(hP->Integral());
579 arrayhP = hP->GetArray();
582 for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
583 Int_t offset = (nbinsAdc+2)*(iChannel+1)+1;
586 AliMathBase::FitGaus(arrayhP+offset,nbinsAdc,fAdcMin,
fAdcMax,¶m,&dummy);
593 if ( param[1]<fAdcMin || param[1]>
fAdcMax ){
597 rocPedestal->
SetValue(iChannel,param[1]);
598 rocSigma->
SetValue(iChannel,param[2]);
600 hChannel->Set(nbinsAdc+2,arrayhP+offset-1);
601 hChannel->SetEntries(param[3]);
605 rocMean->
SetValue(iChannel,param[1]);
606 rocRMS->
SetValue(iChannel,param[2]);
620 if ( nevents <= 0 )
return;
622 for (Int_t i = 0; i < 159; i++) {
623 for (Int_t j = 0; j < 140; j++) {
624 for (Int_t k = 0; k < 1024; k++) {
UInt_t GetNPads(UInt_t sector, UInt_t row) const
AliTPCCalibPedestal & operator=(const AliTPCCalibPedestal &source)
AliTPCCalROC * GetCalRocSigma(Int_t sector, Bool_t force=kFALSE)
UInt_t GetNRows(UInt_t sector) const
void MergeBase(const AliTPCCalibRawBase *calib)
Implementation of the TPC pedestal calibration.
AliTPCCalROC * GetCalRocRMS(Int_t sector, Bool_t force=kFALSE)
UInt_t GetNChannels(UInt_t sector) const
TArrayF ** fTimeSignal
! Arrays which hold time dependent signals
Int_t fLastTimeBin
Last Time bin used for analysis.
Base class for the calibration algorithms using raw data as input.
TObjArray fCalRocArrayMean
Array of AliTPCCalROC class for pedestal values, simple mean.
virtual Int_t Update(const Int_t isector, const Int_t iRow, const Int_t iPad, const Int_t iTimeBin, const Float_t signal)
TObjArray fCalRocArrayRMS
Array of AliTPCCalROC class for noise values, simple rms.
Int_t fAdcMin
min adc channel of pedestal value
void AnalyseTime(Int_t nevents)
AliTPCROC * fROC
! ROC information
Int_t fFirstTimeBin
First Time bin used for analysis.
void SetTimeAnalysis(Bool_t time=kTRUE)
AliTPCCalROC * GetCalRocPedestal(Int_t sector, Bool_t force=kFALSE)
const UInt_t * GetRowIndexes(UInt_t sector) const
Float_t fAnaMeanUp
Truncated mean channel analysis - upper cut.
void SetValue(UInt_t row, UInt_t pad, Float_t vd)
virtual ~AliTPCCalibPedestal()
Float_t fAnaMeanDown
Truncated mean channel analysis - lower cut.
TPC calibration base class for one ROC.
TH2F * GetHisto(Int_t sector, TObjArray *arr, Int_t nbinsY, Float_t ymin, Float_t ymax, const Char_t *type, Bool_t force)
void Merge(AliTPCCalibPedestal *const ped)
Bool_t fTimeAnalysis
! Should we use the time dependent analysis? ONLY ON LDC!
AliTPCCalROC * GetCalRocMean(Int_t sector, Bool_t force=kFALSE)
AliTPCCalROC * GetCalRoc(Int_t sector, TObjArray *arr, Bool_t force)
TObjArray fHistoPedestalArray
Calibration histograms for Pedestal distribution.
TH2F * GetHistoPedestal(Int_t sector, Bool_t force=kFALSE)
TObjArray fCalRocArraySigma
Array of AliTPCCalROC class for noise values from gaus fit.
Int_t fAdcMax
max adc channel of pedestal value
TObjArray fCalRocArrayPedestal
Array of AliTPCCalROC class for pedestal values from gaus fit.