ROOT logo
// ----------------------------------------------------------------
// AliBackgroundSelection
//
// This class implements to cuts to reject background events from the
// samples to be used in the physics analysis:
// 1. A linear cut on the correlation cluster vs tracklets
// 2. A cut on the delta phi window used by the vertexer Z
// The parameters used in both cuts can be set
// 
// The class also produces control histograms for all and accepted
// events, for each trigger class present in the data independently.
// Histograms are booked on the fly in the UserExec, whenever a new
// trigger class is found.
//
// After the first implementation, it was realized that the deltaphi
// cut is more a quality selection cut than an event selection cut, so
// it is effectively disabled by default.
//
// Author: Michele Floris, CERN
// ----------------------------------------------------------------


#include "AliBackgroundSelection.h"
#include "TH2F.h"
#include "TList.h"
#include "TString.h"
#include "AliESDInputHandlerRP.h"
#include "AliAnalysisManager.h"
#include "TTree.h"
#include "AliMultiplicity.h"
#ifdef PASS1RECO
#include "AliITSRecPoint.h"
#endif



ClassImp(AliBackgroundSelection)

AliBackgroundSelection::AliBackgroundSelection():
  AliAnalysisCuts(), fOutputHist(0), fACut(0), fBCut(0), fDeltaPhiCut(10)
{
  // ctor
  fOutputHist = new TList();
  fOutputHist->SetOwner();
  fACut = 65;
  fBCut = 4;
  fDeltaPhiCut = 10; // effectively disabling delta phi cut by default
}

AliBackgroundSelection::AliBackgroundSelection(const char* name, const char* title):
  AliAnalysisCuts(name,title), fOutputHist(0), fACut(0), fBCut(0), fDeltaPhiCut(10)
{
  // ctor
  fOutputHist = new TList();
  fOutputHist->SetOwner();
  fACut = 65;
  fBCut = 4;
  fDeltaPhiCut = 10; //  effectively disabling delta phi cut by default

}

AliBackgroundSelection::AliBackgroundSelection(const AliBackgroundSelection& obj) : AliAnalysisCuts(obj),
fOutputHist(0), fACut(0), fBCut(0), fDeltaPhiCut(0)
{
  // copy ctor
  fOutputHist  = obj.fOutputHist;
  fACut        = obj.fACut;
  fBCut        = obj.fBCut;
  fDeltaPhiCut = obj.fDeltaPhiCut;
}

AliBackgroundSelection::~AliBackgroundSelection() {
  // dtor
  if(fOutputHist) {
    delete fOutputHist;
    fOutputHist = 0;
  }

}

Bool_t AliBackgroundSelection::IsSelected(TObject* const obj) 
{
  // returns false if the event is identifiead as beam background,
  // true otherwise.

  // reset fSelected
  SetSelected(kFALSE);
#ifdef PASS1RECO
  // Get rec points
  AliESDInputHandlerRP* handlerRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  if (!handlerRP)
    AliFatal("Cannot get the AliESDInputHandlerRP");

  TTree* itsClusterTree = handlerRP->GetTreeR("ITS");
  if (!itsClusterTree){
    AliError("Cannot get the ITS Cluster tree");
    return kFALSE;
  }
  //    AliFatal("Cannot get the ITS Cluster tree");

  TClonesArray* itsClusters = new TClonesArray("AliITSRecPoint");
  TBranch* itsClusterBranch=itsClusterTree->GetBranch("ITSRecPoints");

  itsClusterBranch->SetAddress(&itsClusters);

  Int_t nItsSubs = (Int_t)itsClusterTree->GetEntries();
#endif

  AliESDEvent * esdEv = (AliESDEvent*) obj;

#ifdef PASS1RECO
  Float_t deltaPhi = 0.0; // deltaPhi is not available in pass1

  // Get # spd clusters and of tracklets
  Int_t spdClusters=0;


  // loop over the its subdetectors
  for (Int_t iIts=0; iIts < nItsSubs; iIts++) {

    if (!itsClusterTree->GetEvent(iIts))
      continue;

    Int_t nClusters = itsClusters->GetEntriesFast();

    // loop over clusters
    while (nClusters--) {
      AliITSRecPoint* cluster = (AliITSRecPoint*) itsClusters->UncheckedAt(nClusters);

      Int_t layer = cluster->GetLayer();

      if (layer < 3) { // SPD
	spdClusters++;
      }
    }
  }
#endif

  const AliMultiplicity* mult = esdEv->GetMultiplicity();
  if (!mult){
    AliFatal("No multiplicity object"); // TODO: Should this be fatal?
  }
  Int_t ntracklet = mult->GetNumberOfTracklets();

#ifndef PASS1RECO
  // get deltaphi if vertexer z
  Float_t deltaPhi = 0.0;
  // Get Vertex
  const AliESDVertex * vtxESD = esdEv->GetPrimaryVertexSPD();
  if(vtxESD) {
    if (vtxESD->IsFromVertexerZ()) deltaPhi = vtxESD->GetDispersion(); // dispersion contains deltaphi in case of vertexer Z
  }
  else {
    AliWarning("No Vertex");
  }

  

  // compute number of spd clusters
  Float_t spdClusters = 0;
  for(Int_t ilayer = 0; ilayer < 2; ilayer++){
    spdClusters += mult->GetNumberOfITSClusters(ilayer);
  }
#endif

  // Check cuts
  Bool_t isCvsTOk     = kFALSE;
  Bool_t isDeltaPhiOk = kFALSE;

  Float_t limit = fACut + ntracklet * fBCut;  
  if (spdClusters > limit)        isCvsTOk = kFALSE;
  else                            isCvsTOk = kTRUE ;

  if(deltaPhi > fDeltaPhiCut)     isDeltaPhiOk = kFALSE;
  else                            isDeltaPhiOk = kTRUE ;

  if (!isCvsTOk || !isDeltaPhiOk) SetSelected(kFALSE);
  else                            SetSelected(kTRUE );

  // Fill control histos for all trigger classes
  TString trgClasses = esdEv->GetFiredTriggerClasses();
  TObjArray * tokens = trgClasses.Tokenize(" ");
  TIter iter(tokens);
  while(TObjString * tok = (TObjString*) iter.Next()){
    // clean up trigger name
    TString trg = tok->GetString();
    trg.Strip(TString::kTrailing, ' ');
    trg.Strip(TString::kLeading, ' ');
    
    // cluster vs tracklets
    TH2F * hCvsT = GetClusterVsTrackletsHisto(trg.Data());
    TH2F * hCvsTa = GetClusterVsTrackletsHistoAccepted(trg.Data());
    hCvsT->Fill(ntracklet,spdClusters);
    if(isCvsTOk) hCvsTa->Fill(ntracklet,spdClusters);

    // Delta phi
    TH1F * hDeltaPhi = GetDeltaPhiHisto(trg.Data());
    TH1F * hDeltaPhia = GetDeltaPhiHistoAccepted(trg.Data());
    hDeltaPhi->Fill(deltaPhi);
    if(isDeltaPhiOk) hDeltaPhia->Fill(deltaPhi);
  }
  if(tokens) delete tokens;
  // return decision

#ifdef PASS1RECO
  if(itsClusters) {
    itsClusters->Delete();
    delete itsClusters;
  }
#endif 
  return Selected();
}


void   AliBackgroundSelection::Init(){

  // Set default cut values
  fACut = 65;
  fBCut = 4;

}


void AliBackgroundSelection::BookClusterVsTrackletsHisto(const char * trigger_name){

  // Book control histogram for the cut on the correlation cluster vs tracklets

  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  TH2F * h1 = new TH2F(GetClusterVsTrackletsHistoName(trigger_name),trigger_name, 300, -0.5, 2999.5, 1000, -0.5, 9999.5);
  h1->SetXTitle("Tracklets");
  h1->SetYTitle("SPD Clusters");
  // AliInfo(Form("Creating histos: %s, all and accepted", GetClusterVsTrackletsHistoName(trigger_name)));

  TH2F * h2 = new TH2F(GetClusterVsTrackletsHistoNameAccepted(trigger_name),TString(trigger_name)+ "(accepted)", 
		       300, -0.5, 2999.5, 1000, -0.5, 9999.5);
  h2->SetXTitle("Tracklets");
  h2->SetYTitle("SPD Clusters");

  fOutputHist->Add(h1);
  fOutputHist->Add(h2);

  TH1::AddDirectory(oldStatus);

}

void AliBackgroundSelection::BookDeltaPhiHisto(const char * trigger_name){

  // Book control histogram for the cut on the DeltaPhi window used by vertexer Z

  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  TH1F * h1 = new TH1F(GetDeltaPhiHistoName(trigger_name),trigger_name, 100,0,0.5);
  h1->SetXTitle("#Delta #phi");
  // AliInfo(Form("Creating histos: %s, all and accepted", GetDeltaPhiHistoName(trigger_name)));

  TH1F * h2 = new TH1F(GetDeltaPhiHistoNameAccepted(trigger_name),TString(trigger_name)+ "(accepted)", 100,0,0.5);
  h2->SetXTitle("#Delta #phi");


  fOutputHist->Add(h1);
  fOutputHist->Add(h2);

  TH1::AddDirectory(oldStatus);

}

TH2F * AliBackgroundSelection::GetClusterVsTrackletsHisto(const char * trigger_name){

  // Returns the control histogram corresponding to a given trigger
  // class. If it does not exist, it creates it and adds it to the
  // output list
  // All Events

  if(!fOutputHist) {AliError("List of histos not initialized");return 0;}
  TH2F * h = (TH2F*) fOutputHist->FindObject(GetClusterVsTrackletsHistoName(trigger_name));  
  if(!h) {
    BookClusterVsTrackletsHisto(trigger_name);
    h = (TH2F*) fOutputHist->FindObject(GetClusterVsTrackletsHistoName(trigger_name));  
  }
  return h;
}
TH1F * AliBackgroundSelection::GetDeltaPhiHisto(const char * trigger_name){

  // Returns the control histogram corresponding to a given trigger
  // class. If it does not exist, it creates it and adds it to the
  // output list
  // All Events

  if(!fOutputHist) {AliError("List of histos not initialized");return 0;}
  TH1F * h = (TH1F*) fOutputHist->FindObject(GetDeltaPhiHistoName(trigger_name));  
  if(!h) {
    BookDeltaPhiHisto(trigger_name);
    h  = (TH1F*) fOutputHist->FindObject(GetDeltaPhiHistoName(trigger_name));  
  }
  return h;
}

TH2F * AliBackgroundSelection::GetClusterVsTrackletsHistoAccepted(const char * trigger_name){

  // Returns the control histogram corresponding to a given trigger
  // class. If it does not exist, it creates it and adds it to the
  // output list
  // Events passing the cut only

  if(!fOutputHist) {AliError("List of histos not initialized");return 0;}
  TH2F * h = (TH2F*) fOutputHist->FindObject(GetClusterVsTrackletsHistoNameAccepted(trigger_name));
  if(!h) {
    BookClusterVsTrackletsHisto(trigger_name);
    h = (TH2F*) fOutputHist->FindObject(GetClusterVsTrackletsHistoNameAccepted(trigger_name));  
  }
  return h;
  
}

TH1F * AliBackgroundSelection::GetDeltaPhiHistoAccepted(const char * trigger_name){

  // Returns the control histogram corresponding to a given trigger
  // class. If it does not exist, it creates it and adds it to the
  // output list
  // Events passing the cut only

  if(!fOutputHist) {AliError("List of histos not initialized");return 0;}
  TH1F * h = (TH1F*) fOutputHist->FindObject(GetDeltaPhiHistoNameAccepted(trigger_name));  
  if(!h) {
    BookDeltaPhiHisto(trigger_name);
    h  = (TH1F*) fOutputHist->FindObject(GetDeltaPhiHistoNameAccepted(trigger_name));  
  }
  return h;
  
}

const char * AliBackgroundSelection::GetClusterVsTrackletsHistoName(const char * trigger_name){

  // build up the name of the cluster vs tracklets histo using the trigger class

    static TString str;
    str = ("hCvsT");
    str = str+GetName()+"_"+trigger_name;
    return str.Data();
}

const char * AliBackgroundSelection::GetClusterVsTrackletsHistoNameAccepted(const char * trigger_name){

  // build up the name of the cluster vs tracklets histo using the trigger class (accepted events)
    static TString str;
    str = ("hCvsT");
    str = str+GetName()+"_"+trigger_name + "_accepted";
    return str.Data();
}

const char * AliBackgroundSelection::GetDeltaPhiHistoName(const char * trigger_name){

  // build up the name of the delta phi histo using the trigger class


    static TString str;
    str = ("hDeltaPhi");
    str = str+GetName()+"_"+trigger_name;
    return str.Data();
}

const char * AliBackgroundSelection::GetDeltaPhiHistoNameAccepted(const char * trigger_name){

  // build up the name of the delta phi histo using the trigger class (accepted events)

    static TString str;
    str = ("hDeltaPhi");
    str = str+GetName()+"_"+trigger_name + "_accepted";
    return str.Data();
}

Long64_t AliBackgroundSelection::Merge(TCollection* const list)
{
  // Merge a list of AliBackgroundSelection objects with this (needed for
  // PROOF).
  // Returns the number of merged objects (including this).

  // We have to make sure that all the list contain the same histos in
  // the same order. We thus also have to sort the list (sorting is
  // done by name in TList).

  //AliInfo("Merging");

  if (!list)
    return 0;

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

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

  // collections of all histograms
  const Int_t nHists = 1;
  TList collections[nHists];

  Int_t count = 0;
  // 1. Sort this list
  fOutputHist->Sort();
  
  while ((obj = iter->Next())) {
    Bool_t foundDiffinThisIterStep = kFALSE;
    //    Printf("%d - %s",count, obj->GetName());
    AliBackgroundSelection* entry = dynamic_cast<AliBackgroundSelection*> (obj);
    if (entry == 0) 
      continue;

    TList * hlist = entry->fOutputHist;

    // Check if all histos in this fOutputHist are also in the one from entry and viceversa
    // Use getters to automatically book non defined histos    

    Bool_t areListsDifferent=kTRUE;
    Int_t iloop = 0;
    Int_t maxLoops = hlist->GetSize() + fOutputHist->GetSize(); // In the worst case all of the histos will be different...    
    while(areListsDifferent) {
      if(iloop>maxLoops) AliFatal("Infinite Loop?");
      iloop++;
      // sort
      hlist->Sort();
      fOutputHist->Sort();
      // loop over the largest 

      // loop over the largest 
      TObject * hist =0;
      TIterator * iterlist = 0;
      TList * thislist  = 0; // the list over which I'm iterating (i.e. the largest)
      TList * otherlist = 0; // the other list

      if (hlist->GetSize() >= fOutputHist->GetSize()) { 
	thislist  = hlist;
	otherlist = fOutputHist;
      }
      else{
	thislist  = fOutputHist;
	otherlist = hlist;	
      }
      iterlist = thislist->MakeIterator();

      while ((hist= iterlist->Next())){ 
	if(!otherlist->FindObject(hist->GetName())){
	  //AliInfo(Form("Adding object %s",hist->GetName()));
	  foundDiffinThisIterStep = kTRUE;
	  TH1 * hclone =  (TH1*) hist->Clone();
	  hclone->Reset();
	  otherlist->Add(hclone);
	}
      }

      delete iterlist;
      // re-sort before checking
      hlist->Sort();
      fOutputHist->Sort();

      // check if everything is fine    
      areListsDifferent=kFALSE;
      if (hlist->GetSize() == fOutputHist->GetSize()) {	
	Int_t nhist =  fOutputHist->GetSize();
	for(Int_t ihist = 0; ihist < nhist; ihist++){
	  if(strcmp(fOutputHist->At(ihist)->GetName(),hlist->At(ihist)->GetName())) areListsDifferent = kTRUE;
	}
      } else {
	areListsDifferent=kTRUE;
      }
    }

    // last check: if something is not ok die loudly 
    if (hlist->GetSize() != fOutputHist->GetSize()) {
      AliFatal("Mismatching size!");
    }
    Int_t nhist =  fOutputHist->GetSize();
    for(Int_t ihist = 0; ihist < nhist; ihist++){
      if(strcmp(fOutputHist->At(ihist)->GetName(),hlist->At(ihist)->GetName())){
	AliFatal(Form("Mismatching histos: %s -> %s", fOutputHist->At(ihist)->GetName(),hlist->At(ihist)->GetName()));
      }
    }

    if (foundDiffinThisIterStep){
      iter->Reset(); // We found a difference: previous lists could
		     // also be affected... We start from scratch
      Int_t n = 0;
      collections[n++].Clear();
      count = 0;
    }
    else {
//       AliInfo("hlist");
//       hlist->Print();
//       AliInfo("fOutputHist");
//       fOutputHist->Print();
      
      Int_t n = 0;
      collections[n++].Add(hlist);
      
      count++;
    }
  }

  Int_t n = 0;
  fOutputHist->Merge(&collections[n++]);
  
  delete iter;

  return count+1;
}


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