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 EventCuts                                  //
//                                                                       //
//                                                                       //
/*
Detailed description


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


#include <AliTriggerAnalysis.h>
#include <AliESDVertex.h>
#include <AliAODVertex.h>
#include <AliESDEvent.h>
#include <AliAODEvent.h>
#include <AliMultiplicity.h>
#include <AliCentrality.h>
#include <AliESDVZERO.h>
#include <AliAODVZERO.h>

#include "AliDielectronVarManager.h"
#include "AliDielectronEventCuts.h"

ClassImp(AliDielectronEventCuts)

const char* AliDielectronEventCuts::fgkVtxNames[AliDielectronEventCuts::kVtxTracksOrSPD+1] = {"Tracks", "SPD", "TPC", "Any", "TracksOrSPD"};

AliDielectronEventCuts::AliDielectronEventCuts() :
  AliAnalysisCuts(),
  fUsedVars(new TBits(AliDielectronVarManager::kNMaxValues)),
  fRun(),
  fVtxZmin(0.),
  fVtxZmax(0.),
  fRequireVtx(kFALSE),
  fMinVtxContributors(0),
  fMultITSTPC(kFALSE),
  fCentMin(1.),
  fCentMax(0.),
  fVtxType(kVtxTracks),
  fRequire13sel(kFALSE),
  fUtils(),
  fRequireV0and(0),
  fTriggerAnalysis(0x0),
  fkVertex(0x0),
  fkVertexAOD(0x0),
  fparMean(0x0),
  fparSigma(0x0),
  fcutSigma(3.),
  fparMinVtxContributors(0x0),
  fparMaxVtxContributors(0x0)
{
  //
  // Default Constructor
  //
  for (Int_t icut=0; icut<5; ++icut){
    fCorrCutMin[icut]=0x0;
    fCorrCutMax[icut]=0x0;
  }
}

//______________________________________________
AliDielectronEventCuts::AliDielectronEventCuts(const char* name, const char* title) :
  AliAnalysisCuts(name, title),
  fUsedVars(new TBits(AliDielectronVarManager::kNMaxValues)),
  fRun(),
  fVtxZmin(0.),
  fVtxZmax(0.),
  fRequireVtx(kFALSE),
  fMinVtxContributors(0),
  fMultITSTPC(kFALSE),
  fCentMin(1.),
  fCentMax(0.),
  fVtxType(kVtxTracks),
  fRequire13sel(kFALSE),
  fUtils(),
  fRequireV0and(0),
  fTriggerAnalysis(0x0),
  fkVertex(0x0),
  fkVertexAOD(0x0),
  fparMean(0x0),
  fparSigma(0x0),
  fcutSigma(3.),
  fparMinVtxContributors(0x0),
  fparMaxVtxContributors(0x0)
{
  //
  // Named Constructor
  //
  for (Int_t icut=0; icut<5; ++icut){
    fCorrCutMin[icut]=0x0;
    fCorrCutMax[icut]=0x0;
  }
}

//______________________________________________
AliDielectronEventCuts::~AliDielectronEventCuts()
{
  //
  // Default Destructor
  //
  if (fUsedVars) delete fUsedVars;
  if (fTriggerAnalysis) delete fTriggerAnalysis;
}

//______________________________________________
Bool_t AliDielectronEventCuts::IsSelected(TObject* event)
{
  //
  // check the cuts
  //
  
  if(event->IsA() == AliESDEvent::Class()) return IsSelectedESD(event);
  else if(event->IsA() == AliAODEvent::Class()) return IsSelectedAOD(event);
  else return kFALSE;
}
//____________________________________________________________________
Bool_t AliDielectronEventCuts::IsSelectedESD(TObject* event)
{
  //
  // check the cuts
  //
  
  AliESDEvent *ev=dynamic_cast<AliESDEvent*>(event);
  if (!ev) return kFALSE;

  if (fCentMin<fCentMax){
    AliCentrality *centrality=ev->GetCentrality();
    Double_t centralityF=-1;
    if (centrality) centralityF = centrality->GetCentralityPercentile("V0M");
    if (centralityF<fCentMin || centralityF>=fCentMax) return kFALSE;
  }

  fkVertex=0x0;

  switch(fVtxType){
  case kVtxTracks:
  case kVtxTracksOrSPD:
    fkVertex=ev->GetPrimaryVertexTracks();
    break;
  case kVtxSPD:    fkVertex=ev->GetPrimaryVertexSPD(); break;
  case kVtxTPC:    fkVertex=ev->GetPrimaryVertexTPC(); break;
  case kVtxAny:    fkVertex=ev->GetPrimaryVertex(); break;
  }

  if ((fRequireVtx||fVtxZmin<fVtxZmax||fMinVtxContributors>0)&&!fkVertex) return kFALSE;
  

  if (fMinVtxContributors>0){
    Int_t nCtrb = fkVertex->GetNContributors();
    if (nCtrb<fMinVtxContributors){
      if (fVtxType==kVtxTracksOrSPD){
        fkVertex=ev->GetPrimaryVertexSPD();
        nCtrb = fkVertex->GetNContributors();
        if (nCtrb<fMinVtxContributors) return kFALSE;
      } else {
        return kFALSE;
      }
    }
  }

  if (fVtxZmin<fVtxZmax){
    Double_t zvtx=fkVertex->GetZ();
    if (zvtx<fVtxZmin||zvtx>fVtxZmax) return kFALSE;
  }

  if(fRequire13sel){
    if(!fUtils.IsVertexSelected2013pA(ev)) return kFALSE;
    if(fUtils.IsFirstEventInChunk(ev)) return kFALSE;
  }

  if (fRequireV0and){
    if (!fTriggerAnalysis) fTriggerAnalysis=new AliTriggerAnalysis;
    Bool_t v0AND = kFALSE;
    if (fRequireV0and==1){
      Bool_t v0A       = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0A);
      Bool_t v0C       = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0C);
      v0AND = v0A && v0C;
    }

    if (fRequireV0and==2){
      Bool_t v0AHW     = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kASide, kTRUE) == AliTriggerAnalysis::kV0BB);
      Bool_t v0CHW     = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kCSide, kTRUE) == AliTriggerAnalysis::kV0BB);
      v0AND = v0AHW && v0CHW;
    }

    if (!v0AND) return kFALSE;
  }

  if (fMultITSTPC){
    const AliESDVertex *vtxESDTPC=ev->GetPrimaryVertexTPC();
    const AliMultiplicity *multESD = ev->GetMultiplicity();
    if ( vtxESDTPC && multESD && vtxESDTPC->GetNContributors() < (-10.+0.25*multESD->GetNumberOfITSClusters(0)) )
      return kFALSE;
  }

  if(fparMean && fparSigma) {
    Double_t nTrks  = ev->GetNumberOfTracks();
    Double_t multV0 = 0.0;
    for(Int_t j=0; j<64; j++) multV0 += ev->GetVZEROData()->GetMultiplicity(j);
    Double_t mV0 = fparMean->Eval(nTrks);
    Double_t sV0 = fparSigma->Eval(nTrks);
    if(multV0 > mV0+fcutSigma*sV0 || multV0 < mV0-fcutSigma*sV0) return kFALSE;
  }

  // cut on the number of vertex contributors using TPC versus global vertex
  if(fparMinVtxContributors && fparMaxVtxContributors) {
    const AliESDVertex *vtxTPC = ev->GetPrimaryVertexTPC();
    const AliESDVertex *vtxGbl = ev->GetPrimaryVertex();
    Double_t nContribTPC = (vtxTPC ? vtxTPC->GetNContributors() : 0);
    Double_t nContribGbl = (vtxGbl ? vtxGbl->GetNContributors() : 0);
    Double_t minCut = fparMinVtxContributors->Eval(nContribGbl);
    Double_t maxCut = fparMaxVtxContributors->Eval(nContribGbl);
    if(nContribTPC > maxCut || nContribTPC < minCut) return kFALSE;
  }


  return kTRUE;
}
//______________________________________________
Bool_t AliDielectronEventCuts::IsSelectedAOD(TObject* event)
{
  //
  // check the cuts
  //
  
  AliAODEvent *ev=dynamic_cast<AliAODEvent*>(event);
  if (!ev) return kFALSE;

  //Fill values
  Double_t values[AliDielectronVarManager::kNMaxValues];
  if(fUsedVars->CountBits()) {
    AliDielectronVarManager::SetFillMap(fUsedVars);
    AliDielectronVarManager::Fill(ev,values);

    // correlation cuts
    for(Int_t i=0; i<5; i++) {
      if(fCorrCutMin[i]) {
	Double_t varx = values[fCorrCutMin[i]->GetXaxis()->GetUniqueID()];
	Double_t vary = values[fCorrCutMin[i]->GetYaxis()->GetUniqueID()];
	Double_t min  = ((TF1*)fCorrCutMin[i]->GetListOfFunctions()->At(0))->Eval(varx);
	//      printf("coor cut %d: varx %f -> eval %f > %f \n",i,varx,min,vary);
	if(vary<min) return kFALSE;
      }
      if(fCorrCutMax[i]) {
	Double_t varx = values[fCorrCutMax[i]->GetXaxis()->GetUniqueID()];
	Double_t vary = values[fCorrCutMax[i]->GetYaxis()->GetUniqueID()];
	Double_t max  = ((TF1*)fCorrCutMax[i]->GetListOfFunctions()->At(0))->Eval(varx);
	if(vary>max) return kFALSE;
      }
    }
  }

  // run rejection
  Int_t run = ev->GetRunNumber();
  if(fRun.GetNrows()) {
    for(Int_t irun=0; irun<fRun.GetNrows(); irun++) {
      if(fRun(irun)==run) return kFALSE;
    }
  }

  if (fCentMin<fCentMax){
    AliCentrality *centrality=ev->GetCentrality();
    Double_t centralityF=-1;
    if (centrality) centralityF = centrality->GetCentralityPercentile("V0M");
    if (centralityF<fCentMin || centralityF>=fCentMax) return kFALSE;
  }

  fkVertexAOD=0x0;

  switch(fVtxType){
  case kVtxTracks:         fkVertexAOD=0x0;                       break;
  case kVtxTPC:            fkVertexAOD=AliDielectronVarManager::GetVertex(ev, AliAODVertex::kMainTPC);   break;
  case kVtxSPD:
  case kVtxTracksOrSPD:    fkVertexAOD=ev->GetPrimaryVertexSPD(); break;
  case kVtxAny:            fkVertexAOD=ev->GetPrimaryVertex();    break;
  }

  if ((fRequireVtx||fVtxZmin<fVtxZmax||fMinVtxContributors>0)&&!fkVertexAOD) return kFALSE;
  
  if (fMinVtxContributors>0){
    Int_t nCtrb = fkVertexAOD->GetNContributors();
    if (nCtrb<fMinVtxContributors){
      // if (fVtxType==kVtxTracksOrSPD){
      //   fkVertexAOD=ev->GetVertex(AliAODVertex::kPrimary);
      //   nCtrb = fkVertexAOD->GetNContributors();
      //   if (nCtrb<fMinVtxContributors) return kFALSE;
      //      } else {
      return kFALSE;
      //}
    }
  }
  

  if (fVtxZmin<fVtxZmax){
    Double_t zvtx=fkVertexAOD->GetZ();
    if (zvtx<fVtxZmin||zvtx>fVtxZmax) return kFALSE;
  }

  if(fRequire13sel){
    if(!fUtils.IsVertexSelected2013pA(ev)) return kFALSE;
//     if(fUtils.IsFirstEventInChunk(ev)) return kFALSE;
  }

  /*
  if (fRequireV0and){
    //    if (!fTriggerAnalysis) fTriggerAnalysis=new AliTriggerAnalysis;
    Bool_t v0AND = kFALSE;
    if (fRequireV0and==1){
      Bool_t v0A       = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0A);
      Bool_t v0A       = header->GetOfflineTrigger(); //TODO
      Bool_t v0C       = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0C);
      v0AND = v0A && v0C;
    }

    if (fRequireV0and==2){
      Bool_t v0AHW     = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kASide, kTRUE) == AliTriggerAnalysis::kV0BB);
      Bool_t v0CHW     = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kCSide, kTRUE) == AliTriggerAnalysis::kV0BB);
      v0AND = v0AHW && v0CHW;
    }

    if (!v0AND) return kFALSE;
  }
  */
  /*  if (fMultITSTPC){
    const AliESDVertex *vtxESDTPC=ev->GetPrimaryVertexTPC();
    const AliMultiplicity *multESD = ev->GetMultiplicity();
    if ( vtxESDTPC && multESD && vtxESDTPC->GetNContributors() < (-10.+0.25*multESD->GetNumberOfITSClusters(0)) )
      return kFALSE;
  }
  */
  
  // correlation cut Ntrks vs. multV0
  if(fparMean && fparSigma) {
    Double_t nTrks  = ev->GetNumberOfTracks();
    Double_t multV0 = 0.0;
    for(Int_t j=0; j<64; j++) multV0 += ev->GetVZEROData()->GetMultiplicity(j);
    Double_t mV0 = fparMean->Eval(nTrks);
    Double_t sV0 = fparSigma->Eval(nTrks);
    if(multV0 > mV0+fcutSigma*sV0 || multV0 < mV0-fcutSigma*sV0) return kFALSE;
  }

  // cut on the number of vertex contributors using TPC versus global vertex
  if(fparMinVtxContributors && fparMaxVtxContributors) {
    const AliAODVertex *vtxTPC = ev->GetVertex(AliAODVertex::kMainTPC);
    const AliAODVertex *vtxGbl = ev->GetPrimaryVertex();
    Double_t nContribTPC = (vtxTPC ? vtxTPC->GetNContributors() : 0);
    Double_t nContribGbl = (vtxGbl ? vtxGbl->GetNContributors() : 0);
    Double_t minCut = fparMinVtxContributors->Eval(nContribGbl);
    Double_t maxCut = fparMaxVtxContributors->Eval(nContribGbl);
    if(nContribTPC > maxCut || nContribTPC < minCut) return kFALSE;
  }

  return kTRUE;
}

//______________________________________________
void AliDielectronEventCuts::SetMinCorrCutFunction(TF1 *fun, UInt_t varx, UInt_t vary)
{
  //
  // add correlation cut using a TF1
  //
  fUsedVars->SetBitNumber(varx,kTRUE);
  fUsedVars->SetBitNumber(vary,kTRUE);
  // store variables
  fun->GetXaxis()->SetUniqueID(varx);
  fun->GetYaxis()->SetUniqueID(vary);

  Int_t i=0;
  for(i=0; i<5; i++) {
    if(fCorrCutMin[i]) continue;
    else {
      TString key=GetName(); key+=Form("Min%d",i);
      // clone temporare histogram since otherwise it will not be streamed to file!
      fCorrCutMin[i] = (TH1*)fun->GetHistogram()->Clone(key.Data());
      fCorrCutMin[i]->GetListOfFunctions()->AddAt(fun,0);
      break;
    }
  }
  //printf("-----> corr cut added to %d %p \n",i,fCorrCutMin[i]);
  //  fCorrCutMin[i]->Print();
  //fCorrCutMin[i]->GetListOfFunctions()->ls();
}

//______________________________________________
void AliDielectronEventCuts::SetMaxCorrCutFunction(TF1 *fun, UInt_t varx, UInt_t vary)
{
  //
  // add correlation cut using a TF1
  //
  fUsedVars->SetBitNumber(varx,kTRUE);
  fUsedVars->SetBitNumber(vary,kTRUE);
  // store variables
  fun->GetXaxis()->SetUniqueID(varx);
  fun->GetYaxis()->SetUniqueID(vary);

  Int_t i=0;
  for(i=0; i<5; i++) {
    if(fCorrCutMax[i]) continue;
    else {
      TString key=GetName(); key+=Form("Max%d",i);
      // clone temporare histogram since otherwise it will not be streamed to file!
      fCorrCutMax[i] = (TH1*)fun->GetHistogram()->Clone(key.Data());
      fCorrCutMax[i]->GetListOfFunctions()->AddAt(fun,0);
      break;
    }
  }
  //printf("-----> corr cut added to %d %p \n",i,fCorrCutMax[i]);
  //  fCorrCutMax[i]->Print();
  //  fCorrCutMax[i]->GetListOfFunctions()->ls();
}

//________________________________________________________________________
void AliDielectronEventCuts::Print(const Option_t* /*option*/) const
{
  //
  // Print cuts and the range
  //
  printf("cut ranges for '%s'\n",GetTitle());
  printf("All Cuts have to be fulfilled\n");

  Int_t iCut=0;
  if(fRequireVtx) {
    printf("Cut %02d: vertex required \n",iCut);                                   iCut++; }
  printf("Cut %02d: vertex type: %s \n", iCut, fgkVtxNames[fVtxType]);             iCut++;
  if(fMinVtxContributors) {
    printf("Cut %02d: vertex contributors >= %d \n", iCut, fMinVtxContributors);   iCut++; }
  if(fVtxZmin<fVtxZmax) {
    printf("Cut %02d: %f < %s < %f\n",   iCut, fVtxZmin, "Zvtx", fVtxZmax);        iCut++; }
  if(fCentMin<fCentMax) {
    printf("Cut %02d: %f < %s < %f\n",   iCut, fCentMin, "V0centrality", fCentMax);iCut++; }
  if(fMultITSTPC) {
    printf("Cut %02d: cut on multiplcity ITS vs. TPC \n", iCut);                   iCut++; }
  if(fparMean&&fparSigma) {
    printf("Cut %02d: multplicity vs. #tracks correlation +-%.1f sigma inclusion \n", iCut, fcutSigma); iCut++; }
  if(fRequire13sel){
    printf("Cut %02d: vertex and event selection for 2013 pPb data taking required \n",iCut);   iCut++; } 
  if(fRequireV0and) {
    printf("Cut %02d: require V0and type: %c \n", iCut, fRequireV0and);            iCut++; }

}

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