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

/* $Id$ */ 

// AliFlowEventCuts:
// An event cut class for the flow framework
//
// origin: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)

#include <limits.h>
#include <float.h>
#include <TList.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TBrowser.h>
#include "TMath.h"
#include "TNamed.h"
#include "AliVVertex.h"
#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliAODHeader.h"
#include "AliCentrality.h"
#include "AliESDVZERO.h"
#include "AliMultiplicity.h"
#include "AliMCEvent.h"
#include "AliFlowEventCuts.h"
#include "AliFlowTrackCuts.h"
#include "AliTriggerAnalysis.h"
#include "AliCollisionGeometry.h"
#include "AliGenEventHeader.h"
#include <iostream>
using namespace std;

ClassImp(AliFlowEventCuts)

//-----------------------------------------------------------------------
AliFlowEventCuts::AliFlowEventCuts():
  AliFlowEventSimpleCuts(),
  fQA(NULL),
  fCutNumberOfTracks(kFALSE),
  fNumberOfTracksMax(INT_MAX),
  fNumberOfTracksMin(INT_MIN),
  fCutRefMult(kFALSE),
  fRefMultMethod(kTPConly),
  fUseAliESDtrackCutsRefMult(kFALSE),
  fRefMultMethodAliESDtrackCuts(AliESDtrackCuts::kTrackletsITSTPC),
  fRefMultMax(INT_MAX),
  fRefMultMin(INT_MIN),
  fRefMultCuts(NULL),
  fMeanPtCuts(NULL),
  fStandardTPCcuts(NULL),
  fStandardGlobalCuts(NULL),
  fCutPrimaryVertexX(kFALSE),
  fPrimaryVertexXmax(INT_MAX),
  fPrimaryVertexXmin(INT_MIN),
  fCutPrimaryVertexY(kFALSE),
  fPrimaryVertexYmax(INT_MAX),
  fPrimaryVertexYmin(INT_MIN),
  fCutPrimaryVertexZ(kFALSE),
  fPrimaryVertexZmax(INT_MAX),
  fPrimaryVertexZmin(INT_MIN),
  fCutNContributors(kFALSE),
  fNContributorsMax(INT_MAX),
  fNContributorsMin(INT_MIN),
  fCutMeanPt(kFALSE),
  fMeanPtMax(-DBL_MAX),
  fMeanPtMin(DBL_MAX),
  fCutSPDvertexerAnomaly(kFALSE),
  fCutSPDTRKVtxZ(kFALSE),
  fCutTPCmultiplicityOutliers(kFALSE),
  fCutTPCmultiplicityOutliersAOD(kFALSE),
  fUseCentralityUnchecked(kFALSE),
  fCentralityPercentileMethod(kTPConly),
  fCutZDCtiming(kFALSE),
  fTrigAna(),
  fCutImpactParameter(kFALSE),
  fImpactParameterMin(0.0),
  fImpactParameterMax(100.0),
  fhistTPCvsGlobalMult(0),
  fData2011(kFALSE)
{
  //constructor 
}

//-----------------------------------------------------------------------
AliFlowEventCuts::AliFlowEventCuts(const char* name, const char* title):
  AliFlowEventSimpleCuts(name, title),
  fQA(NULL),
  fCutNumberOfTracks(kFALSE),
  fNumberOfTracksMax(INT_MAX),
  fNumberOfTracksMin(INT_MIN),
  fCutRefMult(kFALSE),
  fRefMultMethod(kTPConly),
  fUseAliESDtrackCutsRefMult(kFALSE),
  fRefMultMethodAliESDtrackCuts(AliESDtrackCuts::kTrackletsITSTPC),
  fRefMultMax(INT_MAX),
  fRefMultMin(INT_MIN),
  fRefMultCuts(NULL),
  fMeanPtCuts(NULL),
  fStandardTPCcuts(AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts2010()),
  fStandardGlobalCuts(AliFlowTrackCuts::GetStandardGlobalTrackCuts2010()),
  fCutPrimaryVertexX(kFALSE),
  fPrimaryVertexXmax(INT_MAX),
  fPrimaryVertexXmin(INT_MIN),
  fCutPrimaryVertexY(kFALSE),
  fPrimaryVertexYmax(INT_MAX),
  fPrimaryVertexYmin(INT_MIN),
  fCutPrimaryVertexZ(kFALSE),
  fPrimaryVertexZmax(INT_MAX),
  fPrimaryVertexZmin(INT_MIN),
  fCutNContributors(kFALSE),
  fNContributorsMax(INT_MAX),
  fNContributorsMin(INT_MIN),
  fCutMeanPt(kFALSE),
  fMeanPtMax(-DBL_MAX),
  fMeanPtMin(DBL_MAX),
  fCutSPDvertexerAnomaly(kFALSE),
  fCutSPDTRKVtxZ(kFALSE),
  fCutTPCmultiplicityOutliers(kFALSE),
  fCutTPCmultiplicityOutliersAOD(kFALSE),
  fUseCentralityUnchecked(kFALSE),
  fCentralityPercentileMethod(kTPConly),
  fCutZDCtiming(kFALSE),
  fTrigAna(),
  fCutImpactParameter(kFALSE),
  fImpactParameterMin(0.0),
  fImpactParameterMax(100.0),
  fhistTPCvsGlobalMult(0),
  fData2011(kFALSE)
{
  //constructor 
}

////-----------------------------------------------------------------------
AliFlowEventCuts::AliFlowEventCuts(const AliFlowEventCuts& that):
  AliFlowEventSimpleCuts(that),
  fQA(NULL),
  fCutNumberOfTracks(that.fCutNumberOfTracks),
  fNumberOfTracksMax(that.fNumberOfTracksMax),
  fNumberOfTracksMin(that.fNumberOfTracksMin),
  fCutRefMult(that.fCutRefMult),
  fRefMultMethod(that.fRefMultMethod),
  fUseAliESDtrackCutsRefMult(that.fUseAliESDtrackCutsRefMult),
  fRefMultMethodAliESDtrackCuts(that.fRefMultMethodAliESDtrackCuts),
  fRefMultMax(that.fRefMultMax),
  fRefMultMin(that.fRefMultMin),
  fRefMultCuts(NULL),
  fMeanPtCuts(NULL),
  fStandardTPCcuts(NULL),
  fStandardGlobalCuts(NULL),
  fCutPrimaryVertexX(that.fCutPrimaryVertexX),
  fPrimaryVertexXmax(that.fPrimaryVertexXmax),
  fPrimaryVertexXmin(that.fPrimaryVertexXmin),
  fCutPrimaryVertexY(that.fCutPrimaryVertexX),
  fPrimaryVertexYmax(that.fPrimaryVertexYmax),
  fPrimaryVertexYmin(that.fPrimaryVertexYmin),
  fCutPrimaryVertexZ(that.fCutPrimaryVertexX),
  fPrimaryVertexZmax(that.fPrimaryVertexZmax),
  fPrimaryVertexZmin(that.fPrimaryVertexZmin),
  fCutNContributors(that.fCutNContributors),
  fNContributorsMax(that.fNContributorsMax),
  fNContributorsMin(that.fNContributorsMin),
  fCutMeanPt(that.fCutMeanPt),
  fMeanPtMax(that.fMeanPtMax),
  fMeanPtMin(that.fMeanPtMin),
  fCutSPDvertexerAnomaly(that.fCutSPDvertexerAnomaly),
  fCutSPDTRKVtxZ(that.fCutSPDTRKVtxZ),
  fCutTPCmultiplicityOutliers(that.fCutTPCmultiplicityOutliers),
  fCutTPCmultiplicityOutliersAOD(that.fCutTPCmultiplicityOutliersAOD),
  fUseCentralityUnchecked(that.fUseCentralityUnchecked),
  fCentralityPercentileMethod(that.fCentralityPercentileMethod),
  fCutZDCtiming(that.fCutZDCtiming),
  fTrigAna(),
  fCutImpactParameter(that.fCutImpactParameter),
  fImpactParameterMin(that.fImpactParameterMin),
  fImpactParameterMax(that.fImpactParameterMax),
  fhistTPCvsGlobalMult(that.fhistTPCvsGlobalMult),
  fData2011(that.fData2011)
{
  if (that.fQA) DefineHistograms();
  //copy constructor 
  if (that.fRefMultCuts)
    fRefMultCuts = new AliFlowTrackCuts(*(that.fRefMultCuts));
  if (that.fMeanPtCuts)
    fMeanPtCuts = new AliFlowTrackCuts(*(that.fMeanPtCuts));
  fStandardTPCcuts = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts2010();
  fStandardGlobalCuts = AliFlowTrackCuts::GetStandardGlobalTrackCuts2010();
}

////-----------------------------------------------------------------------
AliFlowEventCuts::~AliFlowEventCuts()
{
  //dtor
  delete fMeanPtCuts;
  delete fRefMultCuts;
  delete fStandardGlobalCuts;
  delete fStandardTPCcuts;
  if (fQA) { fQA->SetOwner(); fQA->Delete(); delete fQA; }
}

////-----------------------------------------------------------------------
AliFlowEventCuts& AliFlowEventCuts::operator=(const AliFlowEventCuts& that)
{
  //assignment
  if (this==&that) return *this;

  if (that.fQA)
  {
    if (fQA)
    {
      fQA->Delete();
      delete fQA;
    }
    fQA = static_cast<TList*>(that.fQA->Clone());
  }
  else
  {
    fQA->Delete();
    delete fQA;
    fQA=NULL;
  }

  fCutNumberOfTracks=that.fCutNumberOfTracks;
  fNumberOfTracksMax=that.fNumberOfTracksMax;
  fNumberOfTracksMin=that.fNumberOfTracksMin;
  fCutRefMult=that.fCutRefMult;
  fRefMultMethod=that.fRefMultMethod;
  fUseAliESDtrackCutsRefMult=that.fUseAliESDtrackCutsRefMult;
  fRefMultMethodAliESDtrackCuts=that.fRefMultMethodAliESDtrackCuts;
  fRefMultMax=that.fRefMultMax;
  fRefMultMin=that.fRefMultMin;
  if (that.fRefMultCuts) *fRefMultCuts=*(that.fRefMultCuts);
  if (that.fMeanPtCuts) *fMeanPtCuts=*(that.fMeanPtCuts);
  fStandardTPCcuts = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts2010();
  fStandardGlobalCuts = AliFlowTrackCuts::GetStandardGlobalTrackCuts2010();
  fCutPrimaryVertexX=that.fCutPrimaryVertexX;
  fPrimaryVertexXmax=that.fPrimaryVertexXmax;
  fPrimaryVertexXmin=that.fPrimaryVertexXmin;
  fCutPrimaryVertexY=that.fCutPrimaryVertexY;
  fPrimaryVertexYmax=that.fPrimaryVertexYmax;
  fPrimaryVertexYmin=that.fPrimaryVertexYmin;
  fCutPrimaryVertexZ=that.fCutPrimaryVertexZ;
  fPrimaryVertexZmax=that.fPrimaryVertexZmax;
  fPrimaryVertexZmin=that.fPrimaryVertexZmin;
  fCutNContributors=that.fCutNContributors;
  fNContributorsMax=that.fNContributorsMax;
  fNContributorsMin=that.fNContributorsMin;
  fCutMeanPt=that.fCutMeanPt;
  fMeanPtMax=that.fMeanPtMax;
  fMeanPtMin=that.fMeanPtMin;
  fCutSPDvertexerAnomaly=that.fCutSPDvertexerAnomaly;
  fCutSPDTRKVtxZ=that.fCutSPDTRKVtxZ;
  fCutTPCmultiplicityOutliers=that.fCutTPCmultiplicityOutliers;
  fCutTPCmultiplicityOutliersAOD=that.fCutTPCmultiplicityOutliersAOD;
  fUseCentralityUnchecked=that.fUseCentralityUnchecked;
  fCentralityPercentileMethod=that.fCentralityPercentileMethod;
  fCutZDCtiming=that.fCutZDCtiming;
  fhistTPCvsGlobalMult=that.fhistTPCvsGlobalMult;
  fData2011=that.fData2011;
  return *this;
}

//----------------------------------------------------------------------- 
Bool_t AliFlowEventCuts::IsSelected(TObject* obj, TObject* objmc)
{
  //check cuts
  AliVEvent* vevent = dynamic_cast<AliVEvent*>(obj);
  AliMCEvent* mcevent = dynamic_cast<AliMCEvent*>(objmc);
  if (vevent) return PassesCuts(vevent,mcevent);;
  return kFALSE;  //when passed wrong type of object
}
//----------------------------------------------------------------------- 
Bool_t AliFlowEventCuts::PassesCuts(AliVEvent *event, AliMCEvent *mcevent)
{
  ///check if event passes cuts
  const AliVVertex* pvtx=event->GetPrimaryVertex();
  Double_t pvtxx = pvtx->GetX();
  Double_t pvtxy = pvtx->GetY();
  Double_t pvtxz = pvtx->GetZ();
  Int_t ncontrib = pvtx->GetNContributors();
  Bool_t pass=kTRUE;
  AliESDEvent* esdevent = dynamic_cast<AliESDEvent*>(event);
  AliAODEvent* aodevent = dynamic_cast<AliAODEvent*>(event);
  Int_t multTPC = 0;
  Int_t multGlobal = 0; 

  // to remove multiplicity outliers, an explicit cut on the correlation 
  // between global and tpc only tracks can be made by counting the two
  // sets. as counting is expensive, only count when qa is requested or cut is enabeled
  // the cut criteria are different for different data takign periods
  // and (of course) cut criteria, specific routines exist for 10h, 11h data
  // and esds (by calling AliFlowTrackCuts) or aods (evaluated here explicitely)
  if(esdevent && (fQA || fCutTPCmultiplicityOutliers)) 
  {
    //this is pretty slow as we check the event track by track twice
    //this cut will work for 2010 PbPb data and is dependent on
    //TPC and ITS reco efficiency (e.g. geometry, calibration etc)
    multTPC = fStandardTPCcuts->Count(event);
    multGlobal = fStandardGlobalCuts->Count(event);
    if(fCutTPCmultiplicityOutliers) {
      if (multTPC > ( 23+1.216*multGlobal)) pass = kFALSE;
      if (multTPC < (-20+1.087*multGlobal)) pass = kFALSE;
    }
  }
  if(aodevent && (fQA || fCutTPCmultiplicityOutliersAOD)) 
  {
    //similar (slow) cut for aod's. will work for both 2010 and 2010 pbpb data
    //but the user is responsible that this object is configured
    //correctly to select the dataset
    //FIXME data could dynamically be determined by this class via the
    //runnumber
    Int_t nTracks(aodevent->GetNumberOfTracks());
    for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) { 
      AliAODTrack* track = dynamic_cast<AliAODTrack*>(aodevent->GetTrack(iTracks));
      if(!track) continue;
      if (!track || track->Pt() < .2 || track->Pt() > 5.0 || TMath::Abs(track->Eta()) > .8 || track->GetTPCNcls() < 70 || !track->GetDetPid() || track->GetDetPid()->GetTPCsignal() < 10.0)  continue;  // general quality cut
      if (track->TestFilterBit(1) && track->Chi2perNDF() > 0.2) multTPC++;
      if (!track->TestFilterBit(16) || track->Chi2perNDF() < 0.1) continue;
      Double_t b[2] = {-99., -99.};
      Double_t bCov[3] = {-99., -99., -99.};
      AliAODTrack copy(*track);
      if (copy.PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov) && TMath::Abs(b[0]) < 0.3 && TMath::Abs(b[1]) < 0.3) multGlobal++;
    }
    if(fCutTPCmultiplicityOutliersAOD) 
    {
      if(!fData2011 && (multTPC < (-40.3+1.22*multGlobal) || multTPC > (32.1+1.59*multGlobal))) pass = kFALSE;
      else if(fData2011  && (multTPC < (-36.73 + 1.48*multGlobal) || multTPC > (62.87 + 1.78*multGlobal))) pass = kFALSE;
    }
  }

  if (fQA)
  {
    QAbefore(0)->Fill(pvtxz);
    QAbefore(1)->Fill(multGlobal,multTPC);
  }
 
  if (fCutNContributors)
  {
    if (ncontrib < fNContributorsMin || ncontrib >= fNContributorsMax) pass=kFALSE;
  }
  if (fCutPrimaryVertexX)
  {
    if (pvtxx < fPrimaryVertexXmin || pvtxx >= fPrimaryVertexXmax) pass=kFALSE;
  }
  if (fCutPrimaryVertexY)
  {
    if (pvtxy < fPrimaryVertexYmin || pvtxy >= fPrimaryVertexYmax) pass=kFALSE;
  }
  if (fCutPrimaryVertexZ)
  {
    if (pvtxz < fPrimaryVertexZmin || pvtxz >= fPrimaryVertexZmax)
      pass=kFALSE;
  }
  if (fCutCentralityPercentile&&esdevent)
  {
    AliCentrality* centr = esdevent->GetCentrality();
    if (fUseCentralityUnchecked)
    {
      if (!centr->IsEventInCentralityClassUnchecked( fCentralityPercentileMin,
                                                     fCentralityPercentileMax,
                                                     CentrMethName(fCentralityPercentileMethod) ))
      {
        pass=kFALSE;
      }
    }
    else
    {
      if (!centr->IsEventInCentralityClass( fCentralityPercentileMin,
                                            fCentralityPercentileMax,
                                            CentrMethName(fCentralityPercentileMethod) ))
      {
        pass=kFALSE;
      }
    }
  }
  if (fCutSPDvertexerAnomaly&&esdevent)
  {
    const AliESDVertex* sdpvertex = esdevent->GetPrimaryVertexSPD();
    if (sdpvertex->GetNContributors()<1) pass=kFALSE;
    if (sdpvertex->GetDispersion()>0.04) pass=kFALSE;
    if (sdpvertex->GetZRes()>0.25) pass=kFALSE;
    const AliESDVertex* tpcvertex = esdevent->GetPrimaryVertexTPC();
    if (tpcvertex->GetNContributors()<1) pass=kFALSE;
    const AliMultiplicity* tracklets = esdevent->GetMultiplicity();
    if (tpcvertex->GetNContributors()<(-10.0+0.25*tracklets->GetNumberOfITSClusters(0)))
    {
      pass=kFALSE;
    }
  }
  if (fCutZDCtiming&&esdevent)
  {
    if (!fTrigAna.ZDCTimeTrigger(esdevent))
    {
      pass=kFALSE;
    }
  }
  if(fCutNumberOfTracks) {if ( event->GetNumberOfTracks() < fNumberOfTracksMin ||
                               event->GetNumberOfTracks() >= fNumberOfTracksMax ) pass=kFALSE;}
  if((fCutRefMult&&mcevent)||(fCutRefMult&&esdevent))
  {
    //reference multiplicity still to be defined
    Double_t refMult = RefMult(event,mcevent);
    if (refMult < fRefMultMin || refMult >= fRefMultMax )
    {
      pass=kFALSE;
    }
  }

  // Handles AOD event
  if(aodevent) {
    if(fCutSPDTRKVtxZ) {
      Double_t tVtxZ = aodevent->GetPrimaryVertex()->GetZ();
      Double_t tSPDVtxZ = aodevent->GetPrimaryVertexSPD()->GetZ();
      if( TMath::Abs(tVtxZ-tSPDVtxZ) > 0.5 ) pass = kFALSE;
    }
    AliCentrality* centr = ((AliVAODHeader*)aodevent->GetHeader())->GetCentralityP();
    if(fCutTPCmultiplicityOutliers || fCutTPCmultiplicityOutliersAOD){
      Double_t v0Centr  = centr->GetCentralityPercentile("V0M");
      Double_t trkCentr = centr->GetCentralityPercentile("TRK"); 
      if(TMath::Abs(v0Centr-trkCentr) > 5) pass = kFALSE;
    }
    if (fCutCentralityPercentile) {
      if (fUseCentralityUnchecked) {
	if (!centr->IsEventInCentralityClassUnchecked( fCentralityPercentileMin,
						       fCentralityPercentileMax,
						       CentrMethName(fCentralityPercentileMethod) )) {
	  pass = kFALSE;
	}
      } else {
	if (!centr->IsEventInCentralityClass( fCentralityPercentileMin,
					      fCentralityPercentileMax,
					      CentrMethName(fCentralityPercentileMethod) )) {
	  pass = kFALSE;
	}
      }
    }
  }

  if (fCutMeanPt)
  {
    Float_t meanpt=0.0;
    Int_t ntracks=event->GetNumberOfTracks();
    Int_t nselected=0;
    for (Int_t i=0; i<ntracks; i++)
    {
      AliVParticle* track = event->GetTrack(i);
      if (!track) continue;
      Bool_t localpass=kTRUE;
      if (fMeanPtCuts) localpass=fMeanPtCuts->IsSelected(track);
      if (localpass) 
      {
        meanpt += track->Pt();
        nselected++;
      }
    }
    if (nselected) meanpt=meanpt/nselected;
    if (meanpt<fMeanPtMin || meanpt >= fMeanPtMax) pass=kFALSE;
  }

  //impact parameter cut
  if(fCutImpactParameter) {
    Double_t gImpactParameter = 0.;
    if(mcevent) {
      AliCollisionGeometry* headerH = dynamic_cast<AliCollisionGeometry*>(dynamic_cast<AliMCEvent*>(mcevent)->GenEventHeader());
      if(headerH)
	gImpactParameter = headerH->ImpactParameter();
    }
    if ((gImpactParameter < fImpactParameterMin) || (gImpactParameter >= fImpactParameterMax ))
      pass=kFALSE;
  }

  if (fQA&&pass) 
  {
    QAafter(1)->Fill(multGlobal,multTPC);
    QAafter(0)->Fill(pvtxz);
  }
  return pass;
}

//----------------------------------------------------------------------- 
Float_t AliFlowEventCuts::GetCentrality(AliVEvent* event, AliMCEvent* /*mcEvent*/)
{
  //get the centrality percentile of the event
  AliESDEvent* esdEvent = dynamic_cast<AliESDEvent*>(event);
  AliAODEvent* aodEvent = dynamic_cast<AliAODEvent*>(event);

  Float_t centrality=-1.;

  AliCentrality* centr = NULL;
  if (esdEvent)
    centr = esdEvent->GetCentrality();
  if (aodEvent) 
    centr = ((AliVAODHeader*)aodEvent->GetHeader())->GetCentralityP();
  
  if (!centr) return -1.;

  if (fUseCentralityUnchecked) 
    centrality=centr->GetCentralityPercentileUnchecked(CentrMethName(fCentralityPercentileMethod));
  else 
    centrality=centr->GetCentralityPercentile(CentrMethName(fCentralityPercentileMethod));

  return centrality;
}

//----------------------------------------------------------------------- 
const char* AliFlowEventCuts::CentrMethName(refMultMethod method) const
{
  //get the string for refmultmethod, for use with AliCentrality in
  //the cut on centrality percentile
  switch (method)
  {
    case kSPDtracklets:
      return "TKL";
    case kSPD1clusters:
      return "CL1";
    case kTPConly:
      return "TRK";
    case kVZERO:
      return "V0M";
    default:
      return "";
  }
}
//----------------------------------------------------------------------- 
AliFlowEventCuts* AliFlowEventCuts::StandardCuts()
{
  //make a set of standard event cuts, caller becomes owner
  AliFlowEventCuts* cuts = new AliFlowEventCuts();
  return cuts;
}

//----------------------------------------------------------------------- 
Int_t AliFlowEventCuts::RefMult(AliVEvent* event, AliMCEvent *mcEvent)
{
  //calculate the reference multiplicity, if all fails return 0
  AliESDVZERO* vzero = NULL;
  AliESDEvent* esdevent = dynamic_cast<AliESDEvent*>(event);

  if (fUseAliESDtrackCutsRefMult && esdevent)
  {
    //use the standard ALICE reference multiplicity with the default eta range
    return AliESDtrackCuts::GetReferenceMultiplicity(esdevent, fRefMultMethodAliESDtrackCuts);
  }

  if (fRefMultMethod==kTPConly && !fRefMultCuts)
  {
    fRefMultCuts = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts();
    fRefMultCuts->SetEtaRange(-0.8,0.8);
    fRefMultCuts->SetPtMin(0.15);
  }
  else if (fRefMultMethod==kSPDtracklets && !fRefMultCuts)
  {
    fRefMultCuts = new AliFlowTrackCuts("tracklet refmult cuts");
    fRefMultCuts->SetParamType(AliFlowTrackCuts::kSPDtracklet);
    fRefMultCuts->SetEtaRange(-0.8,0.8);
  }
  else if (fRefMultMethod==kVZERO)
  {
    if (!esdevent) return 0;
    vzero=esdevent->GetVZEROData();
    if (!vzero) return 0;
    return TMath::Nint(vzero->GetMTotV0A()+vzero->GetMTotV0C());
  }
  else if (fRefMultMethod==kSPD1clusters)
  {
    if (!esdevent) return 0;
    const AliMultiplicity* mult = esdevent->GetMultiplicity();
    if (!mult) return 0;
    return mult->GetNumberOfITSClusters(1);
  }

  Int_t refmult=0;
  fRefMultCuts->SetEvent(event,mcEvent);
  Int_t numberOfInputObjects = fRefMultCuts->GetNumberOfInputObjects();
  for (Int_t i=0; i<numberOfInputObjects; i++) {
    if (fRefMultCuts->IsSelected(fRefMultCuts->GetInputObject(i),i))
      refmult++;
  }
  return refmult;
}
//_____________________________________________________________________________
void AliFlowEventCuts::DefineHistograms()
{
  //define QA histos
  if (fQA) return;

  Bool_t adddirstatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);
  fQA = new TList(); fQA->SetOwner();
  fQA->SetName(Form("%s QA",GetName()));
  TList* before = new TList(); before->SetOwner();
  before->SetName("before");
  TList* after = new TList(); after->SetOwner();
  after->SetName("after");
  fQA->Add(before);
  fQA->Add(after);
  before->Add(new TH1F("zvertex",";z;event cout",500,-15.,15.)); //0
  after->Add(new TH1F("zvertex",";z;event cout",500,-15.,15.)); //0
  before->Add(new TH2F("fTPCvsGlobalMult","TPC only vs Global track multiplicity;global;TPC only",500,0,2500,500,0,3500));//1
  after->Add(new TH2F("fTPCvsGlobalMult","TPC only vs Global track multiplicity;global;TPC only",500,0,2500,500,0,3500));//1
  TH1::AddDirectory(adddirstatus);
}

//---------------------------------------------------------------//
void AliFlowEventCuts::Browse(TBrowser* b)
{
  //some browsing capabilities
  if (fQA) b->Add(fQA);
}

//---------------------------------------------------------------//
Long64_t AliFlowEventCuts::Merge(TCollection* list)
{
  //merge
  Int_t number=0;
  AliFlowEventCuts* obj;
  if (!list) return 0;
  if (list->GetEntries()<1) return 0;
  TIter next(list);
  while ( (obj = dynamic_cast<AliFlowEventCuts*>(next())) )
  {
    if (obj==this) continue;
    TList listwrapper;
    listwrapper.Add(obj->GetQA());
    fQA->Merge(&listwrapper);
    number++;
  }
  return number;
}


 AliFlowEventCuts.cxx:1
 AliFlowEventCuts.cxx:2
 AliFlowEventCuts.cxx:3
 AliFlowEventCuts.cxx:4
 AliFlowEventCuts.cxx:5
 AliFlowEventCuts.cxx:6
 AliFlowEventCuts.cxx:7
 AliFlowEventCuts.cxx:8
 AliFlowEventCuts.cxx:9
 AliFlowEventCuts.cxx:10
 AliFlowEventCuts.cxx:11
 AliFlowEventCuts.cxx:12
 AliFlowEventCuts.cxx:13
 AliFlowEventCuts.cxx:14
 AliFlowEventCuts.cxx:15
 AliFlowEventCuts.cxx:16
 AliFlowEventCuts.cxx:17
 AliFlowEventCuts.cxx:18
 AliFlowEventCuts.cxx:19
 AliFlowEventCuts.cxx:20
 AliFlowEventCuts.cxx:21
 AliFlowEventCuts.cxx:22
 AliFlowEventCuts.cxx:23
 AliFlowEventCuts.cxx:24
 AliFlowEventCuts.cxx:25
 AliFlowEventCuts.cxx:26
 AliFlowEventCuts.cxx:27
 AliFlowEventCuts.cxx:28
 AliFlowEventCuts.cxx:29
 AliFlowEventCuts.cxx:30
 AliFlowEventCuts.cxx:31
 AliFlowEventCuts.cxx:32
 AliFlowEventCuts.cxx:33
 AliFlowEventCuts.cxx:34
 AliFlowEventCuts.cxx:35
 AliFlowEventCuts.cxx:36
 AliFlowEventCuts.cxx:37
 AliFlowEventCuts.cxx:38
 AliFlowEventCuts.cxx:39
 AliFlowEventCuts.cxx:40
 AliFlowEventCuts.cxx:41
 AliFlowEventCuts.cxx:42
 AliFlowEventCuts.cxx:43
 AliFlowEventCuts.cxx:44
 AliFlowEventCuts.cxx:45
 AliFlowEventCuts.cxx:46
 AliFlowEventCuts.cxx:47
 AliFlowEventCuts.cxx:48
 AliFlowEventCuts.cxx:49
 AliFlowEventCuts.cxx:50
 AliFlowEventCuts.cxx:51
 AliFlowEventCuts.cxx:52
 AliFlowEventCuts.cxx:53
 AliFlowEventCuts.cxx:54
 AliFlowEventCuts.cxx:55
 AliFlowEventCuts.cxx:56
 AliFlowEventCuts.cxx:57
 AliFlowEventCuts.cxx:58
 AliFlowEventCuts.cxx:59
 AliFlowEventCuts.cxx:60
 AliFlowEventCuts.cxx:61
 AliFlowEventCuts.cxx:62
 AliFlowEventCuts.cxx:63
 AliFlowEventCuts.cxx:64
 AliFlowEventCuts.cxx:65
 AliFlowEventCuts.cxx:66
 AliFlowEventCuts.cxx:67
 AliFlowEventCuts.cxx:68
 AliFlowEventCuts.cxx:69
 AliFlowEventCuts.cxx:70
 AliFlowEventCuts.cxx:71
 AliFlowEventCuts.cxx:72
 AliFlowEventCuts.cxx:73
 AliFlowEventCuts.cxx:74
 AliFlowEventCuts.cxx:75
 AliFlowEventCuts.cxx:76
 AliFlowEventCuts.cxx:77
 AliFlowEventCuts.cxx:78
 AliFlowEventCuts.cxx:79
 AliFlowEventCuts.cxx:80
 AliFlowEventCuts.cxx:81
 AliFlowEventCuts.cxx:82
 AliFlowEventCuts.cxx:83
 AliFlowEventCuts.cxx:84
 AliFlowEventCuts.cxx:85
 AliFlowEventCuts.cxx:86
 AliFlowEventCuts.cxx:87
 AliFlowEventCuts.cxx:88
 AliFlowEventCuts.cxx:89
 AliFlowEventCuts.cxx:90
 AliFlowEventCuts.cxx:91
 AliFlowEventCuts.cxx:92
 AliFlowEventCuts.cxx:93
 AliFlowEventCuts.cxx:94
 AliFlowEventCuts.cxx:95
 AliFlowEventCuts.cxx:96
 AliFlowEventCuts.cxx:97
 AliFlowEventCuts.cxx:98
 AliFlowEventCuts.cxx:99
 AliFlowEventCuts.cxx:100
 AliFlowEventCuts.cxx:101
 AliFlowEventCuts.cxx:102
 AliFlowEventCuts.cxx:103
 AliFlowEventCuts.cxx:104
 AliFlowEventCuts.cxx:105
 AliFlowEventCuts.cxx:106
 AliFlowEventCuts.cxx:107
 AliFlowEventCuts.cxx:108
 AliFlowEventCuts.cxx:109
 AliFlowEventCuts.cxx:110
 AliFlowEventCuts.cxx:111
 AliFlowEventCuts.cxx:112
 AliFlowEventCuts.cxx:113
 AliFlowEventCuts.cxx:114
 AliFlowEventCuts.cxx:115
 AliFlowEventCuts.cxx:116
 AliFlowEventCuts.cxx:117
 AliFlowEventCuts.cxx:118
 AliFlowEventCuts.cxx:119
 AliFlowEventCuts.cxx:120
 AliFlowEventCuts.cxx:121
 AliFlowEventCuts.cxx:122
 AliFlowEventCuts.cxx:123
 AliFlowEventCuts.cxx:124
 AliFlowEventCuts.cxx:125
 AliFlowEventCuts.cxx:126
 AliFlowEventCuts.cxx:127
 AliFlowEventCuts.cxx:128
 AliFlowEventCuts.cxx:129
 AliFlowEventCuts.cxx:130
 AliFlowEventCuts.cxx:131
 AliFlowEventCuts.cxx:132
 AliFlowEventCuts.cxx:133
 AliFlowEventCuts.cxx:134
 AliFlowEventCuts.cxx:135
 AliFlowEventCuts.cxx:136
 AliFlowEventCuts.cxx:137
 AliFlowEventCuts.cxx:138
 AliFlowEventCuts.cxx:139
 AliFlowEventCuts.cxx:140
 AliFlowEventCuts.cxx:141
 AliFlowEventCuts.cxx:142
 AliFlowEventCuts.cxx:143
 AliFlowEventCuts.cxx:144
 AliFlowEventCuts.cxx:145
 AliFlowEventCuts.cxx:146
 AliFlowEventCuts.cxx:147
 AliFlowEventCuts.cxx:148
 AliFlowEventCuts.cxx:149
 AliFlowEventCuts.cxx:150
 AliFlowEventCuts.cxx:151
 AliFlowEventCuts.cxx:152
 AliFlowEventCuts.cxx:153
 AliFlowEventCuts.cxx:154
 AliFlowEventCuts.cxx:155
 AliFlowEventCuts.cxx:156
 AliFlowEventCuts.cxx:157
 AliFlowEventCuts.cxx:158
 AliFlowEventCuts.cxx:159
 AliFlowEventCuts.cxx:160
 AliFlowEventCuts.cxx:161
 AliFlowEventCuts.cxx:162
 AliFlowEventCuts.cxx:163
 AliFlowEventCuts.cxx:164
 AliFlowEventCuts.cxx:165
 AliFlowEventCuts.cxx:166
 AliFlowEventCuts.cxx:167
 AliFlowEventCuts.cxx:168
 AliFlowEventCuts.cxx:169
 AliFlowEventCuts.cxx:170
 AliFlowEventCuts.cxx:171
 AliFlowEventCuts.cxx:172
 AliFlowEventCuts.cxx:173
 AliFlowEventCuts.cxx:174
 AliFlowEventCuts.cxx:175
 AliFlowEventCuts.cxx:176
 AliFlowEventCuts.cxx:177
 AliFlowEventCuts.cxx:178
 AliFlowEventCuts.cxx:179
 AliFlowEventCuts.cxx:180
 AliFlowEventCuts.cxx:181
 AliFlowEventCuts.cxx:182
 AliFlowEventCuts.cxx:183
 AliFlowEventCuts.cxx:184
 AliFlowEventCuts.cxx:185
 AliFlowEventCuts.cxx:186
 AliFlowEventCuts.cxx:187
 AliFlowEventCuts.cxx:188
 AliFlowEventCuts.cxx:189
 AliFlowEventCuts.cxx:190
 AliFlowEventCuts.cxx:191
 AliFlowEventCuts.cxx:192
 AliFlowEventCuts.cxx:193
 AliFlowEventCuts.cxx:194
 AliFlowEventCuts.cxx:195
 AliFlowEventCuts.cxx:196
 AliFlowEventCuts.cxx:197
 AliFlowEventCuts.cxx:198
 AliFlowEventCuts.cxx:199
 AliFlowEventCuts.cxx:200
 AliFlowEventCuts.cxx:201
 AliFlowEventCuts.cxx:202
 AliFlowEventCuts.cxx:203
 AliFlowEventCuts.cxx:204
 AliFlowEventCuts.cxx:205
 AliFlowEventCuts.cxx:206
 AliFlowEventCuts.cxx:207
 AliFlowEventCuts.cxx:208
 AliFlowEventCuts.cxx:209
 AliFlowEventCuts.cxx:210
 AliFlowEventCuts.cxx:211
 AliFlowEventCuts.cxx:212
 AliFlowEventCuts.cxx:213
 AliFlowEventCuts.cxx:214
 AliFlowEventCuts.cxx:215
 AliFlowEventCuts.cxx:216
 AliFlowEventCuts.cxx:217
 AliFlowEventCuts.cxx:218
 AliFlowEventCuts.cxx:219
 AliFlowEventCuts.cxx:220
 AliFlowEventCuts.cxx:221
 AliFlowEventCuts.cxx:222
 AliFlowEventCuts.cxx:223
 AliFlowEventCuts.cxx:224
 AliFlowEventCuts.cxx:225
 AliFlowEventCuts.cxx:226
 AliFlowEventCuts.cxx:227
 AliFlowEventCuts.cxx:228
 AliFlowEventCuts.cxx:229
 AliFlowEventCuts.cxx:230
 AliFlowEventCuts.cxx:231
 AliFlowEventCuts.cxx:232
 AliFlowEventCuts.cxx:233
 AliFlowEventCuts.cxx:234
 AliFlowEventCuts.cxx:235
 AliFlowEventCuts.cxx:236
 AliFlowEventCuts.cxx:237
 AliFlowEventCuts.cxx:238
 AliFlowEventCuts.cxx:239
 AliFlowEventCuts.cxx:240
 AliFlowEventCuts.cxx:241
 AliFlowEventCuts.cxx:242
 AliFlowEventCuts.cxx:243
 AliFlowEventCuts.cxx:244
 AliFlowEventCuts.cxx:245
 AliFlowEventCuts.cxx:246
 AliFlowEventCuts.cxx:247
 AliFlowEventCuts.cxx:248
 AliFlowEventCuts.cxx:249
 AliFlowEventCuts.cxx:250
 AliFlowEventCuts.cxx:251
 AliFlowEventCuts.cxx:252
 AliFlowEventCuts.cxx:253
 AliFlowEventCuts.cxx:254
 AliFlowEventCuts.cxx:255
 AliFlowEventCuts.cxx:256
 AliFlowEventCuts.cxx:257
 AliFlowEventCuts.cxx:258
 AliFlowEventCuts.cxx:259
 AliFlowEventCuts.cxx:260
 AliFlowEventCuts.cxx:261
 AliFlowEventCuts.cxx:262
 AliFlowEventCuts.cxx:263
 AliFlowEventCuts.cxx:264
 AliFlowEventCuts.cxx:265
 AliFlowEventCuts.cxx:266
 AliFlowEventCuts.cxx:267
 AliFlowEventCuts.cxx:268
 AliFlowEventCuts.cxx:269
 AliFlowEventCuts.cxx:270
 AliFlowEventCuts.cxx:271
 AliFlowEventCuts.cxx:272
 AliFlowEventCuts.cxx:273
 AliFlowEventCuts.cxx:274
 AliFlowEventCuts.cxx:275
 AliFlowEventCuts.cxx:276
 AliFlowEventCuts.cxx:277
 AliFlowEventCuts.cxx:278
 AliFlowEventCuts.cxx:279
 AliFlowEventCuts.cxx:280
 AliFlowEventCuts.cxx:281
 AliFlowEventCuts.cxx:282
 AliFlowEventCuts.cxx:283
 AliFlowEventCuts.cxx:284
 AliFlowEventCuts.cxx:285
 AliFlowEventCuts.cxx:286
 AliFlowEventCuts.cxx:287
 AliFlowEventCuts.cxx:288
 AliFlowEventCuts.cxx:289
 AliFlowEventCuts.cxx:290
 AliFlowEventCuts.cxx:291
 AliFlowEventCuts.cxx:292
 AliFlowEventCuts.cxx:293
 AliFlowEventCuts.cxx:294
 AliFlowEventCuts.cxx:295
 AliFlowEventCuts.cxx:296
 AliFlowEventCuts.cxx:297
 AliFlowEventCuts.cxx:298
 AliFlowEventCuts.cxx:299
 AliFlowEventCuts.cxx:300
 AliFlowEventCuts.cxx:301
 AliFlowEventCuts.cxx:302
 AliFlowEventCuts.cxx:303
 AliFlowEventCuts.cxx:304
 AliFlowEventCuts.cxx:305
 AliFlowEventCuts.cxx:306
 AliFlowEventCuts.cxx:307
 AliFlowEventCuts.cxx:308
 AliFlowEventCuts.cxx:309
 AliFlowEventCuts.cxx:310
 AliFlowEventCuts.cxx:311
 AliFlowEventCuts.cxx:312
 AliFlowEventCuts.cxx:313
 AliFlowEventCuts.cxx:314
 AliFlowEventCuts.cxx:315
 AliFlowEventCuts.cxx:316
 AliFlowEventCuts.cxx:317
 AliFlowEventCuts.cxx:318
 AliFlowEventCuts.cxx:319
 AliFlowEventCuts.cxx:320
 AliFlowEventCuts.cxx:321
 AliFlowEventCuts.cxx:322
 AliFlowEventCuts.cxx:323
 AliFlowEventCuts.cxx:324
 AliFlowEventCuts.cxx:325
 AliFlowEventCuts.cxx:326
 AliFlowEventCuts.cxx:327
 AliFlowEventCuts.cxx:328
 AliFlowEventCuts.cxx:329
 AliFlowEventCuts.cxx:330
 AliFlowEventCuts.cxx:331
 AliFlowEventCuts.cxx:332
 AliFlowEventCuts.cxx:333
 AliFlowEventCuts.cxx:334
 AliFlowEventCuts.cxx:335
 AliFlowEventCuts.cxx:336
 AliFlowEventCuts.cxx:337
 AliFlowEventCuts.cxx:338
 AliFlowEventCuts.cxx:339
 AliFlowEventCuts.cxx:340
 AliFlowEventCuts.cxx:341
 AliFlowEventCuts.cxx:342
 AliFlowEventCuts.cxx:343
 AliFlowEventCuts.cxx:344
 AliFlowEventCuts.cxx:345
 AliFlowEventCuts.cxx:346
 AliFlowEventCuts.cxx:347
 AliFlowEventCuts.cxx:348
 AliFlowEventCuts.cxx:349
 AliFlowEventCuts.cxx:350
 AliFlowEventCuts.cxx:351
 AliFlowEventCuts.cxx:352
 AliFlowEventCuts.cxx:353
 AliFlowEventCuts.cxx:354
 AliFlowEventCuts.cxx:355
 AliFlowEventCuts.cxx:356
 AliFlowEventCuts.cxx:357
 AliFlowEventCuts.cxx:358
 AliFlowEventCuts.cxx:359
 AliFlowEventCuts.cxx:360
 AliFlowEventCuts.cxx:361
 AliFlowEventCuts.cxx:362
 AliFlowEventCuts.cxx:363
 AliFlowEventCuts.cxx:364
 AliFlowEventCuts.cxx:365
 AliFlowEventCuts.cxx:366
 AliFlowEventCuts.cxx:367
 AliFlowEventCuts.cxx:368
 AliFlowEventCuts.cxx:369
 AliFlowEventCuts.cxx:370
 AliFlowEventCuts.cxx:371
 AliFlowEventCuts.cxx:372
 AliFlowEventCuts.cxx:373
 AliFlowEventCuts.cxx:374
 AliFlowEventCuts.cxx:375
 AliFlowEventCuts.cxx:376
 AliFlowEventCuts.cxx:377
 AliFlowEventCuts.cxx:378
 AliFlowEventCuts.cxx:379
 AliFlowEventCuts.cxx:380
 AliFlowEventCuts.cxx:381
 AliFlowEventCuts.cxx:382
 AliFlowEventCuts.cxx:383
 AliFlowEventCuts.cxx:384
 AliFlowEventCuts.cxx:385
 AliFlowEventCuts.cxx:386
 AliFlowEventCuts.cxx:387
 AliFlowEventCuts.cxx:388
 AliFlowEventCuts.cxx:389
 AliFlowEventCuts.cxx:390
 AliFlowEventCuts.cxx:391
 AliFlowEventCuts.cxx:392
 AliFlowEventCuts.cxx:393
 AliFlowEventCuts.cxx:394
 AliFlowEventCuts.cxx:395
 AliFlowEventCuts.cxx:396
 AliFlowEventCuts.cxx:397
 AliFlowEventCuts.cxx:398
 AliFlowEventCuts.cxx:399
 AliFlowEventCuts.cxx:400
 AliFlowEventCuts.cxx:401
 AliFlowEventCuts.cxx:402
 AliFlowEventCuts.cxx:403
 AliFlowEventCuts.cxx:404
 AliFlowEventCuts.cxx:405
 AliFlowEventCuts.cxx:406
 AliFlowEventCuts.cxx:407
 AliFlowEventCuts.cxx:408
 AliFlowEventCuts.cxx:409
 AliFlowEventCuts.cxx:410
 AliFlowEventCuts.cxx:411
 AliFlowEventCuts.cxx:412
 AliFlowEventCuts.cxx:413
 AliFlowEventCuts.cxx:414
 AliFlowEventCuts.cxx:415
 AliFlowEventCuts.cxx:416
 AliFlowEventCuts.cxx:417
 AliFlowEventCuts.cxx:418
 AliFlowEventCuts.cxx:419
 AliFlowEventCuts.cxx:420
 AliFlowEventCuts.cxx:421
 AliFlowEventCuts.cxx:422
 AliFlowEventCuts.cxx:423
 AliFlowEventCuts.cxx:424
 AliFlowEventCuts.cxx:425
 AliFlowEventCuts.cxx:426
 AliFlowEventCuts.cxx:427
 AliFlowEventCuts.cxx:428
 AliFlowEventCuts.cxx:429
 AliFlowEventCuts.cxx:430
 AliFlowEventCuts.cxx:431
 AliFlowEventCuts.cxx:432
 AliFlowEventCuts.cxx:433
 AliFlowEventCuts.cxx:434
 AliFlowEventCuts.cxx:435
 AliFlowEventCuts.cxx:436
 AliFlowEventCuts.cxx:437
 AliFlowEventCuts.cxx:438
 AliFlowEventCuts.cxx:439
 AliFlowEventCuts.cxx:440
 AliFlowEventCuts.cxx:441
 AliFlowEventCuts.cxx:442
 AliFlowEventCuts.cxx:443
 AliFlowEventCuts.cxx:444
 AliFlowEventCuts.cxx:445
 AliFlowEventCuts.cxx:446
 AliFlowEventCuts.cxx:447
 AliFlowEventCuts.cxx:448
 AliFlowEventCuts.cxx:449
 AliFlowEventCuts.cxx:450
 AliFlowEventCuts.cxx:451
 AliFlowEventCuts.cxx:452
 AliFlowEventCuts.cxx:453
 AliFlowEventCuts.cxx:454
 AliFlowEventCuts.cxx:455
 AliFlowEventCuts.cxx:456
 AliFlowEventCuts.cxx:457
 AliFlowEventCuts.cxx:458
 AliFlowEventCuts.cxx:459
 AliFlowEventCuts.cxx:460
 AliFlowEventCuts.cxx:461
 AliFlowEventCuts.cxx:462
 AliFlowEventCuts.cxx:463
 AliFlowEventCuts.cxx:464
 AliFlowEventCuts.cxx:465
 AliFlowEventCuts.cxx:466
 AliFlowEventCuts.cxx:467
 AliFlowEventCuts.cxx:468
 AliFlowEventCuts.cxx:469
 AliFlowEventCuts.cxx:470
 AliFlowEventCuts.cxx:471
 AliFlowEventCuts.cxx:472
 AliFlowEventCuts.cxx:473
 AliFlowEventCuts.cxx:474
 AliFlowEventCuts.cxx:475
 AliFlowEventCuts.cxx:476
 AliFlowEventCuts.cxx:477
 AliFlowEventCuts.cxx:478
 AliFlowEventCuts.cxx:479
 AliFlowEventCuts.cxx:480
 AliFlowEventCuts.cxx:481
 AliFlowEventCuts.cxx:482
 AliFlowEventCuts.cxx:483
 AliFlowEventCuts.cxx:484
 AliFlowEventCuts.cxx:485
 AliFlowEventCuts.cxx:486
 AliFlowEventCuts.cxx:487
 AliFlowEventCuts.cxx:488
 AliFlowEventCuts.cxx:489
 AliFlowEventCuts.cxx:490
 AliFlowEventCuts.cxx:491
 AliFlowEventCuts.cxx:492
 AliFlowEventCuts.cxx:493
 AliFlowEventCuts.cxx:494
 AliFlowEventCuts.cxx:495
 AliFlowEventCuts.cxx:496
 AliFlowEventCuts.cxx:497
 AliFlowEventCuts.cxx:498
 AliFlowEventCuts.cxx:499
 AliFlowEventCuts.cxx:500
 AliFlowEventCuts.cxx:501
 AliFlowEventCuts.cxx:502
 AliFlowEventCuts.cxx:503
 AliFlowEventCuts.cxx:504
 AliFlowEventCuts.cxx:505
 AliFlowEventCuts.cxx:506
 AliFlowEventCuts.cxx:507
 AliFlowEventCuts.cxx:508
 AliFlowEventCuts.cxx:509
 AliFlowEventCuts.cxx:510
 AliFlowEventCuts.cxx:511
 AliFlowEventCuts.cxx:512
 AliFlowEventCuts.cxx:513
 AliFlowEventCuts.cxx:514
 AliFlowEventCuts.cxx:515
 AliFlowEventCuts.cxx:516
 AliFlowEventCuts.cxx:517
 AliFlowEventCuts.cxx:518
 AliFlowEventCuts.cxx:519
 AliFlowEventCuts.cxx:520
 AliFlowEventCuts.cxx:521
 AliFlowEventCuts.cxx:522
 AliFlowEventCuts.cxx:523
 AliFlowEventCuts.cxx:524
 AliFlowEventCuts.cxx:525
 AliFlowEventCuts.cxx:526
 AliFlowEventCuts.cxx:527
 AliFlowEventCuts.cxx:528
 AliFlowEventCuts.cxx:529
 AliFlowEventCuts.cxx:530
 AliFlowEventCuts.cxx:531
 AliFlowEventCuts.cxx:532
 AliFlowEventCuts.cxx:533
 AliFlowEventCuts.cxx:534
 AliFlowEventCuts.cxx:535
 AliFlowEventCuts.cxx:536
 AliFlowEventCuts.cxx:537
 AliFlowEventCuts.cxx:538
 AliFlowEventCuts.cxx:539
 AliFlowEventCuts.cxx:540
 AliFlowEventCuts.cxx:541
 AliFlowEventCuts.cxx:542
 AliFlowEventCuts.cxx:543
 AliFlowEventCuts.cxx:544
 AliFlowEventCuts.cxx:545
 AliFlowEventCuts.cxx:546
 AliFlowEventCuts.cxx:547
 AliFlowEventCuts.cxx:548
 AliFlowEventCuts.cxx:549
 AliFlowEventCuts.cxx:550
 AliFlowEventCuts.cxx:551
 AliFlowEventCuts.cxx:552
 AliFlowEventCuts.cxx:553
 AliFlowEventCuts.cxx:554
 AliFlowEventCuts.cxx:555
 AliFlowEventCuts.cxx:556
 AliFlowEventCuts.cxx:557
 AliFlowEventCuts.cxx:558
 AliFlowEventCuts.cxx:559
 AliFlowEventCuts.cxx:560
 AliFlowEventCuts.cxx:561
 AliFlowEventCuts.cxx:562
 AliFlowEventCuts.cxx:563
 AliFlowEventCuts.cxx:564
 AliFlowEventCuts.cxx:565
 AliFlowEventCuts.cxx:566
 AliFlowEventCuts.cxx:567
 AliFlowEventCuts.cxx:568
 AliFlowEventCuts.cxx:569
 AliFlowEventCuts.cxx:570
 AliFlowEventCuts.cxx:571
 AliFlowEventCuts.cxx:572
 AliFlowEventCuts.cxx:573
 AliFlowEventCuts.cxx:574
 AliFlowEventCuts.cxx:575
 AliFlowEventCuts.cxx:576
 AliFlowEventCuts.cxx:577
 AliFlowEventCuts.cxx:578
 AliFlowEventCuts.cxx:579
 AliFlowEventCuts.cxx:580
 AliFlowEventCuts.cxx:581
 AliFlowEventCuts.cxx:582
 AliFlowEventCuts.cxx:583
 AliFlowEventCuts.cxx:584
 AliFlowEventCuts.cxx:585
 AliFlowEventCuts.cxx:586
 AliFlowEventCuts.cxx:587
 AliFlowEventCuts.cxx:588
 AliFlowEventCuts.cxx:589
 AliFlowEventCuts.cxx:590
 AliFlowEventCuts.cxx:591
 AliFlowEventCuts.cxx:592
 AliFlowEventCuts.cxx:593
 AliFlowEventCuts.cxx:594
 AliFlowEventCuts.cxx:595
 AliFlowEventCuts.cxx:596
 AliFlowEventCuts.cxx:597
 AliFlowEventCuts.cxx:598
 AliFlowEventCuts.cxx:599
 AliFlowEventCuts.cxx:600
 AliFlowEventCuts.cxx:601
 AliFlowEventCuts.cxx:602
 AliFlowEventCuts.cxx:603
 AliFlowEventCuts.cxx:604
 AliFlowEventCuts.cxx:605
 AliFlowEventCuts.cxx:606
 AliFlowEventCuts.cxx:607
 AliFlowEventCuts.cxx:608
 AliFlowEventCuts.cxx:609
 AliFlowEventCuts.cxx:610
 AliFlowEventCuts.cxx:611
 AliFlowEventCuts.cxx:612
 AliFlowEventCuts.cxx:613
 AliFlowEventCuts.cxx:614
 AliFlowEventCuts.cxx:615
 AliFlowEventCuts.cxx:616
 AliFlowEventCuts.cxx:617
 AliFlowEventCuts.cxx:618
 AliFlowEventCuts.cxx:619
 AliFlowEventCuts.cxx:620
 AliFlowEventCuts.cxx:621
 AliFlowEventCuts.cxx:622
 AliFlowEventCuts.cxx:623
 AliFlowEventCuts.cxx:624
 AliFlowEventCuts.cxx:625
 AliFlowEventCuts.cxx:626
 AliFlowEventCuts.cxx:627
 AliFlowEventCuts.cxx:628
 AliFlowEventCuts.cxx:629
 AliFlowEventCuts.cxx:630
 AliFlowEventCuts.cxx:631
 AliFlowEventCuts.cxx:632
 AliFlowEventCuts.cxx:633
 AliFlowEventCuts.cxx:634
 AliFlowEventCuts.cxx:635
 AliFlowEventCuts.cxx:636
 AliFlowEventCuts.cxx:637
 AliFlowEventCuts.cxx:638
 AliFlowEventCuts.cxx:639
 AliFlowEventCuts.cxx:640
 AliFlowEventCuts.cxx:641
 AliFlowEventCuts.cxx:642
 AliFlowEventCuts.cxx:643
 AliFlowEventCuts.cxx:644