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

///////////////////////////////////////////////////////////////////////////
//   Cut class providing cuts to V0 candidates                           //
//   Selection or deselection of V0 candiates can be done.               //
//                                                                       //
// Authors:                                                              //
//   Julian Book <Julian.Book@cern.ch>                                   //
/*

Class to provide some V0 selection using exactley the same cuts in ESDs as in AODs.
It implements the PID cut class AliDielectronPID and the standard AliDielectronVarCuts for
the configuration of leg respective pair cuts. These pair cuts are applied on the KFparticle
build by the legs.

Some QA cuts for the tracks are applied before the V0 pair is build. These cuts are:
AliDielectronVarCuts dauQAcuts1;
dauQAcuts1.AddCut(AliDielectronVarManager::kPt,            0.05, 100.0);
dauQAcuts1.AddCut(AliDielectronVarManager::kEta,          -0.9,    0.9);
dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC,      50.0,  160.0);
dauQAcuts1.AddCut(AliDielectronVarManager::kTPCchi2Cl,     0.0,    4.0);
AliDielectronTrackCuts dauQAcuts2;
dauQAcuts2.SetRequireTPCRefit(kTRUE);



Example configuration:

  AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");

  // which V0 finder you want to use
  gammaV0Cuts->SetV0finder(kOnTheFly);  // kAll(default), kOffline or kOnTheFly

  // add some pdg codes (they are used then by the KF package and important for gamma conversions)
  gammaV0Cuts->SetPdgCodes(22,11,11); // mother, daughter1 and 2

  // add default PID cuts (defined in AliDielectronPID)
  // requirement can be set to at least one(kAny) of the tracks or to both(kBoth)
  gammaV0Cuts->SetDefaultPID(16, AliDielectronV0Cuts::kAny);

  // add the pair cuts for V0 candidates
  gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02),   1.0, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF,                       0.0,  10.0, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist,                       0.0,   0.25, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kR,                             3.0,  90.0, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair,                       0.0,   0.05, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kM,                             0.0,   0.05, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt,                         0.0,   0.05, kFALSE);

  // selection or rejection of V0 tracks
  gammaV0Cuts->SetExcludeTracks(kTRUE);

  // add the V0cuts directly to the track filter or to some cut group of it

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


#include "AliDielectronV0Cuts.h"
#include "AliDielectronVarManager.h"
#include "AliDielectronTrackCuts.h"
#include "AliDielectronPID.h"
#include "AliESDv0.h"
#include "AliAODv0.h"

ClassImp(AliDielectronV0Cuts)


AliDielectronV0Cuts::AliDielectronV0Cuts() :
  AliDielectronVarCuts(),
  fV0TrackArr(0),
  fExcludeTracks(kTRUE),
  fV0finder(kAll),
  fMotherPdg(0),
  fNegPdg(0),
  fPosPdg(0),
  fPID(-1),
  fPIDCutType(kBoth),
  fOrbit(0),
  fPeriod(0),
  fBunchCross(0)
{
  //
  // Default costructor
  //
}

//________________________________________________________________________
AliDielectronV0Cuts::AliDielectronV0Cuts(const char* name, const char* title) :
  AliDielectronVarCuts(name,title),
  fV0TrackArr(0),
  fExcludeTracks(kTRUE),
  fV0finder(kAll),
  fMotherPdg(0),
  fNegPdg(0),
  fPosPdg(0),
  fPID(-1),
  fPIDCutType(kBoth),
  fOrbit(0),
  fPeriod(0),
  fBunchCross(0)
{
  //
  // Named contructor
  //
}

//________________________________________________________________________
AliDielectronV0Cuts::~AliDielectronV0Cuts()
{
  //
  // Destructor
  //

}

//________________________________________________________________________
void AliDielectronV0Cuts::InitEvent(AliVTrack *trk)
{
  //
  // Init the V0 candidates
  //

  // take current event from the track
  // TODO: this should be simplyfied by AliVTrack::GetEvent() as soon as implemented
  const AliVEvent *ev=0;
  if(trk->IsA() == AliAODTrack::Class())
    ev=static_cast<const AliVEvent*>((static_cast<const AliAODTrack*>(trk))->GetAODEvent());
  else if(trk->IsA() == AliESDtrack::Class())
    ev=static_cast<const AliVEvent*>((static_cast<const AliESDtrack*>(trk))->GetESDEvent());
  else
    return;


  // IsNewEvent
  if(!ev) return;
  if(!IsNewEvent(ev)) return;
  //  printf(" Build V0 candidates according to the applied cuts \n");

  // rest booleans
  fV0TrackArr.ResetAllBits();

  // basic quality cut, /*at least one*/ both of the V0 daughters has to fullfill
  // always update ::Print accordingly
  AliDielectronVarCuts dauQAcuts1;
  dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC,      70.0,  160.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kTPCchi2Cl,     0.0,    4.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kKinkIndex0,            0.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kEta,          -0.9,    0.9);
  dauQAcuts1.AddCut(AliDielectronVarManager::kPt,            0.05, 100.0);
  AliDielectronTrackCuts dauQAcuts2;
  //  dauQAcuts2.SetRequireITSRefit(kTRUE);
  dauQAcuts2.SetRequireTPCRefit(kTRUE);
  AliDielectronPID dauPIDcuts;
  if(fPID>=0) dauPIDcuts.SetDefaults(fPID);

  Int_t nV0s      = 0;
  Int_t nV0stored = 0;
  AliDielectronPair candidate;
  candidate.SetPdgCode(fMotherPdg);

  // ESD or AOD event
  if(ev->IsA() == AliESDEvent::Class()) {
    const AliESDEvent *esdev = static_cast<const AliESDEvent*>(ev);

    //printf("there are %d V0s in the event \n",esdev->GetNumberOfV0s());
    // loop over V0s
    for (Int_t iv=0; iv<esdev->GetNumberOfV0s(); ++iv){
      AliESDv0 *v = esdev->GetV0(iv);
      if(!v) continue;

      // check the v0 finder
      if( v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOffline  ) continue;
      if(!v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOnTheFly ) continue;

      // should we make use of AliESDv0Cuts::GetPdgCode() to preselect candiadtes, e.g.:
      // if(fMotherPdg!=v->GetPdgCode()) continue;

      AliESDtrack *trNeg=esdev->GetTrack(v->GetIndex(0));
      AliESDtrack *trPos=esdev->GetTrack(v->GetIndex(1));
      if(!trNeg || !trPos){
	printf("Error: Couldn't get V0 daughter: %p - %p\n",trNeg,trPos);
	continue;
      }

      // protection against LS v0s
      if(trNeg->Charge() == trPos->Charge()) continue;

      // PID default cuts
      if(fPID>=0) {
	Bool_t selected=kFALSE;
	selected=dauPIDcuts.IsSelected(trNeg);
	if(fPIDCutType==kBoth) selected &= dauPIDcuts.IsSelected(trPos);
	if(fPIDCutType==kAny)  selected |= dauPIDcuts.IsSelected(trPos);
	if(!selected) continue;
      }

      // basic track cuts
      if( !dauQAcuts2.IsSelected(trNeg) ) continue;
      if( !dauQAcuts2.IsSelected(trPos) ) continue;
      if( !dauQAcuts1.IsSelected(trNeg) ) continue;
      if( !dauQAcuts1.IsSelected(trPos) ) continue;

      if(fMotherPdg==22) candidate.SetGammaTracks(trNeg, 11, trPos, 11);
      else candidate.SetTracks(trNeg, (trNeg->Charge()<0?fNegPdg:fPosPdg), trPos, (trPos->Charge()<0?fNegPdg:fPosPdg));
      // eventually take the external trackparam and build the KFparticles by hand (see AliESDv0::GetKFInfo)
      // the folowing is not needed, because the daughters where used in the v0 vertex fit (I guess)
      //      AliKFVertex v0vtx = *v;
      //      candidate.SetProductionVertex(v0vtx);

      if(AliDielectronVarCuts::IsSelected(&candidate)) {
	nV0s++;
	//printf(" gamma found for vtx %p dau1id %d dau2id %d \n",v,trNeg->GetID(),trPos->GetID());
	fV0TrackArr.SetBitNumber(trNeg->GetID());
	fV0TrackArr.SetBitNumber(trPos->GetID());
      }
    }

  }
  else if(ev->IsA() == AliAODEvent::Class()) {
    const AliAODEvent *aodEv = static_cast<const AliAODEvent*>(ev);
    if(!aodEv->GetV0s()) return; // protection for nano AODs

    // loop over vertices
    for (Int_t ivertex=0; ivertex<aodEv->GetNumberOfV0s(); ++ivertex){
      AliAODv0 *v=aodEv->GetV0(ivertex);
      if(!v) continue;

      // check the v0 finder
      if( v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOffline  ) continue;
      if(!v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOnTheFly ) continue;

      AliAODTrack *trNeg=dynamic_cast<AliAODTrack*>(v->GetDaughter(0));
      AliAODTrack *trPos=dynamic_cast<AliAODTrack*>(v->GetDaughter(1));
      if(!trNeg || !trPos){
	printf("Error: Couldn't get V0 daughter: %p - %p\n",trNeg,trPos);
	continue;
      }
      nV0stored++;

      // protection against LS v0s
      if(trNeg->Charge() == trPos->Charge()) continue;

      // PID default cuts
      if(fPID>=0) {
	Bool_t selected=kFALSE;
	selected=dauPIDcuts.IsSelected(trNeg);
	if(fPIDCutType==kBoth) selected &= dauPIDcuts.IsSelected(trPos);
	if(fPIDCutType==kAny)  selected |= dauPIDcuts.IsSelected(trPos);
	if(!selected) continue;
      }

      // basic track cuts
      if( !dauQAcuts2.IsSelected(trNeg) ) continue;
      if( !dauQAcuts2.IsSelected(trPos) ) continue;
      if( !dauQAcuts1.IsSelected(trNeg) ) continue;
      if( !dauQAcuts1.IsSelected(trPos) ) continue;

      AliKFVertex v0vtx = *(v->GetSecondaryVtx());
      if(fMotherPdg==22) candidate.SetGammaTracks(trNeg, 11, trPos, 11);
      else candidate.SetTracks(trNeg, (trNeg->Charge()<0?fNegPdg:fPosPdg), trPos, (trPos->Charge()<0?fNegPdg:fPosPdg));
      candidate.SetProductionVertex(v0vtx);

      if(AliDielectronVarCuts::IsSelected(&candidate)) {
	nV0s++;
	//printf(" gamma found for vtx %p dau1id %d dau2id %d \n",v,trNeg->GetID(),trPos->GetID());
	fV0TrackArr.SetBitNumber(trNeg->GetID());
	fV0TrackArr.SetBitNumber(trPos->GetID());
      }
    }
    //    printf("there are %d V0s in the event \n",nV0stored);
  }
  else
    return;

  //  printf(" Number of V0s candiates found %d/%d \n",nV0s,nV0stored);

}
//________________________________________________________________________
Bool_t AliDielectronV0Cuts::IsSelected(TObject* track)
{
  //
  // Make cut decision
  //

  if(!track) return kFALSE;

  AliVTrack *vtrack = static_cast<AliVTrack*>(track);
  InitEvent(vtrack);
  //printf(" track ID %d selected result %d %d \n",vtrack->GetID(),(fV0TrackArr.TestBitNumber(vtrack->GetID())),fExcludeTracks);
  return ( (fV0TrackArr.TestBitNumber(vtrack->GetID()))^fExcludeTracks );
}

//________________________________________________________________________
Bool_t AliDielectronV0Cuts::IsNewEvent(const AliVEvent *ev)
{
  //
  // check weather we process a new event
  //

  //  printf(" current ev %d %d %d \n",fBunchCross, fOrbit, fPeriod);
  //  printf(" new event %p %d %d %d \n",ev, ev->GetBunchCrossNumber(), ev->GetOrbitNumber(), ev->GetPeriodNumber());

  if( fBunchCross == ev->GetBunchCrossNumber() ) {
    if( fOrbit == ev->GetOrbitNumber() )         {
      if( fPeriod == ev->GetPeriodNumber() )     {
	return kFALSE;
      }
    }
  }

  fBunchCross = ev->GetBunchCrossNumber();
  fOrbit      = ev->GetOrbitNumber();
  fPeriod     = ev->GetPeriodNumber();
  return kTRUE;
}

//________________________________________________________________________
void AliDielectronV0Cuts::Print(const Option_t* /*option*/) const
{
  //
  // Print cuts and the range
  //
  printf(" V0 cuts:\n");
  printf(" V0 finder mode: %s \n",(fV0finder ==kOnTheFly ? "One-The-Fly":
				   (fV0finder==kOffline  ? "Offline":
				    "One-The-Fly+Offline") ) );
  AliDielectronVarCuts::Print();

  printf(" V0 daughter cuts (applied to both):\n");
  AliDielectronVarCuts dauQAcuts1;
  dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC,      70.0,  160.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kTPCchi2Cl,     0.0,    4.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kKinkIndex0,            0.0);
  dauQAcuts1.AddCut(AliDielectronVarManager::kEta,          -0.9,    0.9);
  dauQAcuts1.AddCut(AliDielectronVarManager::kPt,            0.05, 100.0);
  dauQAcuts1.Print();
  AliDielectronTrackCuts dauQAcuts2;
  //  dauQAcuts2.SetRequireITSRefit(kTRUE);
  dauQAcuts2.SetRequireTPCRefit(kTRUE);
  //  dauQAcuts2.Print(); //TODO activate as soon as implemented

  if(fPID>=0) {
    printf(" V0 daughter PID cuts (applied to %s):\n",(fPIDCutType==kBoth?"both":"any"));
    AliDielectronPID dauPIDcuts;
    dauPIDcuts.SetDefaults(fPID);
    dauPIDcuts.Print(); //TODO activate as soon as implemented
  }

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