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 helper functions wrapped in a namespace
// 
//
// Authors: 
//   Jens Wiechula <Jens.Wiechula@cern.ch> 
//   Frederick Kramer <Frederick.Kramer@cern.ch> 
//   Julian Book <Julian.Book@cern.ch>




#include <TError.h>
#include <TMath.h>
#include <TObjString.h>
#include <TObjArray.h>
#include <TVectorD.h>
#include <TF1.h>
#include <TRandom.h>
#include <TProfile.h>

#include <AliVEvent.h>
#include <AliVParticle.h>
#include <AliKFParticle.h>
#include <AliESDtrackCuts.h>
#include <AliESDEvent.h>
#include <AliMCEvent.h>
#include <AliAODEvent.h>
#include <AliAODTracklets.h>
#include <AliMultiplicity.h>
#include <AliStack.h>

#include "AliDielectronVarCuts.h"
#include "AliDielectronTrackCuts.h"
#include "AliDielectronVarManager.h"
#include "AliDielectronHelper.h"

//_____________________________________________________________________________
TVectorD* AliDielectronHelper::MakeLogBinning(Int_t nbinsX, Double_t xmin, Double_t xmax)
{
  //
  // Make logarithmic binning
  // the user has to delete the array afterwards!!!
  //
  
  //check limits
  if (xmin<1e-20 || xmax<1e-20){
    Error("AliDielectronHelper::MakeLogBinning","For Log binning xmin and xmax must be > 1e-20. Using linear binning instead!");
    return AliDielectronHelper::MakeLinBinning(nbinsX, xmin, xmax);
  }
  if (xmax<xmin){
    Double_t tmp=xmin;
    xmin=xmax;
    xmax=tmp;
  }
  TVectorD *binLim=new TVectorD(nbinsX+1);
  Double_t first=xmin;
  Double_t last=xmax;
  Double_t expMax=TMath::Log(last/first);
  for (Int_t i=0; i<nbinsX+1; ++i){
    (*binLim)[i]=first*TMath::Exp(expMax/nbinsX*(Double_t)i);
  }
  return binLim;
}

//_____________________________________________________________________________
TVectorD* AliDielectronHelper::MakeLinBinning(Int_t nbinsX, Double_t xmin, Double_t xmax)
{
  //
  // Make linear binning
  // the user has to delete the array afterwards!!!
  //
  if (xmax<xmin){
    Double_t tmp=xmin;
    xmin=xmax;
    xmax=tmp;
  }
  TVectorD *binLim=new TVectorD(nbinsX+1);
  Double_t first=xmin;
  Double_t last=xmax;
  Double_t binWidth=(last-first)/nbinsX;
  for (Int_t i=0; i<nbinsX+1; ++i){
    (*binLim)[i]=first+binWidth*(Double_t)i;
  }
  return binLim;
}

//_____________________________________________________________________________
TVectorD* AliDielectronHelper::MakeArbitraryBinning(const char* bins)
{
  //
  // Make arbitrary binning, bins separated by a ','
  //
  TString limits(bins);
  if (limits.IsNull()){
    Error("AliDielectronHelper::MakeArbitraryBinning","Bin Limit string is empty, cannot add the variable");
    return 0x0;
  }
  
  TObjArray *arr=limits.Tokenize(",");
  Int_t nLimits=arr->GetEntries();
  if (nLimits<2){
    Error("AliDielectronHelper::MakeArbitraryBinning","Need at leas 2 bin limits, cannot add the variable");
    delete arr;
    return 0x0;
  }
  
  TVectorD *binLimits=new TVectorD(nLimits);
  for (Int_t iLim=0; iLim<nLimits; ++iLim){
    (*binLimits)[iLim]=(static_cast<TObjString*>(arr->At(iLim)))->GetString().Atof();
  }
  
  delete arr;
  return binLimits;
}

//_____________________________________________________________________________
void AliDielectronHelper::GetMaxPtAndPhi(const AliVEvent *ev, Double_t &ptMax, Double_t &phiOfptMax){
  //
  // find the highest pt and its phi in the event
  //
  for(Int_t itrk=0; itrk<ev->GetNumberOfTracks(); itrk++) {
    AliVParticle *part= ev->GetTrack(itrk);
    if(part && part->Pt() > ptMax) {
      ptMax      = part->Pt();
      phiOfptMax = part->Phi();
    }
  }


}

//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNch(const AliMCEvent *ev, Double_t etaRange){
  // determination of Nch
  if (!ev || ev->IsA()!=AliMCEvent::Class()) return -1;

  AliStack *stack = ((AliMCEvent*)ev)->Stack();

  if (!stack) return -1;

  Int_t nParticles = stack->GetNtrack();
  Int_t nCh = 0;

  // count..
  for (Int_t iMc = 0; iMc < nParticles; ++iMc) {
    if (!stack->IsPhysicalPrimary(iMc)) continue;

    TParticle* particle = stack->Particle(iMc);
    if (!particle) continue;
    if (particle->GetPDG()->Charge() == 0) continue;

    Float_t eta = particle->Eta();
    if (TMath::Abs(eta) < TMath::Abs(etaRange)) nCh++;
  }

  return nCh;
}


//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNaccTrcklts(const AliVEvent *ev, Double_t etaRange){
  // Compute the collision multiplicity based on AOD or ESD tracklets
  // Code taken from: AliAnalysisTaskMuonCollisionMultiplicity::ComputeMultiplicity()

  if (!ev) return -1;

  Int_t nTracklets = 0;
  Int_t nAcc = 0;
  
  if (ev->IsA() == AliAODEvent::Class()) {
    AliAODTracklets *tracklets = ((AliAODEvent*)ev)->GetTracklets();
    if (!tracklets) return -1;
    nTracklets = tracklets->GetNumberOfTracklets();
    for (Int_t nn = 0; nn < nTracklets; nn++) {
      Double_t theta = tracklets->GetTheta(nn);
      Double_t eta = -TMath::Log(TMath::Tan(theta/2.0));
      if (TMath::Abs(eta) < etaRange) nAcc++;
    }
  } else if (ev->IsA() == AliESDEvent::Class()) {
    nTracklets = ((AliESDEvent*)ev)->GetMultiplicity()->GetNumberOfTracklets();
    for (Int_t nn = 0; nn < nTracklets; nn++) {
      Double_t eta = ((AliESDEvent*)ev)->GetMultiplicity()->GetEta(nn);
      if (TMath::Abs(eta) < etaRange) nAcc++;
    }
  } else return -1;

  return nAcc;
}



//________________________________________________________________
Double_t AliDielectronHelper::GetNaccTrckltsCorrected(const AliVEvent *event, Double_t uncorrectedNacc, Double_t vtxZ, Int_t type) {
  //
  // Correct the number of accepted tracklets based on the period and event vertex
  //

  Int_t runNo = event->GetRunNumber();

  Int_t period = -1;   // 0-LHC10b, 1-LHC10c, 2-LHC10d, 3-LHC10e
  Double_t refMult = 0.0;   // reference multiplicity
  
  if(runNo>114930 && runNo<117223) period = 0;
  if(runNo>119158 && runNo<120830) period = 1;
  if(runNo>122373 && runNo<126438) period = 2;
  if(runNo>127711 && runNo<130841) period = 3;
  if(period<0 || period>3) return uncorrectedNacc;

  if(type<0 || type>8) return uncorrectedNacc;
  if(type == 0) refMult = 5.0;         // SPD tracklets in |eta|<0.5 
  if(type == 1) refMult = 9.5;         // SPD tracklets in |eta|<1.0
  if(type == 2) refMult = 13.0;        // SPD tracklets in |eta|<1.6
  if(type == 3) refMult = 6.0;         // ITSTPC+ in |eta|<0.5
  if(type == 4) refMult = 12.0;        // ITSTPC+ in |eta|<1.0
  if(type == 5) refMult = 16.0;        // ITSTPC+ in |eta|<1.6
  if(type == 6) refMult = 6.0;         // ITSSA+ in |eta|<0.5
  if(type == 7) refMult = 12.0;        // ITSSA+ in |eta|<1.0
  if(type == 8) refMult = 15.0;        // ITSSA+ in |eta|<1.6

  if(TMath::Abs(vtxZ)>10.0) return uncorrectedNacc;

  TProfile* estimatorAvg = AliDielectronVarManager::GetEstimatorHistogram(period, type);
  if(!estimatorAvg) return uncorrectedNacc;

  Double_t localAvg = estimatorAvg->GetBinContent(estimatorAvg->FindBin(vtxZ));

  Double_t deltaM = uncorrectedNacc*(refMult/localAvg - 1);

  Double_t correctedNacc = uncorrectedNacc + (deltaM>0 ? 1 : -1) * gRandom->Poisson(TMath::Abs(deltaM));

  return correctedNacc;
}

//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNacc(const AliVEvent *ev){
  // put a robust Nacc definition here

  if (!ev) return -1;

  AliDielectronVarCuts varCuts;
  varCuts.AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
  varCuts.AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
  varCuts.AddCut(AliDielectronVarManager::kEta,         -0.9,   0.9);
  varCuts.AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);
  varCuts.AddCut(AliDielectronVarManager::kNclsTPC,     70.0, 160.0);
  varCuts.AddCut(AliDielectronVarManager::kKinkIndex0,  -0.5,   0.5);   //noKinks

  AliDielectronTrackCuts trkCuts;
  trkCuts.SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
  trkCuts.SetRequireITSRefit(kTRUE);
  trkCuts.SetRequireTPCRefit(kTRUE);

  Int_t nRecoTracks = ev->GetNumberOfTracks();
  Int_t nAcc = 0;

  for (Int_t iTrack = 0; iTrack < nRecoTracks; iTrack++) {
    AliVTrack *track        = static_cast<AliVTrack*>(ev->GetTrack(iTrack));
    if (!track) continue;
    if (!trkCuts.IsSelected(track)) continue;
    if (!varCuts.IsSelected(track)) continue;
    nAcc++;
  }

  return nAcc;
}

//_____________________________________________________________________________
Double_t AliDielectronHelper::GetITSTPCMatchEff(const AliVEvent *ev){
  // recalulate the its-tpc matching efficiecy

  if (!ev) return -1;

  AliDielectronVarCuts varCutsTPC;
  varCutsTPC.AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
  varCutsTPC.AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
  varCutsTPC.AddCut(AliDielectronVarManager::kEta,         -0.9,   0.9);
  varCutsTPC.AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);
  varCutsTPC.AddCut(AliDielectronVarManager::kNclsTPC,     50.0, 160.0);
  AliDielectronTrackCuts trkCutsTPC;
  trkCutsTPC.SetRequireTPCRefit(kTRUE);

  AliDielectronVarCuts varCutsITS;
  varCutsITS.AddCut(AliDielectronVarManager::kEta,         -0.9,   0.9);
  AliDielectronTrackCuts trkCutsITS;
  trkCutsITS.SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
  trkCutsITS.SetRequireITSRefit(kTRUE);


  Int_t nRecoTracks = ev->GetNumberOfTracks();
  Double_t nTPC = 0, nITS = 0;

  for (Int_t iTrack = 0; iTrack < nRecoTracks; iTrack++) {
    AliVTrack *track        = static_cast<AliVTrack*>(ev->GetTrack(iTrack));
    if (!track) continue;

    if(!trkCutsITS.IsSelected(track)) continue;
    if(!varCutsITS.IsSelected(track)) continue;
    nITS+=1.;

    if(!trkCutsTPC.IsSelected(track)) continue;
    if(!varCutsTPC.IsSelected(track)) continue;
    nTPC+=1.;

  }

  //  printf(" tracks TPC %.3e ITS %.3e = %.5f \n",nTPC,nITS,(nITS>0. ? nTPC/nITS : -1));
  return (nITS>0. ? nTPC/nITS : -1);
}


//_____________________________________________________________________________
void AliDielectronHelper::RotateKFParticle(AliKFParticle * kfParticle,Double_t angle, const AliVEvent * const ev){
  // Before rotate needs to be moved to position 0,0,0, ; move back after rotation
  if (!kfParticle) return;
  Double_t dx = 0.;
  Double_t dy = 0.;
  Double_t dz = 0.;

  if (ev){
    dx = ev->GetPrimaryVertex()->GetX()-0.;
    dy = ev->GetPrimaryVertex()->GetY()-0.;
    dz = ev->GetPrimaryVertex()->GetZ()-0.;
  }
  
  kfParticle->X() = kfParticle->GetX() - dx;
  kfParticle->Y() = kfParticle->GetY() - dy;
  kfParticle->Z() = kfParticle->GetZ() - dz;
  
  
  // Rotate the kf particle
  Double_t c = cos(angle);
  Double_t s = sin(angle);
  
  Double_t mA[8][ 8];
  for( Int_t i=0; i<8; i++ ){
    for( Int_t j=0; j<8; j++){
      mA[i][j] = 0;
    }
  }
  for( int i=0; i<8; i++ ){
    mA[i][i] = 1;
  }
  mA[0][0] =  c;  mA[0][1] = s;
  mA[1][0] = -s;  mA[1][1] = c;
  mA[3][3] =  c;  mA[3][4] = s;
  mA[4][3] = -s;  mA[4][4] = c;
  
  Double_t mAC[8][8];
  Double_t mAp[8];
  
  for( Int_t i=0; i<8; i++ ){
    mAp[i] = 0;
    for( Int_t k=0; k<8; k++){
      mAp[i]+=mA[i][k] * kfParticle->GetParameter(k);
    }
  }
  
  for( Int_t i=0; i<8; i++){
    kfParticle->Parameter(i) = mAp[i];
  }
  
  for( Int_t i=0; i<8; i++ ){
    for( Int_t j=0; j<8; j++ ){
      mAC[i][j] = 0;
      for( Int_t k=0; k<8; k++ ){
        mAC[i][j]+= mA[i][k] * kfParticle->GetCovariance(k,j);
      }
    }
  }
  
  for( Int_t i=0; i<8; i++ ){
    for( Int_t j=0; j<=i; j++ ){
      Double_t xx = 0;
      for( Int_t k=0; k<8; k++){
        xx+= mAC[i][k]*mA[j][k];
      }
      kfParticle->Covariance(i,j) = xx;
    }
  }
  
  kfParticle->X() = kfParticle->GetX() + dx;
  kfParticle->Y() = kfParticle->GetY() + dy;
  kfParticle->Z() = kfParticle->GetZ() + dz;
  
}

//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNMothers(const AliMCEvent *ev, Double_t etaRange, Int_t pdgMother, Int_t pdgDaughter, Int_t prim){
  // TODO: add AODs
  // counting number of mother particles generated in given eta range and 2 particle decay
  if (!ev || ev->IsA()!=AliMCEvent::Class()) return -1;
  
  AliStack *stack = ((AliMCEvent*)ev)->Stack();
  
  if (!stack) return -1;
  
  Int_t nParticles = stack->GetNtrack();
  Int_t nMothers   = 0;
  
  // count..
  for (Int_t iMc = 0; iMc < nParticles; ++iMc) {
    
    TParticle* particle = stack->Particle(iMc);
    if (!particle) continue;
    if (particle->GetPdgCode() != pdgMother)               continue;
    if (TMath::Abs(particle->Eta()) > TMath::Abs(etaRange)) continue;

    if (particle->GetNDaughters() != 2)                 continue;
    // 1st daugther
    if (particle->GetFirstDaughter()>=nParticles ||
	particle->GetFirstDaughter()<0             ) continue;
    
    TParticle* dau1 = stack->Particle(particle->GetFirstDaughter());
    if (TMath::Abs(dau1->GetPdgCode()) != pdgDaughter)     continue;
    if (TMath::Abs(dau1->Eta()) > TMath::Abs(etaRange)) continue;
    
    // 2nd daughter
    if (particle->GetLastDaughter()>=nParticles ||
	particle->GetLastDaughter()<0             ) continue;

    TParticle* dau2 = stack->Particle(particle->GetLastDaughter());
    if (TMath::Abs(dau2->GetPdgCode()) != pdgDaughter)     continue;
    if (TMath::Abs(dau2->Eta()) > TMath::Abs(etaRange)) continue;
    
    // primary
    if (prim != -1) {
      if(particle->IsPrimary() != prim) continue;
    }
    nMothers++;
  }
  return nMothers;
}


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