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

///////////////////////////////////////////////////////////////////////////
//                Dielectron Analysis Main class                         //
//                                                                       //
/*
Framework to perform event selectoin, single track selection and track pair
selection.

Convention for the signs of the pair in fPairCandidates:
The names are available via the function PairClassName(Int_t i)

0: ev1+ ev1+  (same event like sign +)
1: ev1+ ev1-  (same event unlike sign)
2: ev1- ev1-  (same event like sign -)

3: ev1+ ev2+  (mixed event like sign +)
4: ev1- ev2+  (mixed event unlike sign -+)
6: ev1+ ev2-  (mixed event unlike sign +-)
7: ev1- ev2-  (mixed event like sign -)

5: ev2+ ev2+  (same event like sign +)
8: ev2+ ev2-  (same event unlike sign)
9: ev2- ev2-  (same event like sign -)

10: ev1+ ev1- (same event track rotation)

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

#include <TString.h>
#include <TList.h>
#include <TMath.h>
#include <TObject.h>
#include <TGrid.h>

#include <AliKFParticle.h>

#include <AliESDInputHandler.h>
#include <AliAnalysisManager.h>
#include <AliEPSelectionTask.h>
#include <AliEventplane.h>
#include <AliVEvent.h>
#include <AliVParticle.h>
#include <AliVTrack.h>
#include "AliDielectronPair.h"
#include "AliDielectronHistos.h"
#include "AliDielectronCF.h"
#include "AliDielectronMC.h"
#include "AliDielectronVarManager.h"
#include "AliDielectronTrackRotator.h"
#include "AliDielectronDebugTree.h"
#include "AliDielectronSignalMC.h"
#include "AliDielectronMixingHandler.h"
#include "AliDielectronPairLegCuts.h"
#include "AliDielectronV0Cuts.h"
#include "AliDielectronPID.h"
#include "AliDielectronHistos.h"

#include "AliDielectron.h"

ClassImp(AliDielectron)

const char* AliDielectron::fgkTrackClassNames[4] = {
  "ev1+",
  "ev1-",
  "ev2+",
  "ev2-"
};

const char* AliDielectron::fgkPairClassNames[11] = {
  "ev1+_ev1+",
  "ev1+_ev1-",
  "ev1-_ev1-",
  "ev1+_ev2+",
  "ev1-_ev2+",
  "ev2+_ev2+",
  "ev1+_ev2-",
  "ev1-_ev2-",
  "ev2+_ev2-",
  "ev2-_ev2-",
  "ev1+_ev1-_TR"
};

//________________________________________________________________
AliDielectron::AliDielectron() :
  TNamed("AliDielectron","AliDielectron"),
  fCutQA(kFALSE),
  fQAmonitor(0x0),
  fPostPIDCntrdCorr(0x0),
  fPostPIDWdthCorr(0x0),
  fLegEffMap(0x0),
  fPairEffMap(0x0),
  fEventFilter("EventFilter"),
  fTrackFilter("TrackFilter"),
  fPairPreFilter("PairPreFilter"),
  fPairPreFilterLegs("PairPreFilterLegs"),
  fPairFilter("PairFilter"),
  fEventPlanePreFilter("EventPlanePreFilter"),
  fEventPlanePOIPreFilter("EventPlanePOIPreFilter"),
  fPdgMother(443),
  fPdgLeg1(11),
  fPdgLeg2(11),
  fSignalsMC(0x0),
  fNoPairing(kFALSE),
  fProcessLS(kTRUE),
  fUseKF(kTRUE),
  fHistoArray(0x0),
  fHistos(0x0),
  fUsedVars(new TBits(AliDielectronVarManager::kNMaxValues)),
  fPairCandidates(new TObjArray(11)),
  fCfManagerPair(0x0),
  fTrackRotator(0x0),
  fDebugTree(0x0),
  fMixing(0x0),
  fPreFilterEventPlane(kFALSE),
  fLikeSignSubEvents(kFALSE),
  fPreFilterUnlikeOnly(kFALSE),
  fPreFilterAllSigns(kFALSE),
  fHasMC(kFALSE),
  fStoreRotatedPairs(kFALSE),
  fDontClearArrays(kFALSE),
  fEventProcess(kTRUE),
  fEstimatorFilename(""),
  fTRDpidCorrectionFilename(""),
  fVZEROCalibrationFilename(""),
  fVZERORecenteringFilename(""),
  fZDCRecenteringFilename("")

{
  //
  // Default constructor
  //

}

//________________________________________________________________
AliDielectron::AliDielectron(const char* name, const char* title) :
  TNamed(name,title),
  fCutQA(kFALSE),
  fQAmonitor(0x0),
  fPostPIDCntrdCorr(0x0),
  fPostPIDWdthCorr(0x0),
  fLegEffMap(0x0),
  fPairEffMap(0x0),
  fEventFilter("EventFilter"),
  fTrackFilter("TrackFilter"),
  fPairPreFilter("PairPreFilter"),
  fPairPreFilterLegs("PairPreFilterLegs"),
  fPairFilter("PairFilter"),
  fEventPlanePreFilter("EventPlanePreFilter"),
  fEventPlanePOIPreFilter("EventPlanePOIPreFilter"),
  fPdgMother(443),
  fPdgLeg1(11),
  fPdgLeg2(11),
  fSignalsMC(0x0),
  fNoPairing(kFALSE),
  fProcessLS(kTRUE),
  fUseKF(kTRUE),
  fHistoArray(0x0),
  fHistos(0x0),
  fUsedVars(new TBits(AliDielectronVarManager::kNMaxValues)),
  fPairCandidates(new TObjArray(11)),
  fCfManagerPair(0x0),
  fTrackRotator(0x0),
  fDebugTree(0x0),
  fMixing(0x0),
  fPreFilterEventPlane(kFALSE),
  fLikeSignSubEvents(kFALSE),
  fPreFilterUnlikeOnly(kFALSE),
  fPreFilterAllSigns(kFALSE),
  fHasMC(kFALSE),
  fStoreRotatedPairs(kFALSE),
  fDontClearArrays(kFALSE),
  fEventProcess(kTRUE),
  fEstimatorFilename(""),
  fTRDpidCorrectionFilename(""),
  fVZEROCalibrationFilename(""),
  fVZERORecenteringFilename(""),
  fZDCRecenteringFilename("")
{
  //
  // Named constructor
  //
  
}

//________________________________________________________________
AliDielectron::~AliDielectron()
{
  //
  // Default destructor
  //
  if (fQAmonitor) delete fQAmonitor;
  if (fPostPIDCntrdCorr) delete fPostPIDCntrdCorr;
  if (fPostPIDWdthCorr) delete fPostPIDWdthCorr;
  if (fLegEffMap) delete fLegEffMap;
  if (fPairEffMap) delete fPairEffMap;
  if (fHistos) delete fHistos;
  if (fUsedVars) delete fUsedVars;
  if (fPairCandidates && fEventProcess) delete fPairCandidates;
  if (fDebugTree) delete fDebugTree;
  if (fMixing) delete fMixing;
  if (fSignalsMC) delete fSignalsMC;
  if (fCfManagerPair) delete fCfManagerPair;
  if (fHistoArray) delete fHistoArray;
}

//________________________________________________________________
void AliDielectron::Init()
{
  //
  // Initialise objects
  //

  if(GetHasMC()) AliDielectronMC::Instance()->SetHasMC(GetHasMC());
   
  if(fEventProcess) InitPairCandidateArrays();
   
  if (fCfManagerPair) {
    fCfManagerPair->SetSignalsMC(fSignalsMC);
    fCfManagerPair->InitialiseContainer(fPairFilter);
  }
  if (fTrackRotator)  {
    fTrackRotator->SetTrackArrays(&fTracks[0],&fTracks[1]);
    fTrackRotator->SetPdgLegs(fPdgLeg1,fPdgLeg2);
  }
  if (fDebugTree) fDebugTree->SetDielectron(this);

  if(fEstimatorFilename.Contains(".root"))        AliDielectronVarManager::InitEstimatorAvg(fEstimatorFilename.Data());
  if(fTRDpidCorrectionFilename.Contains(".root")) AliDielectronVarManager::InitTRDpidEffHistograms(fTRDpidCorrectionFilename.Data());
  if(fVZEROCalibrationFilename.Contains(".root")) AliDielectronVarManager::SetVZEROCalibrationFile(fVZEROCalibrationFilename.Data());
  if(fVZERORecenteringFilename.Contains(".root")) AliDielectronVarManager::SetVZERORecenteringFile(fVZERORecenteringFilename.Data());
  if(fZDCRecenteringFilename.Contains(".root")) AliDielectronVarManager::SetZDCRecenteringFile(fZDCRecenteringFilename.Data());

  if (fMixing) fMixing->Init(this);
  if (fHistoArray) {
    fHistoArray->SetSignalsMC(fSignalsMC);
    fHistoArray->Init();
  }

  if(fPostPIDCntrdCorr) AliDielectronPID::SetCentroidCorrFunction(fPostPIDCntrdCorr);
  if(fPostPIDWdthCorr)  AliDielectronPID::SetWidthCorrFunction(fPostPIDWdthCorr);

  if(!fEventProcess) {
    AliDielectronPairLegCuts *trk2leg = new AliDielectronPairLegCuts("trk2leg","trk2leg");
    // move all track cuts (if any) into pair leg cuts
    TIter listIterator(fTrackFilter.GetCuts());
    while (AliAnalysisCuts *thisCut = (AliAnalysisCuts*) listIterator()) {
      trk2leg->GetLeg1Filter().AddCuts((AliAnalysisCuts*)thisCut->Clone());
      trk2leg->GetLeg2Filter().AddCuts((AliAnalysisCuts*)thisCut->Clone());
    }
    // add pair leg cuts to pair filter
    fPairFilter.AddCuts(trk2leg);
  }

  if (fCutQA) {
    fQAmonitor = new AliDielectronCutQA(Form("QAcuts_%s",GetName()),"QAcuts");
    fQAmonitor->AddTrackFilter(&fTrackFilter);
    if(!fNoPairing) fQAmonitor->AddPairFilter(&fPairFilter);
    fQAmonitor->AddEventFilter(&fEventFilter);
    fQAmonitor->Init();
  }
  
  if(fHistos) {
    (*fUsedVars)|= (*fHistos->GetUsedVars());
  }

}

//________________________________________________________________

void AliDielectron::Process(TObjArray *arr)
{
  //
  // Process the pair array
  //

  // set pair arrays
  fPairCandidates = arr;

  //fill debug tree if a manager is attached
  //  if (fDebugTree) FillDebugTree();
  //in case there is a histogram manager, fill the QA histograms
  //  if (fHistos && fSignalsMC) FillMCHistograms(ev1);

  // apply cuts and fill output
  if (fHistos) FillHistogramsFromPairArray();

  // never clear arrays !!!!


}

//________________________________________________________________
Bool_t AliDielectron::Process(AliVEvent *ev1, AliVEvent *ev2)
{
  //
  // Process the events
  //

  //at least first event is needed!
  if (!ev1){
    AliError("At least first event must be set!");
    return 0;
  }

  // modify event numbers in MC so that we can identify new events 
  // in AliDielectronV0Cuts (not neeeded for collision data)
  if(GetHasMC()) {
    ev1->SetBunchCrossNumber(1);
    ev1->SetOrbitNumber(1);
    ev1->SetPeriodNumber(1);
  }

  // set event
  AliDielectronVarManager::SetFillMap(fUsedVars);
  AliDielectronVarManager::SetEvent(ev1);
  if (fMixing){
    //set mixing bin to event data
    Int_t bin=fMixing->FindBin(AliDielectronVarManager::GetData());
    AliDielectronVarManager::SetValue(AliDielectronVarManager::kMixingBin,bin);
  }

  // set efficiency maps
  AliDielectronVarManager::SetLegEffMap(fLegEffMap);
  AliDielectronVarManager::SetPairEffMap(fPairEffMap);

  //in case we have MC load the MC event and process the MC particles
  // why do not apply the event cuts first ????
  if (AliDielectronMC::Instance()->ConnectMCEvent()){
    ProcessMC(ev1);
  }

  //if candidate array doesn't exist, create it
  if (!fPairCandidates->UncheckedAt(0)) {
    InitPairCandidateArrays();
  } else {
    ClearArrays();
  }

  //mask used to require that all cuts are fulfilled
  UInt_t selectedMask=(1<<fEventFilter.GetCuts()->GetEntries())-1;

  //apply event cuts
  UInt_t cutmask = fEventFilter.IsSelected(ev1);
  if(fCutQA) fQAmonitor->FillAll(ev1);
  if(fCutQA) fQAmonitor->Fill(cutmask,ev1);
  if ((ev1&&cutmask!=selectedMask) ||
      (ev2&&fEventFilter.IsSelected(ev2)!=selectedMask)) return 0;

  //fill track arrays for the first event
  if (ev1){
    FillTrackArrays(ev1);
    if (((fPreFilterAllSigns)||(fPreFilterUnlikeOnly)) && ( fPairPreFilter.GetCuts()->GetEntries()>0 )) PairPreFilter(0, 1, fTracks[0], fTracks[1]);
  }


  //fill track arrays for the second event
  if (ev2) {
    FillTrackArrays(ev2,1);
    if (((fPreFilterAllSigns)||(fPreFilterUnlikeOnly)) && ( fPairPreFilter.GetCuts()->GetEntries()>0 )) PairPreFilter(2, 3, fTracks[2], fTracks[3]);
  }

  // TPC event plane correction
  if (ev1 && fPreFilterEventPlane && ( fEventPlanePreFilter.GetCuts()->GetEntries()>0 || fEventPlanePOIPreFilter.GetCuts()->GetEntries()>0)) 
    EventPlanePreFilter(0, 1, fTracks[0], fTracks[1], ev1);

  if (!fNoPairing){
    // create pairs and fill pair candidate arrays
    for (Int_t itrackArr1=0; itrackArr1<4; ++itrackArr1){
      for (Int_t itrackArr2=itrackArr1; itrackArr2<4; ++itrackArr2){
	if(!fProcessLS && GetPairIndex(itrackArr1,itrackArr2)!=kEv1PM) continue;
	FillPairArrays(itrackArr1, itrackArr2);
      }
    }

    //track rotation
    if (fTrackRotator) {
      fTrackRotator->SetEvent(ev1);
      FillPairArrayTR();
    }
  }

  //fill debug tree if a manager is attached
  if (fDebugTree) FillDebugTree();

  //process event mixing
  if (fMixing) {
    fMixing->Fill(ev1,this);
    //     FillHistograms(0x0,kTRUE);
  }

  // fill candidate variables
  Double_t ntracks = fTracks[0].GetEntriesFast() + fTracks[1].GetEntriesFast();
  Double_t npairs  = PairArray(AliDielectron::kEv1PM)->GetEntriesFast();
  AliDielectronVarManager::SetValue(AliDielectronVarManager::kTracks, ntracks);
  AliDielectronVarManager::SetValue(AliDielectronVarManager::kPairs,  npairs);

  //in case there is a histogram manager, fill the QA histograms
  if (fHistos && fSignalsMC) FillMCHistograms(ev1);
  if (fHistos) FillHistograms(ev1);
  // fill histo array with event information only
  if (fHistoArray && fHistoArray->IsEventArray()) 
    fHistoArray->Fill(0,const_cast<Double_t *>(AliDielectronVarManager::GetData()),0x0,0x0);

  // clear arrays
  if (!fDontClearArrays) ClearArrays();

  // reset TPC EP and unique identifiers for v0 cut class 
  AliDielectronVarManager::SetTPCEventPlane(0x0);
  if(GetHasMC()) { // only for MC needed
    for (Int_t iCut=0; iCut<fTrackFilter.GetCuts()->GetEntries();++iCut) {
      if ( fTrackFilter.GetCuts()->At(iCut)->IsA() == AliDielectronV0Cuts::Class() )
	((AliDielectronV0Cuts*)fTrackFilter.GetCuts()->At(iCut))->ResetUniqueEventNumbers();
    }
  }

  return 1;

}

//________________________________________________________________
void AliDielectron::ProcessMC(AliVEvent *ev1)
{
  //
  // Process the MC data
  //

  AliDielectronMC *dieMC=AliDielectronMC::Instance();

  if (fHistos) FillHistogramsMC(dieMC->GetMCEvent(), ev1);

  // mc tracks
  if(!dieMC->GetNMCTracks()) return;

  // signals to be studied
  if(!fSignalsMC) return;
  Int_t nSignals = fSignalsMC->GetEntries();
  if(!nSignals) return;

  //loop over all MC data and Fill the HF, CF containers and histograms if they exist
  if(fCfManagerPair) fCfManagerPair->SetPdgMother(fPdgMother);

  Bool_t bFillCF   = (fCfManagerPair ? fCfManagerPair->GetStepForMCtruth()  : kFALSE);
  Bool_t bFillHF   = (fHistoArray    ? fHistoArray->GetStepForMCGenerated() : kFALSE);
  Bool_t bFillHist = kFALSE;
  if(fHistos) {
    const THashList *histlist =  fHistos->GetHistogramList();
    for(Int_t isig=0;isig<nSignals;isig++) {
      TString sigName = fSignalsMC->At(isig)->GetName();
      bFillHist |= histlist->FindObject(Form("Pair_%s_MCtruth",sigName.Data()))!=0x0;
      bFillHist |= histlist->FindObject(Form("Track_Leg_%s_MCtruth",sigName.Data()))!=0x0;
      bFillHist |= histlist->FindObject(Form("Track_%s_%s_MCtruth",fgkPairClassNames[1],sigName.Data()))!=0x0;
      if(bFillHist) break;
    }
  }
  // check if there is anything to fill
  if(!bFillCF && !bFillHF && !bFillHist) return;


  // initialize 2D arrays of labels for particles from each MC signal
  Int_t** labels1;      // labels for particles satisfying branch 1
  Int_t** labels2;      // labels for particles satisfying branch 2
  Int_t** labels12;     // labels for particles satisfying both branches
  labels1 = new Int_t*[nSignals];
  labels2 = new Int_t*[nSignals];
  labels12 = new Int_t*[nSignals];
  Int_t* indexes1=new Int_t[nSignals];
  Int_t* indexes2=new Int_t[nSignals];
  Int_t* indexes12=new Int_t[nSignals];
  for(Int_t isig=0;isig<nSignals;++isig) {
    *(labels1+isig) = new Int_t[dieMC->GetNMCTracks()];
    *(labels2+isig) = new Int_t[dieMC->GetNMCTracks()];
    *(labels12+isig) = new Int_t[dieMC->GetNMCTracks()];
    for(Int_t ip=0; ip<dieMC->GetNMCTracks();++ip) {
      labels1[isig][ip] = -1;
      labels2[isig][ip] = -1;
      labels12[isig][ip] = -1;
    }
    indexes1[isig]=0;
    indexes2[isig]=0;
    indexes12[isig]=0;
  }

  Bool_t truth1=kFALSE;
  Bool_t truth2=kFALSE;
  // loop over the MC tracks
  for(Int_t ipart=0; ipart<dieMC->GetNMCTracks(); ++ipart) {
    for(Int_t isig=0; isig<nSignals; ++isig) {       // loop over signals
      // Proceed only if this signal is required in the pure MC step
      // NOTE: Some signals can be satisfied by many particles and this leads to high
      //       computation times (e.g. secondary electrons from the GEANT transport). Be aware of this!!
      if(!((AliDielectronSignalMC*)fSignalsMC->At(isig))->GetFillPureMCStep()) continue;

      truth1 = dieMC->IsMCTruth(ipart, (AliDielectronSignalMC*)fSignalsMC->At(isig), 1);
      truth2 = dieMC->IsMCTruth(ipart, (AliDielectronSignalMC*)fSignalsMC->At(isig), 2);

      // particles satisfying both branches are treated separately to avoid double counting during pairing
      if(truth1 && truth2) {
	labels12[isig][indexes12[isig]] = ipart;
	++indexes12[isig];
      }
      else {
	if(truth1) {
	  labels1[isig][indexes1[isig]] = ipart;
	  ++indexes1[isig];
	}
	if(truth2) {
	  labels2[isig][indexes2[isig]] = ipart;
	  ++indexes2[isig];
	}
      }
    }
  }  // end loop over MC particles

  // Do the pairing and fill the CF container with pure MC info
  for(Int_t isig=0; isig<nSignals; ++isig) {
    //    printf("INDEXES: %d-%d both%d\n",indexes1[isig],indexes2[isig],indexes12[isig]);
    // mix the particles which satisfy only one of the signal branches
    for(Int_t i1=0;i1<indexes1[isig];++i1) {
      if(!indexes2[isig]) FillMCHistograms(labels1[isig][i1], -1, isig); // (e.g. single electrons only, no pairs)
      for(Int_t i2=0;i2<indexes2[isig];++i2) {
	// add pair cuts on mc truth level
	if(bFillCF) fCfManagerPair->FillMC(labels1[isig][i1], labels2[isig][i2], isig);
	if(bFillHF) fHistoArray->Fill(labels1[isig][i1], labels2[isig][i2], isig);
	FillMCHistograms(labels1[isig][i1], labels2[isig][i2], isig);
      }
    }
    // mix the particles which satisfy both branches
    for(Int_t i1=0;i1<indexes12[isig];++i1) {
      for(Int_t i2=0; i2<i1; ++i2) {
	// add pair cuts on mc truth level
	if(bFillCF) fCfManagerPair->FillMC(labels12[isig][i1], labels12[isig][i2], isig);
	if(bFillHF) fHistoArray->Fill(labels12[isig][i1], labels12[isig][i2], isig);
	FillMCHistograms(labels12[isig][i1], labels12[isig][i2], isig);
      }
    }
  }    // end loop over signals

  // release the memory
  for(Int_t isig=0;isig<nSignals;++isig) {
    delete [] *(labels1+isig);
    delete [] *(labels2+isig);
    delete [] *(labels12+isig);
  }
  delete [] labels1;
  delete [] labels2;
  delete [] labels12;
  delete [] indexes1;
  delete [] indexes2;
  delete [] indexes12;
}

//________________________________________________________________
void AliDielectron::FillHistogramsTracks(TObjArray **tracks)
{
  //
  // Fill Histogram information for tracks after prefilter
  // ignore mixed events - for prefilter, only single tracks +/- are relevant 
  //
  
  TString  className,className2;
  Double_t values[AliDielectronVarManager::kNMaxValues];
  AliDielectronVarManager::SetFillMap(fUsedVars);

  //Fill track information, separately for the track array candidates
  for (Int_t i=0; i<2; ++i){
    className.Form("Pre_%s",fgkTrackClassNames[i]);
    if (!fHistos->GetHistogramList()->FindObject(className.Data())) continue;
    Int_t ntracks=tracks[i]->GetEntriesFast();
    for (Int_t itrack=0; itrack<ntracks; ++itrack){
      AliDielectronVarManager::Fill(tracks[i]->UncheckedAt(itrack), values);
      fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
    }
  }
}


//________________________________________________________________
void AliDielectron::FillHistogramsMC(const AliMCEvent *ev, AliVEvent *ev1)
{
  //
  // Fill Histogram information for MCEvents
  //

  Double_t values[AliDielectronVarManager::kNMaxValues]={0.};
  AliDielectronVarManager::SetFillMap(fUsedVars);

  // Fill event information
  AliDielectronVarManager::Fill(ev1, values);    // ESD/AOD information
  AliDielectronVarManager::Fill(ev, values);     // MC truth info
  if (fHistos->GetHistogramList()->FindObject("MCEvent"))
    fHistos->FillClass("MCEvent", AliDielectronVarManager::kNMaxValues, values);
}


//________________________________________________________________
void AliDielectron::FillHistograms(const AliVEvent *ev, Bool_t pairInfoOnly)
{
  //
  // Fill Histogram information for tracks and pairs
  //
  
  TString  className,className2;
  Double_t values[AliDielectronVarManager::kNMaxValues]={0.};
  AliDielectronVarManager::SetFillMap(fUsedVars);

  //Fill event information
  if (ev){
    if (fHistos->GetHistogramList()->FindObject("Event")) {
      fHistos->FillClass("Event", AliDielectronVarManager::kNMaxValues, AliDielectronVarManager::GetData());
    }
  }

  //Fill track information, separately for the track array candidates
  if (!pairInfoOnly){
    className2.Form("Track_%s",fgkPairClassNames[1]);  // unlike sign, SE only
    for (Int_t i=0; i<4; ++i){
      className.Form("Track_%s",fgkTrackClassNames[i]);
      Bool_t mergedtrkClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
      Bool_t trkClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
      if (!trkClass && !mergedtrkClass) continue;
      Int_t ntracks=fTracks[i].GetEntriesFast();
      for (Int_t itrack=0; itrack<ntracks; ++itrack){
        AliDielectronVarManager::Fill(fTracks[i].UncheckedAt(itrack), values);
        if(trkClass)
	  fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
        if(mergedtrkClass && i<2)
	  fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values); //only ev1
      }
    }
  }

  //Fill Pair information, separately for all pair candidate arrays and the legs
  TObjArray arrLegs(100);
  for (Int_t i=0; i<10; ++i){
    className.Form("Pair_%s",fgkPairClassNames[i]);
    className2.Form("Track_Legs_%s",fgkPairClassNames[i]);
    Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
    Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
    if (!pairClass&&!legClass) continue;
    Int_t ntracks=PairArray(i)->GetEntriesFast();
    for (Int_t ipair=0; ipair<ntracks; ++ipair){
      AliDielectronPair *pair=static_cast<AliDielectronPair*>(PairArray(i)->UncheckedAt(ipair));

      //fill pair information
      if (pairClass){
        AliDielectronVarManager::Fill(pair, values);
        fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
      }

      //fill leg information, don't fill the information twice
      if (legClass){
        AliVParticle *d1=pair->GetFirstDaughterP();
        AliVParticle *d2=pair->GetSecondDaughterP();
        if (!arrLegs.FindObject(d1)){
          AliDielectronVarManager::Fill(d1, values);
          fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
          arrLegs.Add(d1);
        }
        if (!arrLegs.FindObject(d2)){
          AliDielectronVarManager::Fill(d2, values);
          fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
          arrLegs.Add(d2);
        }
      }
    }
    if (legClass) arrLegs.Clear();
  }
  
}
//________________________________________________________________
void AliDielectron::FillHistogramsPair(AliDielectronPair *pair,Bool_t fromPreFilter/*=kFALSE*/)
{
  //
  // Fill Histogram information for pairs and the track in the pair
  // NOTE: in this funtion the leg information may be filled multiple
  //       times. This funtion is used in the track rotation pairing
  //       and those legs are not saved!
  //
  TString  className,className2;
  Double_t values[AliDielectronVarManager::kNMaxValues];
  AliDielectronVarManager::SetFillMap(fUsedVars);

  //Fill Pair information, separately for all pair candidate arrays and the legs
  TObjArray arrLegs(100);
  const Int_t type=pair->GetType();
  if (fromPreFilter) {
    className.Form("RejPair_%s",fgkPairClassNames[type]);
    className2.Form("RejTrack_%s",fgkPairClassNames[type]);
  } else {
    className.Form("Pair_%s",fgkPairClassNames[type]);
    className2.Form("Track_Legs_%s",fgkPairClassNames[type]);
  }
  
  Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
  Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
  
  //fill pair information
  if (pairClass){
    AliDielectronVarManager::Fill(pair, values);
    fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
  }

  if (legClass){
    AliVParticle *d1=pair->GetFirstDaughterP();
    AliDielectronVarManager::Fill(d1, values);
    fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
    
    AliVParticle *d2=pair->GetSecondDaughterP();
    AliDielectronVarManager::Fill(d2, values);
    fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
  }
}

//________________________________________________________________
void AliDielectron::FillTrackArrays(AliVEvent * const ev, Int_t eventNr)
{
  //
  // select tracks and fill track candidate arrays
  // eventNr = 0: First  event, use track arrays 0 and 1
  // eventNr = 1: Second event, use track arrays 2 and 3
  //

  Int_t ntracks=ev->GetNumberOfTracks();

  UInt_t selectedMask=(1<<fTrackFilter.GetCuts()->GetEntries())-1;
  for (Int_t itrack=0; itrack<ntracks; ++itrack){
    //get particle
    AliVParticle *particle=ev->GetTrack(itrack);

    //apply track cuts
    UInt_t cutmask=fTrackFilter.IsSelected(particle);
    //fill cut QA
    if(fCutQA) fQAmonitor->FillAll(particle);
    if(fCutQA) fQAmonitor->Fill(cutmask,particle);

    if (cutmask!=selectedMask) continue;

    //fill selected particle into the corresponding track arrays
    Short_t charge=particle->Charge();
    if (charge>0)      fTracks[eventNr*2].Add(particle);
    else if (charge<0) fTracks[eventNr*2+1].Add(particle);

  
  }
}

//________________________________________________________________
void AliDielectron::EventPlanePreFilter(Int_t arr1, Int_t arr2, TObjArray arrTracks1, TObjArray arrTracks2, const AliVEvent *ev)
{
  //
  // Prefilter tracks and tracks from pairs
  // Needed for rejection in the Q-Vector of the event plane
  // remove contribution of all tracks to the Q-vector that are in invariant mass window 
  //

  AliEventplane *evplane = const_cast<AliVEvent *>(ev)->GetEventplane();
  if(!evplane) { // nanoAODs , here we do NOT have sub event reaction planes
    //  if(1) {
    // get the EPselectionTask for recalculation of weighting factors
    AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
    AliEPSelectionTask *eptask = dynamic_cast<AliEPSelectionTask *>(man->GetTask("EventplaneSelection"));
    if(!eptask) return;

    // get recentering values for Qx and Qy (only rms is needed for correction)
    // Double_t mean[2]={0.,0.}
    // eptask->Recenter(0, mean);
    Double_t rms[2] ={1.,1.};
    eptask->Recenter(1, rms);


    // track mapping
    TMap mapRemovedTracks;


    Double_t cQX=0., cQY=0.;
    // apply cuts to the tracks, e.g. etagap
    if(fEventPlanePreFilter.GetCuts()->GetEntries()) {
      UInt_t selectedMask=(1<<fEventPlanePreFilter.GetCuts()->GetEntries())-1;
      Int_t ntracks=ev->GetNumberOfTracks();
      for (Int_t itrack=0; itrack<ntracks; ++itrack){
	AliVParticle *particle=ev->GetTrack(itrack);
	AliVTrack *track= static_cast<AliVTrack*>(particle);
	if (!track) continue;
	//event plane cuts
	UInt_t cutMask=fEventPlanePreFilter.IsSelected(track);
	//apply cut
	if (cutMask==selectedMask) continue;

	mapRemovedTracks.Add(track,track);
	cQX += (eptask->GetWeight(track) * TMath::Cos(2*track->Phi()) / rms[0]);
	cQY += (eptask->GetWeight(track) * TMath::Sin(2*track->Phi()) / rms[1]);
      }
    }

    // POI (particle of interest) rejection
    Int_t pairIndex=GetPairIndex(arr1,arr2);

    Int_t ntrack1=arrTracks1.GetEntriesFast();
    Int_t ntrack2=arrTracks2.GetEntriesFast();
    AliDielectronPair candidate;
    candidate.SetKFUsage(fUseKF);

    UInt_t selectedMask=(1<<fEventPlanePOIPreFilter.GetCuts()->GetEntries())-1;
    for (Int_t itrack1=0; itrack1<ntrack1; ++itrack1){
      Int_t end=ntrack2;
      if (arr1==arr2) end=itrack1;
      Bool_t accepted=kFALSE;
      for (Int_t itrack2=0; itrack2<end; ++itrack2){
	TObject *track1=arrTracks1.UncheckedAt(itrack1);
	TObject *track2=arrTracks2.UncheckedAt(itrack2);
	if (!track1 || !track2) continue;
	//create the pair
	candidate.SetTracks(static_cast<AliVTrack*>(track1), fPdgLeg1,
			    static_cast<AliVTrack*>(track2), fPdgLeg2);
	candidate.SetType(pairIndex);
	candidate.SetLabel(AliDielectronMC::Instance()->GetLabelMotherWithPdg(&candidate,fPdgMother));

	//event plane pair cuts
	UInt_t cutMask=fEventPlanePOIPreFilter.IsSelected(&candidate);
	//apply cut
	if (cutMask==selectedMask) continue;

	accepted=kTRUE;
	//remove the tracks from the Track arrays
	arrTracks2.AddAt(0x0,itrack2);
      }
      if ( accepted ) arrTracks1.AddAt(0x0,itrack1);
    }
    //compress the track arrays
    arrTracks1.Compress();
    arrTracks2.Compress();

    //Modify the components: subtract the tracks
    ntrack1=arrTracks1.GetEntriesFast();
    ntrack2=arrTracks2.GetEntriesFast();
    // remove leg1 contribution
    for (Int_t itrack=0; itrack<ntrack1; ++itrack){
      AliVTrack *track= static_cast<AliVTrack*>(arrTracks1.UncheckedAt(itrack));
      if (!track) continue;
      // track contribution was already removed
      if (mapRemovedTracks.FindObject(track)) continue;
      else mapRemovedTracks.Add(track,track);

      cQX += (eptask->GetWeight(track) * TMath::Cos(2*track->Phi()) / rms[0]);
      cQY += (eptask->GetWeight(track) * TMath::Sin(2*track->Phi()) / rms[1]);
    }
    // remove leg2 contribution
    for (Int_t itrack=0; itrack<ntrack2; ++itrack){
      AliVTrack *track= static_cast<AliVTrack*>(arrTracks2.UncheckedAt(itrack));
      if (!track) continue;
      // track contribution was already removed
      if (mapRemovedTracks.FindObject(track)) continue;
      else mapRemovedTracks.Add(track,track);

      cQX += (eptask->GetWeight(track) * TMath::Cos(2*track->Phi()) / rms[0]);
      cQY += (eptask->GetWeight(track) * TMath::Sin(2*track->Phi()) / rms[1]);
    }

    // build a corrected alieventplane using the values from the var manager
    // these uncorrected values are filled using the stored magnitude and angle  in the header
    TVector2 qcorr;
    qcorr.Set(AliDielectronVarManager::GetValue(AliDielectronVarManager::kTPCxH2uc)-cQX,
	      AliDielectronVarManager::GetValue(AliDielectronVarManager::kTPCyH2uc)-cQY);
    // fill alieventplane
    AliEventplane cevplane;
    cevplane.SetQVector(&qcorr);
    AliDielectronVarManager::SetTPCEventPlane(&cevplane);
    cevplane.SetQVector(0);
    return;
  } //end: nanoAODs
  else
    {
    // this is done in case of ESDs or AODs
    Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
    // copy event plane object
    AliEventplane cevplane(*evplane);
    //    Int_t nMaxID=cevplane->GetQContributionXArray()->GetSize();

    TVector2 *qcorr  = cevplane.GetQVector();
    if(!qcorr) return;
    TVector2 *qcsub1 = 0x0;
    TVector2 *qcsub2 = 0x0;

    // eta gap ?
    Bool_t etagap = kFALSE;
    for (Int_t iCut=0; iCut<fEventPlanePreFilter.GetCuts()->GetEntries();++iCut) {
      TString cutName=fEventPlanePreFilter.GetCuts()->At(iCut)->GetName();
      if(cutName.Contains("eta") || cutName.Contains("Eta"))  etagap=kTRUE;
    }

    // subevent configuration for eta gap or LS (default is rndm)
    if(fLikeSignSubEvents && etagap) {
      // start with the full Qvector/event in both sub events
      qcsub1 = new TVector2(*qcorr);
      qcsub2 = new TVector2(*qcorr);
      cevplane.SetQsub(qcsub1,qcsub2);

      Int_t ntracks=ev->GetNumberOfTracks();
      // track removals
      for (Int_t itrack=0; itrack<ntracks; ++itrack){
	AliVParticle *particle=ev->GetTrack(itrack);
	AliVTrack *track= static_cast<AliVTrack*>(particle);
	if (!track) continue;
	if (track->GetID()>=0 && !isESD) continue;
	Int_t tmpID = isESD ? track->GetID() : track->GetID()*-1 - 1;

	// set contributions to zero
	// charge sub1+ sub2-
	if(fLikeSignSubEvents) {
	  Short_t charge=track->Charge();
	  if (charge<0) {
	    cevplane.GetQContributionXArraysub1()->SetAt(0.0, tmpID);
	    cevplane.GetQContributionYArraysub1()->SetAt(0.0, tmpID);
	  }
	  if (charge>0) {
	    cevplane.GetQContributionXArraysub2()->SetAt(0.0, tmpID);
	    cevplane.GetQContributionYArraysub2()->SetAt(0.0, tmpID);
	  }
	}
	// eta sub1+ sub2-
	if(etagap) {
	  Double_t eta=track->Eta();
	  if (eta<0.0) {
	    cevplane.GetQContributionXArraysub1()->SetAt(0.0, tmpID);
	    cevplane.GetQContributionYArraysub1()->SetAt(0.0, tmpID);
	  }
	  if (eta>0.0) {
	    cevplane.GetQContributionXArraysub2()->SetAt(0.0, tmpID);
	    cevplane.GetQContributionYArraysub2()->SetAt(0.0, tmpID);
	  }
	}
      } // end: loop over tracks
    } // end: sub event configuration

    // apply cuts, e.g. etagap
    if(fEventPlanePreFilter.GetCuts()->GetEntries()) {
      UInt_t selectedMask=(1<<fEventPlanePreFilter.GetCuts()->GetEntries())-1;
      Int_t ntracks=ev->GetNumberOfTracks();
      for (Int_t itrack=0; itrack<ntracks; ++itrack){
	AliVParticle *particle=ev->GetTrack(itrack);
	AliVTrack *track= static_cast<AliVTrack*>(particle);
	if (!track) continue;
	if (track->GetID()>=0 && !isESD) continue;
	Int_t tmpID = isESD ? track->GetID() : track->GetID()*-1 - 1;

	//event plane cuts
	UInt_t cutMask=fEventPlanePreFilter.IsSelected(track);
	//apply cut
	if (cutMask==selectedMask) continue;

	// set contributions to zero
	cevplane.GetQContributionXArray()->SetAt(0.0, tmpID);
	cevplane.GetQContributionYArray()->SetAt(0.0, tmpID);
	cevplane.GetQContributionXArraysub1()->SetAt(0.0, tmpID);
	cevplane.GetQContributionYArraysub1()->SetAt(0.0, tmpID);
	cevplane.GetQContributionXArraysub2()->SetAt(0.0, tmpID);
	cevplane.GetQContributionYArraysub2()->SetAt(0.0, tmpID);
      }
    } // end: track cuts

    // POI (particle of interest) rejection
    Int_t pairIndex=GetPairIndex(arr1,arr2);
    Int_t ntrack1=arrTracks1.GetEntriesFast();
    Int_t ntrack2=arrTracks2.GetEntriesFast();
    AliDielectronPair candidate;
    candidate.SetKFUsage(fUseKF);

    UInt_t selectedMask=(1<<fEventPlanePOIPreFilter.GetCuts()->GetEntries())-1;
    for (Int_t itrack1=0; itrack1<ntrack1; ++itrack1){
      Int_t end=ntrack2;
      if (arr1==arr2) end=itrack1;
      Bool_t accepted=kFALSE;
      for (Int_t itrack2=0; itrack2<end; ++itrack2){
	TObject *track1=arrTracks1.UncheckedAt(itrack1);
	TObject *track2=arrTracks2.UncheckedAt(itrack2);
	if (!track1 || !track2) continue;
	//create the pair
	candidate.SetTracks(static_cast<AliVTrack*>(track1), fPdgLeg1,
			    static_cast<AliVTrack*>(track2), fPdgLeg2);

	candidate.SetType(pairIndex);
	candidate.SetLabel(AliDielectronMC::Instance()->GetLabelMotherWithPdg(&candidate,fPdgMother));

	//event plane cuts
	UInt_t cutMask=fEventPlanePOIPreFilter.IsSelected(&candidate);
	//apply cut
	if (cutMask==selectedMask) continue;

	accepted=kTRUE;
	//remove the tracks from the Track arrays
	arrTracks2.AddAt(0x0,itrack2);
      }
      if ( accepted ) arrTracks1.AddAt(0x0,itrack1);
    }
    //compress the track arrays
    arrTracks1.Compress();
    arrTracks2.Compress();

    //Modify the components: subtract the tracks
    ntrack1=arrTracks1.GetEntriesFast();
    ntrack2=arrTracks2.GetEntriesFast();
    // remove leg1 contribution
    for (Int_t itrack=0; itrack<ntrack1; ++itrack){
      AliVTrack *track= static_cast<AliVTrack*>(arrTracks1.UncheckedAt(itrack));
      if (!track) continue;
      if (track->GetID()>=0 && !isESD) continue;
      Int_t tmpID = isESD ? track->GetID() : track->GetID()*-1 - 1;
      // set contributions to zero
      cevplane.GetQContributionXArray()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArray()->SetAt(0.0, tmpID);
      cevplane.GetQContributionXArraysub1()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArraysub1()->SetAt(0.0, tmpID);
      cevplane.GetQContributionXArraysub2()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArraysub2()->SetAt(0.0, tmpID);
    }
    // remove leg2 contribution
    for (Int_t itrack=0; itrack<ntrack2; ++itrack){
      AliVTrack *track= static_cast<AliVTrack*>(arrTracks2.UncheckedAt(itrack));
      if (!track) continue;
      if (track->GetID()>=0 && !isESD) continue;
      Int_t tmpID = isESD ? track->GetID() : track->GetID()*-1 - 1;
      // set contributions to zero
      cevplane.GetQContributionXArray()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArray()->SetAt(0.0, tmpID);
      cevplane.GetQContributionXArraysub1()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArraysub1()->SetAt(0.0, tmpID);
      cevplane.GetQContributionXArraysub2()->SetAt(0.0, tmpID);
      cevplane.GetQContributionYArraysub2()->SetAt(0.0, tmpID);
    }

    // set corrected AliEventplane and fill variables with corrected values
    AliDielectronVarManager::SetTPCEventPlane(&cevplane);
    delete qcsub1;
    delete qcsub2;
  } // end: ESD or AOD case

}
//________________________________________________________________
void AliDielectron::PairPreFilter(Int_t arr1, Int_t arr2, TObjArray &arrTracks1, TObjArray &arrTracks2)
{
  //
  // Prefilter tracks from pairs
  // Needed for datlitz rejections
  // remove all tracks from the Single track arrays that pass the cuts in this filter
  //

  Int_t ntrack1=arrTracks1.GetEntriesFast();
  Int_t ntrack2=arrTracks2.GetEntriesFast();
  AliDielectronPair candidate;
  candidate.SetKFUsage(fUseKF);
  // flag arrays for track removal
  Bool_t *bTracks1 = new Bool_t[ntrack1];
  for (Int_t itrack1=0; itrack1<ntrack1; ++itrack1) bTracks1[itrack1]=kFALSE;
  Bool_t *bTracks2 = new Bool_t[ntrack2];
  for (Int_t itrack2=0; itrack2<ntrack2; ++itrack2) bTracks2[itrack2]=kFALSE;

  UInt_t selectedMask=(1<<fPairPreFilter.GetCuts()->GetEntries())-1;
  UInt_t selectedMaskPair=(1<<fPairFilter.GetCuts()->GetEntries())-1;

  Int_t nRejPasses = 1; //for fPreFilterUnlikeOnly and no set flag 
  if (fPreFilterAllSigns) nRejPasses = 3;

  for (Int_t iRP=0; iRP < nRejPasses; ++iRP) {
	Int_t arr1RP=arr1, arr2RP=arr2;
	TObjArray *arrTracks1RP=&arrTracks1;
	TObjArray *arrTracks2RP=&arrTracks2;
	Bool_t *bTracks1RP = bTracks1;
	Bool_t *bTracks2RP = bTracks2;
	switch (iRP) {
		case 1: arr1RP=arr1;arr2RP=arr1;
				arrTracks1RP=&arrTracks1;
				arrTracks2RP=&arrTracks1;
				bTracks1RP = bTracks1;
				bTracks2RP = bTracks1;
				break;
		case 2: arr1RP=arr2;arr2RP=arr2;
				arrTracks1RP=&arrTracks2;
				arrTracks2RP=&arrTracks2;
				bTracks1RP = bTracks2;
				bTracks2RP = bTracks2;
				break;
		default: ;//nothing to do
	}
	Int_t ntrack1RP=(*arrTracks1RP).GetEntriesFast();
	Int_t ntrack2RP=(*arrTracks2RP).GetEntriesFast();

	Int_t pairIndex=GetPairIndex(arr1RP,arr2RP);

	for (Int_t itrack1=0; itrack1<ntrack1RP; ++itrack1){
	  Int_t end=ntrack2RP;
	  if (arr1RP==arr2RP) end=itrack1;
	  for (Int_t itrack2=0; itrack2<end; ++itrack2){
		TObject *track1=(*arrTracks1RP).UncheckedAt(itrack1);
		TObject *track2=(*arrTracks2RP).UncheckedAt(itrack2);
		if (!track1 || !track2) continue;
		//create the pair
		candidate.SetTracks(static_cast<AliVTrack*>(track1), fPdgLeg1,
			static_cast<AliVTrack*>(track2), fPdgLeg2);

		candidate.SetType(pairIndex);
		candidate.SetLabel(AliDielectronMC::Instance()->GetLabelMotherWithPdg(&candidate,fPdgMother));
		//relate to the production vertex
		//       if (AliDielectronVarManager::GetKFVertex()) candidate.SetProductionVertex(*AliDielectronVarManager::GetKFVertex());

		//pair cuts
		UInt_t cutMask=fPairPreFilter.IsSelected(&candidate);

		//apply cut
		if (cutMask!=selectedMask) continue;
		if (fCfManagerPair) fCfManagerPair->Fill(selectedMaskPair+1 ,&candidate);
		if (fHistos) FillHistogramsPair(&candidate,kTRUE);
		//set flags for track removal
		bTracks1RP[itrack1]=kTRUE;
		bTracks2RP[itrack2]=kTRUE;
	  }
	}
  }

  //remove the tracks from the Track arrays
  for (Int_t itrack1=0; itrack1<ntrack1; ++itrack1){
    if(bTracks1[itrack1]) arrTracks1.AddAt(0x0, itrack1);
  }
  for (Int_t itrack2=0; itrack2<ntrack2; ++itrack2){
    if(bTracks2[itrack2]) arrTracks2.AddAt(0x0, itrack2);
  }

  // clean up
  delete [] bTracks1;
  delete [] bTracks2;

  //compress the track arrays
  arrTracks1.Compress();
  arrTracks2.Compress();
  
  //apply leg cuts after the pre filter
  if ( fPairPreFilterLegs.GetCuts()->GetEntries()>0 ) {
    selectedMask=(1<<fPairPreFilterLegs.GetCuts()->GetEntries())-1;
    //loop over tracks from array 1
    for (Int_t itrack=0; itrack<arrTracks1.GetEntriesFast();++itrack){
      //test cuts
      UInt_t cutMask=fPairPreFilterLegs.IsSelected(arrTracks1.UncheckedAt(itrack));
      
      //apply cut
      if (cutMask!=selectedMask) arrTracks1.AddAt(0x0,itrack);
    }
    arrTracks1.Compress();
    
    //in case of like sign don't loop over second array
    if (arr1==arr2) {
      arrTracks2=arrTracks1;
    } else {
      
      //loop over tracks from array 2
      for (Int_t itrack=0; itrack<arrTracks2.GetEntriesFast();++itrack){
      //test cuts
        UInt_t cutMask=fPairPreFilterLegs.IsSelected(arrTracks2.UncheckedAt(itrack));
      //apply cut
        if (cutMask!=selectedMask) arrTracks2.AddAt(0x0,itrack);
      }
      arrTracks2.Compress();
      
    }
  }
  //For unlike-sign monitor track-cuts:
  if (arr1!=arr2&&fHistos) {
    TObjArray *unlikesignArray[2] = {&arrTracks1,&arrTracks2};
    FillHistogramsTracks(unlikesignArray);
  }
}

//________________________________________________________________
void AliDielectron::FillPairArrays(Int_t arr1, Int_t arr2)
{
  //
  // select pairs and fill pair candidate arrays
  //

  TObjArray arrTracks1=fTracks[arr1];
  TObjArray arrTracks2=fTracks[arr2];

  //process pre filter if set
  if ((!fPreFilterAllSigns) && (!fPreFilterUnlikeOnly) && ( fPairPreFilter.GetCuts()->GetEntries()>0 ))  PairPreFilter(arr1, arr2, arrTracks1, arrTracks2);
  
  Int_t pairIndex=GetPairIndex(arr1,arr2);

  Int_t ntrack1=arrTracks1.GetEntriesFast();
  Int_t ntrack2=arrTracks2.GetEntriesFast();

  AliDielectronPair *candidate=new AliDielectronPair;
  candidate->SetKFUsage(fUseKF);

  UInt_t selectedMask=(1<<fPairFilter.GetCuts()->GetEntries())-1;
  
  for (Int_t itrack1=0; itrack1<ntrack1; ++itrack1){
    Int_t end=ntrack2;
    if (arr1==arr2) end=itrack1;
    for (Int_t itrack2=0; itrack2<end; ++itrack2){
      //create the pair (direct pointer to the memory by this daughter reference are kept also for ME)
      candidate->SetTracks(&(*static_cast<AliVTrack*>(arrTracks1.UncheckedAt(itrack1))), fPdgLeg1,
			   &(*static_cast<AliVTrack*>(arrTracks2.UncheckedAt(itrack2))), fPdgLeg2);
      candidate->SetType(pairIndex);

      Int_t label=AliDielectronMC::Instance()->GetLabelMotherWithPdg(candidate,fPdgMother);
      candidate->SetLabel(label);
      if (label>-1) candidate->SetPdgCode(fPdgMother);
      else candidate->SetPdgCode(0);

      // check for gamma kf particle
      label=AliDielectronMC::Instance()->GetLabelMotherWithPdg(candidate,22);
      if (label>-1) {
	candidate->SetGammaTracks(static_cast<AliVTrack*>(arrTracks1.UncheckedAt(itrack1)), fPdgLeg1,
				  static_cast<AliVTrack*>(arrTracks2.UncheckedAt(itrack2)), fPdgLeg2);
      // should we set the pdgmothercode and the label
      }

      //pair cuts
      UInt_t cutMask=fPairFilter.IsSelected(candidate);

      //CF manager for the pair
      if (fCfManagerPair) fCfManagerPair->Fill(cutMask,candidate);

      // cut qa
      if(pairIndex==kEv1PM && fCutQA) {
	fQAmonitor->FillAll(candidate);
	fQAmonitor->Fill(cutMask,candidate);
      }

      //apply cut
      if (cutMask!=selectedMask) continue;

      //histogram array for the pair
      if (fHistoArray) fHistoArray->Fill(pairIndex,candidate);

      //add the candidate to the candidate array 
      PairArray(pairIndex)->Add(candidate);
      //get a new candidate
      candidate=new AliDielectronPair;
      candidate->SetKFUsage(fUseKF);
    }
  }
  //delete the surplus candidate
  delete candidate;
}

//________________________________________________________________
void AliDielectron::FillPairArrayTR()
{
  //
  // select pairs and fill pair candidate arrays
  //
  UInt_t selectedMask=(1<<fPairFilter.GetCuts()->GetEntries())-1;
  
  while ( fTrackRotator->NextCombination() ){
    AliDielectronPair candidate;
    candidate.SetKFUsage(fUseKF);
    candidate.SetTracks(&fTrackRotator->GetKFTrackP(), &fTrackRotator->GetKFTrackN(),
                        fTrackRotator->GetVTrackP(),fTrackRotator->GetVTrackN());
    candidate.SetType(kEv1PMRot);
    
    //pair cuts
    UInt_t cutMask=fPairFilter.IsSelected(&candidate);
    
    //CF manager for the pair
    if (fCfManagerPair) fCfManagerPair->Fill(cutMask,&candidate);
    
    //apply cut
    if (cutMask==selectedMask) {

      //histogram array for the pair
      if (fHistoArray) fHistoArray->Fill((Int_t)kEv1PMRot,&candidate);

      if(fHistos) FillHistogramsPair(&candidate);
      if(fStoreRotatedPairs) PairArray(kEv1PMRot)->Add(new AliDielectronPair(candidate));
    }
  }
}

//________________________________________________________________
void AliDielectron::FillDebugTree()
{
  //
  // Fill Histogram information for tracks and pairs
  //
  
  //Fill Debug tree
  for (Int_t i=0; i<10; ++i){
    Int_t ntracks=PairArray(i)->GetEntriesFast();
    for (Int_t ipair=0; ipair<ntracks; ++ipair){
      fDebugTree->Fill(static_cast<AliDielectronPair*>(PairArray(i)->UncheckedAt(ipair)));
    }
  }
}

//________________________________________________________________
void AliDielectron::SaveDebugTree()
{
  //
  // delete the debug tree, this will also write the tree
  //
  if (fDebugTree) fDebugTree->DeleteStreamer();
}


//__________________________________________________________________
void AliDielectron::AddSignalMC(AliDielectronSignalMC* signal) {
  //
  //  Add an MC signal to the signals list
  //
  if(!fSignalsMC) {
    fSignalsMC = new TObjArray();
    fSignalsMC->SetOwner();
  }
  fSignalsMC->Add(signal);
}

//________________________________________________________________
void AliDielectron::FillMCHistograms(Int_t label1, Int_t label2, Int_t nSignal) {
  //
  // fill QA MC TRUTH histograms for pairs and legs of all added mc signals
  //

  TString className,className2,className3;
  className.Form("Pair_%s_MCtruth",fSignalsMC->At(nSignal)->GetName());
  className2.Form("Track_Legs_%s_MCtruth",fSignalsMC->At(nSignal)->GetName());
  className3.Form("Track_%s_%s_MCtruth",fgkPairClassNames[1],fSignalsMC->At(nSignal)->GetName());
  Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
  Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
  Bool_t trkClass=fHistos->GetHistogramList()->FindObject(className3.Data())!=0x0;
  //  printf("fill signal %d: pair %d legs %d trk %d \n",nSignal,pairClass,legClass,trkClass);
  if(!pairClass && !legClass && !trkClass) return;

  //  printf("leg labels: %d-%d \n",label1,label2);
  AliVParticle* part1 = AliDielectronMC::Instance()->GetMCTrackFromMCEvent(label1);
  AliVParticle* part2 = AliDielectronMC::Instance()->GetMCTrackFromMCEvent(label2);
  if(!part1 && !part2) return;
  if(part1&&part2) {
    // fill only unlike sign (and only SE)
    if(part1->Charge()*part2->Charge()>=0) return;
  }


  AliDielectronMC* dieMC = AliDielectronMC::Instance();

  Int_t mLabel1 = dieMC->GetMothersLabel(label1);    // should work for both ESD and AOD
  Int_t mLabel2 = dieMC->GetMothersLabel(label2);

  // check the same mother option
  AliDielectronSignalMC* sigMC = (AliDielectronSignalMC*)fSignalsMC->At(nSignal);
  if(sigMC->GetMothersRelation()==AliDielectronSignalMC::kSame && mLabel1!=mLabel2) return;
  if(sigMC->GetMothersRelation()==AliDielectronSignalMC::kDifferent && mLabel1==mLabel2) return;

  // fill event values
  Double_t values[AliDielectronVarManager::kNMaxValues];
  AliDielectronVarManager::SetFillMap(fUsedVars);
  AliDielectronVarManager::Fill(dieMC->GetMCEvent(), values); // get event informations

  // fill the leg variables
  //  printf("leg:%d trk:%d part1:%p part2:%p \n",legClass,trkClass,part1,part2);
  if (legClass || trkClass) {
    if(part1) AliDielectronVarManager::Fill(part1,values);
    if(part1 && trkClass)          fHistos->FillClass(className3, AliDielectronVarManager::kNMaxValues, values);
    if(part1 && part2 && legClass) fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
    if(part2) AliDielectronVarManager::Fill(part2,values);
    if(part2 && trkClass)          fHistos->FillClass(className3, AliDielectronVarManager::kNMaxValues, values);
    if(part1 && part2 && legClass) fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
  }

  //fill pair information
  if (pairClass && part1 && part2) {
    AliDielectronVarManager::FillVarMCParticle2(part1,part2,values);
    fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
  }

}

//________________________________________________________________
void AliDielectron::FillMCHistograms(const AliVEvent *ev) {
  //
  // fill QA MC histograms for pairs and legs of all added mc signals
  //

  if (!fSignalsMC) return;
  TString className,className2,className3;
  Double_t values[AliDielectronVarManager::kNMaxValues]={0.};
  AliDielectronVarManager::SetFillMap(fUsedVars);
  AliDielectronVarManager::Fill(ev, values); // get event informations
  //loop over all added mc signals
  for(Int_t isig=0; isig<fSignalsMC->GetEntries(); isig++) {

    //check if and what to fill
    className.Form("Pair_%s",fSignalsMC->At(isig)->GetName());
    className2.Form("Track_Legs_%s",fSignalsMC->At(isig)->GetName());
    className3.Form("Track_%s_%s",fgkPairClassNames[1],fSignalsMC->At(isig)->GetName());  // unlike sign, SE only
    Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
    Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
    Bool_t mergedtrkClass=fHistos->GetHistogramList()->FindObject(className3.Data())!=0x0;
    if(!pairClass && !legClass && !mergedtrkClass) continue;

    // fill pair and/or their leg variables
    if(pairClass || legClass) {
      Int_t npairs=PairArray(AliDielectron::kEv1PM)->GetEntriesFast(); // only SE +-
      for (Int_t ipair=0; ipair<npairs; ++ipair){
	AliDielectronPair *pair=static_cast<AliDielectronPair*>(PairArray(AliDielectron::kEv1PM)->UncheckedAt(ipair));

	Bool_t isMCtruth = AliDielectronMC::Instance()->IsMCTruth(pair, (AliDielectronSignalMC*)fSignalsMC->At(isig));
	if(isMCtruth) {
	  //fill pair information
	  if (pairClass){
	    AliDielectronVarManager::Fill(pair, values);
	    fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
	  }
	  //fill leg information, both + and - in the same histo
	  if (legClass){
	    AliDielectronVarManager::Fill(pair->GetFirstDaughterP(),values);
	    fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
	    AliDielectronVarManager::Fill(pair->GetSecondDaughterP(),values);
	    fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
	  }
	} //is signal
      } //loop: pairs
    }

    // fill single tracks of signals
    if(!mergedtrkClass) continue;
    // loop over SE track arrays
    for (Int_t i=0; i<2; ++i){
      Int_t ntracks=fTracks[i].GetEntriesFast();
      for (Int_t itrack=0; itrack<ntracks; ++itrack){
	Int_t label=((AliVParticle*)fTracks[i].UncheckedAt(itrack))->GetLabel();
	Bool_t isMCtruth1 = AliDielectronMC::Instance()->IsMCTruth(label, (AliDielectronSignalMC*)fSignalsMC->At(isig), 1);
	Bool_t isMCtruth2 = AliDielectronMC::Instance()->IsMCTruth(label, (AliDielectronSignalMC*)fSignalsMC->At(isig), 2);
	// skip if track does not correspond to the signal
	if(!isMCtruth1 && !isMCtruth2) continue;
	AliDielectronVarManager::Fill(fTracks[i].UncheckedAt(itrack), values);
	fHistos->FillClass(className3, AliDielectronVarManager::kNMaxValues, values);
      } //loop: tracks
    } //loop: arrays

  } //loop: MCsignals

}

//______________________________________________
void AliDielectron::SetCentroidCorrFunction(TF1 *fun, UInt_t varx, UInt_t vary, UInt_t varz)
{
  UInt_t valType[20] = {0};
  valType[0]=varx;     valType[1]=vary;     valType[2]=varz;
  AliDielectronHistos::StoreVariables(fun->GetHistogram(), valType);
  // clone temporare histogram, otherwise it will not be streamed to file!
  TString key = Form("cntrd%d%d%d",varx,vary,varz);
  fPostPIDCntrdCorr = (TH1*)fun->GetHistogram()->Clone(key.Data());
  if(fPostPIDCntrdCorr)  {
    fPostPIDCntrdCorr->GetListOfFunctions()->AddAt(fun,0);
    // check for corrections and add their variables to the fill map
    printf("POST TPC PID CORRECTION added for centroids:  ");
    switch(fPostPIDCntrdCorr->GetDimension()) {
    case 3: printf(" %s, ",fPostPIDCntrdCorr->GetZaxis()->GetName());
    case 2: printf(" %s, ",fPostPIDCntrdCorr->GetYaxis()->GetName());
    case 1: printf(" %s ",fPostPIDCntrdCorr->GetXaxis()->GetName());
    }
    printf("\n");
    fUsedVars->SetBitNumber(varx, kTRUE);
    fUsedVars->SetBitNumber(vary, kTRUE);
    fUsedVars->SetBitNumber(varz, kTRUE);
  }

}
//______________________________________________
void AliDielectron::SetCentroidCorrFunction(TH1 *fun, UInt_t varx, UInt_t vary, UInt_t varz)
{
  UInt_t valType[20] = {0};
  valType[0]=varx;     valType[1]=vary;     valType[2]=varz;
  AliDielectronHistos::StoreVariables(fun, valType);
  // clone temporare histogram, otherwise it will not be streamed to file!
  TString key = Form("cntrd%d%d%d",varx,vary,varz);
  fPostPIDCntrdCorr = (TH1*)fun->Clone(key.Data());
  // check for corrections and add their variables to the fill map
  if(fPostPIDCntrdCorr)  {
    printf("POST TPC PID CORRECTION added for centroids:  ");
    switch(fPostPIDCntrdCorr->GetDimension()) {
    case 3: printf(" %s, ",fPostPIDCntrdCorr->GetZaxis()->GetName());
    case 2: printf(" %s, ",fPostPIDCntrdCorr->GetYaxis()->GetName());
    case 1: printf(" %s ",fPostPIDCntrdCorr->GetXaxis()->GetName());
    }
    printf("\n");
    fUsedVars->SetBitNumber(varx, kTRUE);
    fUsedVars->SetBitNumber(vary, kTRUE);
    fUsedVars->SetBitNumber(varz, kTRUE);
  }

}
//______________________________________________
void AliDielectron::SetWidthCorrFunction(TF1 *fun, UInt_t varx, UInt_t vary, UInt_t varz)
{
  UInt_t valType[20] = {0};
  valType[0]=varx;     valType[1]=vary;     valType[2]=varz;
  AliDielectronHistos::StoreVariables(fun->GetHistogram(), valType);
  // clone temporare histogram, otherwise it will not be streamed to file!
  TString key = Form("wdth%d%d%d",varx,vary,varz);
  fPostPIDWdthCorr = (TH1*)fun->GetHistogram()->Clone(key.Data());
  if(fPostPIDWdthCorr)  {
    fPostPIDWdthCorr->GetListOfFunctions()->AddAt(fun,0);
    // check for corrections and add their variables to the fill map
    printf("POST TPC PID CORRECTION added for widths:  ");
    switch(fPostPIDWdthCorr->GetDimension()) {
    case 3: printf(" %s, ",fPostPIDWdthCorr->GetZaxis()->GetName());
    case 2: printf(" %s, ",fPostPIDWdthCorr->GetYaxis()->GetName());
    case 1: printf(" %s ",fPostPIDWdthCorr->GetXaxis()->GetName());
    }
    printf("\n");
    fUsedVars->SetBitNumber(varx, kTRUE);
    fUsedVars->SetBitNumber(vary, kTRUE);
    fUsedVars->SetBitNumber(varz, kTRUE);
  }
}
//______________________________________________
void AliDielectron::SetWidthCorrFunction(TH1 *fun, UInt_t varx, UInt_t vary, UInt_t varz)
{
  UInt_t valType[20] = {0};
  valType[0]=varx;     valType[1]=vary;     valType[2]=varz;
  AliDielectronHistos::StoreVariables(fun, valType);
  // clone temporare histogram, otherwise it will not be streamed to file!
  TString key = Form("cntrd%d%d%d",varx,vary,varz);
  fPostPIDWdthCorr = (TH1*)fun->Clone(key.Data());
  // check for corrections and add their variables to the fill map
  if(fPostPIDWdthCorr)  {
    printf("POST TPC PID CORRECTION added for widths:  ");
    switch(fPostPIDWdthCorr->GetDimension()) {
    case 3: printf(" %s, ",fPostPIDWdthCorr->GetZaxis()->GetName());
    case 2: printf(" %s, ",fPostPIDWdthCorr->GetYaxis()->GetName());
    case 1: printf(" %s ",fPostPIDWdthCorr->GetXaxis()->GetName());
    }
    printf("\n");
    fUsedVars->SetBitNumber(varx, kTRUE);
    fUsedVars->SetBitNumber(vary, kTRUE);
    fUsedVars->SetBitNumber(varz, kTRUE);
  }

}

//______________________________________________
TObject* AliDielectron::InitEffMap(TString filename)
{
  // init an efficiency object for on-the-fly correction calculations
  if(filename.Contains("alien://") && !gGrid) TGrid::Connect("alien://",0,0,"t");

  TFile* file=TFile::Open(filename.Data());
  if(!file) return 0x0;
	else printf("[I] AliDielectron::InitEffMap efficiency maps %s loaded! \n",filename.Data());

  // NOTE: the spline must have the 'variable name' stored in its fHistogram
  TSpline3 *hEff = (TSpline3*) file->Get("hEfficiency");
  //if(hEff) printf("we use a TSpline!!!!!!!!!!! \n");
  if(hEff) return (hEff->Clone("effMap"));


  THnBase *hGen = (THnBase*) file->Get("hGenerated");
  THnBase *hFnd = (THnBase*) file->Get("hFound");
  if(!hFnd || !hGen) return 0x0;

  hFnd->Divide(hGen);
  return (hFnd->Clone("effMap"));
}

//________________________________________________________________
void AliDielectron::FillHistogramsFromPairArray(Bool_t pairInfoOnly/*=kFALSE*/)
{
  //
  // Fill Histogram information for tracks and pairs
  //

  TString  className,className2;
  Double_t values[AliDielectronVarManager::kNMaxValues]={0.};
  AliDielectronVarManager::SetFillMap(fUsedVars);
  AliDielectronVarManager::SetLegEffMap(fLegEffMap);
  AliDielectronVarManager::SetPairEffMap(fPairEffMap);

  //Fill event information
  if(!pairInfoOnly) {
    if(fHistos->GetHistogramList()->FindObject("Event")) {
      fHistos->FillClass("Event", AliDielectronVarManager::kNMaxValues, AliDielectronVarManager::GetData());
    }
  }

  UInt_t selectedMask=(1<<fPairFilter.GetCuts()->GetEntries())-1;

  //Fill Pair information, separately for all pair candidate arrays and the legs
  TObjArray arrLegs(100);
  for (Int_t i=0; i<10; ++i){ // ROT pairs??
    Int_t npairs=PairArray(i)->GetEntriesFast();
    if(npairs<1) continue;

    className.Form("Pair_%s",fgkPairClassNames[i]);
    className2.Form("Track_Legs_%s",fgkPairClassNames[i]);
    Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
    Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;

    //    if (!pairClass&&!legClass) continue;
    for (Int_t ipair=0; ipair<npairs; ++ipair){
      AliDielectronPair *pair=static_cast<AliDielectronPair*>(PairArray(i)->UncheckedAt(ipair));

      // apply cuts
      UInt_t cutMask=fPairFilter.IsSelected(pair);

      // cut qa
      if(i==kEv1PM && fCutQA) {
	fQAmonitor->FillAll(pair);
	fQAmonitor->Fill(cutMask,pair);
      }

      //CF manager for the pair (TODO: check steps and if they are properly filled)
      //      if (fCfManagerPair) fCfManagerPair->Fill(cutMask,pair);

      //apply cut
      if (cutMask!=selectedMask) continue;

      //histogram array for the pair
      if (fHistoArray) fHistoArray->Fill(i,pair);

      // fill map
      AliDielectronVarManager::SetFillMap(fUsedVars);

      //fill pair information
      if (pairClass){
        AliDielectronVarManager::Fill(pair, values);
        fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
      }

      //fill leg information, don't fill the information twice
      if (legClass){
        AliVParticle *d1=pair->GetFirstDaughterP();
        AliVParticle *d2=pair->GetSecondDaughterP();
        if (!arrLegs.FindObject(d1)){
          AliDielectronVarManager::Fill(d1, values);
          fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
          arrLegs.Add(d1);
        }
        if (!arrLegs.FindObject(d2)){
          AliDielectronVarManager::Fill(d2, values);
          fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
          arrLegs.Add(d2);
        }
      }
    }
    if (legClass) arrLegs.Clear();
  }

}

 AliDielectron.cxx:1
 AliDielectron.cxx:2
 AliDielectron.cxx:3
 AliDielectron.cxx:4
 AliDielectron.cxx:5
 AliDielectron.cxx:6
 AliDielectron.cxx:7
 AliDielectron.cxx:8
 AliDielectron.cxx:9
 AliDielectron.cxx:10
 AliDielectron.cxx:11
 AliDielectron.cxx:12
 AliDielectron.cxx:13
 AliDielectron.cxx:14
 AliDielectron.cxx:15
 AliDielectron.cxx:16
 AliDielectron.cxx:17
 AliDielectron.cxx:18
 AliDielectron.cxx:19
 AliDielectron.cxx:20
 AliDielectron.cxx:21
 AliDielectron.cxx:22
 AliDielectron.cxx:23
 AliDielectron.cxx:24
 AliDielectron.cxx:25
 AliDielectron.cxx:26
 AliDielectron.cxx:27
 AliDielectron.cxx:28
 AliDielectron.cxx:29
 AliDielectron.cxx:30
 AliDielectron.cxx:31
 AliDielectron.cxx:32
 AliDielectron.cxx:33
 AliDielectron.cxx:34
 AliDielectron.cxx:35
 AliDielectron.cxx:36
 AliDielectron.cxx:37
 AliDielectron.cxx:38
 AliDielectron.cxx:39
 AliDielectron.cxx:40
 AliDielectron.cxx:41
 AliDielectron.cxx:42
 AliDielectron.cxx:43
 AliDielectron.cxx:44
 AliDielectron.cxx:45
 AliDielectron.cxx:46
 AliDielectron.cxx:47
 AliDielectron.cxx:48
 AliDielectron.cxx:49
 AliDielectron.cxx:50
 AliDielectron.cxx:51
 AliDielectron.cxx:52
 AliDielectron.cxx:53
 AliDielectron.cxx:54
 AliDielectron.cxx:55
 AliDielectron.cxx:56
 AliDielectron.cxx:57
 AliDielectron.cxx:58
 AliDielectron.cxx:59
 AliDielectron.cxx:60
 AliDielectron.cxx:61
 AliDielectron.cxx:62
 AliDielectron.cxx:63
 AliDielectron.cxx:64
 AliDielectron.cxx:65
 AliDielectron.cxx:66
 AliDielectron.cxx:67
 AliDielectron.cxx:68
 AliDielectron.cxx:69
 AliDielectron.cxx:70
 AliDielectron.cxx:71
 AliDielectron.cxx:72
 AliDielectron.cxx:73
 AliDielectron.cxx:74
 AliDielectron.cxx:75
 AliDielectron.cxx:76
 AliDielectron.cxx:77
 AliDielectron.cxx:78
 AliDielectron.cxx:79
 AliDielectron.cxx:80
 AliDielectron.cxx:81
 AliDielectron.cxx:82
 AliDielectron.cxx:83
 AliDielectron.cxx:84
 AliDielectron.cxx:85
 AliDielectron.cxx:86
 AliDielectron.cxx:87
 AliDielectron.cxx:88
 AliDielectron.cxx:89
 AliDielectron.cxx:90
 AliDielectron.cxx:91
 AliDielectron.cxx:92
 AliDielectron.cxx:93
 AliDielectron.cxx:94
 AliDielectron.cxx:95
 AliDielectron.cxx:96
 AliDielectron.cxx:97
 AliDielectron.cxx:98
 AliDielectron.cxx:99
 AliDielectron.cxx:100
 AliDielectron.cxx:101
 AliDielectron.cxx:102
 AliDielectron.cxx:103
 AliDielectron.cxx:104
 AliDielectron.cxx:105
 AliDielectron.cxx:106
 AliDielectron.cxx:107
 AliDielectron.cxx:108
 AliDielectron.cxx:109
 AliDielectron.cxx:110
 AliDielectron.cxx:111
 AliDielectron.cxx:112
 AliDielectron.cxx:113
 AliDielectron.cxx:114
 AliDielectron.cxx:115
 AliDielectron.cxx:116
 AliDielectron.cxx:117
 AliDielectron.cxx:118
 AliDielectron.cxx:119
 AliDielectron.cxx:120
 AliDielectron.cxx:121
 AliDielectron.cxx:122
 AliDielectron.cxx:123
 AliDielectron.cxx:124
 AliDielectron.cxx:125
 AliDielectron.cxx:126
 AliDielectron.cxx:127
 AliDielectron.cxx:128
 AliDielectron.cxx:129
 AliDielectron.cxx:130
 AliDielectron.cxx:131
 AliDielectron.cxx:132
 AliDielectron.cxx:133
 AliDielectron.cxx:134
 AliDielectron.cxx:135
 AliDielectron.cxx:136
 AliDielectron.cxx:137
 AliDielectron.cxx:138
 AliDielectron.cxx:139
 AliDielectron.cxx:140
 AliDielectron.cxx:141
 AliDielectron.cxx:142
 AliDielectron.cxx:143
 AliDielectron.cxx:144
 AliDielectron.cxx:145
 AliDielectron.cxx:146
 AliDielectron.cxx:147
 AliDielectron.cxx:148
 AliDielectron.cxx:149
 AliDielectron.cxx:150
 AliDielectron.cxx:151
 AliDielectron.cxx:152
 AliDielectron.cxx:153
 AliDielectron.cxx:154
 AliDielectron.cxx:155
 AliDielectron.cxx:156
 AliDielectron.cxx:157
 AliDielectron.cxx:158
 AliDielectron.cxx:159
 AliDielectron.cxx:160
 AliDielectron.cxx:161
 AliDielectron.cxx:162
 AliDielectron.cxx:163
 AliDielectron.cxx:164
 AliDielectron.cxx:165
 AliDielectron.cxx:166
 AliDielectron.cxx:167
 AliDielectron.cxx:168
 AliDielectron.cxx:169
 AliDielectron.cxx:170
 AliDielectron.cxx:171
 AliDielectron.cxx:172
 AliDielectron.cxx:173
 AliDielectron.cxx:174
 AliDielectron.cxx:175
 AliDielectron.cxx:176
 AliDielectron.cxx:177
 AliDielectron.cxx:178
 AliDielectron.cxx:179
 AliDielectron.cxx:180
 AliDielectron.cxx:181
 AliDielectron.cxx:182
 AliDielectron.cxx:183
 AliDielectron.cxx:184
 AliDielectron.cxx:185
 AliDielectron.cxx:186
 AliDielectron.cxx:187
 AliDielectron.cxx:188
 AliDielectron.cxx:189
 AliDielectron.cxx:190
 AliDielectron.cxx:191
 AliDielectron.cxx:192
 AliDielectron.cxx:193
 AliDielectron.cxx:194
 AliDielectron.cxx:195
 AliDielectron.cxx:196
 AliDielectron.cxx:197
 AliDielectron.cxx:198
 AliDielectron.cxx:199
 AliDielectron.cxx:200
 AliDielectron.cxx:201
 AliDielectron.cxx:202
 AliDielectron.cxx:203
 AliDielectron.cxx:204
 AliDielectron.cxx:205
 AliDielectron.cxx:206
 AliDielectron.cxx:207
 AliDielectron.cxx:208
 AliDielectron.cxx:209
 AliDielectron.cxx:210
 AliDielectron.cxx:211
 AliDielectron.cxx:212
 AliDielectron.cxx:213
 AliDielectron.cxx:214
 AliDielectron.cxx:215
 AliDielectron.cxx:216
 AliDielectron.cxx:217
 AliDielectron.cxx:218
 AliDielectron.cxx:219
 AliDielectron.cxx:220
 AliDielectron.cxx:221
 AliDielectron.cxx:222
 AliDielectron.cxx:223
 AliDielectron.cxx:224
 AliDielectron.cxx:225
 AliDielectron.cxx:226
 AliDielectron.cxx:227
 AliDielectron.cxx:228
 AliDielectron.cxx:229
 AliDielectron.cxx:230
 AliDielectron.cxx:231
 AliDielectron.cxx:232
 AliDielectron.cxx:233
 AliDielectron.cxx:234
 AliDielectron.cxx:235
 AliDielectron.cxx:236
 AliDielectron.cxx:237
 AliDielectron.cxx:238
 AliDielectron.cxx:239
 AliDielectron.cxx:240
 AliDielectron.cxx:241
 AliDielectron.cxx:242
 AliDielectron.cxx:243
 AliDielectron.cxx:244
 AliDielectron.cxx:245
 AliDielectron.cxx:246
 AliDielectron.cxx:247
 AliDielectron.cxx:248
 AliDielectron.cxx:249
 AliDielectron.cxx:250
 AliDielectron.cxx:251
 AliDielectron.cxx:252
 AliDielectron.cxx:253
 AliDielectron.cxx:254
 AliDielectron.cxx:255
 AliDielectron.cxx:256
 AliDielectron.cxx:257
 AliDielectron.cxx:258
 AliDielectron.cxx:259
 AliDielectron.cxx:260
 AliDielectron.cxx:261
 AliDielectron.cxx:262
 AliDielectron.cxx:263
 AliDielectron.cxx:264
 AliDielectron.cxx:265
 AliDielectron.cxx:266
 AliDielectron.cxx:267
 AliDielectron.cxx:268
 AliDielectron.cxx:269
 AliDielectron.cxx:270
 AliDielectron.cxx:271
 AliDielectron.cxx:272
 AliDielectron.cxx:273
 AliDielectron.cxx:274
 AliDielectron.cxx:275
 AliDielectron.cxx:276
 AliDielectron.cxx:277
 AliDielectron.cxx:278
 AliDielectron.cxx:279
 AliDielectron.cxx:280
 AliDielectron.cxx:281
 AliDielectron.cxx:282
 AliDielectron.cxx:283
 AliDielectron.cxx:284
 AliDielectron.cxx:285
 AliDielectron.cxx:286
 AliDielectron.cxx:287
 AliDielectron.cxx:288
 AliDielectron.cxx:289
 AliDielectron.cxx:290
 AliDielectron.cxx:291
 AliDielectron.cxx:292
 AliDielectron.cxx:293
 AliDielectron.cxx:294
 AliDielectron.cxx:295
 AliDielectron.cxx:296
 AliDielectron.cxx:297
 AliDielectron.cxx:298
 AliDielectron.cxx:299
 AliDielectron.cxx:300
 AliDielectron.cxx:301
 AliDielectron.cxx:302
 AliDielectron.cxx:303
 AliDielectron.cxx:304
 AliDielectron.cxx:305
 AliDielectron.cxx:306
 AliDielectron.cxx:307
 AliDielectron.cxx:308
 AliDielectron.cxx:309
 AliDielectron.cxx:310
 AliDielectron.cxx:311
 AliDielectron.cxx:312
 AliDielectron.cxx:313
 AliDielectron.cxx:314
 AliDielectron.cxx:315
 AliDielectron.cxx:316
 AliDielectron.cxx:317
 AliDielectron.cxx:318
 AliDielectron.cxx:319
 AliDielectron.cxx:320
 AliDielectron.cxx:321
 AliDielectron.cxx:322
 AliDielectron.cxx:323
 AliDielectron.cxx:324
 AliDielectron.cxx:325
 AliDielectron.cxx:326
 AliDielectron.cxx:327
 AliDielectron.cxx:328
 AliDielectron.cxx:329
 AliDielectron.cxx:330
 AliDielectron.cxx:331
 AliDielectron.cxx:332
 AliDielectron.cxx:333
 AliDielectron.cxx:334
 AliDielectron.cxx:335
 AliDielectron.cxx:336
 AliDielectron.cxx:337
 AliDielectron.cxx:338
 AliDielectron.cxx:339
 AliDielectron.cxx:340
 AliDielectron.cxx:341
 AliDielectron.cxx:342
 AliDielectron.cxx:343
 AliDielectron.cxx:344
 AliDielectron.cxx:345
 AliDielectron.cxx:346
 AliDielectron.cxx:347
 AliDielectron.cxx:348
 AliDielectron.cxx:349
 AliDielectron.cxx:350
 AliDielectron.cxx:351
 AliDielectron.cxx:352
 AliDielectron.cxx:353
 AliDielectron.cxx:354
 AliDielectron.cxx:355
 AliDielectron.cxx:356
 AliDielectron.cxx:357
 AliDielectron.cxx:358
 AliDielectron.cxx:359
 AliDielectron.cxx:360
 AliDielectron.cxx:361
 AliDielectron.cxx:362
 AliDielectron.cxx:363
 AliDielectron.cxx:364
 AliDielectron.cxx:365
 AliDielectron.cxx:366
 AliDielectron.cxx:367
 AliDielectron.cxx:368
 AliDielectron.cxx:369
 AliDielectron.cxx:370
 AliDielectron.cxx:371
 AliDielectron.cxx:372
 AliDielectron.cxx:373
 AliDielectron.cxx:374
 AliDielectron.cxx:375
 AliDielectron.cxx:376
 AliDielectron.cxx:377
 AliDielectron.cxx:378
 AliDielectron.cxx:379
 AliDielectron.cxx:380
 AliDielectron.cxx:381
 AliDielectron.cxx:382
 AliDielectron.cxx:383
 AliDielectron.cxx:384
 AliDielectron.cxx:385
 AliDielectron.cxx:386
 AliDielectron.cxx:387
 AliDielectron.cxx:388
 AliDielectron.cxx:389
 AliDielectron.cxx:390
 AliDielectron.cxx:391
 AliDielectron.cxx:392
 AliDielectron.cxx:393
 AliDielectron.cxx:394
 AliDielectron.cxx:395
 AliDielectron.cxx:396
 AliDielectron.cxx:397
 AliDielectron.cxx:398
 AliDielectron.cxx:399
 AliDielectron.cxx:400
 AliDielectron.cxx:401
 AliDielectron.cxx:402
 AliDielectron.cxx:403
 AliDielectron.cxx:404
 AliDielectron.cxx:405
 AliDielectron.cxx:406
 AliDielectron.cxx:407
 AliDielectron.cxx:408
 AliDielectron.cxx:409
 AliDielectron.cxx:410
 AliDielectron.cxx:411
 AliDielectron.cxx:412
 AliDielectron.cxx:413
 AliDielectron.cxx:414
 AliDielectron.cxx:415
 AliDielectron.cxx:416
 AliDielectron.cxx:417
 AliDielectron.cxx:418
 AliDielectron.cxx:419
 AliDielectron.cxx:420
 AliDielectron.cxx:421
 AliDielectron.cxx:422
 AliDielectron.cxx:423
 AliDielectron.cxx:424
 AliDielectron.cxx:425
 AliDielectron.cxx:426
 AliDielectron.cxx:427
 AliDielectron.cxx:428
 AliDielectron.cxx:429
 AliDielectron.cxx:430
 AliDielectron.cxx:431
 AliDielectron.cxx:432
 AliDielectron.cxx:433
 AliDielectron.cxx:434
 AliDielectron.cxx:435
 AliDielectron.cxx:436
 AliDielectron.cxx:437
 AliDielectron.cxx:438
 AliDielectron.cxx:439
 AliDielectron.cxx:440
 AliDielectron.cxx:441
 AliDielectron.cxx:442
 AliDielectron.cxx:443
 AliDielectron.cxx:444
 AliDielectron.cxx:445
 AliDielectron.cxx:446
 AliDielectron.cxx:447
 AliDielectron.cxx:448
 AliDielectron.cxx:449
 AliDielectron.cxx:450
 AliDielectron.cxx:451
 AliDielectron.cxx:452
 AliDielectron.cxx:453
 AliDielectron.cxx:454
 AliDielectron.cxx:455
 AliDielectron.cxx:456
 AliDielectron.cxx:457
 AliDielectron.cxx:458
 AliDielectron.cxx:459
 AliDielectron.cxx:460
 AliDielectron.cxx:461
 AliDielectron.cxx:462
 AliDielectron.cxx:463
 AliDielectron.cxx:464
 AliDielectron.cxx:465
 AliDielectron.cxx:466
 AliDielectron.cxx:467
 AliDielectron.cxx:468
 AliDielectron.cxx:469
 AliDielectron.cxx:470
 AliDielectron.cxx:471
 AliDielectron.cxx:472
 AliDielectron.cxx:473
 AliDielectron.cxx:474
 AliDielectron.cxx:475
 AliDielectron.cxx:476
 AliDielectron.cxx:477
 AliDielectron.cxx:478
 AliDielectron.cxx:479
 AliDielectron.cxx:480
 AliDielectron.cxx:481
 AliDielectron.cxx:482
 AliDielectron.cxx:483
 AliDielectron.cxx:484
 AliDielectron.cxx:485
 AliDielectron.cxx:486
 AliDielectron.cxx:487
 AliDielectron.cxx:488
 AliDielectron.cxx:489
 AliDielectron.cxx:490
 AliDielectron.cxx:491
 AliDielectron.cxx:492
 AliDielectron.cxx:493
 AliDielectron.cxx:494
 AliDielectron.cxx:495
 AliDielectron.cxx:496
 AliDielectron.cxx:497
 AliDielectron.cxx:498
 AliDielectron.cxx:499
 AliDielectron.cxx:500
 AliDielectron.cxx:501
 AliDielectron.cxx:502
 AliDielectron.cxx:503
 AliDielectron.cxx:504
 AliDielectron.cxx:505
 AliDielectron.cxx:506
 AliDielectron.cxx:507
 AliDielectron.cxx:508
 AliDielectron.cxx:509
 AliDielectron.cxx:510
 AliDielectron.cxx:511
 AliDielectron.cxx:512
 AliDielectron.cxx:513
 AliDielectron.cxx:514
 AliDielectron.cxx:515
 AliDielectron.cxx:516
 AliDielectron.cxx:517
 AliDielectron.cxx:518
 AliDielectron.cxx:519
 AliDielectron.cxx:520
 AliDielectron.cxx:521
 AliDielectron.cxx:522
 AliDielectron.cxx:523
 AliDielectron.cxx:524
 AliDielectron.cxx:525
 AliDielectron.cxx:526
 AliDielectron.cxx:527
 AliDielectron.cxx:528
 AliDielectron.cxx:529
 AliDielectron.cxx:530
 AliDielectron.cxx:531
 AliDielectron.cxx:532
 AliDielectron.cxx:533
 AliDielectron.cxx:534
 AliDielectron.cxx:535
 AliDielectron.cxx:536
 AliDielectron.cxx:537
 AliDielectron.cxx:538
 AliDielectron.cxx:539
 AliDielectron.cxx:540
 AliDielectron.cxx:541
 AliDielectron.cxx:542
 AliDielectron.cxx:543
 AliDielectron.cxx:544
 AliDielectron.cxx:545
 AliDielectron.cxx:546
 AliDielectron.cxx:547
 AliDielectron.cxx:548
 AliDielectron.cxx:549
 AliDielectron.cxx:550
 AliDielectron.cxx:551
 AliDielectron.cxx:552
 AliDielectron.cxx:553
 AliDielectron.cxx:554
 AliDielectron.cxx:555
 AliDielectron.cxx:556
 AliDielectron.cxx:557
 AliDielectron.cxx:558
 AliDielectron.cxx:559
 AliDielectron.cxx:560
 AliDielectron.cxx:561
 AliDielectron.cxx:562
 AliDielectron.cxx:563
 AliDielectron.cxx:564
 AliDielectron.cxx:565
 AliDielectron.cxx:566
 AliDielectron.cxx:567
 AliDielectron.cxx:568
 AliDielectron.cxx:569
 AliDielectron.cxx:570
 AliDielectron.cxx:571
 AliDielectron.cxx:572
 AliDielectron.cxx:573
 AliDielectron.cxx:574
 AliDielectron.cxx:575
 AliDielectron.cxx:576
 AliDielectron.cxx:577
 AliDielectron.cxx:578
 AliDielectron.cxx:579
 AliDielectron.cxx:580
 AliDielectron.cxx:581
 AliDielectron.cxx:582
 AliDielectron.cxx:583
 AliDielectron.cxx:584
 AliDielectron.cxx:585
 AliDielectron.cxx:586
 AliDielectron.cxx:587
 AliDielectron.cxx:588
 AliDielectron.cxx:589
 AliDielectron.cxx:590
 AliDielectron.cxx:591
 AliDielectron.cxx:592
 AliDielectron.cxx:593
 AliDielectron.cxx:594
 AliDielectron.cxx:595
 AliDielectron.cxx:596
 AliDielectron.cxx:597
 AliDielectron.cxx:598
 AliDielectron.cxx:599
 AliDielectron.cxx:600
 AliDielectron.cxx:601
 AliDielectron.cxx:602
 AliDielectron.cxx:603
 AliDielectron.cxx:604
 AliDielectron.cxx:605
 AliDielectron.cxx:606
 AliDielectron.cxx:607
 AliDielectron.cxx:608
 AliDielectron.cxx:609
 AliDielectron.cxx:610
 AliDielectron.cxx:611
 AliDielectron.cxx:612
 AliDielectron.cxx:613
 AliDielectron.cxx:614
 AliDielectron.cxx:615
 AliDielectron.cxx:616
 AliDielectron.cxx:617
 AliDielectron.cxx:618
 AliDielectron.cxx:619
 AliDielectron.cxx:620
 AliDielectron.cxx:621
 AliDielectron.cxx:622
 AliDielectron.cxx:623
 AliDielectron.cxx:624
 AliDielectron.cxx:625
 AliDielectron.cxx:626
 AliDielectron.cxx:627
 AliDielectron.cxx:628
 AliDielectron.cxx:629
 AliDielectron.cxx:630
 AliDielectron.cxx:631
 AliDielectron.cxx:632
 AliDielectron.cxx:633
 AliDielectron.cxx:634
 AliDielectron.cxx:635
 AliDielectron.cxx:636
 AliDielectron.cxx:637
 AliDielectron.cxx:638
 AliDielectron.cxx:639
 AliDielectron.cxx:640
 AliDielectron.cxx:641
 AliDielectron.cxx:642
 AliDielectron.cxx:643
 AliDielectron.cxx:644
 AliDielectron.cxx:645
 AliDielectron.cxx:646
 AliDielectron.cxx:647
 AliDielectron.cxx:648
 AliDielectron.cxx:649
 AliDielectron.cxx:650
 AliDielectron.cxx:651
 AliDielectron.cxx:652
 AliDielectron.cxx:653
 AliDielectron.cxx:654
 AliDielectron.cxx:655
 AliDielectron.cxx:656
 AliDielectron.cxx:657
 AliDielectron.cxx:658
 AliDielectron.cxx:659
 AliDielectron.cxx:660
 AliDielectron.cxx:661
 AliDielectron.cxx:662
 AliDielectron.cxx:663
 AliDielectron.cxx:664
 AliDielectron.cxx:665
 AliDielectron.cxx:666
 AliDielectron.cxx:667
 AliDielectron.cxx:668
 AliDielectron.cxx:669
 AliDielectron.cxx:670
 AliDielectron.cxx:671
 AliDielectron.cxx:672
 AliDielectron.cxx:673
 AliDielectron.cxx:674
 AliDielectron.cxx:675
 AliDielectron.cxx:676
 AliDielectron.cxx:677
 AliDielectron.cxx:678
 AliDielectron.cxx:679
 AliDielectron.cxx:680
 AliDielectron.cxx:681
 AliDielectron.cxx:682
 AliDielectron.cxx:683
 AliDielectron.cxx:684
 AliDielectron.cxx:685
 AliDielectron.cxx:686
 AliDielectron.cxx:687
 AliDielectron.cxx:688
 AliDielectron.cxx:689
 AliDielectron.cxx:690
 AliDielectron.cxx:691
 AliDielectron.cxx:692
 AliDielectron.cxx:693
 AliDielectron.cxx:694
 AliDielectron.cxx:695
 AliDielectron.cxx:696
 AliDielectron.cxx:697
 AliDielectron.cxx:698
 AliDielectron.cxx:699
 AliDielectron.cxx:700
 AliDielectron.cxx:701
 AliDielectron.cxx:702
 AliDielectron.cxx:703
 AliDielectron.cxx:704
 AliDielectron.cxx:705
 AliDielectron.cxx:706
 AliDielectron.cxx:707
 AliDielectron.cxx:708
 AliDielectron.cxx:709
 AliDielectron.cxx:710
 AliDielectron.cxx:711
 AliDielectron.cxx:712
 AliDielectron.cxx:713
 AliDielectron.cxx:714
 AliDielectron.cxx:715
 AliDielectron.cxx:716
 AliDielectron.cxx:717
 AliDielectron.cxx:718
 AliDielectron.cxx:719
 AliDielectron.cxx:720
 AliDielectron.cxx:721
 AliDielectron.cxx:722
 AliDielectron.cxx:723
 AliDielectron.cxx:724
 AliDielectron.cxx:725
 AliDielectron.cxx:726
 AliDielectron.cxx:727
 AliDielectron.cxx:728
 AliDielectron.cxx:729
 AliDielectron.cxx:730
 AliDielectron.cxx:731
 AliDielectron.cxx:732
 AliDielectron.cxx:733
 AliDielectron.cxx:734
 AliDielectron.cxx:735
 AliDielectron.cxx:736
 AliDielectron.cxx:737
 AliDielectron.cxx:738
 AliDielectron.cxx:739
 AliDielectron.cxx:740
 AliDielectron.cxx:741
 AliDielectron.cxx:742
 AliDielectron.cxx:743
 AliDielectron.cxx:744
 AliDielectron.cxx:745
 AliDielectron.cxx:746
 AliDielectron.cxx:747
 AliDielectron.cxx:748
 AliDielectron.cxx:749
 AliDielectron.cxx:750
 AliDielectron.cxx:751
 AliDielectron.cxx:752
 AliDielectron.cxx:753
 AliDielectron.cxx:754
 AliDielectron.cxx:755
 AliDielectron.cxx:756
 AliDielectron.cxx:757
 AliDielectron.cxx:758
 AliDielectron.cxx:759
 AliDielectron.cxx:760
 AliDielectron.cxx:761
 AliDielectron.cxx:762
 AliDielectron.cxx:763
 AliDielectron.cxx:764
 AliDielectron.cxx:765
 AliDielectron.cxx:766
 AliDielectron.cxx:767
 AliDielectron.cxx:768
 AliDielectron.cxx:769
 AliDielectron.cxx:770
 AliDielectron.cxx:771
 AliDielectron.cxx:772
 AliDielectron.cxx:773
 AliDielectron.cxx:774
 AliDielectron.cxx:775
 AliDielectron.cxx:776
 AliDielectron.cxx:777
 AliDielectron.cxx:778
 AliDielectron.cxx:779
 AliDielectron.cxx:780
 AliDielectron.cxx:781
 AliDielectron.cxx:782
 AliDielectron.cxx:783
 AliDielectron.cxx:784
 AliDielectron.cxx:785
 AliDielectron.cxx:786
 AliDielectron.cxx:787
 AliDielectron.cxx:788
 AliDielectron.cxx:789
 AliDielectron.cxx:790
 AliDielectron.cxx:791
 AliDielectron.cxx:792
 AliDielectron.cxx:793
 AliDielectron.cxx:794
 AliDielectron.cxx:795
 AliDielectron.cxx:796
 AliDielectron.cxx:797
 AliDielectron.cxx:798
 AliDielectron.cxx:799
 AliDielectron.cxx:800
 AliDielectron.cxx:801
 AliDielectron.cxx:802
 AliDielectron.cxx:803
 AliDielectron.cxx:804
 AliDielectron.cxx:805
 AliDielectron.cxx:806
 AliDielectron.cxx:807
 AliDielectron.cxx:808
 AliDielectron.cxx:809
 AliDielectron.cxx:810
 AliDielectron.cxx:811
 AliDielectron.cxx:812
 AliDielectron.cxx:813
 AliDielectron.cxx:814
 AliDielectron.cxx:815
 AliDielectron.cxx:816
 AliDielectron.cxx:817
 AliDielectron.cxx:818
 AliDielectron.cxx:819
 AliDielectron.cxx:820
 AliDielectron.cxx:821
 AliDielectron.cxx:822
 AliDielectron.cxx:823
 AliDielectron.cxx:824
 AliDielectron.cxx:825
 AliDielectron.cxx:826
 AliDielectron.cxx:827
 AliDielectron.cxx:828
 AliDielectron.cxx:829
 AliDielectron.cxx:830
 AliDielectron.cxx:831
 AliDielectron.cxx:832
 AliDielectron.cxx:833
 AliDielectron.cxx:834
 AliDielectron.cxx:835
 AliDielectron.cxx:836
 AliDielectron.cxx:837
 AliDielectron.cxx:838
 AliDielectron.cxx:839
 AliDielectron.cxx:840
 AliDielectron.cxx:841
 AliDielectron.cxx:842
 AliDielectron.cxx:843
 AliDielectron.cxx:844
 AliDielectron.cxx:845
 AliDielectron.cxx:846
 AliDielectron.cxx:847
 AliDielectron.cxx:848
 AliDielectron.cxx:849
 AliDielectron.cxx:850
 AliDielectron.cxx:851
 AliDielectron.cxx:852
 AliDielectron.cxx:853
 AliDielectron.cxx:854
 AliDielectron.cxx:855
 AliDielectron.cxx:856
 AliDielectron.cxx:857
 AliDielectron.cxx:858
 AliDielectron.cxx:859
 AliDielectron.cxx:860
 AliDielectron.cxx:861
 AliDielectron.cxx:862
 AliDielectron.cxx:863
 AliDielectron.cxx:864
 AliDielectron.cxx:865
 AliDielectron.cxx:866
 AliDielectron.cxx:867
 AliDielectron.cxx:868
 AliDielectron.cxx:869
 AliDielectron.cxx:870
 AliDielectron.cxx:871
 AliDielectron.cxx:872
 AliDielectron.cxx:873
 AliDielectron.cxx:874
 AliDielectron.cxx:875
 AliDielectron.cxx:876
 AliDielectron.cxx:877
 AliDielectron.cxx:878
 AliDielectron.cxx:879
 AliDielectron.cxx:880
 AliDielectron.cxx:881
 AliDielectron.cxx:882
 AliDielectron.cxx:883
 AliDielectron.cxx:884
 AliDielectron.cxx:885
 AliDielectron.cxx:886
 AliDielectron.cxx:887
 AliDielectron.cxx:888
 AliDielectron.cxx:889
 AliDielectron.cxx:890
 AliDielectron.cxx:891
 AliDielectron.cxx:892
 AliDielectron.cxx:893
 AliDielectron.cxx:894
 AliDielectron.cxx:895
 AliDielectron.cxx:896
 AliDielectron.cxx:897
 AliDielectron.cxx:898
 AliDielectron.cxx:899
 AliDielectron.cxx:900
 AliDielectron.cxx:901
 AliDielectron.cxx:902
 AliDielectron.cxx:903
 AliDielectron.cxx:904
 AliDielectron.cxx:905
 AliDielectron.cxx:906
 AliDielectron.cxx:907
 AliDielectron.cxx:908
 AliDielectron.cxx:909
 AliDielectron.cxx:910
 AliDielectron.cxx:911
 AliDielectron.cxx:912
 AliDielectron.cxx:913
 AliDielectron.cxx:914
 AliDielectron.cxx:915
 AliDielectron.cxx:916
 AliDielectron.cxx:917
 AliDielectron.cxx:918
 AliDielectron.cxx:919
 AliDielectron.cxx:920
 AliDielectron.cxx:921
 AliDielectron.cxx:922
 AliDielectron.cxx:923
 AliDielectron.cxx:924
 AliDielectron.cxx:925
 AliDielectron.cxx:926
 AliDielectron.cxx:927
 AliDielectron.cxx:928
 AliDielectron.cxx:929
 AliDielectron.cxx:930
 AliDielectron.cxx:931
 AliDielectron.cxx:932
 AliDielectron.cxx:933
 AliDielectron.cxx:934
 AliDielectron.cxx:935
 AliDielectron.cxx:936
 AliDielectron.cxx:937
 AliDielectron.cxx:938
 AliDielectron.cxx:939
 AliDielectron.cxx:940
 AliDielectron.cxx:941
 AliDielectron.cxx:942
 AliDielectron.cxx:943
 AliDielectron.cxx:944
 AliDielectron.cxx:945
 AliDielectron.cxx:946
 AliDielectron.cxx:947
 AliDielectron.cxx:948
 AliDielectron.cxx:949
 AliDielectron.cxx:950
 AliDielectron.cxx:951
 AliDielectron.cxx:952
 AliDielectron.cxx:953
 AliDielectron.cxx:954
 AliDielectron.cxx:955
 AliDielectron.cxx:956
 AliDielectron.cxx:957
 AliDielectron.cxx:958
 AliDielectron.cxx:959
 AliDielectron.cxx:960
 AliDielectron.cxx:961
 AliDielectron.cxx:962
 AliDielectron.cxx:963
 AliDielectron.cxx:964
 AliDielectron.cxx:965
 AliDielectron.cxx:966
 AliDielectron.cxx:967
 AliDielectron.cxx:968
 AliDielectron.cxx:969
 AliDielectron.cxx:970
 AliDielectron.cxx:971
 AliDielectron.cxx:972
 AliDielectron.cxx:973
 AliDielectron.cxx:974
 AliDielectron.cxx:975
 AliDielectron.cxx:976
 AliDielectron.cxx:977
 AliDielectron.cxx:978
 AliDielectron.cxx:979
 AliDielectron.cxx:980
 AliDielectron.cxx:981
 AliDielectron.cxx:982
 AliDielectron.cxx:983
 AliDielectron.cxx:984
 AliDielectron.cxx:985
 AliDielectron.cxx:986
 AliDielectron.cxx:987
 AliDielectron.cxx:988
 AliDielectron.cxx:989
 AliDielectron.cxx:990
 AliDielectron.cxx:991
 AliDielectron.cxx:992
 AliDielectron.cxx:993
 AliDielectron.cxx:994
 AliDielectron.cxx:995
 AliDielectron.cxx:996
 AliDielectron.cxx:997
 AliDielectron.cxx:998
 AliDielectron.cxx:999
 AliDielectron.cxx:1000
 AliDielectron.cxx:1001
 AliDielectron.cxx:1002
 AliDielectron.cxx:1003
 AliDielectron.cxx:1004
 AliDielectron.cxx:1005
 AliDielectron.cxx:1006
 AliDielectron.cxx:1007
 AliDielectron.cxx:1008
 AliDielectron.cxx:1009
 AliDielectron.cxx:1010
 AliDielectron.cxx:1011
 AliDielectron.cxx:1012
 AliDielectron.cxx:1013
 AliDielectron.cxx:1014
 AliDielectron.cxx:1015
 AliDielectron.cxx:1016
 AliDielectron.cxx:1017
 AliDielectron.cxx:1018
 AliDielectron.cxx:1019
 AliDielectron.cxx:1020
 AliDielectron.cxx:1021
 AliDielectron.cxx:1022
 AliDielectron.cxx:1023
 AliDielectron.cxx:1024
 AliDielectron.cxx:1025
 AliDielectron.cxx:1026
 AliDielectron.cxx:1027
 AliDielectron.cxx:1028
 AliDielectron.cxx:1029
 AliDielectron.cxx:1030
 AliDielectron.cxx:1031
 AliDielectron.cxx:1032
 AliDielectron.cxx:1033
 AliDielectron.cxx:1034
 AliDielectron.cxx:1035
 AliDielectron.cxx:1036
 AliDielectron.cxx:1037
 AliDielectron.cxx:1038
 AliDielectron.cxx:1039
 AliDielectron.cxx:1040
 AliDielectron.cxx:1041
 AliDielectron.cxx:1042
 AliDielectron.cxx:1043
 AliDielectron.cxx:1044
 AliDielectron.cxx:1045
 AliDielectron.cxx:1046
 AliDielectron.cxx:1047
 AliDielectron.cxx:1048
 AliDielectron.cxx:1049
 AliDielectron.cxx:1050
 AliDielectron.cxx:1051
 AliDielectron.cxx:1052
 AliDielectron.cxx:1053
 AliDielectron.cxx:1054
 AliDielectron.cxx:1055
 AliDielectron.cxx:1056
 AliDielectron.cxx:1057
 AliDielectron.cxx:1058
 AliDielectron.cxx:1059
 AliDielectron.cxx:1060
 AliDielectron.cxx:1061
 AliDielectron.cxx:1062
 AliDielectron.cxx:1063
 AliDielectron.cxx:1064
 AliDielectron.cxx:1065
 AliDielectron.cxx:1066
 AliDielectron.cxx:1067
 AliDielectron.cxx:1068
 AliDielectron.cxx:1069
 AliDielectron.cxx:1070
 AliDielectron.cxx:1071
 AliDielectron.cxx:1072
 AliDielectron.cxx:1073
 AliDielectron.cxx:1074
 AliDielectron.cxx:1075
 AliDielectron.cxx:1076
 AliDielectron.cxx:1077
 AliDielectron.cxx:1078
 AliDielectron.cxx:1079
 AliDielectron.cxx:1080
 AliDielectron.cxx:1081
 AliDielectron.cxx:1082
 AliDielectron.cxx:1083
 AliDielectron.cxx:1084
 AliDielectron.cxx:1085
 AliDielectron.cxx:1086
 AliDielectron.cxx:1087
 AliDielectron.cxx:1088
 AliDielectron.cxx:1089
 AliDielectron.cxx:1090
 AliDielectron.cxx:1091
 AliDielectron.cxx:1092
 AliDielectron.cxx:1093
 AliDielectron.cxx:1094
 AliDielectron.cxx:1095
 AliDielectron.cxx:1096
 AliDielectron.cxx:1097
 AliDielectron.cxx:1098
 AliDielectron.cxx:1099
 AliDielectron.cxx:1100
 AliDielectron.cxx:1101
 AliDielectron.cxx:1102
 AliDielectron.cxx:1103
 AliDielectron.cxx:1104
 AliDielectron.cxx:1105
 AliDielectron.cxx:1106
 AliDielectron.cxx:1107
 AliDielectron.cxx:1108
 AliDielectron.cxx:1109
 AliDielectron.cxx:1110
 AliDielectron.cxx:1111
 AliDielectron.cxx:1112
 AliDielectron.cxx:1113
 AliDielectron.cxx:1114
 AliDielectron.cxx:1115
 AliDielectron.cxx:1116
 AliDielectron.cxx:1117
 AliDielectron.cxx:1118
 AliDielectron.cxx:1119
 AliDielectron.cxx:1120
 AliDielectron.cxx:1121
 AliDielectron.cxx:1122
 AliDielectron.cxx:1123
 AliDielectron.cxx:1124
 AliDielectron.cxx:1125
 AliDielectron.cxx:1126
 AliDielectron.cxx:1127
 AliDielectron.cxx:1128
 AliDielectron.cxx:1129
 AliDielectron.cxx:1130
 AliDielectron.cxx:1131
 AliDielectron.cxx:1132
 AliDielectron.cxx:1133
 AliDielectron.cxx:1134
 AliDielectron.cxx:1135
 AliDielectron.cxx:1136
 AliDielectron.cxx:1137
 AliDielectron.cxx:1138
 AliDielectron.cxx:1139
 AliDielectron.cxx:1140
 AliDielectron.cxx:1141
 AliDielectron.cxx:1142
 AliDielectron.cxx:1143
 AliDielectron.cxx:1144
 AliDielectron.cxx:1145
 AliDielectron.cxx:1146
 AliDielectron.cxx:1147
 AliDielectron.cxx:1148
 AliDielectron.cxx:1149
 AliDielectron.cxx:1150
 AliDielectron.cxx:1151
 AliDielectron.cxx:1152
 AliDielectron.cxx:1153
 AliDielectron.cxx:1154
 AliDielectron.cxx:1155
 AliDielectron.cxx:1156
 AliDielectron.cxx:1157
 AliDielectron.cxx:1158
 AliDielectron.cxx:1159
 AliDielectron.cxx:1160
 AliDielectron.cxx:1161
 AliDielectron.cxx:1162
 AliDielectron.cxx:1163
 AliDielectron.cxx:1164
 AliDielectron.cxx:1165
 AliDielectron.cxx:1166
 AliDielectron.cxx:1167
 AliDielectron.cxx:1168
 AliDielectron.cxx:1169
 AliDielectron.cxx:1170
 AliDielectron.cxx:1171
 AliDielectron.cxx:1172
 AliDielectron.cxx:1173
 AliDielectron.cxx:1174
 AliDielectron.cxx:1175
 AliDielectron.cxx:1176
 AliDielectron.cxx:1177
 AliDielectron.cxx:1178
 AliDielectron.cxx:1179
 AliDielectron.cxx:1180
 AliDielectron.cxx:1181
 AliDielectron.cxx:1182
 AliDielectron.cxx:1183
 AliDielectron.cxx:1184
 AliDielectron.cxx:1185
 AliDielectron.cxx:1186
 AliDielectron.cxx:1187
 AliDielectron.cxx:1188
 AliDielectron.cxx:1189
 AliDielectron.cxx:1190
 AliDielectron.cxx:1191
 AliDielectron.cxx:1192
 AliDielectron.cxx:1193
 AliDielectron.cxx:1194
 AliDielectron.cxx:1195
 AliDielectron.cxx:1196
 AliDielectron.cxx:1197
 AliDielectron.cxx:1198
 AliDielectron.cxx:1199
 AliDielectron.cxx:1200
 AliDielectron.cxx:1201
 AliDielectron.cxx:1202
 AliDielectron.cxx:1203
 AliDielectron.cxx:1204
 AliDielectron.cxx:1205
 AliDielectron.cxx:1206
 AliDielectron.cxx:1207
 AliDielectron.cxx:1208
 AliDielectron.cxx:1209
 AliDielectron.cxx:1210
 AliDielectron.cxx:1211
 AliDielectron.cxx:1212
 AliDielectron.cxx:1213
 AliDielectron.cxx:1214
 AliDielectron.cxx:1215
 AliDielectron.cxx:1216
 AliDielectron.cxx:1217
 AliDielectron.cxx:1218
 AliDielectron.cxx:1219
 AliDielectron.cxx:1220
 AliDielectron.cxx:1221
 AliDielectron.cxx:1222
 AliDielectron.cxx:1223
 AliDielectron.cxx:1224
 AliDielectron.cxx:1225
 AliDielectron.cxx:1226
 AliDielectron.cxx:1227
 AliDielectron.cxx:1228
 AliDielectron.cxx:1229
 AliDielectron.cxx:1230
 AliDielectron.cxx:1231
 AliDielectron.cxx:1232
 AliDielectron.cxx:1233
 AliDielectron.cxx:1234
 AliDielectron.cxx:1235
 AliDielectron.cxx:1236
 AliDielectron.cxx:1237
 AliDielectron.cxx:1238
 AliDielectron.cxx:1239
 AliDielectron.cxx:1240
 AliDielectron.cxx:1241
 AliDielectron.cxx:1242
 AliDielectron.cxx:1243
 AliDielectron.cxx:1244
 AliDielectron.cxx:1245
 AliDielectron.cxx:1246
 AliDielectron.cxx:1247
 AliDielectron.cxx:1248
 AliDielectron.cxx:1249
 AliDielectron.cxx:1250
 AliDielectron.cxx:1251
 AliDielectron.cxx:1252
 AliDielectron.cxx:1253
 AliDielectron.cxx:1254
 AliDielectron.cxx:1255
 AliDielectron.cxx:1256
 AliDielectron.cxx:1257
 AliDielectron.cxx:1258
 AliDielectron.cxx:1259
 AliDielectron.cxx:1260
 AliDielectron.cxx:1261
 AliDielectron.cxx:1262
 AliDielectron.cxx:1263
 AliDielectron.cxx:1264
 AliDielectron.cxx:1265
 AliDielectron.cxx:1266
 AliDielectron.cxx:1267
 AliDielectron.cxx:1268
 AliDielectron.cxx:1269
 AliDielectron.cxx:1270
 AliDielectron.cxx:1271
 AliDielectron.cxx:1272
 AliDielectron.cxx:1273
 AliDielectron.cxx:1274
 AliDielectron.cxx:1275
 AliDielectron.cxx:1276
 AliDielectron.cxx:1277
 AliDielectron.cxx:1278
 AliDielectron.cxx:1279
 AliDielectron.cxx:1280
 AliDielectron.cxx:1281
 AliDielectron.cxx:1282
 AliDielectron.cxx:1283
 AliDielectron.cxx:1284
 AliDielectron.cxx:1285
 AliDielectron.cxx:1286
 AliDielectron.cxx:1287
 AliDielectron.cxx:1288
 AliDielectron.cxx:1289
 AliDielectron.cxx:1290
 AliDielectron.cxx:1291
 AliDielectron.cxx:1292
 AliDielectron.cxx:1293
 AliDielectron.cxx:1294
 AliDielectron.cxx:1295
 AliDielectron.cxx:1296
 AliDielectron.cxx:1297
 AliDielectron.cxx:1298
 AliDielectron.cxx:1299
 AliDielectron.cxx:1300
 AliDielectron.cxx:1301
 AliDielectron.cxx:1302
 AliDielectron.cxx:1303
 AliDielectron.cxx:1304
 AliDielectron.cxx:1305
 AliDielectron.cxx:1306
 AliDielectron.cxx:1307
 AliDielectron.cxx:1308
 AliDielectron.cxx:1309
 AliDielectron.cxx:1310
 AliDielectron.cxx:1311
 AliDielectron.cxx:1312
 AliDielectron.cxx:1313
 AliDielectron.cxx:1314
 AliDielectron.cxx:1315
 AliDielectron.cxx:1316
 AliDielectron.cxx:1317
 AliDielectron.cxx:1318
 AliDielectron.cxx:1319
 AliDielectron.cxx:1320
 AliDielectron.cxx:1321
 AliDielectron.cxx:1322
 AliDielectron.cxx:1323
 AliDielectron.cxx:1324
 AliDielectron.cxx:1325
 AliDielectron.cxx:1326
 AliDielectron.cxx:1327
 AliDielectron.cxx:1328
 AliDielectron.cxx:1329
 AliDielectron.cxx:1330
 AliDielectron.cxx:1331
 AliDielectron.cxx:1332
 AliDielectron.cxx:1333
 AliDielectron.cxx:1334
 AliDielectron.cxx:1335
 AliDielectron.cxx:1336
 AliDielectron.cxx:1337
 AliDielectron.cxx:1338
 AliDielectron.cxx:1339
 AliDielectron.cxx:1340
 AliDielectron.cxx:1341
 AliDielectron.cxx:1342
 AliDielectron.cxx:1343
 AliDielectron.cxx:1344
 AliDielectron.cxx:1345
 AliDielectron.cxx:1346
 AliDielectron.cxx:1347
 AliDielectron.cxx:1348
 AliDielectron.cxx:1349
 AliDielectron.cxx:1350
 AliDielectron.cxx:1351
 AliDielectron.cxx:1352
 AliDielectron.cxx:1353
 AliDielectron.cxx:1354
 AliDielectron.cxx:1355
 AliDielectron.cxx:1356
 AliDielectron.cxx:1357
 AliDielectron.cxx:1358
 AliDielectron.cxx:1359
 AliDielectron.cxx:1360
 AliDielectron.cxx:1361
 AliDielectron.cxx:1362
 AliDielectron.cxx:1363
 AliDielectron.cxx:1364
 AliDielectron.cxx:1365
 AliDielectron.cxx:1366
 AliDielectron.cxx:1367
 AliDielectron.cxx:1368
 AliDielectron.cxx:1369
 AliDielectron.cxx:1370
 AliDielectron.cxx:1371
 AliDielectron.cxx:1372
 AliDielectron.cxx:1373
 AliDielectron.cxx:1374
 AliDielectron.cxx:1375
 AliDielectron.cxx:1376
 AliDielectron.cxx:1377
 AliDielectron.cxx:1378
 AliDielectron.cxx:1379
 AliDielectron.cxx:1380
 AliDielectron.cxx:1381
 AliDielectron.cxx:1382
 AliDielectron.cxx:1383
 AliDielectron.cxx:1384
 AliDielectron.cxx:1385
 AliDielectron.cxx:1386
 AliDielectron.cxx:1387
 AliDielectron.cxx:1388
 AliDielectron.cxx:1389
 AliDielectron.cxx:1390
 AliDielectron.cxx:1391
 AliDielectron.cxx:1392
 AliDielectron.cxx:1393
 AliDielectron.cxx:1394
 AliDielectron.cxx:1395
 AliDielectron.cxx:1396
 AliDielectron.cxx:1397
 AliDielectron.cxx:1398
 AliDielectron.cxx:1399
 AliDielectron.cxx:1400
 AliDielectron.cxx:1401
 AliDielectron.cxx:1402
 AliDielectron.cxx:1403
 AliDielectron.cxx:1404
 AliDielectron.cxx:1405
 AliDielectron.cxx:1406
 AliDielectron.cxx:1407
 AliDielectron.cxx:1408
 AliDielectron.cxx:1409
 AliDielectron.cxx:1410
 AliDielectron.cxx:1411
 AliDielectron.cxx:1412
 AliDielectron.cxx:1413
 AliDielectron.cxx:1414
 AliDielectron.cxx:1415
 AliDielectron.cxx:1416
 AliDielectron.cxx:1417
 AliDielectron.cxx:1418
 AliDielectron.cxx:1419
 AliDielectron.cxx:1420
 AliDielectron.cxx:1421
 AliDielectron.cxx:1422
 AliDielectron.cxx:1423
 AliDielectron.cxx:1424
 AliDielectron.cxx:1425
 AliDielectron.cxx:1426
 AliDielectron.cxx:1427
 AliDielectron.cxx:1428
 AliDielectron.cxx:1429
 AliDielectron.cxx:1430
 AliDielectron.cxx:1431
 AliDielectron.cxx:1432
 AliDielectron.cxx:1433
 AliDielectron.cxx:1434
 AliDielectron.cxx:1435
 AliDielectron.cxx:1436
 AliDielectron.cxx:1437
 AliDielectron.cxx:1438
 AliDielectron.cxx:1439
 AliDielectron.cxx:1440
 AliDielectron.cxx:1441
 AliDielectron.cxx:1442
 AliDielectron.cxx:1443
 AliDielectron.cxx:1444
 AliDielectron.cxx:1445
 AliDielectron.cxx:1446
 AliDielectron.cxx:1447
 AliDielectron.cxx:1448
 AliDielectron.cxx:1449
 AliDielectron.cxx:1450
 AliDielectron.cxx:1451
 AliDielectron.cxx:1452
 AliDielectron.cxx:1453
 AliDielectron.cxx:1454
 AliDielectron.cxx:1455
 AliDielectron.cxx:1456
 AliDielectron.cxx:1457
 AliDielectron.cxx:1458
 AliDielectron.cxx:1459
 AliDielectron.cxx:1460
 AliDielectron.cxx:1461
 AliDielectron.cxx:1462
 AliDielectron.cxx:1463
 AliDielectron.cxx:1464
 AliDielectron.cxx:1465
 AliDielectron.cxx:1466
 AliDielectron.cxx:1467
 AliDielectron.cxx:1468
 AliDielectron.cxx:1469
 AliDielectron.cxx:1470
 AliDielectron.cxx:1471
 AliDielectron.cxx:1472
 AliDielectron.cxx:1473
 AliDielectron.cxx:1474
 AliDielectron.cxx:1475
 AliDielectron.cxx:1476
 AliDielectron.cxx:1477
 AliDielectron.cxx:1478
 AliDielectron.cxx:1479
 AliDielectron.cxx:1480
 AliDielectron.cxx:1481
 AliDielectron.cxx:1482
 AliDielectron.cxx:1483
 AliDielectron.cxx:1484
 AliDielectron.cxx:1485
 AliDielectron.cxx:1486
 AliDielectron.cxx:1487
 AliDielectron.cxx:1488
 AliDielectron.cxx:1489
 AliDielectron.cxx:1490
 AliDielectron.cxx:1491
 AliDielectron.cxx:1492
 AliDielectron.cxx:1493
 AliDielectron.cxx:1494
 AliDielectron.cxx:1495
 AliDielectron.cxx:1496
 AliDielectron.cxx:1497
 AliDielectron.cxx:1498
 AliDielectron.cxx:1499
 AliDielectron.cxx:1500
 AliDielectron.cxx:1501
 AliDielectron.cxx:1502
 AliDielectron.cxx:1503
 AliDielectron.cxx:1504
 AliDielectron.cxx:1505
 AliDielectron.cxx:1506
 AliDielectron.cxx:1507
 AliDielectron.cxx:1508
 AliDielectron.cxx:1509
 AliDielectron.cxx:1510
 AliDielectron.cxx:1511
 AliDielectron.cxx:1512
 AliDielectron.cxx:1513
 AliDielectron.cxx:1514
 AliDielectron.cxx:1515
 AliDielectron.cxx:1516
 AliDielectron.cxx:1517
 AliDielectron.cxx:1518
 AliDielectron.cxx:1519
 AliDielectron.cxx:1520
 AliDielectron.cxx:1521
 AliDielectron.cxx:1522
 AliDielectron.cxx:1523
 AliDielectron.cxx:1524
 AliDielectron.cxx:1525
 AliDielectron.cxx:1526
 AliDielectron.cxx:1527
 AliDielectron.cxx:1528
 AliDielectron.cxx:1529
 AliDielectron.cxx:1530
 AliDielectron.cxx:1531
 AliDielectron.cxx:1532
 AliDielectron.cxx:1533
 AliDielectron.cxx:1534
 AliDielectron.cxx:1535
 AliDielectron.cxx:1536
 AliDielectron.cxx:1537
 AliDielectron.cxx:1538
 AliDielectron.cxx:1539
 AliDielectron.cxx:1540
 AliDielectron.cxx:1541
 AliDielectron.cxx:1542
 AliDielectron.cxx:1543
 AliDielectron.cxx:1544
 AliDielectron.cxx:1545
 AliDielectron.cxx:1546
 AliDielectron.cxx:1547
 AliDielectron.cxx:1548
 AliDielectron.cxx:1549
 AliDielectron.cxx:1550
 AliDielectron.cxx:1551
 AliDielectron.cxx:1552
 AliDielectron.cxx:1553
 AliDielectron.cxx:1554
 AliDielectron.cxx:1555
 AliDielectron.cxx:1556
 AliDielectron.cxx:1557
 AliDielectron.cxx:1558
 AliDielectron.cxx:1559
 AliDielectron.cxx:1560
 AliDielectron.cxx:1561
 AliDielectron.cxx:1562
 AliDielectron.cxx:1563
 AliDielectron.cxx:1564
 AliDielectron.cxx:1565
 AliDielectron.cxx:1566
 AliDielectron.cxx:1567
 AliDielectron.cxx:1568
 AliDielectron.cxx:1569
 AliDielectron.cxx:1570
 AliDielectron.cxx:1571
 AliDielectron.cxx:1572
 AliDielectron.cxx:1573
 AliDielectron.cxx:1574
 AliDielectron.cxx:1575
 AliDielectron.cxx:1576
 AliDielectron.cxx:1577
 AliDielectron.cxx:1578
 AliDielectron.cxx:1579
 AliDielectron.cxx:1580
 AliDielectron.cxx:1581
 AliDielectron.cxx:1582
 AliDielectron.cxx:1583
 AliDielectron.cxx:1584
 AliDielectron.cxx:1585
 AliDielectron.cxx:1586
 AliDielectron.cxx:1587
 AliDielectron.cxx:1588
 AliDielectron.cxx:1589
 AliDielectron.cxx:1590
 AliDielectron.cxx:1591
 AliDielectron.cxx:1592
 AliDielectron.cxx:1593
 AliDielectron.cxx:1594
 AliDielectron.cxx:1595
 AliDielectron.cxx:1596
 AliDielectron.cxx:1597
 AliDielectron.cxx:1598
 AliDielectron.cxx:1599
 AliDielectron.cxx:1600
 AliDielectron.cxx:1601
 AliDielectron.cxx:1602
 AliDielectron.cxx:1603
 AliDielectron.cxx:1604
 AliDielectron.cxx:1605
 AliDielectron.cxx:1606
 AliDielectron.cxx:1607
 AliDielectron.cxx:1608
 AliDielectron.cxx:1609
 AliDielectron.cxx:1610
 AliDielectron.cxx:1611
 AliDielectron.cxx:1612
 AliDielectron.cxx:1613
 AliDielectron.cxx:1614
 AliDielectron.cxx:1615
 AliDielectron.cxx:1616
 AliDielectron.cxx:1617
 AliDielectron.cxx:1618
 AliDielectron.cxx:1619
 AliDielectron.cxx:1620
 AliDielectron.cxx:1621
 AliDielectron.cxx:1622
 AliDielectron.cxx:1623
 AliDielectron.cxx:1624
 AliDielectron.cxx:1625
 AliDielectron.cxx:1626
 AliDielectron.cxx:1627
 AliDielectron.cxx:1628
 AliDielectron.cxx:1629
 AliDielectron.cxx:1630
 AliDielectron.cxx:1631
 AliDielectron.cxx:1632
 AliDielectron.cxx:1633
 AliDielectron.cxx:1634
 AliDielectron.cxx:1635
 AliDielectron.cxx:1636
 AliDielectron.cxx:1637
 AliDielectron.cxx:1638
 AliDielectron.cxx:1639
 AliDielectron.cxx:1640
 AliDielectron.cxx:1641
 AliDielectron.cxx:1642
 AliDielectron.cxx:1643
 AliDielectron.cxx:1644
 AliDielectron.cxx:1645
 AliDielectron.cxx:1646
 AliDielectron.cxx:1647
 AliDielectron.cxx:1648
 AliDielectron.cxx:1649
 AliDielectron.cxx:1650
 AliDielectron.cxx:1651
 AliDielectron.cxx:1652
 AliDielectron.cxx:1653
 AliDielectron.cxx:1654
 AliDielectron.cxx:1655
 AliDielectron.cxx:1656
 AliDielectron.cxx:1657
 AliDielectron.cxx:1658
 AliDielectron.cxx:1659
 AliDielectron.cxx:1660
 AliDielectron.cxx:1661
 AliDielectron.cxx:1662
 AliDielectron.cxx:1663
 AliDielectron.cxx:1664
 AliDielectron.cxx:1665
 AliDielectron.cxx:1666