ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     //
//                  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
*/


//Root includes
#include <TObjArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH2S.h>
#include <TString.h>
#include <TVectorF.h>
#include <TMath.h>
#include <TMap.h>
#include <TDirectory.h>
#include <TSystem.h>
#include <TROOT.h>
#include <TFile.h>

//AliRoot includes
#include "AliRawReader.h"
#include "AliRawReaderRoot.h"
#include "AliRawReaderDate.h"
#include "AliTPCCalROC.h"
#include "AliTPCCalPad.h"
#include "AliTPCROC.h"
#include "AliTPCParam.h"
#include "AliTPCCalibPulser.h"
#include "AliTPCcalibDB.h"
#include "AliMathBase.h"
#include "AliLog.h"
#include "TTreeStream.h"

//date
#include "event.h"




ClassImp(AliTPCCalibPulser)

AliTPCCalibPulser::AliTPCCalibPulser() :
AliTPCCalibRawBase(),
fNbinsT0(200),
fXminT0(-2),
fXmaxT0(2),
fNbinsQ(200),
fXminQ(10),
fXmaxQ(40),
fNbinsRMS(100),
fXminRMS(0.1),
fXmaxRMS(5.1),
fPeakIntMinus(2),
fPeakIntPlus(2),
fIsZeroSuppressed(kFALSE),
fLastSector(-1),
fParam(new AliTPCParam),
fPedestalTPC(0x0),
fPadNoiseTPC(0x0),
fOutliers(0x0),
fPedestalROC(0x0),
fPadNoiseROC(0x0),
fCalRocArrayT0(72),
fCalRocArrayQ(72),
fCalRocArrayRMS(72),
fCalRocArrayOutliers(72),
fHistoQArray(72),
fHistoT0Array(72),
fHistoRMSArray(72),
fHMeanTimeSector(0x0),
fVMeanTimeSector(72),
fPadTimesArrayEvent(72),
fPadQArrayEvent(72),
fPadRMSArrayEvent(72),
fPadPedestalArrayEvent(72),
fCurrentChannel(-1),
fCurrentSector(-1),
fCurrentRow(-1),
fCurrentPad(-1),
fMaxPadSignal(-1),
fMaxTimeBin(-1),
fPadSignal(1024),
fPadPedestal(0),
fPadNoise(0),
fVTime0Offset(72),
fVTime0OffsetCounter(72)
{
  //
  // AliTPCSignal default constructor
  //
  SetNameTitle("AliTPCCalibPulser","AliTPCCalibPulser");
  fFirstTimeBin=60;
  fLastTimeBin=900;
  fParam->Update();
}
//_____________________________________________________________________
AliTPCCalibPulser::AliTPCCalibPulser(const AliTPCCalibPulser &sig) :
AliTPCCalibRawBase(sig),
fNbinsT0(sig.fNbinsT0),
fXminT0(sig.fXminT0),
fXmaxT0(sig.fXmaxT0),
fNbinsQ(sig.fNbinsQ),
fXminQ(sig.fXminQ),
fXmaxQ(sig.fXmaxQ),
fNbinsRMS(sig.fNbinsRMS),
fXminRMS(sig.fXminRMS),
fXmaxRMS(sig.fXmaxRMS),
fPeakIntMinus(sig.fPeakIntMinus),
fPeakIntPlus(sig.fPeakIntPlus),
fIsZeroSuppressed(sig.fIsZeroSuppressed),
fLastSector(-1),
fParam(new AliTPCParam),
fPedestalTPC(0x0),
fPadNoiseTPC(0x0),
fOutliers(0x0),
fPedestalROC(0x0),
fPadNoiseROC(0x0),
fCalRocArrayT0(72),
fCalRocArrayQ(72),
fCalRocArrayRMS(72),
fCalRocArrayOutliers(72),
fHistoQArray(72),
fHistoT0Array(72),
fHistoRMSArray(72),
fHMeanTimeSector(0x0),
fVMeanTimeSector(72),
fPadTimesArrayEvent(72),
fPadQArrayEvent(72),
fPadRMSArrayEvent(72),
fPadPedestalArrayEvent(72),
fCurrentChannel(-1),
fCurrentSector(-1),
fCurrentRow(-1),
fCurrentPad(-1),
fMaxPadSignal(-1),
fMaxTimeBin(-1),
fPadSignal(1024),
fPadPedestal(0),
fPadNoise(0),
fVTime0Offset(72),
fVTime0OffsetCounter(72)
{
  //
  // AliTPCSignal default constructor
  //
  
  for (Int_t iSec = 0; iSec < 72; ++iSec){
    const AliTPCCalROC *calQ   = (AliTPCCalROC*)sig.fCalRocArrayQ.UncheckedAt(iSec);
    const AliTPCCalROC *calT0  = (AliTPCCalROC*)sig.fCalRocArrayT0.UncheckedAt(iSec);
    const AliTPCCalROC *calRMS = (AliTPCCalROC*)sig.fCalRocArrayRMS.UncheckedAt(iSec);
    const AliTPCCalROC *calOut = (AliTPCCalROC*)sig.fCalRocArrayOutliers.UncheckedAt(iSec);
    
    const TH2S *hQ   = (TH2S*)sig.fHistoQArray.UncheckedAt(iSec);
    const TH2S *hT0  = (TH2S*)sig.fHistoT0Array.UncheckedAt(iSec);
    const TH2S *hRMS = (TH2S*)sig.fHistoRMSArray.UncheckedAt(iSec);
    
    if ( calQ   != 0x0 ) fCalRocArrayQ.AddAt(new AliTPCCalROC(*calQ), iSec);
    if ( calT0  != 0x0 ) fCalRocArrayT0.AddAt(new AliTPCCalROC(*calT0), iSec);
    if ( calRMS != 0x0 ) fCalRocArrayRMS.AddAt(new AliTPCCalROC(*calRMS), iSec);
    if ( calOut != 0x0 ) fCalRocArrayOutliers.AddAt(new AliTPCCalROC(*calOut), iSec);
    
    if ( hQ != 0x0 ){
      TH2S *hNew = new TH2S(*hQ);
      hNew->SetDirectory(0);
      fHistoQArray.AddAt(hNew,iSec);
    }
    if ( hT0 != 0x0 ){
      TH2S *hNew = new TH2S(*hT0);
      hNew->SetDirectory(0);
      fHistoQArray.AddAt(hNew,iSec);
    }
    if ( hRMS != 0x0 ){
      TH2S *hNew = new TH2S(*hRMS);
      hNew->SetDirectory(0);
      fHistoQArray.AddAt(hNew,iSec);
    }
    fVMeanTimeSector[iSec]=sig.fVMeanTimeSector[iSec];
  }
  
  if ( sig.fHMeanTimeSector ) fHMeanTimeSector=(TH2F*)sig.fHMeanTimeSector->Clone();
  fParam->Update();
}
AliTPCCalibPulser::AliTPCCalibPulser(const TMap *config) :
AliTPCCalibRawBase(),
fNbinsT0(200),
fXminT0(-2),
fXmaxT0(2),
fNbinsQ(200),
fXminQ(10),
fXmaxQ(40),
fNbinsRMS(100),
fXminRMS(0.1),
fXmaxRMS(5.1),
fPeakIntMinus(2),
fPeakIntPlus(2),
fIsZeroSuppressed(kFALSE),
fLastSector(-1),
fParam(new  AliTPCParam),
fPedestalTPC(0x0),
fPadNoiseTPC(0x0),
fOutliers(0x0),
fPedestalROC(0x0),
fPadNoiseROC(0x0),
fCalRocArrayT0(72),
fCalRocArrayQ(72),
fCalRocArrayRMS(72),
fCalRocArrayOutliers(72),
fHistoQArray(72),
fHistoT0Array(72),
fHistoRMSArray(72),
fHMeanTimeSector(0x0),
fVMeanTimeSector(72),
fPadTimesArrayEvent(72),
fPadQArrayEvent(72),
fPadRMSArrayEvent(72),
fPadPedestalArrayEvent(72),
fCurrentChannel(-1),
fCurrentSector(-1),
fCurrentRow(-1),
fCurrentPad(-1),
fMaxPadSignal(-1),
fMaxTimeBin(-1),
fPadSignal(1024),
fPadPedestal(0),
fPadNoise(0),
fVTime0Offset(72),
fVTime0OffsetCounter(72)
{
  //
  // This constructor uses a TMap for setting some parametes
  //
  SetNameTitle("AliTPCCalibPulser","AliTPCCalibPulser");
  fFirstTimeBin=60;
  fLastTimeBin=900;
  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("NbinsT0")) fNbinsT0 = ((TObjString*)config->GetValue("NbinsT0"))->GetString().Atoi();
  if (config->GetValue("XminT0")) fXminT0 = ((TObjString*)config->GetValue("XminT0"))->GetString().Atof();
  if (config->GetValue("XmaxT0")) fXmaxT0 = ((TObjString*)config->GetValue("XmaxT0"))->GetString().Atof();
  if (config->GetValue("NbinsQ")) fNbinsQ = ((TObjString*)config->GetValue("NbinsQ"))->GetString().Atoi();
  if (config->GetValue("XminQ")) fXminQ = ((TObjString*)config->GetValue("XminQ"))->GetString().Atof();
  if (config->GetValue("XmaxQ")) fXmaxQ = ((TObjString*)config->GetValue("XmaxQ"))->GetString().Atof();
  if (config->GetValue("NbinsRMS")) fNbinsRMS = ((TObjString*)config->GetValue("NbinsRMS"))->GetString().Atoi();
  if (config->GetValue("XminRMS")) fXminRMS = ((TObjString*)config->GetValue("XminRMS"))->GetString().Atof();
  if (config->GetValue("XmaxRMS")) fXmaxRMS = ((TObjString*)config->GetValue("XmaxRMS"))->GetString().Atof();
  if (config->GetValue("PeakIntMinus")) fPeakIntMinus = (Int_t)((TObjString*)config->GetValue("PeakIntMinus"))->GetString().Atof();
  if (config->GetValue("PeakIntPlus")) fPeakIntPlus = (Int_t)((TObjString*)config->GetValue("PeakIntPlus"))->GetString().Atof();
  if (config->GetValue("IsZeroSuppressed")) fIsZeroSuppressed = (Bool_t)((TObjString*)config->GetValue("IsZeroSuppressed"))->GetString().Atoi();
  
  fParam->Update();
}
//_____________________________________________________________________
AliTPCCalibPulser& AliTPCCalibPulser::operator = (const  AliTPCCalibPulser &source)
{
  //
  // assignment operator
  //
  if (&source == this) return *this;
  new (this) AliTPCCalibPulser(source);
  
  return *this;
}
//_____________________________________________________________________
AliTPCCalibPulser::~AliTPCCalibPulser()
{
  //
  // destructor
  //
  
  Reset();
  delete fParam;
}
void AliTPCCalibPulser::Reset()
{
  //
  // Delete all information: Arrays, Histograms, CalRoc objects
  //
  fCalRocArrayT0.Delete();
  fCalRocArrayQ.Delete();
  fCalRocArrayRMS.Delete();
  fCalRocArrayOutliers.Delete();
  
  fHistoQArray.Delete();
  fHistoT0Array.Delete();
  fHistoRMSArray.Delete();
  
  fPadTimesArrayEvent.Delete();
  fPadQArrayEvent.Delete();
  fPadRMSArrayEvent.Delete();
  fPadPedestalArrayEvent.Delete();
  
  if (fHMeanTimeSector) delete fHMeanTimeSector;
}
//_____________________________________________________________________
Int_t AliTPCCalibPulser::Update(const Int_t icsector,
                                const Int_t icRow,
                                const Int_t icPad,
                                const Int_t icTimeBin,
                                const Float_t csignal)
{
    //
    // 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
    //
  
  if (icRow<0) return 0;
  if (icPad<0) return 0;
  if (icTimeBin<0) return 0;
  if ( (icTimeBin>fLastTimeBin) || (icTimeBin<fFirstTimeBin)   ) return 0;
  
  if ( icRow<0 || icPad<0 ){
    AliWarning("Wrong Pad or Row number, skipping!");
    return 0;
  }
  
  Int_t iChannel  = fROC->GetRowIndexes(icsector)[icRow]+icPad; //  global pad position in sector
  
    //init first pad and sector in this event
  if ( fCurrentChannel == -1 ) {
    fCurrentChannel = iChannel;
    fCurrentSector  = icsector;
    fCurrentRow     = icRow;
    fCurrentPad     = icPad;
  }
  
    //process last pad if we change to a new one
  if ( iChannel != fCurrentChannel ){
    ProcessPad();
    fLastSector=fCurrentSector;
    fCurrentChannel = iChannel;
    fCurrentSector  = icsector;
    fCurrentRow     = icRow;
    fCurrentPad     = icPad;
  }
  
    //fill signals for current pad
  fPadSignal[icTimeBin]=csignal;
  if ( csignal > fMaxPadSignal ){
    fMaxPadSignal = csignal;
    fMaxTimeBin   = icTimeBin;
  }
  return 0;
}
//_____________________________________________________________________
void AliTPCCalibPulser::FindPedestal(Float_t part)
{
    //
    // find pedestal and noise for the current pad. Use either database or
    // truncated mean with part*100%
    //
  Bool_t noPedestal = kTRUE;;
  if (fPedestalTPC&&fPadNoiseTPC){
        //use pedestal database
        //only load new pedestals if the sector has changed
    if ( fCurrentSector!=fLastSector ){
      fPedestalROC = fPedestalTPC->GetCalROC(fCurrentSector);
      fPadNoiseROC = fPadNoiseTPC->GetCalROC(fCurrentSector);
    }
    
    if ( fPedestalROC&&fPadNoiseROC ){
      fPadPedestal = fPedestalROC->GetValue(fCurrentChannel);
      fPadNoise    = fPadNoiseROC->GetValue(fCurrentChannel);
      noPedestal   = kFALSE;
    }
    
  }
  
    //if we are not running with pedestal database, or for the current sector there is no information
    //available, calculate the pedestal and noise on the fly
  if ( noPedestal ) {
    const Int_t kPedMax = 100;  //maximum pedestal value
    Float_t  max    =  0;
    Int_t    median =  -1;
    Int_t    count0 =  0;
    Int_t    count1 =  0;
  //
    Float_t padSignal=0;
        //
    UShort_t histo[kPedMax];
    memset(histo,0,kPedMax*sizeof(UShort_t));
    
    for (Int_t i=fFirstTimeBin; i<=fLastTimeBin; ++i){
      padSignal = fPadSignal.GetMatrixArray()[i];
      if (padSignal<=0) continue;
      if (padSignal>max && i>10) {
        max = padSignal;
      }
      if (padSignal>kPedMax-1) continue;
      histo[Int_t(padSignal+0.5)]++;
      count0++;
    }
      //
    for (Int_t i=1; i<kPedMax; ++i){
      if (count1<count0*0.5) median=i;
      count1+=histo[i];
    }
  // truncated mean
  //
        // what if by chance histo[median] == 0 ?!?
    Float_t count=histo[median] ,mean=histo[median]*median,  rms=histo[median]*median*median ;
  //
    for (Int_t idelta=1; idelta<10; ++idelta){
      if (median-idelta<=0) continue;
      if (median+idelta>kPedMax) continue;
      if (count<part*count1){
        count+=histo[median-idelta];
        mean +=histo[median-idelta]*(median-idelta);
        rms  +=histo[median-idelta]*(median-idelta)*(median-idelta);
        count+=histo[median+idelta];
        mean +=histo[median+idelta]*(median+idelta);
        rms  +=histo[median+idelta]*(median+idelta)*(median+idelta);
      }
    }
    fPadPedestal = 0;
    fPadNoise    = 0;
    if ( count > 0 ) {
      mean/=count;
      rms    = TMath::Sqrt(TMath::Abs(rms/count-mean*mean));
      fPadPedestal = mean;
      fPadNoise    = rms;
    }
  }
  fPadPedestal*=(Float_t)(!fIsZeroSuppressed);
}
//_____________________________________________________________________
void AliTPCCalibPulser::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
    //
  
  Float_t ceQmax  =0, ceQsum=0, ceTime=0, ceRMS=0;
  Int_t   cemaxpos       = fMaxTimeBin;
  Float_t ceSumThreshold = 10.*TMath::Max(fPadNoise,Float_t(1.));  // threshold for the signal sum
  Float_t ceMaxThreshold = 5.*TMath::Max(fPadNoise,Float_t(1.));  // threshold for the signal max
  const Int_t    kCemin  = fPeakIntMinus;             // range for the analysis of the ce signal +- channels from the peak
  const Int_t    kCemax  = fPeakIntPlus;
  param[0] = ceQmax;
  param[1] = ceTime;
  param[2] = ceRMS;
  qSum     = ceQsum;
  
  if (cemaxpos>0){
    ceQmax = fPadSignal.GetMatrixArray()[cemaxpos]-fPadPedestal;
    if ( ceQmax<ceMaxThreshold ) return;
    for (Int_t i=cemaxpos-kCemin; i<=cemaxpos+kCemax; ++i){
      Float_t signal = fPadSignal.GetMatrixArray()[i]-fPadPedestal;
      if ( (i>fFirstTimeBin) && (i<fLastTimeBin) && (signal>0) ){
        ceTime+=signal*(i+0.5);
        ceRMS +=signal*(i+0.5)*(i+0.5);
        ceQsum+=signal;
      }
    }
  }
  if (ceQsum>ceSumThreshold) {
    ceTime/=ceQsum;
    ceRMS  = TMath::Sqrt(TMath::Abs(ceRMS/ceQsum-ceTime*ceTime));
    ceTime-=GetL1PhaseTB();
        //only fill the Time0Offset if pad was not marked as an outlier!
    if ( !fOutliers ){
      //skip edge pads for calculating the mean time
      if ( !IsEdgePad(fCurrentSector,fCurrentRow,fCurrentPad) ){
        fVTime0Offset.GetMatrixArray()[fCurrentSector]+=ceTime;   // mean time for each sector
        fVTime0OffsetCounter.GetMatrixArray()[fCurrentSector]++;
        GetHistoTSec()->Fill(ceTime,fCurrentSector);
      }
    } else {
      if ( !(fOutliers->GetCalROC(fCurrentSector)->GetValue(fCurrentChannel)) ){
        fVTime0Offset.GetMatrixArray()[fCurrentSector]+=ceTime;   // mean time for each sector
        fVTime0OffsetCounter.GetMatrixArray()[fCurrentSector]++;
      }
    }
    
  //Normalise Q to the 'cell-size': The wire density is the same in the IROC and OROC, therefore the
  //                                the pick-up signal should scale with the pad area. In addition
  //                                the signal should decrease with the wire distance (4mm in IROC, 6mm in OROC),
  //                                ratio 2/3. The pad area we express in mm2 (factor 100). We normalise the signal
  //                                to the OROC signal (factor 2/3 for the IROCs).
    Float_t norm = fParam->GetPadPitchWidth(fCurrentSector)*fParam->GetPadPitchLength(fCurrentSector,fCurrentRow)*100;
    if ( fCurrentSector<fParam->GetNInnerSector() ) norm*=3./2.;
    
    ceQsum/=norm;
  } else {
    ceQmax=0;
    ceTime=0;
    ceRMS =0;
    ceQsum=0;
  }
  param[0] = ceQmax;
  param[1] = ceTime;
  param[2] = ceRMS;
  qSum     = ceQsum;
}
//_____________________________________________________________________
void AliTPCCalibPulser::ProcessPad()
{
  //
  //  Process data of current pad
  //
  
  FindPedestal();
  TVectorD param(3);
  Float_t  qSum;
  FindPulserSignal(param, qSum);
  
  Double_t meanT  = param[1];
  Double_t sigmaT = param[2];
  
  
  //Fill Event T0 counter
  (*GetPadTimesEvent(fCurrentSector,kTRUE)).GetMatrixArray()[fCurrentChannel] = meanT;
  
  //Fill Q histogram
//   GetHistoQ(fCurrentSector,kTRUE)->Fill( TMath::Sqrt(qSum), fCurrentChannel ); //use linear scale, needs also a change in the Analyse funciton.
  GetHistoQ(fCurrentSector,kTRUE)->Fill( qSum, fCurrentChannel );
  
  //Fill RMS histogram
  GetHistoRMS(fCurrentSector,kTRUE)->Fill( sigmaT, fCurrentChannel );
  
  
    //Fill debugging info
  if ( GetStreamLevel()>0 ){
    TTreeSRedirector *streamer=GetDebugStreamer();
    if ( GetStreamLevel() == 1 ){
      if ( streamer ) {
        Int_t padc = fCurrentPad-(fROC->GetNPads(fCurrentSector,fCurrentRow)/2);
        (*streamer) << "PadSignals" <<
          "Event="  <<fNevents <<
          "Sector=" <<fCurrentSector<<
          "Row="    <<fCurrentRow<<
          "Pad="    <<fCurrentPad<<
          "PadC="   <<padc<<
          "Channel="<<fCurrentChannel<<
          "Sum="    <<qSum<<
          "params.="<<&param<<
          "signal.=" <<&fPadSignal<<
          "\n";
      }
    } else { //debug > 1
      (*GetPadPedestalEvent(fCurrentSector,kTRUE))[fCurrentChannel]=fPadPedestal;
      (*GetPadRMSEvent(fCurrentSector,kTRUE))[fCurrentChannel]=sigmaT;
      (*GetPadQEvent(fCurrentSector,kTRUE))[fCurrentChannel]=qSum;
    }
  }
  ResetPad();
}
//_____________________________________________________________________
void AliTPCCalibPulser::EndEvent()
{
    //
    //  Process data of current event
    //
  
    //check if last pad has allready been processed, if not do so
  if ( fMaxTimeBin>-1 ) ProcessPad();
  
    //loop over all ROCs, fill Time0 histogram corrected for the mean Time0 of each ROC
  for ( Int_t iSec = 0; iSec<72; ++iSec ){
    TVectorF *vTimes = GetPadTimesEvent(iSec);
    if ( !vTimes || fVTime0OffsetCounter[iSec]==0 ) continue;
    Float_t time0 = fVTime0Offset[iSec]/fVTime0OffsetCounter[iSec];
    for ( UInt_t iChannel=0; iChannel<fROC->GetNChannels(iSec); ++iChannel ){
      Float_t time  = (*vTimes).GetMatrixArray()[iChannel];
      
      GetHistoT0(iSec,kTRUE)->Fill( time-time0,iChannel );
            //GetHistoT0(iSec,kTRUE)->Fill( time,iChannel );
      
      
      //Debug start
      if ( GetStreamLevel()>1 ){
        TTreeSRedirector *streamer=GetDebugStreamer();
        if ( streamer ) {
          Int_t row=0;
          Int_t pad=0;
          Int_t padc=0;
          
          Float_t q   = (*GetPadQEvent(iSec)).GetMatrixArray()[iChannel];
          Float_t rms = (*GetPadRMSEvent(iSec)).GetMatrixArray()[iChannel];
          
          UInt_t channel=iChannel;
          Int_t sector=iSec;
          
          while ( channel > (fROC->GetRowIndexes(sector)[row]+fROC->GetNPads(sector,row)-1) ) row++;
          pad = channel-fROC->GetRowIndexes(sector)[row];
          padc = pad-(fROC->GetNPads(sector,row)/2);
          
          (*streamer) << "DataPad" <<
    		    "Event=" << fNevents <<
            "Sector="<< sector <<
            "Row="   << row<<
            "Pad="   << pad <<
            "PadC="  << padc <<
            "PadSec="<< channel <<
            "Time0="  << time0 <<
            "Time="  << time <<
            "RMS="   << rms <<
            "Sum="   << q <<
            "\n";
        }
      }
      //Debug end
    }
  }
  ++fNevents;
}
//_____________________________________________________________________
TH2S* AliTPCCalibPulser::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
    //
  if ( !force || arr->UncheckedAt(sector) )
    return (TH2S*)arr->UncheckedAt(sector);
  
  // if we are forced and histogram doesn't yes exist create it
  // new histogram with Q calib information. One value for each pad!
  TH2S* hist = new TH2S(Form("hCalib%s%.2d",type,sector),Form("%s calibration histogram sector %.2d",type,sector),
                        nbinsY, ymin, ymax,
                        fROC->GetNChannels(sector),0,fROC->GetNChannels(sector));
  hist->SetDirectory(0);
  arr->AddAt(hist,sector);
  return hist;
}
//_____________________________________________________________________
TH2S* AliTPCCalibPulser::GetHistoT0(Int_t sector, Bool_t force)
{
    //
    // return pointer to T0 histogram
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fHistoT0Array;
  return GetHisto(sector, arr, fNbinsT0, fXminT0, fXmaxT0, "T0", force);
}
//_____________________________________________________________________
TH2S* AliTPCCalibPulser::GetHistoQ(Int_t sector, Bool_t force)
{
    //
    // return pointer to Q histogram
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fHistoQArray;
  return GetHisto(sector, arr, fNbinsQ, fXminQ, fXmaxQ, "Q", force);
}
//_____________________________________________________________________
TH2S* AliTPCCalibPulser::GetHistoRMS(Int_t sector, Bool_t force)
{
    //
    // return pointer to Q histogram
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fHistoRMSArray;
  return GetHisto(sector, arr, fNbinsRMS, fXminRMS, fXmaxRMS, "RMS", force);
}
//_____________________________________________________________________
TH2F* AliTPCCalibPulser::GetHistoTSec()
{
    //
    // return the pointer to the abs time distribution per sector
    // create it if it does not exist
    //
  if ( !fHMeanTimeSector )   //!!!if you change the binning here, you should also change it in the Analyse Function!!
    fHMeanTimeSector = new TH2F("fHMeanTimeSector","Abs mean time per sector",
                                20*(fLastTimeBin-fFirstTimeBin), fFirstTimeBin, fLastTimeBin,
                                72,0,72);
  return fHMeanTimeSector;
}
//_____________________________________________________________________
TVectorF* AliTPCCalibPulser::GetPadInfoEvent(Int_t sector, TObjArray *arr, Bool_t force)
{
    //
    // 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
    //
  if ( !force || arr->UncheckedAt(sector) )
    return (TVectorF*)arr->UncheckedAt(sector);
  
  TVectorF *vect = new TVectorF(fROC->GetNChannels(sector));
  arr->AddAt(vect,sector);
  return vect;
}
//_____________________________________________________________________
TVectorF* AliTPCCalibPulser::GetPadTimesEvent(Int_t sector, Bool_t force)
{
    //
    // return pointer to Pad Times Array for the current event and sector
    // if force is true create it if it doesn't exist allready
    //
  TObjArray *arr = &fPadTimesArrayEvent;
  return GetPadInfoEvent(sector,arr,force);
}
//_____________________________________________________________________
TVectorF* AliTPCCalibPulser::GetPadQEvent(Int_t sector, Bool_t force)
{
    //
    // 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
    //
  
  TObjArray *arr = &fPadQArrayEvent;
  return GetPadInfoEvent(sector,arr,force);
}
//_____________________________________________________________________
TVectorF* AliTPCCalibPulser::GetPadRMSEvent(Int_t sector, Bool_t force)
{
    //
    // 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
    //
  TObjArray *arr = &fPadRMSArrayEvent;
  return GetPadInfoEvent(sector,arr,force);
}
//_____________________________________________________________________
TVectorF* AliTPCCalibPulser::GetPadPedestalEvent(Int_t sector, Bool_t force)
{
    //
    // 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
    //
  TObjArray *arr = &fPadPedestalArrayEvent;
  return GetPadInfoEvent(sector,arr,force);
}
//_____________________________________________________________________
AliTPCCalROC* AliTPCCalibPulser::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
    //
  if ( !force || arr->UncheckedAt(sector) )
    return (AliTPCCalROC*)arr->UncheckedAt(sector);
  
    // if we are forced and histogram doesn't yes exist create it
  
    // new AliTPCCalROC for T0 information. One value for each pad!
  AliTPCCalROC *croc = new AliTPCCalROC(sector);
  arr->AddAt(croc,sector);
  return croc;
}
//_____________________________________________________________________
AliTPCCalROC* AliTPCCalibPulser::GetCalRocT0(Int_t sector, Bool_t force)
{
    //
    // return pointer to Carge ROC Calibration
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fCalRocArrayT0;
  return GetCalRoc(sector, arr, force);
}
//_____________________________________________________________________
AliTPCCalROC* AliTPCCalibPulser::GetCalRocQ(Int_t sector, Bool_t force)
{
    //
    // return pointer to T0 ROC Calibration
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fCalRocArrayQ;
  return GetCalRoc(sector, arr, force);
}
//_____________________________________________________________________
AliTPCCalROC* AliTPCCalibPulser::GetCalRocRMS(Int_t sector, Bool_t force)
{
    //
    // return pointer to signal width ROC Calibration
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fCalRocArrayRMS;
  return GetCalRoc(sector, arr, force);
}
//_____________________________________________________________________
AliTPCCalROC* AliTPCCalibPulser::GetCalRocOutliers(Int_t sector, Bool_t force)
{
    //
    // return pointer to Outliers
    // if force is true create a new histogram if it doesn't exist allready
    //
  TObjArray *arr = &fCalRocArrayOutliers;
  return GetCalRoc(sector, arr, force);
}
//_____________________________________________________________________
void AliTPCCalibPulser::ResetEvent()
{
    //
    //  Reset global counters  -- Should be called before each event is processed
    //
  fLastSector=-1;
  fCurrentSector=-1;
  fCurrentRow=-1;
  fCurrentPad=-1;
  fCurrentChannel=-1;
  
  ResetPad();
  
  fPadTimesArrayEvent.Delete();
  
  fPadQArrayEvent.Delete();
  fPadRMSArrayEvent.Delete();
  fPadPedestalArrayEvent.Delete();
  
  for ( Int_t i=0; i<72; ++i ){
    fVTime0Offset[i]=0;
    fVTime0OffsetCounter[i]=0;
  }
}
//_____________________________________________________________________
void AliTPCCalibPulser::ResetPad()
{
    //
    //  Reset pad infos -- Should be called after a pad has been processed
    //
  for (Int_t i=fFirstTimeBin; i<fLastTimeBin+1; ++i)
    fPadSignal[i] = 0;
  fMaxTimeBin = -1;
  fMaxPadSignal = -1;
  fPadPedestal  = -1;
  fPadNoise     = -1;
}
//_____________________________________________________________________
Bool_t AliTPCCalibPulser::IsEdgePad(Int_t sector, Int_t row, Int_t pad)
{
    //
    // return true if pad is on the edge of a row
    //
  Int_t edge1   = 0;
  Int_t edge2   = fROC->GetNPads(sector,row)-1;
  if ( pad == edge1 || pad == edge2 ) return kTRUE;
  
  return kFALSE;
}
//_____________________________________________________________________
void AliTPCCalibPulser::Merge(AliTPCCalibPulser * const sig)
{
  //
  //  Merge reference histograms of sig to the current AliTPCCalibPulser
  //

  MergeBase(sig);
  //merge histograms
  for (Int_t iSec=0; iSec<72; ++iSec){
    TH2S *hRefQmerge   = sig->GetHistoQ(iSec);
    TH2S *hRefT0merge  = sig->GetHistoT0(iSec);
    TH2S *hRefRMSmerge = sig->GetHistoRMS(iSec);
    
    
    if ( hRefQmerge ){
      TDirectory *dir = hRefQmerge->GetDirectory(); hRefQmerge->SetDirectory(0);
      TH2S *hRefQ   = GetHistoQ(iSec);
      if ( hRefQ ) hRefQ->Add(hRefQmerge);
      else {
        TH2S *hist = new TH2S(*hRefQmerge);
        hist->SetDirectory(0);
        fHistoQArray.AddAt(hist, iSec);
      }
      hRefQmerge->SetDirectory(dir);
    }
    if ( hRefT0merge ){
      TDirectory *dir = hRefT0merge->GetDirectory(); hRefT0merge->SetDirectory(0);
      TH2S *hRefT0  = GetHistoT0(iSec);
      if ( hRefT0 ) hRefT0->Add(hRefT0merge);
      else {
        TH2S *hist = new TH2S(*hRefT0merge);
        hist->SetDirectory(0);
        fHistoT0Array.AddAt(hist, iSec);
      }
      hRefT0merge->SetDirectory(dir);
    }
    if ( hRefRMSmerge ){
      TDirectory *dir = hRefRMSmerge->GetDirectory(); hRefRMSmerge->SetDirectory(0);
      TH2S *hRefRMS = GetHistoRMS(iSec);
      if ( hRefRMS ) hRefRMS->Add(hRefRMSmerge);
      else {
        TH2S *hist = new TH2S(*hRefRMSmerge);
        hist->SetDirectory(0);
        fHistoRMSArray.AddAt(hist, iSec);
      }
      hRefRMSmerge->SetDirectory(dir);
    }
    
  }
  if ( sig->fHMeanTimeSector ){
    TDirectory *dir = sig->fHMeanTimeSector->GetDirectory(); sig->fHMeanTimeSector->SetDirectory(0);
    if ( fHMeanTimeSector ) fHMeanTimeSector->Add(sig->fHMeanTimeSector);
    else {
      fHMeanTimeSector = new TH2F(*sig->fHMeanTimeSector);
      fHMeanTimeSector->SetDirectory(0);
    }
    sig->fHMeanTimeSector->SetDirectory(dir);
  }
}


//_____________________________________________________________________
Long64_t AliTPCCalibPulser::Merge(TCollection * const list)
{
  //
  // Merge all objects of this type in list
  //
  
  Long64_t nmerged=1;
  
  TIter next(list);
  AliTPCCalibPulser *ce=0;
  TObject *o=0;
  
  while ( (o=next()) ){
    ce=dynamic_cast<AliTPCCalibPulser*>(o);
    if (ce){
      Merge(ce);
      ++nmerged;
    }
  }
  
  return nmerged;
}

//_____________________________________________________________________
void AliTPCCalibPulser::Analyse()
{
  //
  //  Calculate calibration constants
  //
  
  TVectorD paramQ(3);
  TVectorD paramT0(3);
  TVectorD paramRMS(3);
  TMatrixD dummy(3,3);
  //calculate mean time for each sector and mean time for each side
  TH1F hMeanTsec("hMeanTsec","hMeanTsec",20*(fLastTimeBin-fFirstTimeBin),fFirstTimeBin,fLastTimeBin);
  fVMeanTimeSector.Zero();
  
  for (Int_t iSec=0; iSec<72; ++iSec){
    TH2S *hT0 = GetHistoT0(iSec);
    if (!hT0 ) continue;
    //calculate sector mean T
    if ( fHMeanTimeSector ){
      Int_t nbinsT = fHMeanTimeSector->GetNbinsX();
      Int_t offset = (nbinsT+2)*(iSec+1);
      Float_t *arrP=fHMeanTimeSector->GetArray()+offset;
      Int_t entries=0;
      for ( Int_t i=0; i<nbinsT; i++ ) entries+=(Int_t)arrP[i+1];
      hMeanTsec.Set(nbinsT+2,arrP);
      hMeanTsec.SetEntries(entries);
      paramT0.Zero();
      // truncated mean: remove lower 5% and upper 5%
      if ( entries>0 ) AliMathBase::TruncatedMean(&hMeanTsec,&paramT0,0.05,.95);
      fVMeanTimeSector[iSec]=paramT0[1];
    }
    
    AliTPCCalROC *rocQ   = GetCalRocQ  (iSec,kTRUE);
    AliTPCCalROC *rocT0  = GetCalRocT0 (iSec,kTRUE);
    AliTPCCalROC *rocRMS = GetCalRocRMS(iSec,kTRUE);
    AliTPCCalROC *rocOut = GetCalRocOutliers(iSec,kTRUE);
    
    TH2S *hQ   = GetHistoQ(iSec);
    TH2S *hRMS = GetHistoRMS(iSec);
    
    Short_t *arrayhQ   = hQ->GetArray();
    Short_t *arrayhT0  = hT0->GetArray();
    Short_t *arrayhRMS = hRMS->GetArray();
    
    UInt_t nChannels = fROC->GetNChannels(iSec);
    Float_t meanTsec = fVMeanTimeSector[iSec];
    
  //debug
    Int_t row=0;
    Int_t pad=0;
    Int_t padc=0;
  //! debug
    
    for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
      
      Float_t cogTime0 = -1000;
      Float_t cogQ     = -1000;
      Float_t cogRMS   = -1000;
      Float_t cogOut   = 0;
      
      Int_t offsetQ = (fNbinsQ+2)*(iChannel+1)+1;
      Int_t offsetT0 = (fNbinsT0+2)*(iChannel+1)+1;
      Int_t offsetRMS = (fNbinsRMS+2)*(iChannel+1)+1;
/*
      AliMathBase::FitGaus(arrayhQ+offsetQ,fNbinsQ,fXminQ,fXmaxQ,&paramQ,&dummy);
      AliMathBase::FitGaus(arrayhT0+offsetT0,fNbinsT0,fXminT0,fXmaxT0,&paramT0,&dummy);
      AliMathBase::FitGaus(arrayhRMS+offsetRMS,fNbinsRMS,fXminRMS,fXmaxRMS,&paramRMS,&dummy);
      cogQ     = paramQ[1];
      cogTime0 = paramT0[1];
      cogRMS   = paramRMS[1];
*/
      cogQ     = AliMathBase::GetCOG(arrayhQ+offsetQ,fNbinsQ,fXminQ,fXmaxQ);
      cogTime0 = AliMathBase::GetCOG(arrayhT0+offsetT0,fNbinsT0,fXminT0,fXmaxT0);
      cogRMS   = AliMathBase::GetCOG(arrayhRMS+offsetRMS,fNbinsRMS,fXminRMS,fXmaxRMS);
      
      /*
      if ( (cogQ < ??) && (cogTime0 > ??) && (cogTime0<??) && ( cogRMS>??) ){
    cogOut = 1;
    cogTime0 = 0;
    cogQ     = 0;
    cogRMS   = 0;
      }
*/
//       rocQ->SetValue(iChannel, cogQ*cogQ); // changed to linear scale again
      rocQ->SetValue(iChannel, cogQ);
      rocT0->SetValue(iChannel, cogTime0+meanTsec); //offset by mean time of the sector
      rocRMS->SetValue(iChannel, cogRMS);
      rocOut->SetValue(iChannel, cogOut);

      // in case a channel has no data set the value to 0
      if (TMath::Abs(cogTime0-fXminT0)<1e-10){
        rocQ->SetValue(iChannel, 0);
        rocT0->SetValue(iChannel, 0); //offset by mean time of the sector
        rocRMS->SetValue(iChannel, 0);
      }
      
      //debug
      if ( GetStreamLevel() > 2 ){
        TTreeSRedirector *streamer=GetDebugStreamer();
        if ( streamer ) {
          while ( iChannel > (fROC->GetRowIndexes(iSec)[row]+fROC->GetNPads(iSec,row)-1) ) row++;
          pad = iChannel-fROC->GetRowIndexes(iSec)[row];
          padc = pad-(fROC->GetNPads(iSec,row)/2);
          
          (*streamer) << "DataEnd" <<
            "Sector="  << iSec      <<
            "Pad="     << pad       <<
            "PadC="    << padc      <<
            "Row="     << row       <<
            "PadSec="  << iChannel   <<
            "Q="       << cogQ      <<
            "T0="      << cogTime0  <<
            "RMS="     << cogRMS    <<
            "\n";
        }
      }
      //! debug
    }
    
    
  }
}
//_____________________________________________________________________
//_________________________  Test Functions ___________________________
//_____________________________________________________________________
TObjArray* AliTPCCalibPulser::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 ...
  
  
  TObjArray *histArray = new TObjArray(6);
  const Char_t *type[] = {"T0","Q","RMS"};
  Int_t fNbins[3] = {fNbinsT0,fNbinsQ,fNbinsRMS};
  
  for (Int_t itype = 0; itype<3; ++itype){
    for (Int_t imode=0; imode<2; ++imode){
      Int_t icount = itype*2+imode;
      histArray->AddAt(new TH1F(Form("hTestBinning%s%d",type[itype],imode),
                                Form("Test Binning of '%s', mode - %d",type[itype],imode),
                                72,0,72),
                       icount);
    }
  }
  
  
  TH2S *hRef=0x0;
  Short_t *array=0x0;
  for (Int_t itype = 0; itype<3; ++itype){
    for (Int_t iSec=0; iSec<72; ++iSec){
      if ( itype == 0 ) hRef = GetHistoT0(iSec);
      if ( itype == 1 ) hRef = GetHistoQ(iSec);
      if ( itype == 2 ) hRef = GetHistoRMS(iSec);
      if ( hRef == 0x0 ) continue;
      array = (hRef->GetArray());
      UInt_t nChannels = fROC->GetNChannels(iSec);
      
      Int_t nempty=0;
      for (UInt_t iChannel=0; iChannel<nChannels; ++iChannel){
        Int_t nfilled=0;
        Int_t offset = (fNbins[itype]+2)*(iChannel+1)+1;
        Int_t c1 = 0;
        Int_t c2 = 0;
        for (Int_t iBin=0; iBin<fNbins[itype]; ++iBin){
          if ( array[offset+iBin]>0 ) {
            nfilled++;
            if ( c1 && c2 ) nempty++;
            else c1 = 1;
          }
          else if ( c1 ) c2 = 1;
          
        }
        ((TH1F*)histArray->At(itype*2))->Fill(nfilled);
      }
      ((TH1F*)histArray->At(itype*2+1))->Fill(iSec,nempty);
    }
  }
  return histArray;
}
 AliTPCCalibPulser.cxx:1
 AliTPCCalibPulser.cxx:2
 AliTPCCalibPulser.cxx:3
 AliTPCCalibPulser.cxx:4
 AliTPCCalibPulser.cxx:5
 AliTPCCalibPulser.cxx:6
 AliTPCCalibPulser.cxx:7
 AliTPCCalibPulser.cxx:8
 AliTPCCalibPulser.cxx:9
 AliTPCCalibPulser.cxx:10
 AliTPCCalibPulser.cxx:11
 AliTPCCalibPulser.cxx:12
 AliTPCCalibPulser.cxx:13
 AliTPCCalibPulser.cxx:14
 AliTPCCalibPulser.cxx:15
 AliTPCCalibPulser.cxx:16
 AliTPCCalibPulser.cxx:17
 AliTPCCalibPulser.cxx:18
 AliTPCCalibPulser.cxx:19
 AliTPCCalibPulser.cxx:20
 AliTPCCalibPulser.cxx:21
 AliTPCCalibPulser.cxx:22
 AliTPCCalibPulser.cxx:23
 AliTPCCalibPulser.cxx:24
 AliTPCCalibPulser.cxx:25
 AliTPCCalibPulser.cxx:26
 AliTPCCalibPulser.cxx:27
 AliTPCCalibPulser.cxx:28
 AliTPCCalibPulser.cxx:29
 AliTPCCalibPulser.cxx:30
 AliTPCCalibPulser.cxx:31
 AliTPCCalibPulser.cxx:32
 AliTPCCalibPulser.cxx:33
 AliTPCCalibPulser.cxx:34
 AliTPCCalibPulser.cxx:35
 AliTPCCalibPulser.cxx:36
 AliTPCCalibPulser.cxx:37
 AliTPCCalibPulser.cxx:38
 AliTPCCalibPulser.cxx:39
 AliTPCCalibPulser.cxx:40
 AliTPCCalibPulser.cxx:41
 AliTPCCalibPulser.cxx:42
 AliTPCCalibPulser.cxx:43
 AliTPCCalibPulser.cxx:44
 AliTPCCalibPulser.cxx:45
 AliTPCCalibPulser.cxx:46
 AliTPCCalibPulser.cxx:47
 AliTPCCalibPulser.cxx:48
 AliTPCCalibPulser.cxx:49
 AliTPCCalibPulser.cxx:50
 AliTPCCalibPulser.cxx:51
 AliTPCCalibPulser.cxx:52
 AliTPCCalibPulser.cxx:53
 AliTPCCalibPulser.cxx:54
 AliTPCCalibPulser.cxx:55
 AliTPCCalibPulser.cxx:56
 AliTPCCalibPulser.cxx:57
 AliTPCCalibPulser.cxx:58
 AliTPCCalibPulser.cxx:59
 AliTPCCalibPulser.cxx:60
 AliTPCCalibPulser.cxx:61
 AliTPCCalibPulser.cxx:62
 AliTPCCalibPulser.cxx:63
 AliTPCCalibPulser.cxx:64
 AliTPCCalibPulser.cxx:65
 AliTPCCalibPulser.cxx:66
 AliTPCCalibPulser.cxx:67
 AliTPCCalibPulser.cxx:68
 AliTPCCalibPulser.cxx:69
 AliTPCCalibPulser.cxx:70
 AliTPCCalibPulser.cxx:71
 AliTPCCalibPulser.cxx:72
 AliTPCCalibPulser.cxx:73
 AliTPCCalibPulser.cxx:74
 AliTPCCalibPulser.cxx:75
 AliTPCCalibPulser.cxx:76
 AliTPCCalibPulser.cxx:77
 AliTPCCalibPulser.cxx:78
 AliTPCCalibPulser.cxx:79
 AliTPCCalibPulser.cxx:80
 AliTPCCalibPulser.cxx:81
 AliTPCCalibPulser.cxx:82
 AliTPCCalibPulser.cxx:83
 AliTPCCalibPulser.cxx:84
 AliTPCCalibPulser.cxx:85
 AliTPCCalibPulser.cxx:86
 AliTPCCalibPulser.cxx:87
 AliTPCCalibPulser.cxx:88
 AliTPCCalibPulser.cxx:89
 AliTPCCalibPulser.cxx:90
 AliTPCCalibPulser.cxx:91
 AliTPCCalibPulser.cxx:92
 AliTPCCalibPulser.cxx:93
 AliTPCCalibPulser.cxx:94
 AliTPCCalibPulser.cxx:95
 AliTPCCalibPulser.cxx:96
 AliTPCCalibPulser.cxx:97
 AliTPCCalibPulser.cxx:98
 AliTPCCalibPulser.cxx:99
 AliTPCCalibPulser.cxx:100
 AliTPCCalibPulser.cxx:101
 AliTPCCalibPulser.cxx:102
 AliTPCCalibPulser.cxx:103
 AliTPCCalibPulser.cxx:104
 AliTPCCalibPulser.cxx:105
 AliTPCCalibPulser.cxx:106
 AliTPCCalibPulser.cxx:107
 AliTPCCalibPulser.cxx:108
 AliTPCCalibPulser.cxx:109
 AliTPCCalibPulser.cxx:110
 AliTPCCalibPulser.cxx:111
 AliTPCCalibPulser.cxx:112
 AliTPCCalibPulser.cxx:113
 AliTPCCalibPulser.cxx:114
 AliTPCCalibPulser.cxx:115
 AliTPCCalibPulser.cxx:116
 AliTPCCalibPulser.cxx:117
 AliTPCCalibPulser.cxx:118
 AliTPCCalibPulser.cxx:119
 AliTPCCalibPulser.cxx:120
 AliTPCCalibPulser.cxx:121
 AliTPCCalibPulser.cxx:122
 AliTPCCalibPulser.cxx:123
 AliTPCCalibPulser.cxx:124
 AliTPCCalibPulser.cxx:125
 AliTPCCalibPulser.cxx:126
 AliTPCCalibPulser.cxx:127
 AliTPCCalibPulser.cxx:128
 AliTPCCalibPulser.cxx:129
 AliTPCCalibPulser.cxx:130
 AliTPCCalibPulser.cxx:131
 AliTPCCalibPulser.cxx:132
 AliTPCCalibPulser.cxx:133
 AliTPCCalibPulser.cxx:134
 AliTPCCalibPulser.cxx:135
 AliTPCCalibPulser.cxx:136
 AliTPCCalibPulser.cxx:137
 AliTPCCalibPulser.cxx:138
 AliTPCCalibPulser.cxx:139
 AliTPCCalibPulser.cxx:140
 AliTPCCalibPulser.cxx:141
 AliTPCCalibPulser.cxx:142
 AliTPCCalibPulser.cxx:143
 AliTPCCalibPulser.cxx:144
 AliTPCCalibPulser.cxx:145
 AliTPCCalibPulser.cxx:146
 AliTPCCalibPulser.cxx:147
 AliTPCCalibPulser.cxx:148
 AliTPCCalibPulser.cxx:149
 AliTPCCalibPulser.cxx:150
 AliTPCCalibPulser.cxx:151
 AliTPCCalibPulser.cxx:152
 AliTPCCalibPulser.cxx:153
 AliTPCCalibPulser.cxx:154
 AliTPCCalibPulser.cxx:155
 AliTPCCalibPulser.cxx:156
 AliTPCCalibPulser.cxx:157
 AliTPCCalibPulser.cxx:158
 AliTPCCalibPulser.cxx:159
 AliTPCCalibPulser.cxx:160
 AliTPCCalibPulser.cxx:161
 AliTPCCalibPulser.cxx:162
 AliTPCCalibPulser.cxx:163
 AliTPCCalibPulser.cxx:164
 AliTPCCalibPulser.cxx:165
 AliTPCCalibPulser.cxx:166
 AliTPCCalibPulser.cxx:167
 AliTPCCalibPulser.cxx:168
 AliTPCCalibPulser.cxx:169
 AliTPCCalibPulser.cxx:170
 AliTPCCalibPulser.cxx:171
 AliTPCCalibPulser.cxx:172
 AliTPCCalibPulser.cxx:173
 AliTPCCalibPulser.cxx:174
 AliTPCCalibPulser.cxx:175
 AliTPCCalibPulser.cxx:176
 AliTPCCalibPulser.cxx:177
 AliTPCCalibPulser.cxx:178
 AliTPCCalibPulser.cxx:179
 AliTPCCalibPulser.cxx:180
 AliTPCCalibPulser.cxx:181
 AliTPCCalibPulser.cxx:182
 AliTPCCalibPulser.cxx:183
 AliTPCCalibPulser.cxx:184
 AliTPCCalibPulser.cxx:185
 AliTPCCalibPulser.cxx:186
 AliTPCCalibPulser.cxx:187
 AliTPCCalibPulser.cxx:188
 AliTPCCalibPulser.cxx:189
 AliTPCCalibPulser.cxx:190
 AliTPCCalibPulser.cxx:191
 AliTPCCalibPulser.cxx:192
 AliTPCCalibPulser.cxx:193
 AliTPCCalibPulser.cxx:194
 AliTPCCalibPulser.cxx:195
 AliTPCCalibPulser.cxx:196
 AliTPCCalibPulser.cxx:197
 AliTPCCalibPulser.cxx:198
 AliTPCCalibPulser.cxx:199
 AliTPCCalibPulser.cxx:200
 AliTPCCalibPulser.cxx:201
 AliTPCCalibPulser.cxx:202
 AliTPCCalibPulser.cxx:203
 AliTPCCalibPulser.cxx:204
 AliTPCCalibPulser.cxx:205
 AliTPCCalibPulser.cxx:206
 AliTPCCalibPulser.cxx:207
 AliTPCCalibPulser.cxx:208
 AliTPCCalibPulser.cxx:209
 AliTPCCalibPulser.cxx:210
 AliTPCCalibPulser.cxx:211
 AliTPCCalibPulser.cxx:212
 AliTPCCalibPulser.cxx:213
 AliTPCCalibPulser.cxx:214
 AliTPCCalibPulser.cxx:215
 AliTPCCalibPulser.cxx:216
 AliTPCCalibPulser.cxx:217
 AliTPCCalibPulser.cxx:218
 AliTPCCalibPulser.cxx:219
 AliTPCCalibPulser.cxx:220
 AliTPCCalibPulser.cxx:221
 AliTPCCalibPulser.cxx:222
 AliTPCCalibPulser.cxx:223
 AliTPCCalibPulser.cxx:224
 AliTPCCalibPulser.cxx:225
 AliTPCCalibPulser.cxx:226
 AliTPCCalibPulser.cxx:227
 AliTPCCalibPulser.cxx:228
 AliTPCCalibPulser.cxx:229
 AliTPCCalibPulser.cxx:230
 AliTPCCalibPulser.cxx:231
 AliTPCCalibPulser.cxx:232
 AliTPCCalibPulser.cxx:233
 AliTPCCalibPulser.cxx:234
 AliTPCCalibPulser.cxx:235
 AliTPCCalibPulser.cxx:236
 AliTPCCalibPulser.cxx:237
 AliTPCCalibPulser.cxx:238
 AliTPCCalibPulser.cxx:239
 AliTPCCalibPulser.cxx:240
 AliTPCCalibPulser.cxx:241
 AliTPCCalibPulser.cxx:242
 AliTPCCalibPulser.cxx:243
 AliTPCCalibPulser.cxx:244
 AliTPCCalibPulser.cxx:245
 AliTPCCalibPulser.cxx:246
 AliTPCCalibPulser.cxx:247
 AliTPCCalibPulser.cxx:248
 AliTPCCalibPulser.cxx:249
 AliTPCCalibPulser.cxx:250
 AliTPCCalibPulser.cxx:251
 AliTPCCalibPulser.cxx:252
 AliTPCCalibPulser.cxx:253
 AliTPCCalibPulser.cxx:254
 AliTPCCalibPulser.cxx:255
 AliTPCCalibPulser.cxx:256
 AliTPCCalibPulser.cxx:257
 AliTPCCalibPulser.cxx:258
 AliTPCCalibPulser.cxx:259
 AliTPCCalibPulser.cxx:260
 AliTPCCalibPulser.cxx:261
 AliTPCCalibPulser.cxx:262
 AliTPCCalibPulser.cxx:263
 AliTPCCalibPulser.cxx:264
 AliTPCCalibPulser.cxx:265
 AliTPCCalibPulser.cxx:266
 AliTPCCalibPulser.cxx:267
 AliTPCCalibPulser.cxx:268
 AliTPCCalibPulser.cxx:269
 AliTPCCalibPulser.cxx:270
 AliTPCCalibPulser.cxx:271
 AliTPCCalibPulser.cxx:272
 AliTPCCalibPulser.cxx:273
 AliTPCCalibPulser.cxx:274
 AliTPCCalibPulser.cxx:275
 AliTPCCalibPulser.cxx:276
 AliTPCCalibPulser.cxx:277
 AliTPCCalibPulser.cxx:278
 AliTPCCalibPulser.cxx:279
 AliTPCCalibPulser.cxx:280
 AliTPCCalibPulser.cxx:281
 AliTPCCalibPulser.cxx:282
 AliTPCCalibPulser.cxx:283
 AliTPCCalibPulser.cxx:284
 AliTPCCalibPulser.cxx:285
 AliTPCCalibPulser.cxx:286
 AliTPCCalibPulser.cxx:287
 AliTPCCalibPulser.cxx:288
 AliTPCCalibPulser.cxx:289
 AliTPCCalibPulser.cxx:290
 AliTPCCalibPulser.cxx:291
 AliTPCCalibPulser.cxx:292
 AliTPCCalibPulser.cxx:293
 AliTPCCalibPulser.cxx:294
 AliTPCCalibPulser.cxx:295
 AliTPCCalibPulser.cxx:296
 AliTPCCalibPulser.cxx:297
 AliTPCCalibPulser.cxx:298
 AliTPCCalibPulser.cxx:299
 AliTPCCalibPulser.cxx:300
 AliTPCCalibPulser.cxx:301
 AliTPCCalibPulser.cxx:302
 AliTPCCalibPulser.cxx:303
 AliTPCCalibPulser.cxx:304
 AliTPCCalibPulser.cxx:305
 AliTPCCalibPulser.cxx:306
 AliTPCCalibPulser.cxx:307
 AliTPCCalibPulser.cxx:308
 AliTPCCalibPulser.cxx:309
 AliTPCCalibPulser.cxx:310
 AliTPCCalibPulser.cxx:311
 AliTPCCalibPulser.cxx:312
 AliTPCCalibPulser.cxx:313
 AliTPCCalibPulser.cxx:314
 AliTPCCalibPulser.cxx:315
 AliTPCCalibPulser.cxx:316
 AliTPCCalibPulser.cxx:317
 AliTPCCalibPulser.cxx:318
 AliTPCCalibPulser.cxx:319
 AliTPCCalibPulser.cxx:320
 AliTPCCalibPulser.cxx:321
 AliTPCCalibPulser.cxx:322
 AliTPCCalibPulser.cxx:323
 AliTPCCalibPulser.cxx:324
 AliTPCCalibPulser.cxx:325
 AliTPCCalibPulser.cxx:326
 AliTPCCalibPulser.cxx:327
 AliTPCCalibPulser.cxx:328
 AliTPCCalibPulser.cxx:329
 AliTPCCalibPulser.cxx:330
 AliTPCCalibPulser.cxx:331
 AliTPCCalibPulser.cxx:332
 AliTPCCalibPulser.cxx:333
 AliTPCCalibPulser.cxx:334
 AliTPCCalibPulser.cxx:335
 AliTPCCalibPulser.cxx:336
 AliTPCCalibPulser.cxx:337
 AliTPCCalibPulser.cxx:338
 AliTPCCalibPulser.cxx:339
 AliTPCCalibPulser.cxx:340
 AliTPCCalibPulser.cxx:341
 AliTPCCalibPulser.cxx:342
 AliTPCCalibPulser.cxx:343
 AliTPCCalibPulser.cxx:344
 AliTPCCalibPulser.cxx:345
 AliTPCCalibPulser.cxx:346
 AliTPCCalibPulser.cxx:347
 AliTPCCalibPulser.cxx:348
 AliTPCCalibPulser.cxx:349
 AliTPCCalibPulser.cxx:350
 AliTPCCalibPulser.cxx:351
 AliTPCCalibPulser.cxx:352
 AliTPCCalibPulser.cxx:353
 AliTPCCalibPulser.cxx:354
 AliTPCCalibPulser.cxx:355
 AliTPCCalibPulser.cxx:356
 AliTPCCalibPulser.cxx:357
 AliTPCCalibPulser.cxx:358
 AliTPCCalibPulser.cxx:359
 AliTPCCalibPulser.cxx:360
 AliTPCCalibPulser.cxx:361
 AliTPCCalibPulser.cxx:362
 AliTPCCalibPulser.cxx:363
 AliTPCCalibPulser.cxx:364
 AliTPCCalibPulser.cxx:365
 AliTPCCalibPulser.cxx:366
 AliTPCCalibPulser.cxx:367
 AliTPCCalibPulser.cxx:368
 AliTPCCalibPulser.cxx:369
 AliTPCCalibPulser.cxx:370
 AliTPCCalibPulser.cxx:371
 AliTPCCalibPulser.cxx:372
 AliTPCCalibPulser.cxx:373
 AliTPCCalibPulser.cxx:374
 AliTPCCalibPulser.cxx:375
 AliTPCCalibPulser.cxx:376
 AliTPCCalibPulser.cxx:377
 AliTPCCalibPulser.cxx:378
 AliTPCCalibPulser.cxx:379
 AliTPCCalibPulser.cxx:380
 AliTPCCalibPulser.cxx:381
 AliTPCCalibPulser.cxx:382
 AliTPCCalibPulser.cxx:383
 AliTPCCalibPulser.cxx:384
 AliTPCCalibPulser.cxx:385
 AliTPCCalibPulser.cxx:386
 AliTPCCalibPulser.cxx:387
 AliTPCCalibPulser.cxx:388
 AliTPCCalibPulser.cxx:389
 AliTPCCalibPulser.cxx:390
 AliTPCCalibPulser.cxx:391
 AliTPCCalibPulser.cxx:392
 AliTPCCalibPulser.cxx:393
 AliTPCCalibPulser.cxx:394
 AliTPCCalibPulser.cxx:395
 AliTPCCalibPulser.cxx:396
 AliTPCCalibPulser.cxx:397
 AliTPCCalibPulser.cxx:398
 AliTPCCalibPulser.cxx:399
 AliTPCCalibPulser.cxx:400
 AliTPCCalibPulser.cxx:401
 AliTPCCalibPulser.cxx:402
 AliTPCCalibPulser.cxx:403
 AliTPCCalibPulser.cxx:404
 AliTPCCalibPulser.cxx:405
 AliTPCCalibPulser.cxx:406
 AliTPCCalibPulser.cxx:407
 AliTPCCalibPulser.cxx:408
 AliTPCCalibPulser.cxx:409
 AliTPCCalibPulser.cxx:410
 AliTPCCalibPulser.cxx:411
 AliTPCCalibPulser.cxx:412
 AliTPCCalibPulser.cxx:413
 AliTPCCalibPulser.cxx:414
 AliTPCCalibPulser.cxx:415
 AliTPCCalibPulser.cxx:416
 AliTPCCalibPulser.cxx:417
 AliTPCCalibPulser.cxx:418
 AliTPCCalibPulser.cxx:419
 AliTPCCalibPulser.cxx:420
 AliTPCCalibPulser.cxx:421
 AliTPCCalibPulser.cxx:422
 AliTPCCalibPulser.cxx:423
 AliTPCCalibPulser.cxx:424
 AliTPCCalibPulser.cxx:425
 AliTPCCalibPulser.cxx:426
 AliTPCCalibPulser.cxx:427
 AliTPCCalibPulser.cxx:428
 AliTPCCalibPulser.cxx:429
 AliTPCCalibPulser.cxx:430
 AliTPCCalibPulser.cxx:431
 AliTPCCalibPulser.cxx:432
 AliTPCCalibPulser.cxx:433
 AliTPCCalibPulser.cxx:434
 AliTPCCalibPulser.cxx:435
 AliTPCCalibPulser.cxx:436
 AliTPCCalibPulser.cxx:437
 AliTPCCalibPulser.cxx:438
 AliTPCCalibPulser.cxx:439
 AliTPCCalibPulser.cxx:440
 AliTPCCalibPulser.cxx:441
 AliTPCCalibPulser.cxx:442
 AliTPCCalibPulser.cxx:443
 AliTPCCalibPulser.cxx:444
 AliTPCCalibPulser.cxx:445
 AliTPCCalibPulser.cxx:446
 AliTPCCalibPulser.cxx:447
 AliTPCCalibPulser.cxx:448
 AliTPCCalibPulser.cxx:449
 AliTPCCalibPulser.cxx:450
 AliTPCCalibPulser.cxx:451
 AliTPCCalibPulser.cxx:452
 AliTPCCalibPulser.cxx:453
 AliTPCCalibPulser.cxx:454
 AliTPCCalibPulser.cxx:455
 AliTPCCalibPulser.cxx:456
 AliTPCCalibPulser.cxx:457
 AliTPCCalibPulser.cxx:458
 AliTPCCalibPulser.cxx:459
 AliTPCCalibPulser.cxx:460
 AliTPCCalibPulser.cxx:461
 AliTPCCalibPulser.cxx:462
 AliTPCCalibPulser.cxx:463
 AliTPCCalibPulser.cxx:464
 AliTPCCalibPulser.cxx:465
 AliTPCCalibPulser.cxx:466
 AliTPCCalibPulser.cxx:467
 AliTPCCalibPulser.cxx:468
 AliTPCCalibPulser.cxx:469
 AliTPCCalibPulser.cxx:470
 AliTPCCalibPulser.cxx:471
 AliTPCCalibPulser.cxx:472
 AliTPCCalibPulser.cxx:473
 AliTPCCalibPulser.cxx:474
 AliTPCCalibPulser.cxx:475
 AliTPCCalibPulser.cxx:476
 AliTPCCalibPulser.cxx:477
 AliTPCCalibPulser.cxx:478
 AliTPCCalibPulser.cxx:479
 AliTPCCalibPulser.cxx:480
 AliTPCCalibPulser.cxx:481
 AliTPCCalibPulser.cxx:482
 AliTPCCalibPulser.cxx:483
 AliTPCCalibPulser.cxx:484
 AliTPCCalibPulser.cxx:485
 AliTPCCalibPulser.cxx:486
 AliTPCCalibPulser.cxx:487
 AliTPCCalibPulser.cxx:488
 AliTPCCalibPulser.cxx:489
 AliTPCCalibPulser.cxx:490
 AliTPCCalibPulser.cxx:491
 AliTPCCalibPulser.cxx:492
 AliTPCCalibPulser.cxx:493
 AliTPCCalibPulser.cxx:494
 AliTPCCalibPulser.cxx:495
 AliTPCCalibPulser.cxx:496
 AliTPCCalibPulser.cxx:497
 AliTPCCalibPulser.cxx:498
 AliTPCCalibPulser.cxx:499
 AliTPCCalibPulser.cxx:500
 AliTPCCalibPulser.cxx:501
 AliTPCCalibPulser.cxx:502
 AliTPCCalibPulser.cxx:503
 AliTPCCalibPulser.cxx:504
 AliTPCCalibPulser.cxx:505
 AliTPCCalibPulser.cxx:506
 AliTPCCalibPulser.cxx:507
 AliTPCCalibPulser.cxx:508
 AliTPCCalibPulser.cxx:509
 AliTPCCalibPulser.cxx:510
 AliTPCCalibPulser.cxx:511
 AliTPCCalibPulser.cxx:512
 AliTPCCalibPulser.cxx:513
 AliTPCCalibPulser.cxx:514
 AliTPCCalibPulser.cxx:515
 AliTPCCalibPulser.cxx:516
 AliTPCCalibPulser.cxx:517
 AliTPCCalibPulser.cxx:518
 AliTPCCalibPulser.cxx:519
 AliTPCCalibPulser.cxx:520
 AliTPCCalibPulser.cxx:521
 AliTPCCalibPulser.cxx:522
 AliTPCCalibPulser.cxx:523
 AliTPCCalibPulser.cxx:524
 AliTPCCalibPulser.cxx:525
 AliTPCCalibPulser.cxx:526
 AliTPCCalibPulser.cxx:527
 AliTPCCalibPulser.cxx:528
 AliTPCCalibPulser.cxx:529
 AliTPCCalibPulser.cxx:530
 AliTPCCalibPulser.cxx:531
 AliTPCCalibPulser.cxx:532
 AliTPCCalibPulser.cxx:533
 AliTPCCalibPulser.cxx:534
 AliTPCCalibPulser.cxx:535
 AliTPCCalibPulser.cxx:536
 AliTPCCalibPulser.cxx:537
 AliTPCCalibPulser.cxx:538
 AliTPCCalibPulser.cxx:539
 AliTPCCalibPulser.cxx:540
 AliTPCCalibPulser.cxx:541
 AliTPCCalibPulser.cxx:542
 AliTPCCalibPulser.cxx:543
 AliTPCCalibPulser.cxx:544
 AliTPCCalibPulser.cxx:545
 AliTPCCalibPulser.cxx:546
 AliTPCCalibPulser.cxx:547
 AliTPCCalibPulser.cxx:548
 AliTPCCalibPulser.cxx:549
 AliTPCCalibPulser.cxx:550
 AliTPCCalibPulser.cxx:551
 AliTPCCalibPulser.cxx:552
 AliTPCCalibPulser.cxx:553
 AliTPCCalibPulser.cxx:554
 AliTPCCalibPulser.cxx:555
 AliTPCCalibPulser.cxx:556
 AliTPCCalibPulser.cxx:557
 AliTPCCalibPulser.cxx:558
 AliTPCCalibPulser.cxx:559
 AliTPCCalibPulser.cxx:560
 AliTPCCalibPulser.cxx:561
 AliTPCCalibPulser.cxx:562
 AliTPCCalibPulser.cxx:563
 AliTPCCalibPulser.cxx:564
 AliTPCCalibPulser.cxx:565
 AliTPCCalibPulser.cxx:566
 AliTPCCalibPulser.cxx:567
 AliTPCCalibPulser.cxx:568
 AliTPCCalibPulser.cxx:569
 AliTPCCalibPulser.cxx:570
 AliTPCCalibPulser.cxx:571
 AliTPCCalibPulser.cxx:572
 AliTPCCalibPulser.cxx:573
 AliTPCCalibPulser.cxx:574
 AliTPCCalibPulser.cxx:575
 AliTPCCalibPulser.cxx:576
 AliTPCCalibPulser.cxx:577
 AliTPCCalibPulser.cxx:578
 AliTPCCalibPulser.cxx:579
 AliTPCCalibPulser.cxx:580
 AliTPCCalibPulser.cxx:581
 AliTPCCalibPulser.cxx:582
 AliTPCCalibPulser.cxx:583
 AliTPCCalibPulser.cxx:584
 AliTPCCalibPulser.cxx:585
 AliTPCCalibPulser.cxx:586
 AliTPCCalibPulser.cxx:587
 AliTPCCalibPulser.cxx:588
 AliTPCCalibPulser.cxx:589
 AliTPCCalibPulser.cxx:590
 AliTPCCalibPulser.cxx:591
 AliTPCCalibPulser.cxx:592
 AliTPCCalibPulser.cxx:593
 AliTPCCalibPulser.cxx:594
 AliTPCCalibPulser.cxx:595
 AliTPCCalibPulser.cxx:596
 AliTPCCalibPulser.cxx:597
 AliTPCCalibPulser.cxx:598
 AliTPCCalibPulser.cxx:599
 AliTPCCalibPulser.cxx:600
 AliTPCCalibPulser.cxx:601
 AliTPCCalibPulser.cxx:602
 AliTPCCalibPulser.cxx:603
 AliTPCCalibPulser.cxx:604
 AliTPCCalibPulser.cxx:605
 AliTPCCalibPulser.cxx:606
 AliTPCCalibPulser.cxx:607
 AliTPCCalibPulser.cxx:608
 AliTPCCalibPulser.cxx:609
 AliTPCCalibPulser.cxx:610
 AliTPCCalibPulser.cxx:611
 AliTPCCalibPulser.cxx:612
 AliTPCCalibPulser.cxx:613
 AliTPCCalibPulser.cxx:614
 AliTPCCalibPulser.cxx:615
 AliTPCCalibPulser.cxx:616
 AliTPCCalibPulser.cxx:617
 AliTPCCalibPulser.cxx:618
 AliTPCCalibPulser.cxx:619
 AliTPCCalibPulser.cxx:620
 AliTPCCalibPulser.cxx:621
 AliTPCCalibPulser.cxx:622
 AliTPCCalibPulser.cxx:623
 AliTPCCalibPulser.cxx:624
 AliTPCCalibPulser.cxx:625
 AliTPCCalibPulser.cxx:626
 AliTPCCalibPulser.cxx:627
 AliTPCCalibPulser.cxx:628
 AliTPCCalibPulser.cxx:629
 AliTPCCalibPulser.cxx:630
 AliTPCCalibPulser.cxx:631
 AliTPCCalibPulser.cxx:632
 AliTPCCalibPulser.cxx:633
 AliTPCCalibPulser.cxx:634
 AliTPCCalibPulser.cxx:635
 AliTPCCalibPulser.cxx:636
 AliTPCCalibPulser.cxx:637
 AliTPCCalibPulser.cxx:638
 AliTPCCalibPulser.cxx:639
 AliTPCCalibPulser.cxx:640
 AliTPCCalibPulser.cxx:641
 AliTPCCalibPulser.cxx:642
 AliTPCCalibPulser.cxx:643
 AliTPCCalibPulser.cxx:644
 AliTPCCalibPulser.cxx:645
 AliTPCCalibPulser.cxx:646
 AliTPCCalibPulser.cxx:647
 AliTPCCalibPulser.cxx:648
 AliTPCCalibPulser.cxx:649
 AliTPCCalibPulser.cxx:650
 AliTPCCalibPulser.cxx:651
 AliTPCCalibPulser.cxx:652
 AliTPCCalibPulser.cxx:653
 AliTPCCalibPulser.cxx:654
 AliTPCCalibPulser.cxx:655
 AliTPCCalibPulser.cxx:656
 AliTPCCalibPulser.cxx:657
 AliTPCCalibPulser.cxx:658
 AliTPCCalibPulser.cxx:659
 AliTPCCalibPulser.cxx:660
 AliTPCCalibPulser.cxx:661
 AliTPCCalibPulser.cxx:662
 AliTPCCalibPulser.cxx:663
 AliTPCCalibPulser.cxx:664
 AliTPCCalibPulser.cxx:665
 AliTPCCalibPulser.cxx:666
 AliTPCCalibPulser.cxx:667
 AliTPCCalibPulser.cxx:668
 AliTPCCalibPulser.cxx:669
 AliTPCCalibPulser.cxx:670
 AliTPCCalibPulser.cxx:671
 AliTPCCalibPulser.cxx:672
 AliTPCCalibPulser.cxx:673
 AliTPCCalibPulser.cxx:674
 AliTPCCalibPulser.cxx:675
 AliTPCCalibPulser.cxx:676
 AliTPCCalibPulser.cxx:677
 AliTPCCalibPulser.cxx:678
 AliTPCCalibPulser.cxx:679
 AliTPCCalibPulser.cxx:680
 AliTPCCalibPulser.cxx:681
 AliTPCCalibPulser.cxx:682
 AliTPCCalibPulser.cxx:683
 AliTPCCalibPulser.cxx:684
 AliTPCCalibPulser.cxx:685
 AliTPCCalibPulser.cxx:686
 AliTPCCalibPulser.cxx:687
 AliTPCCalibPulser.cxx:688
 AliTPCCalibPulser.cxx:689
 AliTPCCalibPulser.cxx:690
 AliTPCCalibPulser.cxx:691
 AliTPCCalibPulser.cxx:692
 AliTPCCalibPulser.cxx:693
 AliTPCCalibPulser.cxx:694
 AliTPCCalibPulser.cxx:695
 AliTPCCalibPulser.cxx:696
 AliTPCCalibPulser.cxx:697
 AliTPCCalibPulser.cxx:698
 AliTPCCalibPulser.cxx:699
 AliTPCCalibPulser.cxx:700
 AliTPCCalibPulser.cxx:701
 AliTPCCalibPulser.cxx:702
 AliTPCCalibPulser.cxx:703
 AliTPCCalibPulser.cxx:704
 AliTPCCalibPulser.cxx:705
 AliTPCCalibPulser.cxx:706
 AliTPCCalibPulser.cxx:707
 AliTPCCalibPulser.cxx:708
 AliTPCCalibPulser.cxx:709
 AliTPCCalibPulser.cxx:710
 AliTPCCalibPulser.cxx:711
 AliTPCCalibPulser.cxx:712
 AliTPCCalibPulser.cxx:713
 AliTPCCalibPulser.cxx:714
 AliTPCCalibPulser.cxx:715
 AliTPCCalibPulser.cxx:716
 AliTPCCalibPulser.cxx:717
 AliTPCCalibPulser.cxx:718
 AliTPCCalibPulser.cxx:719
 AliTPCCalibPulser.cxx:720
 AliTPCCalibPulser.cxx:721
 AliTPCCalibPulser.cxx:722
 AliTPCCalibPulser.cxx:723
 AliTPCCalibPulser.cxx:724
 AliTPCCalibPulser.cxx:725
 AliTPCCalibPulser.cxx:726
 AliTPCCalibPulser.cxx:727
 AliTPCCalibPulser.cxx:728
 AliTPCCalibPulser.cxx:729
 AliTPCCalibPulser.cxx:730
 AliTPCCalibPulser.cxx:731
 AliTPCCalibPulser.cxx:732
 AliTPCCalibPulser.cxx:733
 AliTPCCalibPulser.cxx:734
 AliTPCCalibPulser.cxx:735
 AliTPCCalibPulser.cxx:736
 AliTPCCalibPulser.cxx:737
 AliTPCCalibPulser.cxx:738
 AliTPCCalibPulser.cxx:739
 AliTPCCalibPulser.cxx:740
 AliTPCCalibPulser.cxx:741
 AliTPCCalibPulser.cxx:742
 AliTPCCalibPulser.cxx:743
 AliTPCCalibPulser.cxx:744
 AliTPCCalibPulser.cxx:745
 AliTPCCalibPulser.cxx:746
 AliTPCCalibPulser.cxx:747
 AliTPCCalibPulser.cxx:748
 AliTPCCalibPulser.cxx:749
 AliTPCCalibPulser.cxx:750
 AliTPCCalibPulser.cxx:751
 AliTPCCalibPulser.cxx:752
 AliTPCCalibPulser.cxx:753
 AliTPCCalibPulser.cxx:754
 AliTPCCalibPulser.cxx:755
 AliTPCCalibPulser.cxx:756
 AliTPCCalibPulser.cxx:757
 AliTPCCalibPulser.cxx:758
 AliTPCCalibPulser.cxx:759
 AliTPCCalibPulser.cxx:760
 AliTPCCalibPulser.cxx:761
 AliTPCCalibPulser.cxx:762
 AliTPCCalibPulser.cxx:763
 AliTPCCalibPulser.cxx:764
 AliTPCCalibPulser.cxx:765
 AliTPCCalibPulser.cxx:766
 AliTPCCalibPulser.cxx:767
 AliTPCCalibPulser.cxx:768
 AliTPCCalibPulser.cxx:769
 AliTPCCalibPulser.cxx:770
 AliTPCCalibPulser.cxx:771
 AliTPCCalibPulser.cxx:772
 AliTPCCalibPulser.cxx:773
 AliTPCCalibPulser.cxx:774
 AliTPCCalibPulser.cxx:775
 AliTPCCalibPulser.cxx:776
 AliTPCCalibPulser.cxx:777
 AliTPCCalibPulser.cxx:778
 AliTPCCalibPulser.cxx:779
 AliTPCCalibPulser.cxx:780
 AliTPCCalibPulser.cxx:781
 AliTPCCalibPulser.cxx:782
 AliTPCCalibPulser.cxx:783
 AliTPCCalibPulser.cxx:784
 AliTPCCalibPulser.cxx:785
 AliTPCCalibPulser.cxx:786
 AliTPCCalibPulser.cxx:787
 AliTPCCalibPulser.cxx:788
 AliTPCCalibPulser.cxx:789
 AliTPCCalibPulser.cxx:790
 AliTPCCalibPulser.cxx:791
 AliTPCCalibPulser.cxx:792
 AliTPCCalibPulser.cxx:793
 AliTPCCalibPulser.cxx:794
 AliTPCCalibPulser.cxx:795
 AliTPCCalibPulser.cxx:796
 AliTPCCalibPulser.cxx:797
 AliTPCCalibPulser.cxx:798
 AliTPCCalibPulser.cxx:799
 AliTPCCalibPulser.cxx:800
 AliTPCCalibPulser.cxx:801
 AliTPCCalibPulser.cxx:802
 AliTPCCalibPulser.cxx:803
 AliTPCCalibPulser.cxx:804
 AliTPCCalibPulser.cxx:805
 AliTPCCalibPulser.cxx:806
 AliTPCCalibPulser.cxx:807
 AliTPCCalibPulser.cxx:808
 AliTPCCalibPulser.cxx:809
 AliTPCCalibPulser.cxx:810
 AliTPCCalibPulser.cxx:811
 AliTPCCalibPulser.cxx:812
 AliTPCCalibPulser.cxx:813
 AliTPCCalibPulser.cxx:814
 AliTPCCalibPulser.cxx:815
 AliTPCCalibPulser.cxx:816
 AliTPCCalibPulser.cxx:817
 AliTPCCalibPulser.cxx:818
 AliTPCCalibPulser.cxx:819
 AliTPCCalibPulser.cxx:820
 AliTPCCalibPulser.cxx:821
 AliTPCCalibPulser.cxx:822
 AliTPCCalibPulser.cxx:823
 AliTPCCalibPulser.cxx:824
 AliTPCCalibPulser.cxx:825
 AliTPCCalibPulser.cxx:826
 AliTPCCalibPulser.cxx:827
 AliTPCCalibPulser.cxx:828
 AliTPCCalibPulser.cxx:829
 AliTPCCalibPulser.cxx:830
 AliTPCCalibPulser.cxx:831
 AliTPCCalibPulser.cxx:832
 AliTPCCalibPulser.cxx:833
 AliTPCCalibPulser.cxx:834
 AliTPCCalibPulser.cxx:835
 AliTPCCalibPulser.cxx:836
 AliTPCCalibPulser.cxx:837
 AliTPCCalibPulser.cxx:838
 AliTPCCalibPulser.cxx:839
 AliTPCCalibPulser.cxx:840
 AliTPCCalibPulser.cxx:841
 AliTPCCalibPulser.cxx:842
 AliTPCCalibPulser.cxx:843
 AliTPCCalibPulser.cxx:844
 AliTPCCalibPulser.cxx:845
 AliTPCCalibPulser.cxx:846
 AliTPCCalibPulser.cxx:847
 AliTPCCalibPulser.cxx:848
 AliTPCCalibPulser.cxx:849
 AliTPCCalibPulser.cxx:850
 AliTPCCalibPulser.cxx:851
 AliTPCCalibPulser.cxx:852
 AliTPCCalibPulser.cxx:853
 AliTPCCalibPulser.cxx:854
 AliTPCCalibPulser.cxx:855
 AliTPCCalibPulser.cxx:856
 AliTPCCalibPulser.cxx:857
 AliTPCCalibPulser.cxx:858
 AliTPCCalibPulser.cxx:859
 AliTPCCalibPulser.cxx:860
 AliTPCCalibPulser.cxx:861
 AliTPCCalibPulser.cxx:862
 AliTPCCalibPulser.cxx:863
 AliTPCCalibPulser.cxx:864
 AliTPCCalibPulser.cxx:865
 AliTPCCalibPulser.cxx:866
 AliTPCCalibPulser.cxx:867
 AliTPCCalibPulser.cxx:868
 AliTPCCalibPulser.cxx:869
 AliTPCCalibPulser.cxx:870
 AliTPCCalibPulser.cxx:871
 AliTPCCalibPulser.cxx:872
 AliTPCCalibPulser.cxx:873
 AliTPCCalibPulser.cxx:874
 AliTPCCalibPulser.cxx:875
 AliTPCCalibPulser.cxx:876
 AliTPCCalibPulser.cxx:877
 AliTPCCalibPulser.cxx:878
 AliTPCCalibPulser.cxx:879
 AliTPCCalibPulser.cxx:880
 AliTPCCalibPulser.cxx:881
 AliTPCCalibPulser.cxx:882
 AliTPCCalibPulser.cxx:883
 AliTPCCalibPulser.cxx:884
 AliTPCCalibPulser.cxx:885
 AliTPCCalibPulser.cxx:886
 AliTPCCalibPulser.cxx:887
 AliTPCCalibPulser.cxx:888
 AliTPCCalibPulser.cxx:889
 AliTPCCalibPulser.cxx:890
 AliTPCCalibPulser.cxx:891
 AliTPCCalibPulser.cxx:892
 AliTPCCalibPulser.cxx:893
 AliTPCCalibPulser.cxx:894
 AliTPCCalibPulser.cxx:895
 AliTPCCalibPulser.cxx:896
 AliTPCCalibPulser.cxx:897
 AliTPCCalibPulser.cxx:898
 AliTPCCalibPulser.cxx:899
 AliTPCCalibPulser.cxx:900
 AliTPCCalibPulser.cxx:901
 AliTPCCalibPulser.cxx:902
 AliTPCCalibPulser.cxx:903
 AliTPCCalibPulser.cxx:904
 AliTPCCalibPulser.cxx:905
 AliTPCCalibPulser.cxx:906
 AliTPCCalibPulser.cxx:907
 AliTPCCalibPulser.cxx:908
 AliTPCCalibPulser.cxx:909
 AliTPCCalibPulser.cxx:910
 AliTPCCalibPulser.cxx:911
 AliTPCCalibPulser.cxx:912
 AliTPCCalibPulser.cxx:913
 AliTPCCalibPulser.cxx:914
 AliTPCCalibPulser.cxx:915
 AliTPCCalibPulser.cxx:916
 AliTPCCalibPulser.cxx:917
 AliTPCCalibPulser.cxx:918
 AliTPCCalibPulser.cxx:919
 AliTPCCalibPulser.cxx:920
 AliTPCCalibPulser.cxx:921
 AliTPCCalibPulser.cxx:922
 AliTPCCalibPulser.cxx:923
 AliTPCCalibPulser.cxx:924
 AliTPCCalibPulser.cxx:925
 AliTPCCalibPulser.cxx:926
 AliTPCCalibPulser.cxx:927
 AliTPCCalibPulser.cxx:928
 AliTPCCalibPulser.cxx:929
 AliTPCCalibPulser.cxx:930
 AliTPCCalibPulser.cxx:931
 AliTPCCalibPulser.cxx:932
 AliTPCCalibPulser.cxx:933
 AliTPCCalibPulser.cxx:934
 AliTPCCalibPulser.cxx:935
 AliTPCCalibPulser.cxx:936
 AliTPCCalibPulser.cxx:937
 AliTPCCalibPulser.cxx:938
 AliTPCCalibPulser.cxx:939
 AliTPCCalibPulser.cxx:940
 AliTPCCalibPulser.cxx:941
 AliTPCCalibPulser.cxx:942
 AliTPCCalibPulser.cxx:943
 AliTPCCalibPulser.cxx:944
 AliTPCCalibPulser.cxx:945
 AliTPCCalibPulser.cxx:946
 AliTPCCalibPulser.cxx:947
 AliTPCCalibPulser.cxx:948
 AliTPCCalibPulser.cxx:949
 AliTPCCalibPulser.cxx:950
 AliTPCCalibPulser.cxx:951
 AliTPCCalibPulser.cxx:952
 AliTPCCalibPulser.cxx:953
 AliTPCCalibPulser.cxx:954
 AliTPCCalibPulser.cxx:955
 AliTPCCalibPulser.cxx:956
 AliTPCCalibPulser.cxx:957
 AliTPCCalibPulser.cxx:958
 AliTPCCalibPulser.cxx:959
 AliTPCCalibPulser.cxx:960
 AliTPCCalibPulser.cxx:961
 AliTPCCalibPulser.cxx:962
 AliTPCCalibPulser.cxx:963
 AliTPCCalibPulser.cxx:964
 AliTPCCalibPulser.cxx:965
 AliTPCCalibPulser.cxx:966
 AliTPCCalibPulser.cxx:967
 AliTPCCalibPulser.cxx:968
 AliTPCCalibPulser.cxx:969
 AliTPCCalibPulser.cxx:970
 AliTPCCalibPulser.cxx:971
 AliTPCCalibPulser.cxx:972
 AliTPCCalibPulser.cxx:973
 AliTPCCalibPulser.cxx:974
 AliTPCCalibPulser.cxx:975
 AliTPCCalibPulser.cxx:976
 AliTPCCalibPulser.cxx:977
 AliTPCCalibPulser.cxx:978
 AliTPCCalibPulser.cxx:979
 AliTPCCalibPulser.cxx:980
 AliTPCCalibPulser.cxx:981
 AliTPCCalibPulser.cxx:982
 AliTPCCalibPulser.cxx:983
 AliTPCCalibPulser.cxx:984
 AliTPCCalibPulser.cxx:985
 AliTPCCalibPulser.cxx:986
 AliTPCCalibPulser.cxx:987
 AliTPCCalibPulser.cxx:988
 AliTPCCalibPulser.cxx:989
 AliTPCCalibPulser.cxx:990
 AliTPCCalibPulser.cxx:991
 AliTPCCalibPulser.cxx:992
 AliTPCCalibPulser.cxx:993
 AliTPCCalibPulser.cxx:994
 AliTPCCalibPulser.cxx:995
 AliTPCCalibPulser.cxx:996
 AliTPCCalibPulser.cxx:997
 AliTPCCalibPulser.cxx:998
 AliTPCCalibPulser.cxx:999
 AliTPCCalibPulser.cxx:1000
 AliTPCCalibPulser.cxx:1001
 AliTPCCalibPulser.cxx:1002
 AliTPCCalibPulser.cxx:1003
 AliTPCCalibPulser.cxx:1004
 AliTPCCalibPulser.cxx:1005
 AliTPCCalibPulser.cxx:1006
 AliTPCCalibPulser.cxx:1007
 AliTPCCalibPulser.cxx:1008
 AliTPCCalibPulser.cxx:1009
 AliTPCCalibPulser.cxx:1010
 AliTPCCalibPulser.cxx:1011
 AliTPCCalibPulser.cxx:1012
 AliTPCCalibPulser.cxx:1013
 AliTPCCalibPulser.cxx:1014
 AliTPCCalibPulser.cxx:1015
 AliTPCCalibPulser.cxx:1016
 AliTPCCalibPulser.cxx:1017
 AliTPCCalibPulser.cxx:1018
 AliTPCCalibPulser.cxx:1019
 AliTPCCalibPulser.cxx:1020
 AliTPCCalibPulser.cxx:1021
 AliTPCCalibPulser.cxx:1022
 AliTPCCalibPulser.cxx:1023
 AliTPCCalibPulser.cxx:1024
 AliTPCCalibPulser.cxx:1025
 AliTPCCalibPulser.cxx:1026
 AliTPCCalibPulser.cxx:1027
 AliTPCCalibPulser.cxx:1028
 AliTPCCalibPulser.cxx:1029
 AliTPCCalibPulser.cxx:1030
 AliTPCCalibPulser.cxx:1031
 AliTPCCalibPulser.cxx:1032
 AliTPCCalibPulser.cxx:1033
 AliTPCCalibPulser.cxx:1034
 AliTPCCalibPulser.cxx:1035
 AliTPCCalibPulser.cxx:1036
 AliTPCCalibPulser.cxx:1037
 AliTPCCalibPulser.cxx:1038
 AliTPCCalibPulser.cxx:1039
 AliTPCCalibPulser.cxx:1040
 AliTPCCalibPulser.cxx:1041
 AliTPCCalibPulser.cxx:1042
 AliTPCCalibPulser.cxx:1043
 AliTPCCalibPulser.cxx:1044
 AliTPCCalibPulser.cxx:1045
 AliTPCCalibPulser.cxx:1046
 AliTPCCalibPulser.cxx:1047
 AliTPCCalibPulser.cxx:1048
 AliTPCCalibPulser.cxx:1049
 AliTPCCalibPulser.cxx:1050
 AliTPCCalibPulser.cxx:1051
 AliTPCCalibPulser.cxx:1052
 AliTPCCalibPulser.cxx:1053
 AliTPCCalibPulser.cxx:1054
 AliTPCCalibPulser.cxx:1055
 AliTPCCalibPulser.cxx:1056
 AliTPCCalibPulser.cxx:1057
 AliTPCCalibPulser.cxx:1058
 AliTPCCalibPulser.cxx:1059
 AliTPCCalibPulser.cxx:1060
 AliTPCCalibPulser.cxx:1061
 AliTPCCalibPulser.cxx:1062
 AliTPCCalibPulser.cxx:1063
 AliTPCCalibPulser.cxx:1064
 AliTPCCalibPulser.cxx:1065
 AliTPCCalibPulser.cxx:1066
 AliTPCCalibPulser.cxx:1067
 AliTPCCalibPulser.cxx:1068
 AliTPCCalibPulser.cxx:1069
 AliTPCCalibPulser.cxx:1070
 AliTPCCalibPulser.cxx:1071
 AliTPCCalibPulser.cxx:1072
 AliTPCCalibPulser.cxx:1073
 AliTPCCalibPulser.cxx:1074
 AliTPCCalibPulser.cxx:1075
 AliTPCCalibPulser.cxx:1076
 AliTPCCalibPulser.cxx:1077
 AliTPCCalibPulser.cxx:1078
 AliTPCCalibPulser.cxx:1079
 AliTPCCalibPulser.cxx:1080
 AliTPCCalibPulser.cxx:1081
 AliTPCCalibPulser.cxx:1082
 AliTPCCalibPulser.cxx:1083
 AliTPCCalibPulser.cxx:1084
 AliTPCCalibPulser.cxx:1085
 AliTPCCalibPulser.cxx:1086
 AliTPCCalibPulser.cxx:1087
 AliTPCCalibPulser.cxx:1088
 AliTPCCalibPulser.cxx:1089
 AliTPCCalibPulser.cxx:1090
 AliTPCCalibPulser.cxx:1091
 AliTPCCalibPulser.cxx:1092
 AliTPCCalibPulser.cxx:1093
 AliTPCCalibPulser.cxx:1094
 AliTPCCalibPulser.cxx:1095
 AliTPCCalibPulser.cxx:1096
 AliTPCCalibPulser.cxx:1097
 AliTPCCalibPulser.cxx:1098
 AliTPCCalibPulser.cxx:1099
 AliTPCCalibPulser.cxx:1100
 AliTPCCalibPulser.cxx:1101
 AliTPCCalibPulser.cxx:1102
 AliTPCCalibPulser.cxx:1103
 AliTPCCalibPulser.cxx:1104
 AliTPCCalibPulser.cxx:1105
 AliTPCCalibPulser.cxx:1106
 AliTPCCalibPulser.cxx:1107
 AliTPCCalibPulser.cxx:1108
 AliTPCCalibPulser.cxx:1109
 AliTPCCalibPulser.cxx:1110
 AliTPCCalibPulser.cxx:1111
 AliTPCCalibPulser.cxx:1112
 AliTPCCalibPulser.cxx:1113
 AliTPCCalibPulser.cxx:1114
 AliTPCCalibPulser.cxx:1115
 AliTPCCalibPulser.cxx:1116
 AliTPCCalibPulser.cxx:1117
 AliTPCCalibPulser.cxx:1118
 AliTPCCalibPulser.cxx:1119
 AliTPCCalibPulser.cxx:1120
 AliTPCCalibPulser.cxx:1121
 AliTPCCalibPulser.cxx:1122
 AliTPCCalibPulser.cxx:1123
 AliTPCCalibPulser.cxx:1124
 AliTPCCalibPulser.cxx:1125
 AliTPCCalibPulser.cxx:1126
 AliTPCCalibPulser.cxx:1127
 AliTPCCalibPulser.cxx:1128
 AliTPCCalibPulser.cxx:1129
 AliTPCCalibPulser.cxx:1130
 AliTPCCalibPulser.cxx:1131
 AliTPCCalibPulser.cxx:1132
 AliTPCCalibPulser.cxx:1133
 AliTPCCalibPulser.cxx:1134
 AliTPCCalibPulser.cxx:1135
 AliTPCCalibPulser.cxx:1136
 AliTPCCalibPulser.cxx:1137
 AliTPCCalibPulser.cxx:1138
 AliTPCCalibPulser.cxx:1139
 AliTPCCalibPulser.cxx:1140
 AliTPCCalibPulser.cxx:1141
 AliTPCCalibPulser.cxx:1142
 AliTPCCalibPulser.cxx:1143
 AliTPCCalibPulser.cxx:1144
 AliTPCCalibPulser.cxx:1145
 AliTPCCalibPulser.cxx:1146
 AliTPCCalibPulser.cxx:1147
 AliTPCCalibPulser.cxx:1148
 AliTPCCalibPulser.cxx:1149
 AliTPCCalibPulser.cxx:1150
 AliTPCCalibPulser.cxx:1151
 AliTPCCalibPulser.cxx:1152
 AliTPCCalibPulser.cxx:1153
 AliTPCCalibPulser.cxx:1154
 AliTPCCalibPulser.cxx:1155
 AliTPCCalibPulser.cxx:1156
 AliTPCCalibPulser.cxx:1157
 AliTPCCalibPulser.cxx:1158
 AliTPCCalibPulser.cxx:1159
 AliTPCCalibPulser.cxx:1160
 AliTPCCalibPulser.cxx:1161
 AliTPCCalibPulser.cxx:1162
 AliTPCCalibPulser.cxx:1163
 AliTPCCalibPulser.cxx:1164
 AliTPCCalibPulser.cxx:1165
 AliTPCCalibPulser.cxx:1166
 AliTPCCalibPulser.cxx:1167
 AliTPCCalibPulser.cxx:1168
 AliTPCCalibPulser.cxx:1169
 AliTPCCalibPulser.cxx:1170
 AliTPCCalibPulser.cxx:1171
 AliTPCCalibPulser.cxx:1172
 AliTPCCalibPulser.cxx:1173
 AliTPCCalibPulser.cxx:1174
 AliTPCCalibPulser.cxx:1175
 AliTPCCalibPulser.cxx:1176
 AliTPCCalibPulser.cxx:1177
 AliTPCCalibPulser.cxx:1178
 AliTPCCalibPulser.cxx:1179
 AliTPCCalibPulser.cxx:1180
 AliTPCCalibPulser.cxx:1181
 AliTPCCalibPulser.cxx:1182
 AliTPCCalibPulser.cxx:1183
 AliTPCCalibPulser.cxx:1184
 AliTPCCalibPulser.cxx:1185
 AliTPCCalibPulser.cxx:1186
 AliTPCCalibPulser.cxx:1187
 AliTPCCalibPulser.cxx:1188
 AliTPCCalibPulser.cxx:1189
 AliTPCCalibPulser.cxx:1190
 AliTPCCalibPulser.cxx:1191
 AliTPCCalibPulser.cxx:1192
 AliTPCCalibPulser.cxx:1193
 AliTPCCalibPulser.cxx:1194
 AliTPCCalibPulser.cxx:1195
 AliTPCCalibPulser.cxx:1196
 AliTPCCalibPulser.cxx:1197
 AliTPCCalibPulser.cxx:1198
 AliTPCCalibPulser.cxx:1199
 AliTPCCalibPulser.cxx:1200
 AliTPCCalibPulser.cxx:1201
 AliTPCCalibPulser.cxx:1202
 AliTPCCalibPulser.cxx:1203
 AliTPCCalibPulser.cxx:1204
 AliTPCCalibPulser.cxx:1205
 AliTPCCalibPulser.cxx:1206
 AliTPCCalibPulser.cxx:1207
 AliTPCCalibPulser.cxx:1208
 AliTPCCalibPulser.cxx:1209
 AliTPCCalibPulser.cxx:1210
 AliTPCCalibPulser.cxx:1211
 AliTPCCalibPulser.cxx:1212
 AliTPCCalibPulser.cxx:1213
 AliTPCCalibPulser.cxx:1214
 AliTPCCalibPulser.cxx:1215
 AliTPCCalibPulser.cxx:1216
 AliTPCCalibPulser.cxx:1217
 AliTPCCalibPulser.cxx:1218
 AliTPCCalibPulser.cxx:1219
 AliTPCCalibPulser.cxx:1220
 AliTPCCalibPulser.cxx:1221
 AliTPCCalibPulser.cxx:1222
 AliTPCCalibPulser.cxx:1223
 AliTPCCalibPulser.cxx:1224
 AliTPCCalibPulser.cxx:1225
 AliTPCCalibPulser.cxx:1226
 AliTPCCalibPulser.cxx:1227
 AliTPCCalibPulser.cxx:1228
 AliTPCCalibPulser.cxx:1229
 AliTPCCalibPulser.cxx:1230
 AliTPCCalibPulser.cxx:1231
 AliTPCCalibPulser.cxx:1232
 AliTPCCalibPulser.cxx:1233
 AliTPCCalibPulser.cxx:1234
 AliTPCCalibPulser.cxx:1235
 AliTPCCalibPulser.cxx:1236
 AliTPCCalibPulser.cxx:1237
 AliTPCCalibPulser.cxx:1238
 AliTPCCalibPulser.cxx:1239
 AliTPCCalibPulser.cxx:1240
 AliTPCCalibPulser.cxx:1241
 AliTPCCalibPulser.cxx:1242
 AliTPCCalibPulser.cxx:1243
 AliTPCCalibPulser.cxx:1244
 AliTPCCalibPulser.cxx:1245
 AliTPCCalibPulser.cxx:1246
 AliTPCCalibPulser.cxx:1247
 AliTPCCalibPulser.cxx:1248
 AliTPCCalibPulser.cxx:1249
 AliTPCCalibPulser.cxx:1250
 AliTPCCalibPulser.cxx:1251
 AliTPCCalibPulser.cxx:1252
 AliTPCCalibPulser.cxx:1253
 AliTPCCalibPulser.cxx:1254
 AliTPCCalibPulser.cxx:1255
 AliTPCCalibPulser.cxx:1256
 AliTPCCalibPulser.cxx:1257
 AliTPCCalibPulser.cxx:1258
 AliTPCCalibPulser.cxx:1259
 AliTPCCalibPulser.cxx:1260
 AliTPCCalibPulser.cxx:1261
 AliTPCCalibPulser.cxx:1262
 AliTPCCalibPulser.cxx:1263
 AliTPCCalibPulser.cxx:1264
 AliTPCCalibPulser.cxx:1265
 AliTPCCalibPulser.cxx:1266
 AliTPCCalibPulser.cxx:1267
 AliTPCCalibPulser.cxx:1268