ROOT logo
#include "AliAnalysisMuMuEventCutter.h"

/**
 *
 * \ingroup pwg-muon-mumu
 *
 * \class AliAnalysisMuMuEventCutter
 *
 * We're grouping here various event cut methods that can be used
 * as AliAnalysisMuMuCutElement. For instance :
 *
 * - \ref IsPhysicsSelected this is the normal physics selection check
 * - \ref IsPhysicsSelectedVDM version of the physics selection used for VdM analysis
 * - \ref IsSPDzVertexInRange selects event with a SPDvertex in a given range
 * - \ref IsAbsZBelowValue selects event with |Zvertex| (being SPD or not) below a given value
 * - \ref IsAbsZBelowValue as above but requesting explicitely the SPD vertex
 * - \ref IsSPDzQA whether the SPD vertex is a good one
 */

#include "TObjString.h"
#include "AliLog.h"
#include "AliMuonEventCuts.h"
#include "AliAnalysisMuonUtility.h"
#include "TList.h"
#include "TTree.h"
#include "Riostream.h"
#include "AliVVertex.h"
#include "AliAODVertex.h"
#include "AliVVZERO.h"
#include "AliInputEventHandler.h"
#include "AliMCEventHandler.h"
#include "AliVEvent.h"
#include "AliMCEvent.h"
#include "TMath.h"
#include "TParameter.h"
#include "AliESDTZERO.h"
#include "AliAODTZERO.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliAODMCHeader.h"
#include "AliGenEventHeader.h"
#include "AliGenHijingEventHeader.h"
#include "AliGenDPMjetEventHeader.h"
#include "AliGenCocktailEventHeader.h"

ClassImp(AliAnalysisMuMuEventCutter)

//______________________________________________________________________________
AliAnalysisMuMuEventCutter::AliAnalysisMuMuEventCutter(TList* triggerClasses, TList* triggerInputsMap)
: TObject(), fMuonEventCuts(0x0)
{
  /// ctor
  TString tclasses;
  
  if ( !triggerClasses )
  {
    tclasses = "ANY";
  }
  else
  {
    TObjString* tname;
    TIter next(triggerClasses);
    
    while ( ( tname = static_cast<TObjString*>(next()) ) )
    {
      if (tclasses.Length()>0)
      {
        tclasses += ",";
      }
      
      tclasses += tname->String();
    }
  }
  
  TString tinputs;
  
  if ( !triggerInputsMap )
  {
    tinputs = "";
  }
  else
  {
    TObjString* tinputsname;
    TIter next(triggerInputsMap);
    
    while ( ( tinputsname = static_cast<TObjString*>(next()) ) )
    {
      if (tinputs.Length()>0)
      {
        tinputs += ",";
      }
      
      tinputs += tinputsname->String();
    }
  }
  
  MuonEventCuts()->SetTrigClassPatterns(tclasses,tinputs);
  
}


//______________________________________________________________________________
AliAnalysisMuMuEventCutter::~AliAnalysisMuMuEventCutter()
{
  /// dtor
  delete fMuonEventCuts;
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::SelectTriggerClass(const TString& firedTriggerClasses,
                                                      TString& acceptedClasses,
                                                      UInt_t L0, UInt_t L1, UInt_t L2) const
{
  /// Forward the trigger class selection to MuonEventCuts::GetSelectedTrigClassesInEvent
  acceptedClasses = "";
  
  TIter next(MuonEventCuts()->GetSelectedTrigClassesInEvent(firedTriggerClasses,L0,L1,L2));
  TObjString* str;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    acceptedClasses += str->String();
    acceptedClasses += " ";
  }
  return (acceptedClasses.Length()>0);
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsPhysicsSelected(const AliInputEventHandler& eventHandler) const
{
  /// Whether or not the event is physics selected
  return const_cast<AliInputEventHandler&>(eventHandler).IsEventSelected() & AliVEvent::kAny;
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsPhysicsSelectedVDM(const AliVEvent& event) const
{
  // cut used in vdM scans
  
  AliVVZERO* vzero = event.GetVZEROData();
  
  if (vzero)
  {
    Float_t v0a = vzero->GetV0ATime();
    Float_t v0c = vzero->GetV0CTime();
    
    Float_t v0diff = v0a-v0c;
    Float_t v0sum = v0a+v0c;
    
    if ( ( v0sum > 10.5 && v0sum < 18 ) && ( v0diff > 4 && v0diff < 12 ) )
    {
      return kTRUE;
    }
  }
  return kFALSE;
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsMCEventNSD(const AliVEvent& event) const
{
  // Check for headers
  //FIXME: For now this is only valid for DPMJET
  //FIXME: working only on AODs
  
  if ( static_cast<const AliVEvent*>(&event)->IsA() == AliESDEvent::Class() )
  {
    AliWarning("Not implemented for ESDs yet");
    return kFALSE;
  }
  
  const AliAODEvent* eventAOD = static_cast<const AliAODEvent*>(&event);
  
  AliAODMCHeader* mcHeader = static_cast<AliAODMCHeader*>(eventAOD->FindListObject(AliAODMCHeader::StdBranchName()));
  
  if(mcHeader)
  {
    TList* lheaders = mcHeader->GetCocktailHeaders();
    
    if ( lheaders->GetEntries() > 1 ) AliWarning("There is more than one header: The simulation is a cocktail");
    
    AliGenEventHeader* mcGenH(0x0);
    AliGenHijingEventHeader* hHijing(0x0);
    AliGenDPMjetEventHeader* hDpmJet(0x0);
    TIter next(lheaders); // Get the iterator on the list of cocktail headers

//    lheaders->Print();
    
    while ( (mcGenH = static_cast<AliGenEventHeader*>(next())) ) // Loop over the cocktail headers
    {
//      std::cout << mcGenH->GetName() << std::endl;
      if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class()))
      {
        hHijing = static_cast<AliGenHijingEventHeader*>(mcGenH);
      }
      if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class()))
      {
        hDpmJet = static_cast<AliGenDPMjetEventHeader*>(mcGenH);
      }
    } // End of loop over cocktail headers
    
    if ( !hDpmJet && !hHijing )
    {
      AliError("No GenHeader found");
      return kFALSE;
    }
    else if ( hDpmJet )
    {
      Int_t nsd1,nsd2,ndd;
      Int_t npProj = hDpmJet->ProjectileParticipants();
//      Int_t npProj = hDpmJet->TargetParticipants();
      
//      std::cout << hDpmJet->ProcessType() << std::endl;
      hDpmJet->GetNDiffractive(nsd1,nsd2,ndd);
      
      if (ndd==0 && (npProj==nsd1 || npProj==nsd2))
      {
        return kFALSE; // reject SD
      }
      else return kTRUE; //Is NSD event

    }
    else
    {
      AliWarning("Implement the Hijing section");
      return kFALSE;
    }
  }
  else
  {
    AliError("No MCheader in MCEvent");
    return kFALSE;
  }

}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsAbsZBelowValue(const AliVEvent& event, const Double_t& z) const
{
  // Checks if the absolute value of the Z component of the primary vertex is below a certain value
  
  const AliVVertex* vertex = event.GetPrimaryVertex();
  return (TMath::Abs(vertex->GetZ())<=z);
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsAbsZSPDBelowValue(const AliVEvent& event, const Double_t& z) const
{
  // Checks if the absolute value of the SPD Z component of the given vertex is below a certain value
  
  Double_t SPDzv(0.);
  Bool_t vertexFound(kFALSE);
  
  AliVVertex* SPDVertex = AliAnalysisMuonUtility::GetVertexSPD(static_cast<const AliVEvent*>(&event));
  if ( SPDVertex )
  {
    vertexFound = kTRUE;
    SPDzv = SPDVertex->GetZ();
  }
  
  if ( !vertexFound )
  {
    AliError("SPD |z| cut requested and no SPD vertex found in the event");
    return kFALSE;
  }
  
  else return (TMath::Abs(SPDzv)<z);
}


//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsSPDzVertexInRange(AliVEvent& event, const Double_t& zMin, const Double_t& zMax) const
{
  /// Whether or not the SPD Z vertex is in the range [zMin,zMax[
  
  AliVVertex* SPDVertex = AliAnalysisMuonUtility::GetVertexSPD(static_cast<const AliVEvent*>(&event));
  
  if ( !SPDVertex )
  {
    AliError("Cut on SPD z Vertex requested for an event with no SPD vertex info");
    return kFALSE;
  }
  Double_t zV = SPDVertex->GetZ();
  
  if ( zV >= zMin && zV < zMax ) return kTRUE;
  else return kFALSE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::HasSPDVertex(AliVEvent& event) const
{
  /// Does the event have a SPD vertex ?
  AliVVertex* SPDVertex = AliAnalysisMuonUtility::GetVertexSPD(static_cast<const AliVEvent*>(&event));
  if ( SPDVertex && SPDVertex->GetNContributors() > 0) return kTRUE;
  else return kFALSE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsSPDzQA(const AliVEvent& event, /*const AliVVertex& vertex2Test,*/ const Double_t& zResCut, const Double_t& zDifCut) const
{
  // Checks if the value of the Z component of the given vertex fullfills the quality assurance condition
  Double_t zRes,zvertex;
  
  const AliVVertex* vertex = event.GetPrimaryVertex();
  
  if ( vertex )
  {
    AliVVertex* SPDVertex = AliAnalysisMuonUtility::GetVertexSPD(static_cast<const AliVEvent*>(&event));
    if ( SPDVertex )
    {
     if ( SPDVertex->GetNContributors() > 0 )
     {
       Double_t cov[6]={0};
       SPDVertex->GetCovarianceMatrix(cov);
       zRes = TMath::Sqrt(cov[5]);
       zvertex = SPDVertex->GetZ();
     }
     else return kFALSE;
    }
    else
    {
      AliError("Cut on SPD z Vertex requested for an event with no SPD vertex info");
      return kFALSE;
    }
  }
  else
  {
    AliError("Cut on SPD z Vertex requested for an event with no vertex info");
    return kFALSE;
  }
  
  if ( (zRes < zResCut) && TMath::Abs(zvertex - vertex->GetZ()) <= zDifCut )
  {
    return kTRUE;
  }
  else return kFALSE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisMuMuEventCutter::IsMeandNchdEtaInRange(AliVEvent& event, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const
{
  TList* nchList = static_cast<TList*>(event.FindListObject("NCH"));
  
  if (!nchList || nchList->IsEmpty())
  {
    AliFatal("No NCH information found in event. Nch analysis MUST be executed to apply a NCH cut");
    return kFALSE;
  }
  
  Int_t i(0);
  Bool_t parFound(kFALSE);
  TParameter<Double_t>* eventdNchdEta;
  
  while ( !parFound )
  {
    while ( nchList->At(i)->IsA() != TParameter<Double_t>::Class() )
    {
      i++;
    }
    
    eventdNchdEta = static_cast<TParameter<Double_t>*>(nchList->At(i));
    
    if ( TString(eventdNchdEta->GetName()).Contains("MeandNchdEta") ) parFound = kTRUE;
  }
  
  Double_t meandNchdEta = eventdNchdEta->GetVal();
  
  if ( meandNchdEta >= dNchdEtaMin && meandNchdEta < dNchdEtaMax ) return kTRUE;
  else return kFALSE;
}

//_____________________________________________________________________________
AliMuonEventCuts*
AliAnalysisMuMuEventCutter::MuonEventCuts() const
{
  /// Return the single instance of AliMuonEventCuts object we're using
  
  if (!fMuonEventCuts)
  {
    fMuonEventCuts = new AliMuonEventCuts("EventCut","");
  }
  return fMuonEventCuts;
}


//_____________________________________________________________________________
void AliAnalysisMuMuEventCutter::NameOfIsSPDzVertexInRange(TString& name, const Double_t& zMin, const Double_t& zMax) const
{
  name.Form("SPDZBTW%3.2f_%3.2f",zMin,zMax);
}
//_____________________________________________________________________________
void AliAnalysisMuMuEventCutter::NameOfIsAbsZBelowValue(TString& name, const Double_t& z) const
{
  name.Form("ABSZLT%3.2f",z);
}

//_____________________________________________________________________________
void AliAnalysisMuMuEventCutter::NameOfIsAbsZSPDBelowValue(TString& name, const Double_t& z) const
{
  name.Form("SPDABSZLT%3.2f",z);
}


//_____________________________________________________________________________
void AliAnalysisMuMuEventCutter::NameOfIsSPDzQA(TString& name, const Double_t& zResCut, const Double_t& zDifCut) const
{
  name.Form("SPDZQA_RES%3.2f_ZDIF%3.2f",zResCut,zDifCut);
}

//_____________________________________________________________________________
void AliAnalysisMuMuEventCutter::NameOfIsMeandNchdEtaInRange(TString& name, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const
{
  name.Form("MEANDNDETABTW%3.2f_%3.2f",dNchdEtaMin,dNchdEtaMax);
}


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