ROOT logo
AliRoot » TPC » BASE » AliTPCCalibPulser

class AliTPCCalibPulser: public AliTPCCalibRawBase


Implementation of the TPC pulser calibration

Origin: Jens Wiechula, Marian Ivanov   J.Wiechula@gsi.de, Marian.Ivanov@cern.ch



 *                      Class Description                                  *
 ***************************************************************************

 The AliTPCCalibPulser class is used to get calibration data concerning the FEE using
 runs performed with the calibration pulser.

 The information retrieved is
 - Time0 differences
 - Signal width differences
 - Amplification variations

 the seen differences arise from the manufacturing tolerances of the PASAs and are very small within
 one chip and somewhat large between different chips.

 Histograms:
   For each ROC three TH2S histos 'Reference Histograms'  (ROC channel vs. [Time0, signal width, Q sum]) is created when
   it is filled for the first time (GetHisto[T0,RMS,Q](ROC,kTRUE)). The histos are stored in the
   TObjArrays fHistoT0Array, fHistoRMSArray and fHistoQArray.


 Working principle:
 ------------------
 Raw calibration pulser data is processed by calling one of the ProcessEvent(...) functions
 (see below). These in the end call the Update(...) function.

 - the Update(...) function:
   In this function the array fPadSignal is filled with the adc signals between the specified range
   fFirstTimeBin and fLastTimeBin for the current pad.
   before going to the next pad the ProcessPad() function is called, which analyses the data for one pad
   stored in fPadSignal.

   - the ProcessPad() function:
     Find Pedestal and Noise information
     - use database information which has to be set by calling
       SetPedestalDatabase(AliTPCCalPad *pedestalTPC, AliTPCCalPad *padNoiseTPC)
     - if no information from the pedestal data base
       is available the informaion is calculated on the fly ( see FindPedestal() function )

     Find the Pulser signal information
     - calculate  mean = T0, RMS = signal width and Q sum in a range of -2+7 timebins around Q max
       the Q sum is scaled by pad area
       (see FindPulserSignal(...) function)

     Fill a temprary array for the T0 information (GetPadTimesEvent(fCurrentSector,kTRUE)) (why see below)
     Fill the Q sum and RMS values in the histograms (GetHisto[RMS,Q](ROC,kTRUE)),

 At the end of each event the EndEvent() function is called

 - the EndEvent() function:
   calculate the mean T0 for each ROC and fill the Time0 histogram with Time0-<Time0 for ROC>
   This is done to overcome syncronisation problems between the trigger and the fec clock.

 After accumulating the desired statistics the Analyse() function has to be called.
 - the Analyse() function
   Whithin this function the mean values of T0, RMS, Q are calculated for each pad, using
   the AliMathBase::GetCOG(...) function, and the calibration
   storage classes (AliTPCCalROC) are filled for each ROC.
   The calibration information is stored in the TObjArrays fCalRocArrayT0, fCalRocArrayRMS and
   fCalRocArrayQ;



 User interface for filling data:
 --------------------------------

 To Fill information one of the following functions can be used:

 Bool_t ProcessEvent(eventHeaderStruct *event);
   - process Date event
   - use AliTPCRawReaderDate and call ProcessEvent(AliRawReader *rawReader)

 Bool_t ProcessEvent(AliRawReader *rawReader);
   - process AliRawReader event
   - use AliTPCRawStreamV3 to loop over data and call ProcessEvent(AliTPCRawStreamV3 *rawStream)

 Bool_t ProcessEvent(AliTPCRawStreamV3 *rawStream);
   - process event from AliTPCRawStreamV3
   - call Update function for signal filling

 Int_t Update(const Int_t isector, const Int_t iRow, const Int_t
              iPad,  const Int_t iTimeBin, const Float_t signal);
   - directly  fill signal information (sector, row, pad, time bin, pad)
     to the reference histograms

 It is also possible to merge two independently taken calibrations using the function

 void Merge(AliTPCCalibPulser *sig)
   - copy histograms in 'sig' if the do not exist in this instance
   - Add histograms in 'sig' to the histograms in this instance if the allready exist
   - After merging call Analyse again!



 -- example: filling data using root raw data:
 void fillSignal(Char_t *filename)
 {
    rawReader = new AliRawReaderRoot(fileName);
    if ( !rawReader ) return;
    AliTPCCalibPulser *calib = new AliTPCCalibPulser;
    while (rawReader->NextEvent()){
      calib->ProcessEvent(rawReader);
    }
    calib->Analyse();
    calib->DumpToFile("SignalData.root");
    delete rawReader;
    delete calib;
 }


 What kind of information is stored and how to retrieve them:
 ------------------------------------------------------------

 - Accessing the 'Reference Histograms' (Time0, signal width and Q sum information pad by pad):

   TH2F *GetHistoT0(Int_t sector);
   TH2F *GetHistoRMS(Int_t sector);
   TH2F *GetHistoQ(Int_t sector);

 - Accessing the calibration storage objects:

   AliTPCCalROC *GetCalRocT0(Int_t sector);   // for the Time0 values
   AliTPCCalROC *GetCalRocRMS(Int_t sector);  // for the signal width values
   AliTPCCalROC *GetCalRocQ(Int_t sector);    // for the Q sum values

   example for visualisation:
   if the file "SignalData.root" was created using the above example one could do the following:

   TFile fileSignal("SignalData.root")
   AliTPCCalibPulser *sig = (AliTPCCalibPulser*)fileSignal->Get("AliTPCCalibPulser");
   sig->GetCalRocT0(0)->Draw("colz");
   sig->GetCalRocRMS(0)->Draw("colz");

   or use the AliTPCCalPad functionality:
   AliTPCCalPad padT0(ped->GetCalPadT0());
   AliTPCCalPad padSigWidth(ped->GetCalPadRMS());
   padT0->MakeHisto2D()->Draw("colz");       //Draw A-Side Time0 Information
   padSigWidth->MakeHisto2D()->Draw("colz"); //Draw A-Side signal width Information

Function Members (Methods)

public:
AliTPCCalibPulser()
AliTPCCalibPulser(const AliTPCCalibPulser& sig)
AliTPCCalibPulser(const TMap* config)
virtual~AliTPCCalibPulser()
voidTObject::AbstractMethod(const char* method) const
virtual voidAnalyse()
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidAliTPCCalibRawBase::DumpToFile(const Char_t* filename, const Char_t* dir = "", Bool_t append = kFALSE)
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
AliTPCAltroMapping**AliTPCCalibRawBase::GetAltroMapping()
const AliAltroRawStream*AliTPCCalibRawBase::GetAltroRawStream() const
const TObjArray*GetCalPadOutliers() const
const TObjArray*GetCalPadQ() const
const TObjArray*GetCalPadRMS() const
const TObjArray*GetCalPadT0() const
AliTPCCalROC*GetCalRocOutliers(Int_t sector, Bool_t force = kFALSE)
AliTPCCalROC*GetCalRocQ(Int_t sector, Bool_t force = kFALSE)
AliTPCCalROC*GetCalRocRMS(Int_t sector, Bool_t force = kFALSE)
AliTPCCalROC*GetCalRocT0(Int_t sector, Bool_t force = kFALSE)
Short_tGetDebugLevel() const
TTreeSRedirector*AliTPCCalibRawBase::GetDebugStreamer()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
UInt_tAliTPCCalibRawBase::GetEventType() const
Int_tAliTPCCalibRawBase::GetFirstTimeBin() const
UInt_tAliTPCCalibRawBase::GetFirstTimeStamp() const
TH2S*GetHistoQ(Int_t sector, Bool_t force = kFALSE)
TH2S*GetHistoRMS(Int_t sector, Bool_t force = kFALSE)
TH2S*GetHistoT0(Int_t sector, Bool_t force = kFALSE)
TH2F*GetHistoTSec()
virtual const char*TObject::GetIconName() const
Bool_tGetIsZeroSupperssed() const
Double_tAliTPCCalibRawBase::GetL1Phase() const
Double_tAliTPCCalibRawBase::GetL1PhaseTB() const
Int_tAliTPCCalibRawBase::GetLastTimeBin() const
UInt_tAliTPCCalibRawBase::GetLastTimeStamp() const
Float_tGetMeanTimeSector(Int_t sector) const
const TVectorF*GetMeanTimeSectorArray() const
virtual const char*TNamed::GetName() const
Int_tAliTPCCalibRawBase::GetNevents() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetPeakIntegralMinus() const
Float_tGetPeakIntegralPlus() const
UInt_tAliTPCCalibRawBase::GetRunNumber() const
Int_tAliTPCCalibRawBase::GetStreamLevel() const
UInt_tAliTPCCalibRawBase::GetTimeStamp() const
virtual const char*TNamed::GetTitle() const
const AliTPCROC*AliTPCCalibRawBase::GetTPCROC() const
virtual UInt_tTObject::GetUniqueID() const
Bool_tAliTPCCalibRawBase::GetUseL1Phase() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
voidAliTPCCalibRawBase::IncrementNevents()
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
voidMerge(AliTPCCalibPulser *const sig)
virtual Long64_tMerge(TCollection *const list)
voidAliTPCCalibRawBase::MergeBase(const AliTPCCalibRawBase* calib)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliTPCCalibPulser&operator=(const AliTPCCalibPulser& source)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidAliTPCCalibRawBase::ProcessBunch(const Int_t, const Int_t, const Int_t, const Int_t, const UInt_t, const UShort_t*)
Bool_tAliTPCCalibRawBase::ProcessEvent(AliTPCRawStreamV3 *const rawStreamV3)
Bool_tAliTPCCalibRawBase::ProcessEvent(AliRawReader *const rawReader)
Bool_tAliTPCCalibRawBase::ProcessEvent(eventHeaderStruct *const event)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidReset()
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidAliTPCCalibRawBase::SetAltroMapping(AliTPCAltroMapping** mapp)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDebugLevel(Short_t debug = 1)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetIsZeroSuppressed(Bool_t zs = kTRUE)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOutliers(AliTPCCalPad *const outliers)
voidSetPedestalDatabase(AliTPCCalPad *const pedestalTPC, AliTPCCalPad *const padNoiseTPC)
voidSetRangePeakIntegral(Int_t minus, Int_t plus)
voidSetRangeRefQ(Int_t nBins, Float_t xMin, Float_t xMax)
voidSetRangeRefRMS(Int_t nBins, Float_t xMin, Float_t xMax)
voidSetRangeRefT0(Int_t nBins, Float_t xMin, Float_t xMax)
voidSetRangeTime(Int_t firstTimeBin, Int_t lastTimeBin)
voidAliTPCCalibRawBase::SetRunNumber(UInt_t eventnumber)
voidAliTPCCalibRawBase::SetStreamLevel(Int_t streamLevel)
voidAliTPCCalibRawBase::SetTimeStampEvent(UInt_t timestamp)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidAliTPCCalibRawBase::SetUseL1Phase(Bool_t useL1Phase = kTRUE)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
TObjArray*TestBinning()
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual Int_tUpdate(const Int_t isector, const Int_t iRow, const Int_t iPad, const Int_t iTimeBin, const Float_t signal)
virtual voidAliTPCCalibRawBase::UpdateDDL()
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidEndEvent()
voidTObject::MakeZombie()
virtual voidResetEvent()
private:
voidFindPedestal(Float_t part = .6)
voidFindPulserSignal(TVectorD& param, Float_t& qSum)
AliTPCCalROC*GetCalRoc(Int_t sector, TObjArray* arr, Bool_t force) const
TH2S*GetHisto(Int_t sector, TObjArray* arr, Int_t nbinsY, Float_t ymin, Float_t ymax, const Char_t* type, Bool_t force)
TVectorF*GetPadInfoEvent(Int_t sector, TObjArray* arr, Bool_t force = kFALSE)
TVectorF*GetPadPedestalEvent(Int_t sector, Bool_t force = kFALSE)
TVectorF*GetPadQEvent(Int_t sector, Bool_t force = kFALSE)
TVectorF*GetPadRMSEvent(Int_t sector, Bool_t force = kFALSE)
TVectorF*GetPadTimesEvent(Int_t sector, Bool_t force = kFALSE)
Bool_tIsEdgePad(Int_t sector, Int_t row, Int_t pad)
voidProcessPad()
voidResetPad()

Data Members

protected:
Double_tAliTPCCalibRawBase::fAltroL1Phase! L1 Phase
Float_tAliTPCCalibRawBase::fAltroL1PhaseTB! L1 Phase in time bins
AliAltroRawStream*AliTPCCalibRawBase::fAltroRawStream! pointer to the altro object
Int_tAliTPCCalibRawBase::fCurrDDLNum! Current DDL number
Int_tAliTPCCalibRawBase::fCurrRCUId! Current RCU Id
Int_tAliTPCCalibRawBase::fDebugLevel! debug level
TTreeSRedirector*AliTPCCalibRawBase::fDebugStreamer! debug streamer
UInt_tAliTPCCalibRawBase::fEventType! current event Type from event header
Int_tAliTPCCalibRawBase::fFirstTimeBinFirst Time bin used for analysis
UInt_tAliTPCCalibRawBase::fFirstTimeStampFirst event time stamp
Int_tAliTPCCalibRawBase::fLastTimeBinLast Time bin used for analysis
UInt_tAliTPCCalibRawBase::fLastTimeStampLast event time stamp
AliTPCAltroMapping**AliTPCCalibRawBase::fMapping! Altro Mapping object
TStringTNamed::fNameobject identifier
Int_tAliTPCCalibRawBase::fNeventsNumber of processed events
Int_tAliTPCCalibRawBase::fPrevDDLNum! Current DDL number
Int_tAliTPCCalibRawBase::fPrevRCUId! Previous RCU Id
AliTPCROC*AliTPCCalibRawBase::fROC! ROC information
UInt_tAliTPCCalibRawBase::fRunNumbercurrent run number from event header
Int_tAliTPCCalibRawBase::fStreamLevel! level of streamer output
UInt_tAliTPCCalibRawBase::fTimeStamp! time stamp from event header
TStringTNamed::fTitleobject title
Bool_tAliTPCCalibRawBase::fUseL1Phaseuse L1 Phase information?
private:
TObjArrayfCalRocArrayOutliersArray of AliTPCCalROC class for signal outliers
TObjArrayfCalRocArrayQArray of AliTPCCalROC class for Charge calibration
TObjArrayfCalRocArrayRMSArray of AliTPCCalROC class for signal width calibration
TObjArrayfCalRocArrayT0Array of AliTPCCalROC class for Time0 calibration
Int_tfCurrentChannel! current channel processed
Int_tfCurrentPad! current pad processed
Int_tfCurrentRow! current row processed
Int_tfCurrentSector! current sector processed
TH2F*fHMeanTimeSectorTiming distribution per sector
TObjArrayfHistoQArrayCalibration histograms for Charge distribution
TObjArrayfHistoRMSArrayCalibration histograms for signal width distribution
TObjArrayfHistoT0ArrayCalibration histograms for Time0 distribution
Bool_tfIsZeroSuppressedif data is zero suppressed
Int_tfLastSector! Last sector processed
Float_tfMaxPadSignal! maximum bin of current pad
Int_tfMaxTimeBin! time bin with maximum value
Int_tfNbinsQNumber of bins for T0 reference histogram
Int_tfNbinsRMSNumber of bins for T0 reference histogram
Int_tfNbinsT0Number of bins for T0 reference histogram
AliTPCCalPad*fOutliers! Outlier information. Those will not be used for calculating the T0
Float_tfPadNoise! Noise Value of current pad
AliTPCCalROC*fPadNoiseROC! Pad noise Information for current ROC
AliTPCCalPad*fPadNoiseTPC! Pad noise Information whole TPC
Float_tfPadPedestal! Pedestal Value of current pad
TObjArrayfPadPedestalArrayEvent! Signal width for the event, only needed for debugging streamer
TObjArrayfPadQArrayEvent! Charge for the event, only needed for debugging streamer
TObjArrayfPadRMSArrayEvent! Signal width for the event, only needed for debugging streamer
TVectorFfPadSignal! signal of current Pad
TObjArrayfPadTimesArrayEvent! Pad Times for the event, before mean Time0 corrections
AliTPCParam*fParam! TPC information
Int_tfPeakIntMinusPeak integral range for COG determination. Bins used before max bin
Int_tfPeakIntPlusPeak integral range for COG determination. Bins used after max bin
AliTPCCalROC*fPedestalROC! Pedestal Information for current ROC
AliTPCCalPad*fPedestalTPC! Pedestal Information
TVectorFfVMeanTimeSectorMean time per sector from analysis of fHMeanTimeSector
TVectorFfVTime0Offset! Time0 Offset from preprocessing for each sector;
TVectorFfVTime0OffsetCounter! Time0 Offset from preprocessing for each sector;
Float_tfXmaxQxmax of T0 reference histogram
Float_tfXmaxRMSxmax of T0 reference histogram
Float_tfXmaxT0xmax of T0 reference histogram
Float_tfXminQxmin of T0 reference histogram
Float_tfXminRMSxmin of T0 reference histogram
Float_tfXminT0xmin of T0 reference histogram

Class Charts

Inheritance Chart:
TNamed
AliTPCCalibRawBase
AliTPCCalibPulser

Function documentation

AliTPCCalibPulser()
 AliTPCSignal default constructor

AliTPCCalibPulser(const AliTPCCalibPulser& sig)
 AliTPCSignal default constructor

AliTPCCalibPulser(const TMap* config)
 This constructor uses a TMap for setting some parametes

~AliTPCCalibPulser()
 destructor

void Reset()
 Delete all information: Arrays, Histograms, CalRoc objects

Int_t Update(const Int_t isector, const Int_t iRow, const Int_t iPad, const Int_t iTimeBin, const Float_t signal)
 Signal filling methode on the fly pedestal and time offset correction if necessary.
 no extra analysis necessary. Assumes knowledge of the signal shape!
 assumes that it is looped over consecutive time bins of one pad

void FindPedestal(Float_t part = .6)
 find pedestal and noise for the current pad. Use either database or
 truncated mean with part*100%

void FindPulserSignal(TVectorD& param, Float_t& qSum)
  Find position, signal width and height of the CE signal (last signal)
  param[0] = Qmax, param[1] = mean time, param[2] = rms;
  maxima: array of local maxima of the pad signal use the one closest to the mean CE position

void ProcessPad()
  Process data of current pad

void EndEvent()
  Process data of current event

TH2S* GetHisto(Int_t sector, TObjArray* arr, Int_t nbinsY, Float_t ymin, Float_t ymax, const Char_t* type, Bool_t force)
 return pointer to Q histogram
 if force is true create a new histogram if it doesn't exist allready

TH2S* GetHistoT0(Int_t sector, Bool_t force = kFALSE)
 return pointer to T0 histogram
 if force is true create a new histogram if it doesn't exist allready

TH2S* GetHistoQ(Int_t sector, Bool_t force = kFALSE)
 return pointer to Q histogram
 if force is true create a new histogram if it doesn't exist allready

TH2S* GetHistoRMS(Int_t sector, Bool_t force = kFALSE)
 return pointer to Q histogram
 if force is true create a new histogram if it doesn't exist allready

TH2F* GetHistoTSec()
 return the pointer to the abs time distribution per sector
 create it if it does not exist

TVectorF* GetPadInfoEvent(Int_t sector, TObjArray* arr, Bool_t force = kFALSE)
 return pointer to Pad Info from 'arr' for the current event and sector
 if force is true create it if it doesn't exist allready

TVectorF* GetPadTimesEvent(Int_t sector, Bool_t force = kFALSE)
 return pointer to Pad Times Array for the current event and sector
 if force is true create it if it doesn't exist allready

TVectorF* GetPadQEvent(Int_t sector, Bool_t force = kFALSE)
 return pointer to Pad Q Array for the current event and sector
 if force is true create it if it doesn't exist allready
 for debugging purposes only

TVectorF* GetPadRMSEvent(Int_t sector, Bool_t force = kFALSE)
 return pointer to Pad RMS Array for the current event and sector
 if force is true create it if it doesn't exist allready
 for debugging purposes only

TVectorF* GetPadPedestalEvent(Int_t sector, Bool_t force = kFALSE)
 return pointer to Pad RMS Array for the current event and sector
 if force is true create it if it doesn't exist allready
 for debugging purposes only

AliTPCCalROC* GetCalRoc(Int_t sector, TObjArray* arr, Bool_t force) const
 return pointer to ROC Calibration
 if force is true create a new histogram if it doesn't exist allready

AliTPCCalROC* GetCalRocT0(Int_t sector, Bool_t force = kFALSE)
 return pointer to Carge ROC Calibration
 if force is true create a new histogram if it doesn't exist allready

AliTPCCalROC* GetCalRocQ(Int_t sector, Bool_t force = kFALSE)
 return pointer to T0 ROC Calibration
 if force is true create a new histogram if it doesn't exist allready

AliTPCCalROC* GetCalRocRMS(Int_t sector, Bool_t force = kFALSE)
 return pointer to signal width ROC Calibration
 if force is true create a new histogram if it doesn't exist allready

AliTPCCalROC* GetCalRocOutliers(Int_t sector, Bool_t force = kFALSE)
 return pointer to Outliers
 if force is true create a new histogram if it doesn't exist allready

void ResetEvent()
  Reset global counters  -- Should be called before each event is processed

void ResetPad()
  Reset pad infos -- Should be called after a pad has been processed

Bool_t IsEdgePad(Int_t sector, Int_t row, Int_t pad)
 return true if pad is on the edge of a row

void Merge(AliTPCCalibPulser *const sig)
  Merge reference histograms of sig to the current AliTPCCalibPulser

Long64_t Merge(TCollection *const list)
 Merge all objects of this type in list

void Analyse()
  Calculate calibration constants

TObjArray* TestBinning()
  Function to test the binning of the reference histograms
  type: T0, Q or RMS
  mode: 0 - number of filled bins per channel
        1 - number of empty bins between filled bins in one ROC
  returns TObjArray with the test histograms type*2+mode:
  position 0 = T0,0 ; 1 = T0,1 ; 2 = Q,0 ...
const TObjArray* GetCalPadT0() const
{ return &fCalRocArrayT0; }
const TObjArray* GetCalPadQ() const
{ return &fCalRocArrayQ; }
const TObjArray* GetCalPadRMS() const
{ return &fCalRocArrayRMS;}
const TObjArray* GetCalPadOutliers() const
Float_t GetMeanTimeSector(Int_t sector) const
{return fVMeanTimeSector[sector];}
const TVectorF* GetMeanTimeSectorArray() const
{return &fVMeanTimeSector;}
Short_t GetDebugLevel() const
{ return fDebugLevel; }
void SetRangeTime(Int_t firstTimeBin, Int_t lastTimeBin)
{ fFirstTimeBin=firstTimeBin; fLastTimeBin=lastTimeBin; }
void SetRangeRefQ(Int_t nBins, Float_t xMin, Float_t xMax)
{ fNbinsQ = nBins; fXminQ = xMin; fXmaxQ = xMax; }
void SetRangeRefT0(Int_t nBins, Float_t xMin, Float_t xMax)
{ fNbinsT0 = nBins; fXminT0 = xMin; fXmaxT0 = xMax; }
void SetRangeRefRMS(Int_t nBins, Float_t xMin, Float_t xMax)
{ fNbinsRMS = nBins; fXminRMS = xMin; fXmaxRMS = xMax; }
void SetRangePeakIntegral(Int_t minus, Int_t plus)
{ fPeakIntMinus=minus; fPeakIntPlus=plus;}
void SetDebugLevel(Short_t debug = 1)
{ fDebugLevel = debug;}
void SetIsZeroSuppressed(Bool_t zs = kTRUE)
void SetPedestalDatabase(AliTPCCalPad *const pedestalTPC, AliTPCCalPad *const padNoiseTPC)
{fPedestalTPC = pedestalTPC; fPadNoiseTPC = padNoiseTPC;}
void SetOutliers(AliTPCCalPad *const outliers)
{fOutliers = outliers;}
Bool_t GetIsZeroSupperssed() const
{ return fIsZeroSuppressed; }
Float_t GetPeakIntegralMinus() const
{return fPeakIntMinus;}
Float_t GetPeakIntegralPlus() const
{return fPeakIntPlus;}