ROOT logo

/*************************************************************************
* Copyright(c) 1998-2009, 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.                  *
**************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                Add general description                                 //
//                                                                       //
//                                                                       //
/*
Detailed description


*/
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include <TMath.h>
#include <TVectorT.h>
#include <TH1.h>
#include <TROOT.h>
#include <TCanvas.h>

#include <AliCFContainer.h>
#include <AliCFGridSparse.h>

#include "AliDielectronSignalBase.h"
#include "AliDielectronSignalFunc.h"

#include "AliDielectronSpectrum.h"

ClassImp(AliDielectronSpectrum)

AliDielectronSpectrum::AliDielectronSpectrum() :
  TNamed(),
  fCFSignal(0x0),
  fCFCorrection(0x0),
  fCFSpectrum(0x0),
  fCFCorrMatrix(0x0),
  fStepSignal(kTRUE),
  fStepSignificance(kFALSE),
  fStepSOB(kFALSE),
  fStepMass(kFALSE),
  fStepMassWidth(kFALSE),
  fSignalStep(-1),
  fCorrNom(-1),
  fCorrDenom(-1),
  fSignalMethods(0),
  fVariables("Pt"),
  fOwnerSpectrum(kTRUE),
  fVisualDebug(kFALSE),
  fNvars(0),
  fVars(0x0),
  fNbins(0x0),
  fCurrentBins(0x0),
  fCurrentPositions(0x0)
{
  //
  // Default Constructor
  //
  fSignalMethods.SetOwner(kFALSE);
}

//______________________________________________
AliDielectronSpectrum::AliDielectronSpectrum(const char* name, const char* title) :
  TNamed(name, title),
  fCFSignal(0x0),
  fCFCorrection(0x0),
  fCFSpectrum(0x0),
  fCFCorrMatrix(0x0),
  fStepSignal(kTRUE),
  fStepSignificance(kFALSE),
  fStepSOB(kFALSE),
  fStepMass(kFALSE),
  fStepMassWidth(kFALSE),
  fSignalStep(-1),
  fCorrNom(-1),
  fCorrDenom(-1),
  fSignalMethods(0),
  fVariables("Pt"),
  fOwnerSpectrum(kTRUE),
  fVisualDebug(kFALSE),
  fNvars(0),
  fVars(0x0),
  fNbins(0x0),
  fCurrentBins(0x0),
  fCurrentPositions(0x0)
{
  //
  // Named Constructor
  //
  fSignalMethods.SetOwner(kFALSE);
}

//______________________________________________
AliDielectronSpectrum::~AliDielectronSpectrum()
{
  //
  // Default Destructor
  //

  if (fNbins) delete [] fNbins;
  if (fVars) delete [] fVars;
  if (fCFCorrMatrix) delete fCFCorrMatrix;
  if ( fOwnerSpectrum && fCFSpectrum ) delete fCFSpectrum;
}

//______________________________________________
void AliDielectronSpectrum::Process()
{
  //
  // Extract signal and perform correction in the specified bins
  //

  //sanity checks
  if (!fCFSignal){
    AliError("Cannot perform signal extraction, no signal container set");
    return;
  }
  
  if (fSignalMethods.GetEntries()==0){
    AliWarning("No Signal extraction method specified, using a default one");
    AliDielectronSignalFunc *func=new AliDielectronSignalFunc("gaus+exp","Gauss for Signal and Exponential background");
    func->SetDefaults(1);
    fSignalMethods.Add(func);
    fSignalMethods.SetOwner();
  }

  //setup configured variables
  if (!SetupVariables()) return;
  
  //create container for the spectrum
  CreateCFSpectrum();

  if (!fCFSpectrum){
    AliError("Could not create the Spectrum container");
    return;
  }

  //get efficiency map if correction container is available
  if (fCFCorrection&&!fCFCorrMatrix){
    CreateCorrectionMatrix();
  }

  //loop over all configured bins and extract the signal
  fCurrentBins=new Int_t[fNvars];
  fCurrentPositions=new Double_t[fNvars];
  ExtractSignalInBins();
  delete [] fCurrentBins;
  delete [] fCurrentPositions;
  if (fSignalMethods.IsOwner()) {
    fSignalMethods.Delete();
    fSignalMethods.SetOwner(kFALSE);
  }
  
}

//______________________________________________
Bool_t AliDielectronSpectrum::SetupVariables()
{
  //
  // Setup the variables arrays
  //
  
  TObjArray *arr=fVariables.Tokenize(":");
  fNvars=arr->GetEntries();
  fVars=new Int_t[fNvars];
  fNbins=new Int_t[fNvars];
  
  for (Int_t iVar=0; iVar<fNvars; ++iVar){
    fVars[iVar]=fCFSignal->GetVar(arr->UncheckedAt(iVar)->GetName());
    if (fVars[iVar]==-1){
      AliError(Form("Variable '%s' not found in Signal container!",arr->UncheckedAt(iVar)->GetName()));
      delete [] fVars;
      fVars=0x0;
      delete [] fNbins;
      fNbins=0x0;
      delete arr;
      return kFALSE;
    }
    
    fNbins[iVar]=fCFSignal->GetNBins(fVars[iVar]);
  }
  delete arr;
  return kTRUE;
}

//______________________________________________
void AliDielectronSpectrum::CreateCFSpectrum()
{
  //
  // Create CF container for the spectrum
  //

  Int_t nAddStep=0;
  if (fStepSignal)       nAddStep+=2;
  if (fStepSignificance) ++nAddStep;
  if (fStepSOB)          ++nAddStep;
  if (fStepMass)         ++nAddStep;
  if (fStepMassWidth)    ++nAddStep;
  
  Int_t nStep=nAddStep*(fSignalMethods.GetEntries());
  if (fSignalMethods.GetEntries()>1) nStep+=nAddStep;

  fCFSpectrum = new AliCFContainer(GetName(), GetTitle(), nStep, fNvars, fNbins);

  // initialize the variables and their bin limits
  for (Int_t iVar=0; iVar<fNvars; iVar++) {
    fCFSpectrum->SetBinLimits(iVar, fCFSignal->GetBinLimits(fVars[iVar]));
    fCFSpectrum->SetVarTitle(iVar, fCFSignal->GetVarTitle(fVars[iVar]));
  }

  // setup step titles
  Int_t steps=0;
  for (Int_t iMethod=0; iMethod<fSignalMethods.GetEntries(); ++iMethod){
    TString name(fSignalMethods.UncheckedAt(iMethod)->GetName());
    if (fStepSignal){
      fCFSpectrum->SetStepTitle(steps++,(name+" (Signal)").Data());
      fCFSpectrum->SetStepTitle(steps++,(name+" (Corrected Signal)").Data());
    }
    if (fStepSignificance){
      fCFSpectrum->SetStepTitle(steps++,(name+" (Significance)").Data());
    }
    if (fStepSOB){
      fCFSpectrum->SetStepTitle(steps++,(name+" (S/B)").Data());
    }
    if (fStepMass){
      fCFSpectrum->SetStepTitle(steps++,(name+" (Mass)").Data());
    }
    if (fStepMassWidth){
      fCFSpectrum->SetStepTitle(steps++,(name+" (Mass width)").Data());
    }
  }

  if (fSignalMethods.GetEntries()>1){
    fCFSpectrum->SetStepTitle(steps++,"Mean of methods");
    fCFSpectrum->SetStepTitle(steps++,"Mean of methods (Corrected)");
  }

  if (nStep!=steps){
    AliError("Something went wrong in the step creation");
    delete fCFSpectrum;
    fCFSpectrum=0x0;
  }
}

//______________________________________________
void AliDielectronSpectrum::CreateCorrectionMatrix()
{
  //
  // Get the correction matrix for the corresponding variables
  //

  if (!fCFCorrection) return;
  
  TObjArray *arr=fVariables.Tokenize(":");
  Int_t nvars=arr->GetEntries();
  Int_t *vars=new Int_t[nvars];
  
  for (Int_t iVar=0; iVar<fNvars; ++iVar){
    vars[iVar]=fCFCorrection->GetVar(arr->UncheckedAt(iVar)->GetName());
    if (vars[iVar]==-1){
      AliError(Form("Variable '%s' not found in Correction container!",arr->UncheckedAt(iVar)->GetName()));
      delete [] vars;
      delete arr;
      return;
    }
  }
  delete arr;
  
  fCFCorrMatrix  =fCFCorrection->GetGrid(fCorrNom)->Project(nvars,vars,0,0);
  AliCFGridSparse *hnDeNom=fCFCorrection->GetGrid(fCorrDenom)->Project(nvars,vars,0,0);
  fCFCorrMatrix->Divide(hnDeNom);
  delete hnDeNom;
}

//______________________________________________
void AliDielectronSpectrum::ExtractSignalInBins(Int_t variable)
{
  //
  // recursively loop over bins and extract signal
  //

  Int_t varPairType=fCFSignal->GetVar("PairType");
  Int_t varMass=fCFSignal->GetVar("M");
  
  for (Int_t ibin=0; ibin<fNbins[variable]; ++ibin){
    Int_t bin=ibin+1;
    fCFSignal->GetGrid(fSignalStep)->GetGrid()->GetAxis(fVars[variable])->SetRange(bin,bin);
    fCurrentBins[variable]=bin;
    fCurrentPositions[variable]=fCFSignal->GetGrid(fSignalStep)->GetBinCenter(fVars[variable],bin);
    
    if (variable != fNvars-1) ExtractSignalInBins(variable+1);
    
    TObjArray arrPairTypes(10);
    arrPairTypes.SetOwner();
  
    for (Int_t itype=0; itype<3; ++itype){
//     Int_t itype=1;
      fCFSignal->SetRangeUser(varPairType,itype,itype,fSignalStep);
      TH1 *h=fCFSignal->Project(varMass,fSignalStep);
      h->SetDirectory(0);
      arrPairTypes.AddAt(h,itype);
    }
    AliInfo(Form("Processing bin: %d (%.2f)",ibin, fCurrentPositions[variable]));
    //loop over all signal extraction methods and retrieve signals
    for (Int_t iMethod=0; iMethod<fSignalMethods.GetEntries(); ++iMethod){
      AliDielectronSignalBase *signalMethod=(AliDielectronSignalBase*)fSignalMethods.At(iMethod);
      signalMethod->Process(&arrPairTypes);
      if (fVisualDebug){
        TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject("SpectrumVisualDebug");
        if (!c) c=new TCanvas("SpectrumVisualDebug","SpectrumVisualDebug");
        c->Clear();
        TString binsProc;
        for (Int_t ivar=0; ivar<fNvars; ++ivar) binsProc+=Form("_%02d",fCurrentBins[ivar]);
        signalMethod->Draw("stat");
        binsProc.Append(".png");
        binsProc.Prepend("SpectrumVisualDebug");
        c->Update();
        c->Print(binsProc.Data());
      }
      const TVectorD &val=signalMethod->GetValues();
      const TVectorD &err=signalMethod->GetErrors();
      
      //Fill sparse containers
      Int_t step=0;
      if (fStepSignal){
        //signal
        fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,val(0));
        fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,err(0));
        ++step;

        //corrected signal
        if (fCFCorrMatrix){
          Float_t corrFactor = fCFCorrMatrix->GetElement(fCurrentPositions);
          Float_t corrError  = fCFCorrMatrix->GetElementError(fCurrentPositions);

          Float_t value=val(0)*corrFactor;
          fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,value);
          Float_t error=TMath::Sqrt( (err(0)/val(0))*(err(0)/val(0)) +
                                     (corrError/corrFactor)*(corrError/corrFactor)
                                   )*value;
          fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,error);
//           printf("corrFactor: %f+-%f\n",value,error);
        }
        ++step;
      }

      if (fStepSignificance) {
        fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,val(2));
        fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,err(2));
        ++step;
      }
      
      if (fStepSOB) {
        fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,val(3));
        fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,err(3));
        ++step;
      }

      if (fStepMass) {
        fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,val(4));
        fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,err(4));
        ++step;
      }
      
      if (fStepMassWidth) {
        fCFSpectrum->GetGrid(step)->SetElement(fCurrentBins,val(5));
        fCFSpectrum->GetGrid(step)->SetElementError(fCurrentBins,err(5));
        ++step;
      }
    }// end method loop
    
    arrPairTypes.Delete();
    
  }// end bin loop
}

 AliDielectronSpectrum.cxx:1
 AliDielectronSpectrum.cxx:2
 AliDielectronSpectrum.cxx:3
 AliDielectronSpectrum.cxx:4
 AliDielectronSpectrum.cxx:5
 AliDielectronSpectrum.cxx:6
 AliDielectronSpectrum.cxx:7
 AliDielectronSpectrum.cxx:8
 AliDielectronSpectrum.cxx:9
 AliDielectronSpectrum.cxx:10
 AliDielectronSpectrum.cxx:11
 AliDielectronSpectrum.cxx:12
 AliDielectronSpectrum.cxx:13
 AliDielectronSpectrum.cxx:14
 AliDielectronSpectrum.cxx:15
 AliDielectronSpectrum.cxx:16
 AliDielectronSpectrum.cxx:17
 AliDielectronSpectrum.cxx:18
 AliDielectronSpectrum.cxx:19
 AliDielectronSpectrum.cxx:20
 AliDielectronSpectrum.cxx:21
 AliDielectronSpectrum.cxx:22
 AliDielectronSpectrum.cxx:23
 AliDielectronSpectrum.cxx:24
 AliDielectronSpectrum.cxx:25
 AliDielectronSpectrum.cxx:26
 AliDielectronSpectrum.cxx:27
 AliDielectronSpectrum.cxx:28
 AliDielectronSpectrum.cxx:29
 AliDielectronSpectrum.cxx:30
 AliDielectronSpectrum.cxx:31
 AliDielectronSpectrum.cxx:32
 AliDielectronSpectrum.cxx:33
 AliDielectronSpectrum.cxx:34
 AliDielectronSpectrum.cxx:35
 AliDielectronSpectrum.cxx:36
 AliDielectronSpectrum.cxx:37
 AliDielectronSpectrum.cxx:38
 AliDielectronSpectrum.cxx:39
 AliDielectronSpectrum.cxx:40
 AliDielectronSpectrum.cxx:41
 AliDielectronSpectrum.cxx:42
 AliDielectronSpectrum.cxx:43
 AliDielectronSpectrum.cxx:44
 AliDielectronSpectrum.cxx:45
 AliDielectronSpectrum.cxx:46
 AliDielectronSpectrum.cxx:47
 AliDielectronSpectrum.cxx:48
 AliDielectronSpectrum.cxx:49
 AliDielectronSpectrum.cxx:50
 AliDielectronSpectrum.cxx:51
 AliDielectronSpectrum.cxx:52
 AliDielectronSpectrum.cxx:53
 AliDielectronSpectrum.cxx:54
 AliDielectronSpectrum.cxx:55
 AliDielectronSpectrum.cxx:56
 AliDielectronSpectrum.cxx:57
 AliDielectronSpectrum.cxx:58
 AliDielectronSpectrum.cxx:59
 AliDielectronSpectrum.cxx:60
 AliDielectronSpectrum.cxx:61
 AliDielectronSpectrum.cxx:62
 AliDielectronSpectrum.cxx:63
 AliDielectronSpectrum.cxx:64
 AliDielectronSpectrum.cxx:65
 AliDielectronSpectrum.cxx:66
 AliDielectronSpectrum.cxx:67
 AliDielectronSpectrum.cxx:68
 AliDielectronSpectrum.cxx:69
 AliDielectronSpectrum.cxx:70
 AliDielectronSpectrum.cxx:71
 AliDielectronSpectrum.cxx:72
 AliDielectronSpectrum.cxx:73
 AliDielectronSpectrum.cxx:74
 AliDielectronSpectrum.cxx:75
 AliDielectronSpectrum.cxx:76
 AliDielectronSpectrum.cxx:77
 AliDielectronSpectrum.cxx:78
 AliDielectronSpectrum.cxx:79
 AliDielectronSpectrum.cxx:80
 AliDielectronSpectrum.cxx:81
 AliDielectronSpectrum.cxx:82
 AliDielectronSpectrum.cxx:83
 AliDielectronSpectrum.cxx:84
 AliDielectronSpectrum.cxx:85
 AliDielectronSpectrum.cxx:86
 AliDielectronSpectrum.cxx:87
 AliDielectronSpectrum.cxx:88
 AliDielectronSpectrum.cxx:89
 AliDielectronSpectrum.cxx:90
 AliDielectronSpectrum.cxx:91
 AliDielectronSpectrum.cxx:92
 AliDielectronSpectrum.cxx:93
 AliDielectronSpectrum.cxx:94
 AliDielectronSpectrum.cxx:95
 AliDielectronSpectrum.cxx:96
 AliDielectronSpectrum.cxx:97
 AliDielectronSpectrum.cxx:98
 AliDielectronSpectrum.cxx:99
 AliDielectronSpectrum.cxx:100
 AliDielectronSpectrum.cxx:101
 AliDielectronSpectrum.cxx:102
 AliDielectronSpectrum.cxx:103
 AliDielectronSpectrum.cxx:104
 AliDielectronSpectrum.cxx:105
 AliDielectronSpectrum.cxx:106
 AliDielectronSpectrum.cxx:107
 AliDielectronSpectrum.cxx:108
 AliDielectronSpectrum.cxx:109
 AliDielectronSpectrum.cxx:110
 AliDielectronSpectrum.cxx:111
 AliDielectronSpectrum.cxx:112
 AliDielectronSpectrum.cxx:113
 AliDielectronSpectrum.cxx:114
 AliDielectronSpectrum.cxx:115
 AliDielectronSpectrum.cxx:116
 AliDielectronSpectrum.cxx:117
 AliDielectronSpectrum.cxx:118
 AliDielectronSpectrum.cxx:119
 AliDielectronSpectrum.cxx:120
 AliDielectronSpectrum.cxx:121
 AliDielectronSpectrum.cxx:122
 AliDielectronSpectrum.cxx:123
 AliDielectronSpectrum.cxx:124
 AliDielectronSpectrum.cxx:125
 AliDielectronSpectrum.cxx:126
 AliDielectronSpectrum.cxx:127
 AliDielectronSpectrum.cxx:128
 AliDielectronSpectrum.cxx:129
 AliDielectronSpectrum.cxx:130
 AliDielectronSpectrum.cxx:131
 AliDielectronSpectrum.cxx:132
 AliDielectronSpectrum.cxx:133
 AliDielectronSpectrum.cxx:134
 AliDielectronSpectrum.cxx:135
 AliDielectronSpectrum.cxx:136
 AliDielectronSpectrum.cxx:137
 AliDielectronSpectrum.cxx:138
 AliDielectronSpectrum.cxx:139
 AliDielectronSpectrum.cxx:140
 AliDielectronSpectrum.cxx:141
 AliDielectronSpectrum.cxx:142
 AliDielectronSpectrum.cxx:143
 AliDielectronSpectrum.cxx:144
 AliDielectronSpectrum.cxx:145
 AliDielectronSpectrum.cxx:146
 AliDielectronSpectrum.cxx:147
 AliDielectronSpectrum.cxx:148
 AliDielectronSpectrum.cxx:149
 AliDielectronSpectrum.cxx:150
 AliDielectronSpectrum.cxx:151
 AliDielectronSpectrum.cxx:152
 AliDielectronSpectrum.cxx:153
 AliDielectronSpectrum.cxx:154
 AliDielectronSpectrum.cxx:155
 AliDielectronSpectrum.cxx:156
 AliDielectronSpectrum.cxx:157
 AliDielectronSpectrum.cxx:158
 AliDielectronSpectrum.cxx:159
 AliDielectronSpectrum.cxx:160
 AliDielectronSpectrum.cxx:161
 AliDielectronSpectrum.cxx:162
 AliDielectronSpectrum.cxx:163
 AliDielectronSpectrum.cxx:164
 AliDielectronSpectrum.cxx:165
 AliDielectronSpectrum.cxx:166
 AliDielectronSpectrum.cxx:167
 AliDielectronSpectrum.cxx:168
 AliDielectronSpectrum.cxx:169
 AliDielectronSpectrum.cxx:170
 AliDielectronSpectrum.cxx:171
 AliDielectronSpectrum.cxx:172
 AliDielectronSpectrum.cxx:173
 AliDielectronSpectrum.cxx:174
 AliDielectronSpectrum.cxx:175
 AliDielectronSpectrum.cxx:176
 AliDielectronSpectrum.cxx:177
 AliDielectronSpectrum.cxx:178
 AliDielectronSpectrum.cxx:179
 AliDielectronSpectrum.cxx:180
 AliDielectronSpectrum.cxx:181
 AliDielectronSpectrum.cxx:182
 AliDielectronSpectrum.cxx:183
 AliDielectronSpectrum.cxx:184
 AliDielectronSpectrum.cxx:185
 AliDielectronSpectrum.cxx:186
 AliDielectronSpectrum.cxx:187
 AliDielectronSpectrum.cxx:188
 AliDielectronSpectrum.cxx:189
 AliDielectronSpectrum.cxx:190
 AliDielectronSpectrum.cxx:191
 AliDielectronSpectrum.cxx:192
 AliDielectronSpectrum.cxx:193
 AliDielectronSpectrum.cxx:194
 AliDielectronSpectrum.cxx:195
 AliDielectronSpectrum.cxx:196
 AliDielectronSpectrum.cxx:197
 AliDielectronSpectrum.cxx:198
 AliDielectronSpectrum.cxx:199
 AliDielectronSpectrum.cxx:200
 AliDielectronSpectrum.cxx:201
 AliDielectronSpectrum.cxx:202
 AliDielectronSpectrum.cxx:203
 AliDielectronSpectrum.cxx:204
 AliDielectronSpectrum.cxx:205
 AliDielectronSpectrum.cxx:206
 AliDielectronSpectrum.cxx:207
 AliDielectronSpectrum.cxx:208
 AliDielectronSpectrum.cxx:209
 AliDielectronSpectrum.cxx:210
 AliDielectronSpectrum.cxx:211
 AliDielectronSpectrum.cxx:212
 AliDielectronSpectrum.cxx:213
 AliDielectronSpectrum.cxx:214
 AliDielectronSpectrum.cxx:215
 AliDielectronSpectrum.cxx:216
 AliDielectronSpectrum.cxx:217
 AliDielectronSpectrum.cxx:218
 AliDielectronSpectrum.cxx:219
 AliDielectronSpectrum.cxx:220
 AliDielectronSpectrum.cxx:221
 AliDielectronSpectrum.cxx:222
 AliDielectronSpectrum.cxx:223
 AliDielectronSpectrum.cxx:224
 AliDielectronSpectrum.cxx:225
 AliDielectronSpectrum.cxx:226
 AliDielectronSpectrum.cxx:227
 AliDielectronSpectrum.cxx:228
 AliDielectronSpectrum.cxx:229
 AliDielectronSpectrum.cxx:230
 AliDielectronSpectrum.cxx:231
 AliDielectronSpectrum.cxx:232
 AliDielectronSpectrum.cxx:233
 AliDielectronSpectrum.cxx:234
 AliDielectronSpectrum.cxx:235
 AliDielectronSpectrum.cxx:236
 AliDielectronSpectrum.cxx:237
 AliDielectronSpectrum.cxx:238
 AliDielectronSpectrum.cxx:239
 AliDielectronSpectrum.cxx:240
 AliDielectronSpectrum.cxx:241
 AliDielectronSpectrum.cxx:242
 AliDielectronSpectrum.cxx:243
 AliDielectronSpectrum.cxx:244
 AliDielectronSpectrum.cxx:245
 AliDielectronSpectrum.cxx:246
 AliDielectronSpectrum.cxx:247
 AliDielectronSpectrum.cxx:248
 AliDielectronSpectrum.cxx:249
 AliDielectronSpectrum.cxx:250
 AliDielectronSpectrum.cxx:251
 AliDielectronSpectrum.cxx:252
 AliDielectronSpectrum.cxx:253
 AliDielectronSpectrum.cxx:254
 AliDielectronSpectrum.cxx:255
 AliDielectronSpectrum.cxx:256
 AliDielectronSpectrum.cxx:257
 AliDielectronSpectrum.cxx:258
 AliDielectronSpectrum.cxx:259
 AliDielectronSpectrum.cxx:260
 AliDielectronSpectrum.cxx:261
 AliDielectronSpectrum.cxx:262
 AliDielectronSpectrum.cxx:263
 AliDielectronSpectrum.cxx:264
 AliDielectronSpectrum.cxx:265
 AliDielectronSpectrum.cxx:266
 AliDielectronSpectrum.cxx:267
 AliDielectronSpectrum.cxx:268
 AliDielectronSpectrum.cxx:269
 AliDielectronSpectrum.cxx:270
 AliDielectronSpectrum.cxx:271
 AliDielectronSpectrum.cxx:272
 AliDielectronSpectrum.cxx:273
 AliDielectronSpectrum.cxx:274
 AliDielectronSpectrum.cxx:275
 AliDielectronSpectrum.cxx:276
 AliDielectronSpectrum.cxx:277
 AliDielectronSpectrum.cxx:278
 AliDielectronSpectrum.cxx:279
 AliDielectronSpectrum.cxx:280
 AliDielectronSpectrum.cxx:281
 AliDielectronSpectrum.cxx:282
 AliDielectronSpectrum.cxx:283
 AliDielectronSpectrum.cxx:284
 AliDielectronSpectrum.cxx:285
 AliDielectronSpectrum.cxx:286
 AliDielectronSpectrum.cxx:287
 AliDielectronSpectrum.cxx:288
 AliDielectronSpectrum.cxx:289
 AliDielectronSpectrum.cxx:290
 AliDielectronSpectrum.cxx:291
 AliDielectronSpectrum.cxx:292
 AliDielectronSpectrum.cxx:293
 AliDielectronSpectrum.cxx:294
 AliDielectronSpectrum.cxx:295
 AliDielectronSpectrum.cxx:296
 AliDielectronSpectrum.cxx:297
 AliDielectronSpectrum.cxx:298
 AliDielectronSpectrum.cxx:299
 AliDielectronSpectrum.cxx:300
 AliDielectronSpectrum.cxx:301
 AliDielectronSpectrum.cxx:302
 AliDielectronSpectrum.cxx:303
 AliDielectronSpectrum.cxx:304
 AliDielectronSpectrum.cxx:305
 AliDielectronSpectrum.cxx:306
 AliDielectronSpectrum.cxx:307
 AliDielectronSpectrum.cxx:308
 AliDielectronSpectrum.cxx:309
 AliDielectronSpectrum.cxx:310
 AliDielectronSpectrum.cxx:311
 AliDielectronSpectrum.cxx:312
 AliDielectronSpectrum.cxx:313
 AliDielectronSpectrum.cxx:314
 AliDielectronSpectrum.cxx:315
 AliDielectronSpectrum.cxx:316
 AliDielectronSpectrum.cxx:317
 AliDielectronSpectrum.cxx:318
 AliDielectronSpectrum.cxx:319
 AliDielectronSpectrum.cxx:320
 AliDielectronSpectrum.cxx:321
 AliDielectronSpectrum.cxx:322
 AliDielectronSpectrum.cxx:323
 AliDielectronSpectrum.cxx:324
 AliDielectronSpectrum.cxx:325
 AliDielectronSpectrum.cxx:326
 AliDielectronSpectrum.cxx:327
 AliDielectronSpectrum.cxx:328
 AliDielectronSpectrum.cxx:329
 AliDielectronSpectrum.cxx:330
 AliDielectronSpectrum.cxx:331
 AliDielectronSpectrum.cxx:332
 AliDielectronSpectrum.cxx:333
 AliDielectronSpectrum.cxx:334
 AliDielectronSpectrum.cxx:335
 AliDielectronSpectrum.cxx:336
 AliDielectronSpectrum.cxx:337
 AliDielectronSpectrum.cxx:338
 AliDielectronSpectrum.cxx:339
 AliDielectronSpectrum.cxx:340
 AliDielectronSpectrum.cxx:341
 AliDielectronSpectrum.cxx:342
 AliDielectronSpectrum.cxx:343
 AliDielectronSpectrum.cxx:344
 AliDielectronSpectrum.cxx:345
 AliDielectronSpectrum.cxx:346
 AliDielectronSpectrum.cxx:347
 AliDielectronSpectrum.cxx:348
 AliDielectronSpectrum.cxx:349
 AliDielectronSpectrum.cxx:350
 AliDielectronSpectrum.cxx:351
 AliDielectronSpectrum.cxx:352
 AliDielectronSpectrum.cxx:353
 AliDielectronSpectrum.cxx:354
 AliDielectronSpectrum.cxx:355
 AliDielectronSpectrum.cxx:356
 AliDielectronSpectrum.cxx:357
 AliDielectronSpectrum.cxx:358
 AliDielectronSpectrum.cxx:359
 AliDielectronSpectrum.cxx:360
 AliDielectronSpectrum.cxx:361
 AliDielectronSpectrum.cxx:362
 AliDielectronSpectrum.cxx:363
 AliDielectronSpectrum.cxx:364
 AliDielectronSpectrum.cxx:365
 AliDielectronSpectrum.cxx:366
 AliDielectronSpectrum.cxx:367
 AliDielectronSpectrum.cxx:368
 AliDielectronSpectrum.cxx:369
 AliDielectronSpectrum.cxx:370
 AliDielectronSpectrum.cxx:371
 AliDielectronSpectrum.cxx:372
 AliDielectronSpectrum.cxx:373
 AliDielectronSpectrum.cxx:374
 AliDielectronSpectrum.cxx:375
 AliDielectronSpectrum.cxx:376
 AliDielectronSpectrum.cxx:377
 AliDielectronSpectrum.cxx:378
 AliDielectronSpectrum.cxx:379
 AliDielectronSpectrum.cxx:380
 AliDielectronSpectrum.cxx:381
 AliDielectronSpectrum.cxx:382
 AliDielectronSpectrum.cxx:383
 AliDielectronSpectrum.cxx:384
 AliDielectronSpectrum.cxx:385
 AliDielectronSpectrum.cxx:386
 AliDielectronSpectrum.cxx:387
 AliDielectronSpectrum.cxx:388
 AliDielectronSpectrum.cxx:389