#include <TRandom.h>
#include <TDirectory.h>
#include <TFile.h>
+#include <TMap.h>
//AliRoot includes
#include "AliRawReader.h"
#include "AliRawReaderRoot.h"
ClassImp(AliTPCCalibPedestal)
AliTPCCalibPedestal::AliTPCCalibPedestal() :
- TObject(),
- fFirstTimeBin(60),
- fLastTimeBin(1000),
+ AliTPCCalibRawBase(),
fAdcMin(1),
fAdcMax(100),
fAnaMeanDown(0.),
fAnaMeanUp(1.),
- fOldRCUformat(kTRUE),
fTimeAnalysis(kFALSE),
- fROC(AliTPCROC::Instance()),
- fMapping(NULL),
fCalRocArrayPedestal(72),
fCalRocArraySigma(72),
fHistoPedestalArray(72),
//
// default constructor
//
+ SetNameTitle("AliTPCCalibPedestal","AliTPCCalibPedestal");
+ fFirstTimeBin=60;
+ fLastTimeBin=1000;
}
//_____________________________________________________________________
AliTPCCalibPedestal::AliTPCCalibPedestal(const AliTPCCalibPedestal &ped) :
- TObject(ped),
- fFirstTimeBin(ped.GetFirstTimeBin()),
- fLastTimeBin(ped.GetLastTimeBin()),
+ AliTPCCalibRawBase(ped),
fAdcMin(ped.GetAdcMin()),
fAdcMax(ped.GetAdcMax()),
fAnaMeanDown(ped.fAnaMeanDown),
fAnaMeanUp(ped.fAnaMeanUp),
- fOldRCUformat(ped.fOldRCUformat),
fTimeAnalysis(ped.fTimeAnalysis),
- fROC(AliTPCROC::Instance()),
- fMapping(NULL),
fCalRocArrayPedestal(72),
fCalRocArraySigma(72),
fHistoPedestalArray(72),
}
}
}
+AliTPCCalibPedestal::AliTPCCalibPedestal(const TMap *config):
+ AliTPCCalibRawBase(),
+ fAdcMin(1),
+ fAdcMax(100),
+ fAnaMeanDown(0.),
+ fAnaMeanUp(1.),
+ fTimeAnalysis(kFALSE),
+ fCalRocArrayPedestal(72),
+ fCalRocArraySigma(72),
+ fHistoPedestalArray(72),
+ fTimeSignal(NULL),
+ fCalRocArrayMean(72),
+ fCalRocArrayRMS(72)
+{
+ //
+ // This constructor uses a TMap for setting some parametes
+ //
+ SetNameTitle("AliTPCCalibPedestal","AliTPCCalibPedestal");
+ fFirstTimeBin=60;
+ fLastTimeBin=1000;
+ if (config->GetValue("FirstTimeBin")) fFirstTimeBin = ((TObjString*)config->GetValue("FirstTimeBin"))->GetString().Atoi();
+ if (config->GetValue("LastTimeBin")) fLastTimeBin = ((TObjString*)config->GetValue("LastTimeBin"))->GetString().Atoi();
+ if (config->GetValue("AdcMin")) fAdcMin = ((TObjString*)config->GetValue("AdcMin"))->GetString().Atoi();
+ if (config->GetValue("AdcMax")) fAdcMax = ((TObjString*)config->GetValue("AdcMax"))->GetString().Atoi();
+ if (config->GetValue("TimeAnalysis")) SetTimeAnalysis(((TObjString*)config->GetValue("TimeAnalysis"))->GetString().Atoi());
+}
//_____________________________________________________________________
}
-//_____________________________________________________________________
-Bool_t AliTPCCalibPedestal::ProcessEventFast(AliTPCRawStreamFast *rawStreamFast)
-{
- //
- // Event Processing loop - AliTPCRawStream
- //
- Bool_t withInput = kFALSE;
-
- while ( rawStreamFast->NextDDL() ){
- while ( rawStreamFast->NextChannel() ){
- Int_t isector = rawStreamFast->GetSector(); // current sector
- Int_t iRow = rawStreamFast->GetRow(); // current row
- Int_t iPad = rawStreamFast->GetPad(); // current pad
-
- while ( rawStreamFast->NextBunch() ){
- Int_t startTbin = (Int_t)rawStreamFast->GetStartTimeBin();
- Int_t endTbin = (Int_t)rawStreamFast->GetEndTimeBin();
- for (Int_t iTimeBin = startTbin; iTimeBin < endTbin; iTimeBin++){
- Float_t signal=(Float_t)rawStreamFast->GetSignals()[iTimeBin-startTbin];
- Update(isector,iRow,iPad,iTimeBin+1,signal);
- withInput = kTRUE;
- }
- }
- }
- }
-
- return withInput;
-}
-//_____________________________________________________________________
-Bool_t AliTPCCalibPedestal::ProcessEventFast(AliRawReader *rawReader)
-{
- //
- // Event processing loop - AliRawReader
- //
- AliTPCRawStreamFast *rawStreamFast = new AliTPCRawStreamFast(rawReader, (AliAltroMapping**)fMapping);
- Bool_t res=ProcessEventFast(rawStreamFast);
- delete rawStreamFast;
- return res;
-}
-
-//_____________________________________________________________________
-Bool_t AliTPCCalibPedestal::ProcessEvent(AliTPCRawStream *rawStream)
-{
- //
- // Event Processing loop - AliTPCRawStream
- //
-
- rawStream->SetOldRCUFormat(fOldRCUformat);
-
- Bool_t withInput = kFALSE;
-
- while (rawStream->Next()) {
-
- Int_t iSector = rawStream->GetSector(); // current ROC
- Int_t iRow = rawStream->GetRow(); // current row
- Int_t iPad = rawStream->GetPad(); // current pad
- Int_t iTimeBin = rawStream->GetTime(); // current time bin
- Float_t signal = rawStream->GetSignal(); // current ADC signal
-
- Update(iSector,iRow,iPad,iTimeBin,signal);
- withInput = kTRUE;
- }
-
- return withInput;
-}
-
-
-//_____________________________________________________________________
-Bool_t AliTPCCalibPedestal::ProcessEvent(AliRawReader *rawReader)
-{
- //
- // Event processing loop - AliRawReader
- //
-
- // if fMapping is NULL the rawstream will crate its own mapping
- AliTPCRawStream rawStream(rawReader, (AliAltroMapping**)fMapping);
- rawReader->Select("TPC");
- return ProcessEvent(&rawStream);
-}
-
-
-//_____________________________________________________________________
-Bool_t AliTPCCalibPedestal::ProcessEvent(eventHeaderStruct *event)
-{
- //
- // process date event
- //
-
- AliRawReader *rawReader = new AliRawReaderDate((void*)event);
- Bool_t result=ProcessEvent(rawReader);
- delete rawReader;
- return result;
-}
-
-
//_____________________________________________________________________
Bool_t AliTPCCalibPedestal::TestEvent()
{
// fill one oroc and one iroc with random gaus
//
- gRandom->SetSeed(0);
-
- for (UInt_t iSec=0; iSec<72; ++iSec){
- if (iSec%36>0) continue;
- for (UInt_t iRow=0; iRow < fROC->GetNRows(iSec); ++iRow){
- for (UInt_t iPad=0; iPad < fROC->GetNPads(iSec,iRow); ++iPad){
- for (UInt_t iTimeBin=0; iTimeBin<1024; ++iTimeBin){
- Float_t signal=(Int_t)(iRow+3+gRandom->Gaus(0,.7));
- if ( signal>0 )Update(iSec,iRow,iPad,iTimeBin,signal);
- }
- }
- }
+ gRandom->SetSeed(0);
+
+ for (UInt_t iSec=0; iSec<72; ++iSec){
+ if (iSec%36>0) continue;
+ for (UInt_t iRow=0; iRow < fROC->GetNRows(iSec); ++iRow){
+ for (UInt_t iPad=0; iPad < fROC->GetNPads(iSec,iRow); ++iPad){
+ for (UInt_t iTimeBin=0; iTimeBin<1024; ++iTimeBin){
+ Float_t signal=(Int_t)(iRow+3+gRandom->Gaus(0,.7));
+ if ( signal>0 )Update(iSec,iRow,iPad,iTimeBin,signal);
+ }
+ }
}
- return kTRUE;
+ }
+ return kTRUE;
}
//_____________________________________________________________________
TH2F* AliTPCCalibPedestal::GetHisto(Int_t sector, TObjArray *arr,
Int_t nbinsY, Float_t ymin, Float_t ymax,
- Char_t *type, Bool_t force)
+ const Char_t *type, Bool_t force)
{
//
// return pointer to Q histogram
// param[1]=0;
// param[2]=0;
// }
+ if ( param[1]<fAdcMin || param[1]>fAdcMax ){
+ param[1]=0;
+ param[2]=0;
+ }
rocPedestal->SetValue(iChannel,param[1]);
rocSigma->SetValue(iChannel,param[2]);
//calculate mean and RMS using a truncated means
}
}
}
-
-
-//_____________________________________________________________________
-void AliTPCCalibPedestal::DumpToFile(const Char_t *filename, const Char_t *dir, Bool_t append)
-{
- //
- // Write class to file
- //
-
- TString sDir(dir);
- TString option;
-
- if ( append )
- option = "update";
- else
- option = "recreate";
-
- TDirectory *backup = gDirectory;
- TFile f(filename,option.Data());
- f.cd();
- if ( !sDir.IsNull() ){
- f.mkdir(sDir.Data());
- f.cd(sDir);
- }
- this->Write();
- f.Close();
-
- if ( backup ) backup->cd();
-}