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

#include <iostream>
#include <TList.h>

#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliMCEvent.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenCocktailEventHeader.h"
#include "AliGenDPMjetEventHeader.h"
#include "AliStack.h"


#include "AliFilteredTreeEventCuts.h"

using namespace std;

ClassImp(AliFilteredTreeEventCuts)

Int_t AliFilteredTreeEventCuts::fgLastProcessType = -1;

//_____________________________________________________________________________
AliFilteredTreeEventCuts::AliFilteredTreeEventCuts(const Char_t* name,const Char_t *title) : 
AliAnalysisCuts(name, title)
, fTriggerRequired(kTRUE)
, fRecVertexRequired(kTRUE)
, fEventProcessType(kInvalidProcess)
, fMinNContributors(0)
, fMaxNContributors(0)
, fMaxR(0)
, fMinZv(0)
, fMaxZv(0)
, fMeanXv(0)
, fMeanYv(0)
, fMeanZv(0)
, fSigmaMeanXv(0)
, fSigmaMeanYv(0)
, fSigmaMeanZv(0)
, fRedoTPCVertex(kTRUE)
, fUseBeamSpotConstraint(kTRUE)
, fEventSelectedRequired(kFALSE)
{
  // default constructor 
  
  // init data members with defaults
  Init();
}

//_____________________________________________________________________________
AliFilteredTreeEventCuts::~AliFilteredTreeEventCuts()  
{
  // destructor
}

//_____________________________________________________________________________
void AliFilteredTreeEventCuts::Init()  
{
  // set default values
  SetTriggerRequired();
  SetRecVertexRequired();
  SetEventProcessType();
  SetNContributorsRange();
  SetMaxR();
  SetZvRange();
  SetMeanXYZv();
  SetSigmaMeanXYZv();
  SetRedoTPCVertex();
  SetUseBeamSpotConstraint();
}

//_____________________________________________________________________________
Bool_t AliFilteredTreeEventCuts::AcceptEvent(AliESDEvent *esdEvent,AliMCEvent *mcEvent, const AliESDVertex *vtx)
{
  // Check event selection cuts
  Bool_t retValue=kTRUE;

  if(!esdEvent) return kFALSE;
  if(!IsRecVertexRequired()) return kTRUE;
  if(!vtx) return kFALSE;
  if(!vtx->GetStatus()) return kFALSE;

  if(mcEvent) {
   // check MC event conditions
   AliHeader* header = mcEvent->Header();
   if(!header) return kFALSE;
  
    // select event type (ND-non diffractive, SD-single diffractive, DD-double diffractive)
    if(fEventProcessType == kInvalidProcess) { 
      retValue=kTRUE;
    } 
    else if(fEventProcessType == kSD || fEventProcessType == kDD) {
      MCProcessType processType = GetEventProcessType(header);
      if(processType == kND) retValue=kFALSE;
      else retValue=kTRUE;
    }
    else if(fEventProcessType == GetEventProcessType(header)) { 
      retValue=kTRUE;
    }
    else 
      retValue=kFALSE;
  }

  if(vtx->GetZ() < fMinZv) return kFALSE; 
  if(vtx->GetZ() > fMaxZv) return kFALSE; 

return retValue;  
}

//_____________________________________________________________________________
Bool_t AliFilteredTreeEventCuts::AcceptMCEvent(AliMCEvent *mcEvent)
{
  // Check event selection cuts
  if(!mcEvent) return kFALSE;

  Bool_t retValue=kTRUE;

  // check MC event conditions
  AliHeader* header = mcEvent->Header();
  if(!header) return kFALSE;

  AliGenEventHeader* genHeader = header->GenEventHeader();
  if (!genHeader) {
    AliDebug(AliLog::kError, "Could not retrieve genHeader from Header");
    return kFALSE;
  }
  TArrayF vtxMC(3);
  genHeader->PrimaryVertex(vtxMC);
  
  // select event type (ND-non diffractive, SD-single diffractive, DD-double diffractive)
  if(fEventProcessType == kInvalidProcess) { 
     retValue=kTRUE;
  } else {
     if(fEventProcessType == GetEventProcessType(header)) retValue=kTRUE;
     else retValue=kFALSE;
  }

  /*
  Float_t R = TMath::Sqrt(vtxMC[0]*vtxMC[0]+vtxMC[1]*vtxMC[1]);
  if(R > fMaxR) return kFALSE; 
  */

  if(vtxMC[2] < fMinZv) return kFALSE; 
  if(vtxMC[2] > fMaxZv) return kFALSE; 

return retValue;  
}

//_____________________________________________________________________________
Long64_t AliFilteredTreeEventCuts::Merge(TCollection* list) 
{
  // Merge list of objects (needed by PROOF)
  if (!list)
  return 0;

  if (list->IsEmpty())
  return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj = 0;

  Int_t count=0;
  while((obj = iter->Next()) != 0) 
  {
    AliFilteredTreeEventCuts* entry = dynamic_cast<AliFilteredTreeEventCuts*>(obj);
    if (entry == 0)  
      continue; 

  count++;
  }

return count;
}

//_____________________________________________________________________________
AliFilteredTreeEventCuts::MCProcessType AliFilteredTreeEventCuts::GetEventProcessType(AliHeader* aHeader, Bool_t adebug) {
  //
  // get the process type of the event.
  //


  // Check for simple headers first

  AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(aHeader->GenEventHeader());
  if (pythiaGenHeader) {
    return GetPythiaEventProcessType(pythiaGenHeader,adebug);
  }

  AliGenDPMjetEventHeader* dpmJetGenHeader = dynamic_cast<AliGenDPMjetEventHeader*>(aHeader->GenEventHeader());
  if (dpmJetGenHeader) {
    return GetDPMjetEventProcessType(dpmJetGenHeader,adebug);
  }
  

  // check for cocktail

  AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast<AliGenCocktailEventHeader*>(aHeader->GenEventHeader());
  if (!genCocktailHeader) {
    printf("AliFilteredTreeEventCuts::GetProcessType : Unknown header type (not Pythia or Cocktail). \n");
    return kInvalidProcess;
  }

  TList* headerList = genCocktailHeader->GetHeaders();
  if (!headerList) {
    return kInvalidProcess;
  }

  for (Int_t i=0; i<headerList->GetEntries(); i++) {

    pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(headerList->At(i));
    if (pythiaGenHeader) {
      return GetPythiaEventProcessType(pythiaGenHeader,adebug);
    }

    dpmJetGenHeader = dynamic_cast<AliGenDPMjetEventHeader*>(headerList->At(i));
    if (dpmJetGenHeader) {
      return GetDPMjetEventProcessType(dpmJetGenHeader,adebug);
    }
  }
  return kInvalidProcess;
}

//____________________________________________________________________
AliFilteredTreeEventCuts::MCProcessType AliFilteredTreeEventCuts::GetEventProcessType(AliESDEvent* esd, AliHeader* header, AliStack* stack, DiffTreatment diffTreatment)
{
  // 
  // get process type
  //
  // diffTreatment:
  //   kMCFlags: use MC flags
  //   kUA5Cuts: SD events are those that have the MC SD flag and fulfill M^2/s < 0.05; DD from MC flag; Remainder is ND
  //   kE710Cuts: SD events are those that have the MC SD flag and fulfill 2 < M^2 < 0.05s; DD from MC flag; Remainder is ND
  //   kALICEHadronLevel: SD events are those that fulfill M^2/s < 0.05; DD from MC flag; Remainder is ND
  //

  MCProcessType mcProcessType = GetEventProcessType(header);
  
  if (diffTreatment == kMCFlags)
    return mcProcessType;
    
  if (!esd)
  {
    Printf("ERROR: AliFilteredTreeEventCuts::GetEventProcessType: diffTreatment != kMCFlags and esd == 0");
    return kInvalidProcess;
  }
    
  Float_t cms = esd->GetESDRun()->GetBeamEnergy();
  if (esd->GetESDRun()->IsBeamEnergyIsSqrtSHalfGeV())
    cms *= 2;
  //Printf("cms = %f", cms);

  if (diffTreatment == kUA5Cuts && mcProcessType == kSD)
  {
    if (IsHadronLevelSingleDiffractive(stack, cms, 0, 0.05))
      return kSD;
  }
  else if (diffTreatment == kE710Cuts && mcProcessType == kSD)
  {
    if (IsHadronLevelSingleDiffractive(stack, cms, 2. / cms / cms, 0.05))
      return kSD;
  }
  else if (diffTreatment == kALICEHadronLevel)
  {
    if (IsHadronLevelSingleDiffractive(stack, cms, 0, 0.05))
      return kSD;
  }
  
  if (mcProcessType == kSD)
    return kND;
    
  return mcProcessType;
}


AliFilteredTreeEventCuts::MCProcessType AliFilteredTreeEventCuts::GetPythiaEventProcessType(AliGenEventHeader* aHeader, Bool_t adebug) {

  AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(aHeader);

  if (!pythiaGenHeader) {
    printf("AliFilteredTreeEventCuts::GetProcessType : Unknown gen Header type). \n");
    return kInvalidProcess;
  }


  Int_t pythiaType = pythiaGenHeader->ProcessType();
  fgLastProcessType = pythiaType;
  MCProcessType globalType = kInvalidProcess;  


  if (adebug) {
    printf("AliFilteredTreeEventCuts::GetProcessType : Pythia process type found: %d \n",pythiaType);
  }


  if(pythiaType==92||pythiaType==93){
    globalType = kSD;
  }
  else if(pythiaType==94){
    globalType = kDD;
  }
  //else if(pythiaType != 91){ // also exclude elastic to be sure... CKB??}
  else {
    globalType = kND;
  }
  return globalType;
}


AliFilteredTreeEventCuts::MCProcessType AliFilteredTreeEventCuts::GetDPMjetEventProcessType(AliGenEventHeader* aHeader, Bool_t adebug) {
  //
  // get the process type of the event.
  //

  // can only read pythia headers, either directly or from cocktalil header
  AliGenDPMjetEventHeader* dpmJetGenHeader = dynamic_cast<AliGenDPMjetEventHeader*>(aHeader);

  if (!dpmJetGenHeader) {
    printf("AliFilteredTreeEventCuts::GetDPMjetProcessType : Unknown header type (not DPMjet or). \n");
    return kInvalidProcess;
  }

  Int_t dpmJetType = dpmJetGenHeader->ProcessType();
  fgLastProcessType = dpmJetType;
  MCProcessType globalType = kInvalidProcess;  


  if (adebug) {
    printf("AliFilteredTreeEventCuts::GetDPMJetProcessType : DPMJet process type found: %d \n",dpmJetType);
  }


  if (dpmJetType == 1 || dpmJetType == 4) { // explicitly inelastic plus central diffraction
    globalType = kND;
  }  
  else if (dpmJetType==5 || dpmJetType==6) {
    globalType = kSD;
  }
  else if (dpmJetType==7) {
    globalType = kDD;
  }
  return globalType;
}

//____________________________________________________________________
Bool_t AliFilteredTreeEventCuts::IsHadronLevelSingleDiffractive(AliStack* stack, Float_t cms, Float_t xiMin, Float_t xiMax)
{
  //
  // return if process is single diffractive on hadron level
  // 
  // xiMax and xiMin cut on M^2/s
  //
  // Based on code from Martin Poghoysan
  //
  
  TParticle* part1 = 0;
  TParticle* part2 = 0;
  
  Double_t smallestY = 1e10;
  Double_t largestY  = -1e10;
  
  for (Int_t iParticle = 0; iParticle < stack->GetNprimary(); iParticle++)
  {
    TParticle* part = stack->Particle(iParticle);
    if (!part)
      continue;

    Int_t pdg = TMath::Abs(part->GetPdgCode());

    Int_t child1 = part->GetFirstDaughter();
    Int_t ist    = part->GetStatusCode();

    Int_t mfl  = Int_t (pdg / TMath::Power(10, Int_t(TMath::Log10(pdg))));
    if (child1 > -1 || ist != 1)
      mfl = 0; // select final state charm and beauty
    if (!(stack->IsPhysicalPrimary(iParticle) || pdg == 111 || pdg == 3212 || pdg==3124 || mfl >= 4)) 
      continue;
    Int_t imother = part->GetFirstMother();
    if (imother>0)
    {
      TParticle *partM = stack->Particle(imother);
      Int_t pdgM=TMath::Abs(partM->GetPdgCode());
      if (pdgM==111 || pdgM==3124 || pdgM==3212) 
        continue;
    }
    
    Double_t y = 0;

    // fix for problem with getting mass of particle 3124
    if (pdg != 3124)
      y = Rapidity(part->Pt(), part->Pz(), part->GetMass());
    else 
      y = Rapidity(part->Pt(), part->Pz(), 1.5195);
      
    if (y < smallestY)
    {
      smallestY = y;
      part1 = part;
    }
    
    if (y > largestY)
    {
      largestY = y;
      part2 = part;
    }
  }
  
  if (part1 == 0 || part2 == 0)
    return kFALSE;

  Int_t pdg1 = part1->GetPdgCode();
  Int_t pdg2 = part2->GetPdgCode();

  Double_t pt1 = part1->Pt();
  Double_t pt2 = part2->Pt();
  Double_t pz1 = part1->Pz();
  Double_t pz2 = part2->Pz();
  
  Double_t y1 = TMath::Abs(Rapidity(pt1, pz1, 0.938));
  Double_t y2 = TMath::Abs(Rapidity(pt2, pz2, 0.938));
  
  Int_t arm = -99999;
  if (pdg1 == 2212 && pdg2 == 2212)
  {
    if (y1 > y2) 
      arm = 0;
    else
      arm = 1;
  }
  else if (pdg1 == 2212) 
    arm = 0;
  else if (pdg2 == 2212) 
    arm = 1;

  Double_t M02s = 1. - 2 * part1->Energy() / cms;
  Double_t M12s = 1. - 2 * part2->Energy() / cms;

  if (arm == 0 && M02s > xiMin && M02s < xiMax)
    return kTRUE;
  else if (arm == 1 && M12s > xiMin && M12s < xiMax)
    return kTRUE;

  return kFALSE;
}

//____________________________________________________________________
Double_t AliFilteredTreeEventCuts::Rapidity(Double_t pt, Double_t pz, Double_t m)
{
  //
  // calculates rapidity keeping the sign in case E == pz
  //

  Double_t energy = TMath::Sqrt(pt*pt+pz*pz+m*m);
  if (energy != TMath::Abs(pz))
    return 0.5*TMath::Log((energy+pz)/(energy-pz));

  Printf("W- mt=0");
  return TMath::Sign(1.e30,pz);
}

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