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: AliTRDCalibraExbAltFit.cxx 46327 2011-01-10 13:29:56Z cblume $ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// AliTRDCalibraExbAltFit                                                 //
//                                                                        //
// Does the ExB calibration by applying a quadratic fit                   //
//                                                                        //
// Author:                                                                //
//   R. Bailhache (R.Bailhache@gsi.de)                                    //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

//Root includes
#include <TObjArray.h>
#include <TH2F.h>
#include <TString.h>
#include <TVectorD.h>
#include <TAxis.h>
#include <TLinearFitter.h>
#include <TMath.h>
#include <TDirectory.h>
#include <TTreeStream.h>
#include <TGraphErrors.h>
#include <TF1.h>

//header file
#include "AliTRDCalibraExbAltFit.h"

ClassImp(AliTRDCalibraExbAltFit) /*FOLD00*/

//_____________________________________________________________________
AliTRDCalibraExbAltFit::AliTRDCalibraExbAltFit() : /*FOLD00*/
  TObject(),
  fVersion(0),
  fFitterHistoArray(540),
  fFitterPArray(540),
  fFitterEArray(540),
  fRobustFit(kFALSE),
  fDebugStreamer(0x0),
  fDebugLevel(0)
{
  //
  // default constructor
  //
}
//_____________________________________________________________________
AliTRDCalibraExbAltFit::AliTRDCalibraExbAltFit(const AliTRDCalibraExbAltFit &ped) : /*FOLD00*/
  TObject(ped),
  fVersion(ped.fVersion),
  fFitterHistoArray(540),
  fFitterPArray(540),
  fFitterEArray(540),
  fRobustFit(kFALSE),
  fDebugStreamer(0x0),
  fDebugLevel(0)
{
    //
    // copy constructor
    //
  for (Int_t idet = 0; idet < 540; idet++){
   
    const TVectorD     *vectorE     = (TVectorD*)ped.fFitterEArray.UncheckedAt(idet);
    const TVectorD     *vectorP     = (TVectorD*)ped.fFitterPArray.UncheckedAt(idet);
    const TH2S         *hped        = (TH2S*)ped.fFitterHistoArray.UncheckedAt(idet);
    
    if ( vectorE != 0x0 ) fFitterEArray.AddAt(new TVectorD(*vectorE), idet);
    if ( vectorP != 0x0 ) fFitterPArray.AddAt(new TVectorD(*vectorP), idet);
    if ( hped != 0x0 ){
      TH2S *hNew = (TH2S *)hped->Clone();
      //hNew->SetDirectory(0);
      fFitterHistoArray.AddAt(hNew,idet);
    }
  }
}
//_____________________________________________________________________
AliTRDCalibraExbAltFit::AliTRDCalibraExbAltFit(const TObjArray &obja) : /*FOLD00*/
  TObject(),
  fVersion(0),
  fFitterHistoArray(540),
  fFitterPArray(540),
  fFitterEArray(540),
  fRobustFit(kFALSE),
  fDebugStreamer(0x0),
  fDebugLevel(0)
{
  //
  // constructor from a TObjArray
  //
  for (Int_t idet = 0; idet < 540; idet++){
    const TH2S         *hped        = (TH2S*)obja.UncheckedAt(idet);
    if ( hped != 0x0 ){
      TH2S *hNew = (TH2S *)hped->Clone();
      //hNew->SetDirectory(0);
      fFitterHistoArray.AddAt(hNew,idet);
    }
  }
}
//_____________________________________________________________________
AliTRDCalibraExbAltFit& AliTRDCalibraExbAltFit::operator = (const  AliTRDCalibraExbAltFit &source)
{
  //
  // assignment operator
  //
  if (&source == this) return *this;
  new (this) AliTRDCalibraExbAltFit(source);

  return *this;
}
//_____________________________________________________________________
AliTRDCalibraExbAltFit::~AliTRDCalibraExbAltFit() /*FOLD00*/
{
  //
  // destructor
  //
  fFitterHistoArray.SetOwner();
  fFitterPArray.SetOwner();
  fFitterEArray.SetOwner();

  fFitterHistoArray.Delete();
  fFitterPArray.Delete();
  fFitterEArray.Delete();

  if ( fDebugStreamer ) delete fDebugStreamer;

}
//_____________________________________________________________________________
void AliTRDCalibraExbAltFit::Copy(TObject &c) const
{
  //
  // Copy function
  //

  AliTRDCalibraExbAltFit& target = (AliTRDCalibraExbAltFit &) c;

  // Copy only the histos
  for (Int_t idet = 0; idet < 540; idet++){
    if(fFitterHistoArray.UncheckedAt(idet)){
      TH2S *hped1 = (TH2S *)target.GetFitterHisto(idet,kTRUE);
      //hped1->SetDirectory(0);
      hped1->Add((const TH2S *)fFitterHistoArray.UncheckedAt(idet));
    }
  }
  
  TObject::Copy(c);

}
//_____________________________________________________________________________
Long64_t AliTRDCalibraExbAltFit::Merge(const TCollection* list) 
{
  // Merge list of objects (needed by PROOF)

  if (!list)
    return 0;
  
  if (list->IsEmpty())
    return 1;
  
  TIterator* iter = list->MakeIterator();
  TObject* obj = 0;
  
  // collection of generated histograms
  Int_t count=0;
  while((obj = iter->Next()) != 0) 
    {
      AliTRDCalibraExbAltFit* entry = dynamic_cast<AliTRDCalibraExbAltFit*>(obj);
      if (entry == 0) continue; 
      
      // Copy only the histos
      for (Int_t idet = 0; idet < 540; idet++){
	if(entry->GetFitterHisto(idet)){
	  TH2S *hped1 = (TH2S *)GetFitterHisto(idet,kTRUE);
	  Double_t entriesa = hped1->GetEntries();
	  Double_t entriesb = ((TH2S *)entry->GetFitterHisto(idet))->GetEntries();
	  if((entriesa + entriesb) < 5*32767) hped1->Add(entry->GetFitterHisto(idet));
	}
      }
      
      count++;
    }
  
  return count;
}
//_____________________________________________________________________
void AliTRDCalibraExbAltFit::Add(const AliTRDCalibraExbAltFit *ped)
{
  //
  // Add histo
  //

  fVersion++;

  for (Int_t idet = 0; idet < 540; idet++){
    const TH2S         *hped        = (TH2S*)ped->GetFitterHistoNoForce(idet);
    //printf("idet %d\n",idet);
    if ( hped != 0x0 ){
      //printf("add\n");
      TH2S *hped1 = (TH2S *)GetFitterHisto(idet,kTRUE);
      Double_t entriesa = hped1->GetEntries();
      Double_t entriesb = hped->GetEntries();
      if((entriesa + entriesb) < 5*32767) hped1->Add(hped);
    }
  }
}
//______________________________________________________________________________________
TH2S* AliTRDCalibraExbAltFit::GetFitterHisto(Int_t detector, Bool_t force)
{
    //
    // return pointer to TH2F histo 
    // if force is true create a new histo if it doesn't exist allready
    //
    if ( !force || fFitterHistoArray.UncheckedAt(detector) )
	return (TH2S*)fFitterHistoArray.UncheckedAt(detector);

    return GetFitterHistoForce(detector);

}
//______________________________________________________________________________________
TH2S* AliTRDCalibraExbAltFit::GetFitterHistoForce(Int_t detector)
{
  //
  // return pointer to TH2F histo 
  // if NULL create a new histo if it doesn't exist allready
  //
  if (fFitterHistoArray.UncheckedAt(detector))
    return (TH2S*)fFitterHistoArray.UncheckedAt(detector);
  
  // if we are forced and TLinearFitter doesn't yes exist create it
  
  // new TH2F
  TString name("LFEXB");
  name += detector;
  name += "version";
  name +=  fVersion;
  
  TH2S *lfdv = new TH2S((const Char_t *)name,(const Char_t *) name,
			30, -TMath::DegToRad()*45, TMath::DegToRad()*45, 
			30, 0.3, 1.4);
  lfdv->SetXTitle("tan(phi_{track})");
  lfdv->SetYTitle("rms");
  lfdv->SetZTitle("Number of tracklets");
  lfdv->SetStats(0);
  lfdv->SetDirectory(0);
  
  fFitterHistoArray.AddAt(lfdv,detector);
  return lfdv;
}
//______________________________________________________________________________________
Bool_t AliTRDCalibraExbAltFit::GetParam(Int_t detector, TVectorD *param)
{
    //
    // return param for this detector
    //
  if ( fFitterPArray.UncheckedAt(detector) ){
    const TVectorD     *vectorP     = (TVectorD*)fFitterPArray.UncheckedAt(detector);
    if(!param) param = new TVectorD(vectorP->GetNoElements());
    for(Int_t k = 0; k < vectorP->GetNoElements(); k++){
      (*param)[k] = (*vectorP)[k];
    }
    return kTRUE;
  }
  else return kFALSE;

}
//______________________________________________________________________________________
Bool_t AliTRDCalibraExbAltFit::GetError(Int_t detector, TVectorD *error)
{
    //
    // return error for this detector 
    //
  if ( fFitterEArray.UncheckedAt(detector) ){
    const TVectorD     *vectorE     = (TVectorD*)fFitterEArray.UncheckedAt(detector);
    if(!error) error = new TVectorD(vectorE->GetNoElements());
    for(Int_t k = 0; k < vectorE->GetNoElements(); k++){
      (*error)[k] = (*vectorE)[k];
    }
    return kTRUE;
  }
  else return kFALSE;

}
//______________________________________________________________________________________
void AliTRDCalibraExbAltFit::Update(Int_t detector, Float_t tnp, Float_t pars1)
{
    //
    // Fill the 2D histos for debugging
    //
  
  TH2S *h = ((TH2S *) GetFitterHisto(detector,kTRUE));
  Double_t nbentries = h->GetEntries();
  if(nbentries < 5*32767) h->Fill(tnp,pars1);

}
//____________Functions fit Online CH2d________________________________________
void AliTRDCalibraExbAltFit::FillPEArray()
{
  //
  // Fill fFitterPArray and fFitterEArray from inside
  //

  
  Int_t *arrayI = new Int_t[540];
  for(Int_t k = 0; k< 540; k++){
    arrayI[k] = 0; 
  }

  // Loop over histos 
  for(Int_t cb = 0; cb < 540; cb++){
    const TH2S *fitterhisto = (TH2S*)fFitterHistoArray.UncheckedAt(cb);
    //printf("Processing the detector cb %d we find %d\n",cb, (Bool_t) fitterhisto);    

    if ( fitterhisto != 0 ){
      
      // Fill a fitter
      const TAxis *xaxis = fitterhisto->GetXaxis();
      const TAxis *yaxis = fitterhisto->GetYaxis();
      TLinearFitter fitter = TLinearFitter(3,"pol2");
      //printf("test\n");
      Double_t integral = fitterhisto->Integral();
      //printf("Integral is %f\n",integral);
      Bool_t securitybreaking = kFALSE;
      if(TMath::Abs(integral-1199) < 0.00001) securitybreaking = kTRUE;
      for(Int_t ibinx = 0; ibinx < fitterhisto->GetNbinsX(); ibinx++){
	for(Int_t ibiny = 0; ibiny < fitterhisto->GetNbinsY(); ibiny++){
	  if(fitterhisto->GetBinContent(ibinx+1,ibiny+1)>0){
	    Double_t x = xaxis->GetBinCenter(ibinx+1);
	    Double_t y = yaxis->GetBinCenter(ibiny+1);
	    
	    for(Int_t k = 0; k < (Int_t)fitterhisto->GetBinContent(ibinx+1,ibiny+1); k++){
	      if(!securitybreaking){
		fitter.AddPoint(&x,y);
		arrayI[cb]++;
	      }
	      else {
		if(arrayI[cb]< 1198){
		  fitter.AddPoint(&x,y);
		  arrayI[cb]++; 
		}
	      }
	    }
	    
	  }
	}
      }
      
      //printf("Find %d entries for the detector %d\n",arrayI[cb],cb);

      // Eval the  fitter
      if(arrayI[cb]>15){
	TVectorD  *par  = new TVectorD(3);
	TVectorD  pare = TVectorD(2);
	TVectorD  *parE = new TVectorD(3);
	//printf("Fit\n");
	//if((fitter.EvalRobust(0.8)==0)) {
	//if((fitter.EvalRobust()==0)) {
	if(((fRobustFit) && (fitter.EvalRobust(0.8)==0)) || ((!fRobustFit) && (fitter.Eval()==0))) {
	  //if((fitter.Eval()==0)) {
	  //printf("Take the param\n");
	  fitter.GetParameters(*par);
	  //printf("Done\n");
	  //fitter.GetErrors(*pare);
	  //Float_t  ppointError =  TMath::Sqrt(TMath::Abs(fitter.GetChisquare())/arrayI[cb]);
	  //(*parE)[0] = pare[0]*ppointError;
	  //(*parE)[1] = pare[1]*ppointError;
	  (*parE)[0] = 0.0;
	  (*parE)[1] = 0.0;
	  (*parE)[2] = (Double_t) arrayI[cb];
	  fFitterPArray.AddAt(par,cb);
	  fFitterEArray.AddAt(parE,cb);
	  
	  //par->Print();
	  //parE->Print();
	}
	//printf("Finish\n");
      }
      
      //delete fitterhisto;
      
    }// if something

  }

  delete [] arrayI;
   
}

//____________Functions fit Online CH2d________________________________________
void AliTRDCalibraExbAltFit::FillPEArray2()
{
  //
  // Fill fFitterPArray and fFitterEArray from inside
  //

  // Loop over histos 
      
  for(Int_t cb = 0; cb < 540; cb++){
    TH2S *fitterhisto = (TH2S*)fFitterHistoArray.UncheckedAt(cb);
    //printf("Processing the detector cb %d we find %d\n",cb, (Bool_t) fitterhisto);    

    if ( fitterhisto != 0 ){
      TF1 *f1 = new TF1("f1","[0]*(x-[1])**2+[2]",-1,1);
      
      Int_t nEntries=0;
      TGraphErrors *gg=DrawMS(fitterhisto,nEntries);
      if (!gg) continue;
      // printf("N: %i\n",gg->GetN());
      // printf("entries: %i\n",nEntries);

      if(gg->GetN() < 20) {
	if(gg) delete gg;
	continue;	
      }
      gg->Fit(f1,"Q0");
      
      TVectorD  *par  = new TVectorD(3);
      TVectorD  *parE = new TVectorD(3);
      (*parE)[0] = 0.0;
      (*parE)[1] = 0.0;
      (*parE)[2] = (Double_t) nEntries;
      (*par)[0] = f1->GetParameter(0)*TMath::Power(f1->GetParameter(1),2)+f1->GetParameter(2);
      (*par)[1] = -2*f1->GetParameter(0)*f1->GetParameter(1);
      (*par)[2] = f1->GetParameter(0);
      fFitterPArray.AddAt(par,cb);
      fFitterEArray.AddAt(parE,cb);

      // if ( !fDebugStreamer ) {
      // 	//debug stream
      // 	TDirectory *backup = gDirectory;
      // 	fDebugStreamer = new TTreeSRedirector("TRDdebugCalibraFill.root");
      // 	if ( backup ) backup->cd();  //we don't want to be cd'd to the debug streamer
      // } 
    
      // if(cb==513){
      // 	fitterhisto->Draw();
      // 	gg->Draw("P");
      // 	f1->Draw("same");
      // }
      // double exb=f1->GetParameter(1);
      // (* fDebugStreamer) << "FindP1TrackPHtrackletV1"<<
      // 	//"snpright="<<snpright<<
      // 	"det="<<cb<<
      // 	"h2="<<(TObject*)fitterhisto<<
      // 	"gg="<<gg<<
      // 	"f1="<<f1<<
      // 	"exb="<<exb<<
      // 	"\n";

      //if(cb!=513){
      delete gg; 
      delete f1;
      //}
    }
  }
  //if(fDebugStreamer) delete fDebugStreamer;
}

//_________Helper function__________________________________________________
TGraphErrors* AliTRDCalibraExbAltFit::DrawMS(const TH2 *const h2, Int_t &nEntries)
{
  //
  // Debug function
  //


  TF1 fg("fg", "gaus", -10., 30.);
  TGraphErrors *gp = new TGraphErrors();

  const TAxis *ax(h2->GetXaxis());
  const TAxis *ay(h2->GetYaxis());
  TH1D *h1(NULL);
  for(Int_t ipt(0), jpt(1), ig(0); ipt<ax->GetNbins(); ipt++, jpt++){
    h1 = h2->ProjectionY("py", jpt, jpt);
    fg.SetParameter(1, h1->GetMean());
    //Float_t x(ax->GetBinCenter(jpt)); 
    Int_t n=Int_t(h1->Integral(1, h1->GetNbinsX()));
    nEntries+=n;
    if(n < 5){
      //Warning("drawMS()", Form("reject x[%d]=%f on n=%d", jpt, x, n));
      continue;
    }
    h1->Fit(&fg, "WWQ0");
    if(fg.GetNDF()<2){
      //Warning("drawMS()", Form("reject x[%d]=%f on NDF=%d", jpt, x, fg.GetNDF()));
      continue;
    }
    if(((fg.GetParameter(1)+fg.GetParameter(2)/2)>ay->GetXmax()) || ((fg.GetParameter(1)-fg.GetParameter(2)/2)<ay->GetXmin()) || (TMath::Abs(fg.GetParameter(0))< 0.00001)) continue;
    gp->SetPoint(ig, ax->GetBinCenter(jpt), fg.GetParameter(1));
    gp->SetPointError(ig, 0, TMath::Sqrt(pow(fg.GetParError(1),2) + (1/pow(fg.GetParameter(0),2))));
    ig++;
  }
  delete h1;
  return gp;
}
 AliTRDCalibraExbAltFit.cxx:1
 AliTRDCalibraExbAltFit.cxx:2
 AliTRDCalibraExbAltFit.cxx:3
 AliTRDCalibraExbAltFit.cxx:4
 AliTRDCalibraExbAltFit.cxx:5
 AliTRDCalibraExbAltFit.cxx:6
 AliTRDCalibraExbAltFit.cxx:7
 AliTRDCalibraExbAltFit.cxx:8
 AliTRDCalibraExbAltFit.cxx:9
 AliTRDCalibraExbAltFit.cxx:10
 AliTRDCalibraExbAltFit.cxx:11
 AliTRDCalibraExbAltFit.cxx:12
 AliTRDCalibraExbAltFit.cxx:13
 AliTRDCalibraExbAltFit.cxx:14
 AliTRDCalibraExbAltFit.cxx:15
 AliTRDCalibraExbAltFit.cxx:16
 AliTRDCalibraExbAltFit.cxx:17
 AliTRDCalibraExbAltFit.cxx:18
 AliTRDCalibraExbAltFit.cxx:19
 AliTRDCalibraExbAltFit.cxx:20
 AliTRDCalibraExbAltFit.cxx:21
 AliTRDCalibraExbAltFit.cxx:22
 AliTRDCalibraExbAltFit.cxx:23
 AliTRDCalibraExbAltFit.cxx:24
 AliTRDCalibraExbAltFit.cxx:25
 AliTRDCalibraExbAltFit.cxx:26
 AliTRDCalibraExbAltFit.cxx:27
 AliTRDCalibraExbAltFit.cxx:28
 AliTRDCalibraExbAltFit.cxx:29
 AliTRDCalibraExbAltFit.cxx:30
 AliTRDCalibraExbAltFit.cxx:31
 AliTRDCalibraExbAltFit.cxx:32
 AliTRDCalibraExbAltFit.cxx:33
 AliTRDCalibraExbAltFit.cxx:34
 AliTRDCalibraExbAltFit.cxx:35
 AliTRDCalibraExbAltFit.cxx:36
 AliTRDCalibraExbAltFit.cxx:37
 AliTRDCalibraExbAltFit.cxx:38
 AliTRDCalibraExbAltFit.cxx:39
 AliTRDCalibraExbAltFit.cxx:40
 AliTRDCalibraExbAltFit.cxx:41
 AliTRDCalibraExbAltFit.cxx:42
 AliTRDCalibraExbAltFit.cxx:43
 AliTRDCalibraExbAltFit.cxx:44
 AliTRDCalibraExbAltFit.cxx:45
 AliTRDCalibraExbAltFit.cxx:46
 AliTRDCalibraExbAltFit.cxx:47
 AliTRDCalibraExbAltFit.cxx:48
 AliTRDCalibraExbAltFit.cxx:49
 AliTRDCalibraExbAltFit.cxx:50
 AliTRDCalibraExbAltFit.cxx:51
 AliTRDCalibraExbAltFit.cxx:52
 AliTRDCalibraExbAltFit.cxx:53
 AliTRDCalibraExbAltFit.cxx:54
 AliTRDCalibraExbAltFit.cxx:55
 AliTRDCalibraExbAltFit.cxx:56
 AliTRDCalibraExbAltFit.cxx:57
 AliTRDCalibraExbAltFit.cxx:58
 AliTRDCalibraExbAltFit.cxx:59
 AliTRDCalibraExbAltFit.cxx:60
 AliTRDCalibraExbAltFit.cxx:61
 AliTRDCalibraExbAltFit.cxx:62
 AliTRDCalibraExbAltFit.cxx:63
 AliTRDCalibraExbAltFit.cxx:64
 AliTRDCalibraExbAltFit.cxx:65
 AliTRDCalibraExbAltFit.cxx:66
 AliTRDCalibraExbAltFit.cxx:67
 AliTRDCalibraExbAltFit.cxx:68
 AliTRDCalibraExbAltFit.cxx:69
 AliTRDCalibraExbAltFit.cxx:70
 AliTRDCalibraExbAltFit.cxx:71
 AliTRDCalibraExbAltFit.cxx:72
 AliTRDCalibraExbAltFit.cxx:73
 AliTRDCalibraExbAltFit.cxx:74
 AliTRDCalibraExbAltFit.cxx:75
 AliTRDCalibraExbAltFit.cxx:76
 AliTRDCalibraExbAltFit.cxx:77
 AliTRDCalibraExbAltFit.cxx:78
 AliTRDCalibraExbAltFit.cxx:79
 AliTRDCalibraExbAltFit.cxx:80
 AliTRDCalibraExbAltFit.cxx:81
 AliTRDCalibraExbAltFit.cxx:82
 AliTRDCalibraExbAltFit.cxx:83
 AliTRDCalibraExbAltFit.cxx:84
 AliTRDCalibraExbAltFit.cxx:85
 AliTRDCalibraExbAltFit.cxx:86
 AliTRDCalibraExbAltFit.cxx:87
 AliTRDCalibraExbAltFit.cxx:88
 AliTRDCalibraExbAltFit.cxx:89
 AliTRDCalibraExbAltFit.cxx:90
 AliTRDCalibraExbAltFit.cxx:91
 AliTRDCalibraExbAltFit.cxx:92
 AliTRDCalibraExbAltFit.cxx:93
 AliTRDCalibraExbAltFit.cxx:94
 AliTRDCalibraExbAltFit.cxx:95
 AliTRDCalibraExbAltFit.cxx:96
 AliTRDCalibraExbAltFit.cxx:97
 AliTRDCalibraExbAltFit.cxx:98
 AliTRDCalibraExbAltFit.cxx:99
 AliTRDCalibraExbAltFit.cxx:100
 AliTRDCalibraExbAltFit.cxx:101
 AliTRDCalibraExbAltFit.cxx:102
 AliTRDCalibraExbAltFit.cxx:103
 AliTRDCalibraExbAltFit.cxx:104
 AliTRDCalibraExbAltFit.cxx:105
 AliTRDCalibraExbAltFit.cxx:106
 AliTRDCalibraExbAltFit.cxx:107
 AliTRDCalibraExbAltFit.cxx:108
 AliTRDCalibraExbAltFit.cxx:109
 AliTRDCalibraExbAltFit.cxx:110
 AliTRDCalibraExbAltFit.cxx:111
 AliTRDCalibraExbAltFit.cxx:112
 AliTRDCalibraExbAltFit.cxx:113
 AliTRDCalibraExbAltFit.cxx:114
 AliTRDCalibraExbAltFit.cxx:115
 AliTRDCalibraExbAltFit.cxx:116
 AliTRDCalibraExbAltFit.cxx:117
 AliTRDCalibraExbAltFit.cxx:118
 AliTRDCalibraExbAltFit.cxx:119
 AliTRDCalibraExbAltFit.cxx:120
 AliTRDCalibraExbAltFit.cxx:121
 AliTRDCalibraExbAltFit.cxx:122
 AliTRDCalibraExbAltFit.cxx:123
 AliTRDCalibraExbAltFit.cxx:124
 AliTRDCalibraExbAltFit.cxx:125
 AliTRDCalibraExbAltFit.cxx:126
 AliTRDCalibraExbAltFit.cxx:127
 AliTRDCalibraExbAltFit.cxx:128
 AliTRDCalibraExbAltFit.cxx:129
 AliTRDCalibraExbAltFit.cxx:130
 AliTRDCalibraExbAltFit.cxx:131
 AliTRDCalibraExbAltFit.cxx:132
 AliTRDCalibraExbAltFit.cxx:133
 AliTRDCalibraExbAltFit.cxx:134
 AliTRDCalibraExbAltFit.cxx:135
 AliTRDCalibraExbAltFit.cxx:136
 AliTRDCalibraExbAltFit.cxx:137
 AliTRDCalibraExbAltFit.cxx:138
 AliTRDCalibraExbAltFit.cxx:139
 AliTRDCalibraExbAltFit.cxx:140
 AliTRDCalibraExbAltFit.cxx:141
 AliTRDCalibraExbAltFit.cxx:142
 AliTRDCalibraExbAltFit.cxx:143
 AliTRDCalibraExbAltFit.cxx:144
 AliTRDCalibraExbAltFit.cxx:145
 AliTRDCalibraExbAltFit.cxx:146
 AliTRDCalibraExbAltFit.cxx:147
 AliTRDCalibraExbAltFit.cxx:148
 AliTRDCalibraExbAltFit.cxx:149
 AliTRDCalibraExbAltFit.cxx:150
 AliTRDCalibraExbAltFit.cxx:151
 AliTRDCalibraExbAltFit.cxx:152
 AliTRDCalibraExbAltFit.cxx:153
 AliTRDCalibraExbAltFit.cxx:154
 AliTRDCalibraExbAltFit.cxx:155
 AliTRDCalibraExbAltFit.cxx:156
 AliTRDCalibraExbAltFit.cxx:157
 AliTRDCalibraExbAltFit.cxx:158
 AliTRDCalibraExbAltFit.cxx:159
 AliTRDCalibraExbAltFit.cxx:160
 AliTRDCalibraExbAltFit.cxx:161
 AliTRDCalibraExbAltFit.cxx:162
 AliTRDCalibraExbAltFit.cxx:163
 AliTRDCalibraExbAltFit.cxx:164
 AliTRDCalibraExbAltFit.cxx:165
 AliTRDCalibraExbAltFit.cxx:166
 AliTRDCalibraExbAltFit.cxx:167
 AliTRDCalibraExbAltFit.cxx:168
 AliTRDCalibraExbAltFit.cxx:169
 AliTRDCalibraExbAltFit.cxx:170
 AliTRDCalibraExbAltFit.cxx:171
 AliTRDCalibraExbAltFit.cxx:172
 AliTRDCalibraExbAltFit.cxx:173
 AliTRDCalibraExbAltFit.cxx:174
 AliTRDCalibraExbAltFit.cxx:175
 AliTRDCalibraExbAltFit.cxx:176
 AliTRDCalibraExbAltFit.cxx:177
 AliTRDCalibraExbAltFit.cxx:178
 AliTRDCalibraExbAltFit.cxx:179
 AliTRDCalibraExbAltFit.cxx:180
 AliTRDCalibraExbAltFit.cxx:181
 AliTRDCalibraExbAltFit.cxx:182
 AliTRDCalibraExbAltFit.cxx:183
 AliTRDCalibraExbAltFit.cxx:184
 AliTRDCalibraExbAltFit.cxx:185
 AliTRDCalibraExbAltFit.cxx:186
 AliTRDCalibraExbAltFit.cxx:187
 AliTRDCalibraExbAltFit.cxx:188
 AliTRDCalibraExbAltFit.cxx:189
 AliTRDCalibraExbAltFit.cxx:190
 AliTRDCalibraExbAltFit.cxx:191
 AliTRDCalibraExbAltFit.cxx:192
 AliTRDCalibraExbAltFit.cxx:193
 AliTRDCalibraExbAltFit.cxx:194
 AliTRDCalibraExbAltFit.cxx:195
 AliTRDCalibraExbAltFit.cxx:196
 AliTRDCalibraExbAltFit.cxx:197
 AliTRDCalibraExbAltFit.cxx:198
 AliTRDCalibraExbAltFit.cxx:199
 AliTRDCalibraExbAltFit.cxx:200
 AliTRDCalibraExbAltFit.cxx:201
 AliTRDCalibraExbAltFit.cxx:202
 AliTRDCalibraExbAltFit.cxx:203
 AliTRDCalibraExbAltFit.cxx:204
 AliTRDCalibraExbAltFit.cxx:205
 AliTRDCalibraExbAltFit.cxx:206
 AliTRDCalibraExbAltFit.cxx:207
 AliTRDCalibraExbAltFit.cxx:208
 AliTRDCalibraExbAltFit.cxx:209
 AliTRDCalibraExbAltFit.cxx:210
 AliTRDCalibraExbAltFit.cxx:211
 AliTRDCalibraExbAltFit.cxx:212
 AliTRDCalibraExbAltFit.cxx:213
 AliTRDCalibraExbAltFit.cxx:214
 AliTRDCalibraExbAltFit.cxx:215
 AliTRDCalibraExbAltFit.cxx:216
 AliTRDCalibraExbAltFit.cxx:217
 AliTRDCalibraExbAltFit.cxx:218
 AliTRDCalibraExbAltFit.cxx:219
 AliTRDCalibraExbAltFit.cxx:220
 AliTRDCalibraExbAltFit.cxx:221
 AliTRDCalibraExbAltFit.cxx:222
 AliTRDCalibraExbAltFit.cxx:223
 AliTRDCalibraExbAltFit.cxx:224
 AliTRDCalibraExbAltFit.cxx:225
 AliTRDCalibraExbAltFit.cxx:226
 AliTRDCalibraExbAltFit.cxx:227
 AliTRDCalibraExbAltFit.cxx:228
 AliTRDCalibraExbAltFit.cxx:229
 AliTRDCalibraExbAltFit.cxx:230
 AliTRDCalibraExbAltFit.cxx:231
 AliTRDCalibraExbAltFit.cxx:232
 AliTRDCalibraExbAltFit.cxx:233
 AliTRDCalibraExbAltFit.cxx:234
 AliTRDCalibraExbAltFit.cxx:235
 AliTRDCalibraExbAltFit.cxx:236
 AliTRDCalibraExbAltFit.cxx:237
 AliTRDCalibraExbAltFit.cxx:238
 AliTRDCalibraExbAltFit.cxx:239
 AliTRDCalibraExbAltFit.cxx:240
 AliTRDCalibraExbAltFit.cxx:241
 AliTRDCalibraExbAltFit.cxx:242
 AliTRDCalibraExbAltFit.cxx:243
 AliTRDCalibraExbAltFit.cxx:244
 AliTRDCalibraExbAltFit.cxx:245
 AliTRDCalibraExbAltFit.cxx:246
 AliTRDCalibraExbAltFit.cxx:247
 AliTRDCalibraExbAltFit.cxx:248
 AliTRDCalibraExbAltFit.cxx:249
 AliTRDCalibraExbAltFit.cxx:250
 AliTRDCalibraExbAltFit.cxx:251
 AliTRDCalibraExbAltFit.cxx:252
 AliTRDCalibraExbAltFit.cxx:253
 AliTRDCalibraExbAltFit.cxx:254
 AliTRDCalibraExbAltFit.cxx:255
 AliTRDCalibraExbAltFit.cxx:256
 AliTRDCalibraExbAltFit.cxx:257
 AliTRDCalibraExbAltFit.cxx:258
 AliTRDCalibraExbAltFit.cxx:259
 AliTRDCalibraExbAltFit.cxx:260
 AliTRDCalibraExbAltFit.cxx:261
 AliTRDCalibraExbAltFit.cxx:262
 AliTRDCalibraExbAltFit.cxx:263
 AliTRDCalibraExbAltFit.cxx:264
 AliTRDCalibraExbAltFit.cxx:265
 AliTRDCalibraExbAltFit.cxx:266
 AliTRDCalibraExbAltFit.cxx:267
 AliTRDCalibraExbAltFit.cxx:268
 AliTRDCalibraExbAltFit.cxx:269
 AliTRDCalibraExbAltFit.cxx:270
 AliTRDCalibraExbAltFit.cxx:271
 AliTRDCalibraExbAltFit.cxx:272
 AliTRDCalibraExbAltFit.cxx:273
 AliTRDCalibraExbAltFit.cxx:274
 AliTRDCalibraExbAltFit.cxx:275
 AliTRDCalibraExbAltFit.cxx:276
 AliTRDCalibraExbAltFit.cxx:277
 AliTRDCalibraExbAltFit.cxx:278
 AliTRDCalibraExbAltFit.cxx:279
 AliTRDCalibraExbAltFit.cxx:280
 AliTRDCalibraExbAltFit.cxx:281
 AliTRDCalibraExbAltFit.cxx:282
 AliTRDCalibraExbAltFit.cxx:283
 AliTRDCalibraExbAltFit.cxx:284
 AliTRDCalibraExbAltFit.cxx:285
 AliTRDCalibraExbAltFit.cxx:286
 AliTRDCalibraExbAltFit.cxx:287
 AliTRDCalibraExbAltFit.cxx:288
 AliTRDCalibraExbAltFit.cxx:289
 AliTRDCalibraExbAltFit.cxx:290
 AliTRDCalibraExbAltFit.cxx:291
 AliTRDCalibraExbAltFit.cxx:292
 AliTRDCalibraExbAltFit.cxx:293
 AliTRDCalibraExbAltFit.cxx:294
 AliTRDCalibraExbAltFit.cxx:295
 AliTRDCalibraExbAltFit.cxx:296
 AliTRDCalibraExbAltFit.cxx:297
 AliTRDCalibraExbAltFit.cxx:298
 AliTRDCalibraExbAltFit.cxx:299
 AliTRDCalibraExbAltFit.cxx:300
 AliTRDCalibraExbAltFit.cxx:301
 AliTRDCalibraExbAltFit.cxx:302
 AliTRDCalibraExbAltFit.cxx:303
 AliTRDCalibraExbAltFit.cxx:304
 AliTRDCalibraExbAltFit.cxx:305
 AliTRDCalibraExbAltFit.cxx:306
 AliTRDCalibraExbAltFit.cxx:307
 AliTRDCalibraExbAltFit.cxx:308
 AliTRDCalibraExbAltFit.cxx:309
 AliTRDCalibraExbAltFit.cxx:310
 AliTRDCalibraExbAltFit.cxx:311
 AliTRDCalibraExbAltFit.cxx:312
 AliTRDCalibraExbAltFit.cxx:313
 AliTRDCalibraExbAltFit.cxx:314
 AliTRDCalibraExbAltFit.cxx:315
 AliTRDCalibraExbAltFit.cxx:316
 AliTRDCalibraExbAltFit.cxx:317
 AliTRDCalibraExbAltFit.cxx:318
 AliTRDCalibraExbAltFit.cxx:319
 AliTRDCalibraExbAltFit.cxx:320
 AliTRDCalibraExbAltFit.cxx:321
 AliTRDCalibraExbAltFit.cxx:322
 AliTRDCalibraExbAltFit.cxx:323
 AliTRDCalibraExbAltFit.cxx:324
 AliTRDCalibraExbAltFit.cxx:325
 AliTRDCalibraExbAltFit.cxx:326
 AliTRDCalibraExbAltFit.cxx:327
 AliTRDCalibraExbAltFit.cxx:328
 AliTRDCalibraExbAltFit.cxx:329
 AliTRDCalibraExbAltFit.cxx:330
 AliTRDCalibraExbAltFit.cxx:331
 AliTRDCalibraExbAltFit.cxx:332
 AliTRDCalibraExbAltFit.cxx:333
 AliTRDCalibraExbAltFit.cxx:334
 AliTRDCalibraExbAltFit.cxx:335
 AliTRDCalibraExbAltFit.cxx:336
 AliTRDCalibraExbAltFit.cxx:337
 AliTRDCalibraExbAltFit.cxx:338
 AliTRDCalibraExbAltFit.cxx:339
 AliTRDCalibraExbAltFit.cxx:340
 AliTRDCalibraExbAltFit.cxx:341
 AliTRDCalibraExbAltFit.cxx:342
 AliTRDCalibraExbAltFit.cxx:343
 AliTRDCalibraExbAltFit.cxx:344
 AliTRDCalibraExbAltFit.cxx:345
 AliTRDCalibraExbAltFit.cxx:346
 AliTRDCalibraExbAltFit.cxx:347
 AliTRDCalibraExbAltFit.cxx:348
 AliTRDCalibraExbAltFit.cxx:349
 AliTRDCalibraExbAltFit.cxx:350
 AliTRDCalibraExbAltFit.cxx:351
 AliTRDCalibraExbAltFit.cxx:352
 AliTRDCalibraExbAltFit.cxx:353
 AliTRDCalibraExbAltFit.cxx:354
 AliTRDCalibraExbAltFit.cxx:355
 AliTRDCalibraExbAltFit.cxx:356
 AliTRDCalibraExbAltFit.cxx:357
 AliTRDCalibraExbAltFit.cxx:358
 AliTRDCalibraExbAltFit.cxx:359
 AliTRDCalibraExbAltFit.cxx:360
 AliTRDCalibraExbAltFit.cxx:361
 AliTRDCalibraExbAltFit.cxx:362
 AliTRDCalibraExbAltFit.cxx:363
 AliTRDCalibraExbAltFit.cxx:364
 AliTRDCalibraExbAltFit.cxx:365
 AliTRDCalibraExbAltFit.cxx:366
 AliTRDCalibraExbAltFit.cxx:367
 AliTRDCalibraExbAltFit.cxx:368
 AliTRDCalibraExbAltFit.cxx:369
 AliTRDCalibraExbAltFit.cxx:370
 AliTRDCalibraExbAltFit.cxx:371
 AliTRDCalibraExbAltFit.cxx:372
 AliTRDCalibraExbAltFit.cxx:373
 AliTRDCalibraExbAltFit.cxx:374
 AliTRDCalibraExbAltFit.cxx:375
 AliTRDCalibraExbAltFit.cxx:376
 AliTRDCalibraExbAltFit.cxx:377
 AliTRDCalibraExbAltFit.cxx:378
 AliTRDCalibraExbAltFit.cxx:379
 AliTRDCalibraExbAltFit.cxx:380
 AliTRDCalibraExbAltFit.cxx:381
 AliTRDCalibraExbAltFit.cxx:382
 AliTRDCalibraExbAltFit.cxx:383
 AliTRDCalibraExbAltFit.cxx:384
 AliTRDCalibraExbAltFit.cxx:385
 AliTRDCalibraExbAltFit.cxx:386
 AliTRDCalibraExbAltFit.cxx:387
 AliTRDCalibraExbAltFit.cxx:388
 AliTRDCalibraExbAltFit.cxx:389
 AliTRDCalibraExbAltFit.cxx:390
 AliTRDCalibraExbAltFit.cxx:391
 AliTRDCalibraExbAltFit.cxx:392
 AliTRDCalibraExbAltFit.cxx:393
 AliTRDCalibraExbAltFit.cxx:394
 AliTRDCalibraExbAltFit.cxx:395
 AliTRDCalibraExbAltFit.cxx:396
 AliTRDCalibraExbAltFit.cxx:397
 AliTRDCalibraExbAltFit.cxx:398
 AliTRDCalibraExbAltFit.cxx:399
 AliTRDCalibraExbAltFit.cxx:400
 AliTRDCalibraExbAltFit.cxx:401
 AliTRDCalibraExbAltFit.cxx:402
 AliTRDCalibraExbAltFit.cxx:403
 AliTRDCalibraExbAltFit.cxx:404
 AliTRDCalibraExbAltFit.cxx:405
 AliTRDCalibraExbAltFit.cxx:406
 AliTRDCalibraExbAltFit.cxx:407
 AliTRDCalibraExbAltFit.cxx:408
 AliTRDCalibraExbAltFit.cxx:409
 AliTRDCalibraExbAltFit.cxx:410
 AliTRDCalibraExbAltFit.cxx:411
 AliTRDCalibraExbAltFit.cxx:412
 AliTRDCalibraExbAltFit.cxx:413
 AliTRDCalibraExbAltFit.cxx:414
 AliTRDCalibraExbAltFit.cxx:415
 AliTRDCalibraExbAltFit.cxx:416
 AliTRDCalibraExbAltFit.cxx:417
 AliTRDCalibraExbAltFit.cxx:418
 AliTRDCalibraExbAltFit.cxx:419
 AliTRDCalibraExbAltFit.cxx:420
 AliTRDCalibraExbAltFit.cxx:421
 AliTRDCalibraExbAltFit.cxx:422
 AliTRDCalibraExbAltFit.cxx:423
 AliTRDCalibraExbAltFit.cxx:424
 AliTRDCalibraExbAltFit.cxx:425
 AliTRDCalibraExbAltFit.cxx:426
 AliTRDCalibraExbAltFit.cxx:427
 AliTRDCalibraExbAltFit.cxx:428
 AliTRDCalibraExbAltFit.cxx:429
 AliTRDCalibraExbAltFit.cxx:430
 AliTRDCalibraExbAltFit.cxx:431
 AliTRDCalibraExbAltFit.cxx:432
 AliTRDCalibraExbAltFit.cxx:433
 AliTRDCalibraExbAltFit.cxx:434
 AliTRDCalibraExbAltFit.cxx:435
 AliTRDCalibraExbAltFit.cxx:436
 AliTRDCalibraExbAltFit.cxx:437
 AliTRDCalibraExbAltFit.cxx:438
 AliTRDCalibraExbAltFit.cxx:439
 AliTRDCalibraExbAltFit.cxx:440
 AliTRDCalibraExbAltFit.cxx:441
 AliTRDCalibraExbAltFit.cxx:442
 AliTRDCalibraExbAltFit.cxx:443
 AliTRDCalibraExbAltFit.cxx:444
 AliTRDCalibraExbAltFit.cxx:445
 AliTRDCalibraExbAltFit.cxx:446
 AliTRDCalibraExbAltFit.cxx:447
 AliTRDCalibraExbAltFit.cxx:448
 AliTRDCalibraExbAltFit.cxx:449
 AliTRDCalibraExbAltFit.cxx:450
 AliTRDCalibraExbAltFit.cxx:451
 AliTRDCalibraExbAltFit.cxx:452
 AliTRDCalibraExbAltFit.cxx:453
 AliTRDCalibraExbAltFit.cxx:454
 AliTRDCalibraExbAltFit.cxx:455
 AliTRDCalibraExbAltFit.cxx:456
 AliTRDCalibraExbAltFit.cxx:457
 AliTRDCalibraExbAltFit.cxx:458
 AliTRDCalibraExbAltFit.cxx:459
 AliTRDCalibraExbAltFit.cxx:460
 AliTRDCalibraExbAltFit.cxx:461
 AliTRDCalibraExbAltFit.cxx:462
 AliTRDCalibraExbAltFit.cxx:463
 AliTRDCalibraExbAltFit.cxx:464
 AliTRDCalibraExbAltFit.cxx:465
 AliTRDCalibraExbAltFit.cxx:466
 AliTRDCalibraExbAltFit.cxx:467
 AliTRDCalibraExbAltFit.cxx:468
 AliTRDCalibraExbAltFit.cxx:469
 AliTRDCalibraExbAltFit.cxx:470
 AliTRDCalibraExbAltFit.cxx:471
 AliTRDCalibraExbAltFit.cxx:472
 AliTRDCalibraExbAltFit.cxx:473
 AliTRDCalibraExbAltFit.cxx:474
 AliTRDCalibraExbAltFit.cxx:475
 AliTRDCalibraExbAltFit.cxx:476
 AliTRDCalibraExbAltFit.cxx:477
 AliTRDCalibraExbAltFit.cxx:478
 AliTRDCalibraExbAltFit.cxx:479
 AliTRDCalibraExbAltFit.cxx:480
 AliTRDCalibraExbAltFit.cxx:481
 AliTRDCalibraExbAltFit.cxx:482
 AliTRDCalibraExbAltFit.cxx:483
 AliTRDCalibraExbAltFit.cxx:484
 AliTRDCalibraExbAltFit.cxx:485
 AliTRDCalibraExbAltFit.cxx:486
 AliTRDCalibraExbAltFit.cxx:487
 AliTRDCalibraExbAltFit.cxx:488
 AliTRDCalibraExbAltFit.cxx:489
 AliTRDCalibraExbAltFit.cxx:490
 AliTRDCalibraExbAltFit.cxx:491
 AliTRDCalibraExbAltFit.cxx:492
 AliTRDCalibraExbAltFit.cxx:493
 AliTRDCalibraExbAltFit.cxx:494
 AliTRDCalibraExbAltFit.cxx:495
 AliTRDCalibraExbAltFit.cxx:496
 AliTRDCalibraExbAltFit.cxx:497
 AliTRDCalibraExbAltFit.cxx:498
 AliTRDCalibraExbAltFit.cxx:499
 AliTRDCalibraExbAltFit.cxx:500
 AliTRDCalibraExbAltFit.cxx:501
 AliTRDCalibraExbAltFit.cxx:502
 AliTRDCalibraExbAltFit.cxx:503
 AliTRDCalibraExbAltFit.cxx:504
 AliTRDCalibraExbAltFit.cxx:505
 AliTRDCalibraExbAltFit.cxx:506
 AliTRDCalibraExbAltFit.cxx:507
 AliTRDCalibraExbAltFit.cxx:508