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$ */
// The trigger parametrization is computed for background levels 0., 0.5 and 1.
// In order to set a background level different from 0 it is necessary to 
// explicitly force it with:
// ForceBkgLevel(BkgLevel).
// For intermediate background levels, the trigger response is linearly 
// interpolated between these values.
// There is increased granularity in the pT region below 3 GeV. Although
// it does not seem to be necessary it is also possible to interpolate
// between pT bins using SetInt().
// Author: Pietro Cortese (Universita' del Piemonte Orientale - Alessandria 
// and INFN of Torino)


#include "AliFastMuonTriggerEff.h"
#include "TROOT.h"
#include "TFile.h"
#include "stdlib.h"
#include "TH3.h"
#include "TObjString.h"

#define PLIN printf("%s: %d: ",__FILE__,__LINE__)

ClassImp(AliFastMuonTriggerEff)

AliFastMuonTriggerEff::AliFastMuonTriggerEff():
    AliFastResponse("Efficiency", "Muon Trigger Efficiency"),
    fPtMin(0.),
    fPtMax(0.),
    fDpt(0.),
    fnptb(0),
    fPhiMin(0.),
    fPhiMax(0.),
    fDphi(0.),
    fnphib(0),
    fThetaMin(0.),
    fThetaMax(0.),
    fDtheta(0.),
    fnthetab(0),
    fCut(kLow),
    fZones(0),
    fhEffAPt(0),
    fhEffLPt(0),
    fhEffHPt(0),
    fhLX(0),
    fhLY(0),
    fhLZ(0),
    fBkg(0.),
    fTableTitle(0),
    fDescription(0),
    fInt(0),
    fibx(0),
    fiby(0),
    fibz(0)
{
//
// Default constructor
//
}

AliFastMuonTriggerEff::AliFastMuonTriggerEff(const char* Name, const char* Title):
    AliFastResponse(Name, Title),
    fPtMin(0.),
    fPtMax(0.),
    fDpt(0.),
    fnptb(0),
    fPhiMin(0.),
    fPhiMax(0.),
    fDphi(0.),
    fnphib(0),
    fThetaMin(0.),
    fThetaMax(0.),
    fDtheta(0.),
    fnthetab(0),
    fCut(kLow),
    fZones(0),
    fhEffAPt(0),
    fhEffLPt(0),
    fhEffHPt(0),
    fhLX(0),
    fhLY(0),
    fhLZ(0),
    fBkg(0.),
    fTableTitle(0),
    fDescription(0),
    fInt(0),
    fibx(0),
    fiby(0),
    fibz(0)
{
// Another constructor
}

AliFastMuonTriggerEff::AliFastMuonTriggerEff(const AliFastMuonTriggerEff& eff)
    :AliFastResponse(eff),
    fPtMin(0.),
    fPtMax(0.),
    fDpt(0.),
    fnptb(0),
    fPhiMin(0.),
    fPhiMax(0.),
    fDphi(0.),
    fnphib(0),
    fThetaMin(0.),
    fThetaMax(0.),
    fDtheta(0.),
    fnthetab(0),
    fCut(kLow),
    fZones(0),
    fhEffAPt(0),
    fhEffLPt(0),
    fhEffHPt(0),
    fhLX(0),
    fhLY(0),
    fhLZ(0),
    fBkg(0.),
    fTableTitle(0),
    fDescription(0),
    fInt(0),
    fibx(0),
    fiby(0),
    fibz(0)
{
// Copy constructor
    eff.Copy(*this);
}

void AliFastMuonTriggerEff::SetCut(Int_t cut) 
{  
  //
  // Set the pt cut
  if(cut==kLow){
    printf("Selecting Low Pt cut\n");
  }else if(cut==kHigh){
    printf("Selecting High Pt cut\n");
  }else if(cut==kAny){
    printf("Selecting Lowest Pt cut\n");
  }else{
    printf("Don't know cut %d! Selecting Low Pt cut\n",cut);
    cut=kLow;
  }
  fCut = cut;
  
}

Int_t AliFastMuonTriggerEff::SetBkgLevel(Float_t Bkg)
{
  //
  // Set the background level
  //
    if((Bkg!=0.)) {
       printf("%s: Warning: requested Bkg: %f\n",
       __FILE__,Bkg);
       fBkg=0.;
       printf("A consistent treatement of the trigger probability\n");
       printf("within the framework of the fast simulation requires\n");
       printf("requires background 0\n");
       printf("%s: fBkg: set to %f\n",
       __FILE__,fBkg);
    } else {
      fBkg=Bkg;
    }
    if(fZones!=0.) {
	Init();
    }
    return 0;
}

Int_t AliFastMuonTriggerEff::ForceBkgLevel(Float_t Bkg)
{
  //
  // Check and enforce consistency of the background level 
  // 
    if((Bkg!=0.)) {
       printf("%s: Warning: requested Bkg: %f\n",
       __FILE__,Bkg);
       printf("A consistent treatement of the trigger probability\n");
       printf("within the framework of the fast simulation\n");
       printf("requires background 0");
       printf("%s: Continue with fBkg: %f\n",
       __FILE__,Bkg);
    }
    fBkg=Bkg;
    if(fZones!=0.) {
	Init();
    }
    return 0;
}

Int_t AliFastMuonTriggerEff::LoadTables(const Char_t *namet){
  //
  // Load the trigger tables
  //
    Char_t hNameA[100],hNameL[100],hNameH[100];
    snprintf(hNameA, 100, "hEffAPt%s",namet);
    snprintf(hNameL, 100, "hEffLPt%s",namet);
    snprintf(hNameH, 100, "hEffHPt%s",namet);
    fhEffAPt = (TH3F*)gDirectory->Get(hNameA);
    fhEffLPt = (TH3F*)gDirectory->Get(hNameL);
    fhEffHPt = (TH3F*)gDirectory->Get(hNameH);
    if(!fhEffAPt){
      PLIN; printf("%s: histogram %s not found\n",__FILE__,hNameA);
      return -1;
    }
    if(!fhEffLPt){
      PLIN; printf("%s: histogram %s not found\n",__FILE__,hNameL);
      return -2;
    }
    if(!fhEffHPt){
      PLIN; printf("%s: histogram %s not found\n",__FILE__,hNameH);
      return -3;
    }
    return 0;
}

void AliFastMuonTriggerEff::Init()
{
//
//  Initialization
//
    fZones=0;
    Char_t file[100]="$(ALICE_ROOT)/FASTSIM/data/MUONtriggerLUT_V2.4nvdn.root";
    printf("Initializing %s / %s\n", fName.Data(), fTitle.Data());
    printf("using data from file: %s\n",file);
    printf("AliFastMuonTriggerEff: Initialization with background level: %f\n",fBkg);
    TFile *f = new TFile(file);
    if(f->IsZombie()) {
        PLIN; printf("Cannot open file: %s\n",file);
        return;
    }
    f->ls();
    Int_t intb=0;
    Char_t namet[10];
    if(TMath::Abs(fBkg)<0.00001){
      snprintf(namet, 10, "00");
    }else if(TMath::Abs(fBkg-0.5)<0.00001){
      snprintf(namet, 10, "05");
    }else if(TMath::Abs(fBkg-1.0)<0.00001){
      snprintf(namet, 10, "10");
    }else{
      PLIN; printf("A table for Bkg level: %f does not exists\n",fBkg);
      intb=1;
    }
    if(intb){ // Interpolation between background levels
      PLIN; printf("Interpolating Bkg level: %f\n",fBkg);
      TH3F* ha1,*hl1,*hh1,*ha2,*hl2,*hh2,*ha0,*hl0,*hh0;
      Char_t name1[10],name2[10]; Float_t b1,b2;
      if(fBkg>0&&fBkg<0.5){
        snprintf(name1,10, "00");
        snprintf(name2,10, "05");
	b1=0.;
	b2=0.5;
      }else if(fBkg>0.5){
        snprintf(name1, 10, "05");
        snprintf(name2, 10, "10");
	b1=0.5;
	b2=1.0;
	if(fBkg>1.0){
	  for(Int_t i=0; i<10;i++){
	    PLIN; printf("WARNING!!!! You are extrapolating above background 1.0\n");
	  }
	}
      }else{
        PLIN; printf("Bkg level: %f is not supported\n",fBkg);
        return;
      }
      if(LoadTables(name1)){
        PLIN; printf("Error in loading trigger tables\n");
	return;
      }
      PLIN; printf("We use tables for %f and %f to interpolate %f Bkg level\n",b1,b2,fBkg);
      ha0=(TH3F*)fhEffAPt->Clone("hEffAPtXX"); ha0->Reset();
      hl0=(TH3F*)fhEffLPt->Clone("hEffLPtXX"); hl0->Reset();
      hh0=(TH3F*)fhEffHPt->Clone("hEffHPtXX"); hh0->Reset();
      ha1=fhEffAPt;
      hl1=fhEffLPt;
      hh1=fhEffHPt;
      if(LoadTables(name2)){
        PLIN; printf("Error in loading trigger tables\n");
	return;
      }
      ha2=fhEffAPt;
      hl2=fhEffLPt;
      hh2=fhEffHPt;
      fhEffAPt=ha0;
      fhEffLPt=hl0;
      fhEffHPt=hh0;
      Int_t nnx=ha0->GetNbinsX()+1;
      Int_t nny=ha0->GetNbinsY()+1;
      Int_t nnz=ha0->GetNbinsZ()+1;
      for(Int_t ix=0; ix<=nnx; ix++){
	for(Int_t iy=0; iy<=nny; iy++){
	  for(Int_t iz=0; iz<=nnz; iz++){
	    Double_t y1,y2; Float_t cont;
	    y1=ha1->GetBinContent(ix,iy,iz); y2=ha2->GetBinContent(ix,iy,iz);
	    cont=Float_t(y1+(y2-y1)/(b2-b1)*(fBkg-b1)); if(cont>1)cont=1; if(cont<0)cont=0;
	    fhEffAPt->SetBinContent(ix,iy,iz,cont);
	    y1=hl1->GetBinContent(ix,iy,iz); y2=hl2->GetBinContent(ix,iy,iz);
	    cont=Float_t(y1+(y2-y1)/(b2-b1)*(fBkg-b1)); if(cont>1)cont=1; if(cont<0)cont=0;
	    fhEffLPt->SetBinContent(ix,iy,iz,cont);
	    y1=hh1->GetBinContent(ix,iy,iz); y2=hh2->GetBinContent(ix,iy,iz);
	    cont=Float_t(y1+(y2-y1)/(b2-b1)*(fBkg-b1)); if(cont>1)cont=1; if(cont<0)cont=0;
	    fhEffHPt->SetBinContent(ix,iy,iz,cont);
	  }
	}
      }
    }else{ // Use tables computed for selected backgound levels
      printf("Loading tables for background level: %f\n",fBkg);
      if(LoadTables(namet)){
        PLIN; printf("Error in loading trigger tables\n");
	return;
      }
    }
    fhEffAPt->SetDirectory(0);
    fhEffLPt->SetDirectory(0);
    fhEffHPt->SetDirectory(0);
    fhLX=fhEffLPt->GetXaxis();
    fhLY=fhEffLPt->GetYaxis();
    fhLZ=fhEffLPt->GetZaxis();
//
//
    if(f->Get("Description"))
    {
      fDescription=((TObjString*)f->Get("Description"))->GetString();
      printf("%s\n",fDescription.Data());
    }

    fThetaMin = fhEffLPt->GetXaxis()->GetXmin();
    fThetaMax = fhEffLPt->GetXaxis()->GetXmax();
    fnthetab=fhEffLPt->GetNbinsX();
    fDtheta   = (fThetaMax-fThetaMin)/fnthetab;

    fPhiMin   = fhEffLPt->GetYaxis()->GetXmin();
    fPhiMax   = fhEffLPt->GetYaxis()->GetXmax();
    fnphib=fhEffLPt->GetNbinsY();
    fDphi     = (fPhiMax-fPhiMin)/fnphib;

    fPtMin=fhEffLPt->GetZaxis()->GetXmin();
    fPtMax=fhEffLPt->GetZaxis()->GetXmax();
    fnptb=fhEffLPt->GetNbinsZ();
    fDpt      = (fPtMax-fPtMin)/fnptb;

    printf("***** This version of AliFastMuonTriggerEff can use both *****\n");
    printf("***** new and old ALICE reference frames depending on    *****\n");
    printf("***** which LUT has been loaded. You can find below some *****\n");
    printf("***** information on the current parametrization:        *****\n");
    printf("%4d bins in theta [%f:%f]\n",fnthetab,fThetaMin,fThetaMax);
    printf("%4d bins in phi [%f:%f]\n",fnphib,fPhiMin,fPhiMax);
    printf("%4d bins in pt [%f:%f]\n",fnptb,fPtMin,fPtMax);

    fZones=fnthetab*fnphib;

    f->Close();
    if(fInt==0) {
      printf("Interpolation of trigger efficiencies is off!\n");
    } else {
      printf("Interpolation of trigger efficiencies is on!\n");
    }
}

void AliFastMuonTriggerEff::Evaluate(Float_t charge, Float_t pt,Float_t theta,
              Float_t phi, Float_t& effLow, Float_t& effHigh, Float_t& effAny)
{
    //
    //  Trigger efficiency for pt, theta, phi (low, high and "any" cut)
    //
#ifdef MYTRIGDEBUG
    printf("Evaluate(ch=%2.0f, pt=%10.6f, theta=%7.2f, phi=%8.2f ...)\n",charge,pt,theta,phi);
#endif
    effLow=0.;
    effHigh=0.;
    effAny=0;
    if(fZones==0) {
        printf("Call to uninitialized object of class: AliFastMuonTriggerEff\n");
	return;
    }
    if(pt<0) {
        printf("Warning: pt: %f < 0. GeV/c\n",pt);
	return;	
    }

    Int_t iPt   = fhLZ->FindBin((Double_t)pt);
    if(iPt>fnptb)iPt=fnptb;
    Int_t iPhi  = Int_t((phi-fPhiMin)/fDphi);
    if(phi<fPhiMin)iPhi=iPhi-1;
    Int_t iTheta = fhLX->FindBin((Double_t)theta);
#ifdef MYTRIGDEBUG
    printf("Evaluate(ch=%2.0f, pt=%10.6f, theta=%7.2f, phi=%8.2f ...)\n",charge,pt,theta,phi);
    printf(" 0:%1d iPt iTheta iPhi: %d %d %d\n",fInt,iPt,iTheta,iPhi);
#endif
    iPhi=iPhi-2*fnphib*(iPhi/(2*fnphib));
#ifdef MYTRIGDEBUG
    printf(" 1:%1d iPhi converted to: %d for angle equivalence\n",fInt,iPhi);
#endif
    if(iPhi<0)iPhi=-iPhi-1;
    if(iPhi>(fnphib-1))iPhi=2*fnphib-1-iPhi;
#ifdef MYTRIGDEBUG
    printf(" 2:%1d iPhi converted to: %d for the symmetry of the spectrometer\n",fInt,iPhi);
#endif
    if(charge==1.){
    } else if(charge==-1.) {
    iPhi=fnphib-1-iPhi;
#ifdef MYTRIGDEBUG
    printf(" 3:%1d iPhi converted to: %d for the charge symmetry\n",fInt,iPhi);
#endif
    } else {
        printf("Warning: not understand charge: %f\n",charge);
        return;
    }
    if(iTheta<=0||iTheta>fnthetab) {
        printf("Warning: theta: %f outside acceptance\n",theta);
        return;
    }
    if(iPt<0) {
        printf("Warning: what do you mean with pt: %f <0?\n",pt);
	return;
    }
    iPhi++;
#ifdef MYTRIGDEBUG
    printf(" 4:%1d Getting: iTheta, iPhi, iPt: %d %d %d\n",
              fInt,iTheta,iPhi,iPt);
#endif
    effLow =fhEffLPt->GetBinContent(iTheta,iPhi,iPt);
    effHigh=fhEffHPt->GetBinContent(iTheta,iPhi,iPt);
    effAny =fhEffAPt->GetBinContent(iTheta,iPhi,iPt);
#ifdef MYTRIGDEBUG
    printf(" 4:%1d Result: charge, iTheta, iPhi, iPt: %f %d %d %d effLow: %f, effHigh: %f, effAny: %f\n",
              fInt,charge,iTheta,iPhi,iPt,effLow,effHigh,effAny);
#endif
        
    if(fInt==1) {
      Float_t angl,angh,anga;
      Float_t effLowp,effHighp,effAnyp;
      Float_t ptc=(iPt+0.5)*fDpt;  // The center of current bin
      #ifdef MYTRIGDEBUG
        printf(" 5:1 The center of current bin iPt: %d is: %f\n",iPt,ptc);
      #endif
      if(iPt==fnptb) {
        #ifdef MYTRIGDEBUG
	printf(" 6:1 No more points above! No interpolation is needed!\n");
        #endif
	return;        
      }else if(TMath::Abs(ptc-pt) < 1.e-10){
        #ifdef MYTRIGDEBUG
	  printf(" 6:1 No interpolation is needed!\n");
        #endif
	return;
      }else if(ptc>pt){
	// Looking for previous point
        if(iPt>1) {
          effLowp =fhEffLPt->GetBinContent(iTheta,iPhi,iPt-1);
          effHighp=fhEffHPt->GetBinContent(iTheta,iPhi,iPt-1);
          effAnyp =fhEffAPt->GetBinContent(iTheta,iPhi,iPt-1);
          #ifdef MYTRIGDEBUG
	  printf(" 7:1 A simple look to previous point: %d: %f %f\n",iPt-1,effLowp,effHighp);
          #endif
	} else {
	  effLowp=0.;
	  effHighp=0.;
          effAnyp=0;
          #ifdef MYTRIGDEBUG
          printf(" 8:1 result is: %f %f %f\n",effLowp,effHighp,effAnyp);
	  #endif	  
	}
        angl=(effLow-effLowp)/fDpt;
        angh=(effHigh-effHighp)/fDpt;
        anga=(effAny-effAnyp)/fDpt;
      }else{
	// Looking for next point
	if(iPt<fnptb) {
          effLowp =fhEffLPt->GetBinContent(iTheta,iPhi,iPt+1);
          effHighp=fhEffHPt->GetBinContent(iTheta,iPhi,iPt+1);
          effAnyp =fhEffAPt->GetBinContent(iTheta,iPhi,iPt+1);
          #ifdef MYTRIGDEBUG
	  printf(" 7:1 A simple look to next point: %d: %f %f %f\n",iPt-1,effLowp,effHighp,effAnyp);
          #endif
	} else {
	  effLowp=effLow;
	  effHighp=effHigh;
	  effAnyp=effAny;
          #ifdef MYTRIGDEBUG
          printf(" 8:1 result is: pt: %f %f %f\n",effLowp,effHighp,effAnyp);
	  #endif	  
        }
        angl=(effLowp-effLow)/fDpt;
        angh=(effHighp-effHigh)/fDpt;
        anga=(effAnyp-effAny)/fDpt;
      }
      effLow=effLow+angl*(pt-ptc);
      effHigh=effHigh+angh*(pt-ptc);
      effAny=effAny+anga*(pt-ptc);
      #ifdef MYTRIGDEBUG
      printf(" 9:1 the interpolation coefficients are: %f %f %f\n",angl,angh,anga);
      #endif
  }
  #ifdef MYTRIGDEBUG
  printf("10:%1d effLow, effHigh=%f %f %f\n",fInt,effLow,effHigh,effAny);
  #endif
  return;
}



Float_t AliFastMuonTriggerEff::Evaluate(Float_t charge, Float_t pt,
                   Float_t theta, Float_t phi)
{
    //
    // Trigger efficiency for pt, theta, phi depending of fCut
    // 
    if(fZones==0) {
        printf("Call to uninitialized object of class: AliFastMuonTriggerEff\n");
	return 0.;
    }
    Float_t eff;
    Float_t effLow, effHigh, effAny;
    
    Evaluate(charge,pt,theta,phi,effLow,effHigh,effAny);
    if (fCut == kLow) 
	eff  = effLow;
    else if (fCut == kHigh)
	eff  = effHigh;
    else if (fCut == kAny)
        eff  = effAny;
    else
        eff  = 0;

    return eff;
}

AliFastMuonTriggerEff& AliFastMuonTriggerEff::operator=(const  AliFastMuonTriggerEff& rhs)
{
// Assignment operator
    rhs.Copy(*this);
    return *this;
}

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