ROOT logo
/* $Id: AliTriggerAnalysis.cxx 35782 2009-10-22 11:54:31Z jgrosseo $ */

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

//-------------------------------------------------------------------------
//                      Implementation of   Class AliTriggerAnalysis
//   This class provides function to check if events have been triggered based on the data in the ESD
//   The trigger bits, trigger class inputs and only the data (offline trigger) can be used
//   Origin: Jan Fiete Grosse-Oetringhaus, CERN
//-------------------------------------------------------------------------

#include "TH1F.h"
#include "TH2F.h"
#include "TList.h"
#include "TIterator.h"
#include "TParameter.h"
#include "TMap.h"
#include "TRandom.h"
#include "AliTriggerAnalysis.h"
#include "AliLog.h"
#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliMultiplicity.h"
#include "AliESDVZERO.h"
#include "AliESDZDC.h"
#include "AliESDFMD.h"
#include "AliESDVertex.h"
#include "AliESDtrackCuts.h"
#include "AliDAQ.h"
#include "AliESDTrdTrack.h"
#include "AliVCaloTrigger.h"

ClassImp(AliTriggerAnalysis)

AliTriggerAnalysis::AliTriggerAnalysis() :
fSPDGFOThreshold(2),
fSPDGFOEfficiency(0),
fV0TimeOffset(0),
fV0AdcThr(0),
fV0HwAdcThr(2.5),
fV0HwWinLow(61.5),
fV0HwWinHigh(86.5),
fZDCCutRefSum(-568.5),
fZDCCutRefDelta(-2.1),
fZDCCutSigmaSum(3.25),
fZDCCutSigmaDelta(2.25),
fZDCCutRefSumCorr(-65.5),
fZDCCutRefDeltaCorr(-2.1),
fZDCCutSigmaSumCorr(6.0),
fZDCCutSigmaDeltaCorr(1.2),
fZDCCutZNATimeCorrMin(0.0),
fZDCCutZNATimeCorrMax(2.0),
fZDCCutZNCTimeCorrMin(0.0),
fZDCCutZNCTimeCorrMax(5.0),
fASPDCvsTCut(65),
fBSPDCvsTCut(4),
fTRDptHSE(3.),
fTRDpidHSE(144),
fTRDptHQU(2.),
fTRDpidHQU(164.),
fTRDptHEE(3.),
fTRDpidHEE(144),
fTRDminSectorHEE(6),
fTRDmaxSectorHEE(8),
fTRDptHJT(3.),
fTRDnHJT(3),
fDoFMD(kTRUE),
fFMDLowCut(0.2),
fFMDHitCut(0.5),
fHistBitsSPD(0),
fHistFiredBitsSPD(0),
fHistSPDClsVsTrk(0),
fHistV0A(0),
fHistV0C(0),
fHistZDC(0),
fHistTDCZDC(0),
fHistTimeZDC(0),
fHistTimeCorrZDC(0),
fHistFMDA(0),
fHistFMDC(0),
fHistFMDSingle(0),
fHistFMDSum(0),
fHistT0(0),
fTriggerClasses(0),
fMC(kFALSE),
fEsdTrackCuts(0),
fTPCOnly(kFALSE)
{
  // constructor
}

//-------------------------------------------------------------------------------------------------
AliTriggerAnalysis::~AliTriggerAnalysis(){
  // destructor
  if (fHistBitsSPD)      { delete fHistBitsSPD;      fHistBitsSPD = 0;      }
  if (fHistFiredBitsSPD) { delete fHistFiredBitsSPD; fHistFiredBitsSPD = 0; }
  if (fHistSPDClsVsTrk)  { delete fHistSPDClsVsTrk;  fHistSPDClsVsTrk = 0;  }
  if (fHistV0A)          { delete fHistV0A;          fHistV0A = 0;          }
  if (fHistV0C)          { delete fHistV0C;          fHistV0C = 0;          }
  if (fHistZDC)          { delete fHistZDC;          fHistZDC = 0;          }
  if (fHistTDCZDC)       { delete fHistTDCZDC;       fHistTDCZDC = 0;       }
  if (fHistTimeZDC)      { delete fHistTimeZDC;      fHistTimeZDC = 0;      }
  if (fHistTimeCorrZDC)  { delete fHistTimeCorrZDC;  fHistTimeCorrZDC = 0;  }
  if (fHistFMDA)         { delete fHistFMDA;         fHistFMDA = 0;         }
  if (fHistFMDC)         { delete fHistFMDC;         fHistFMDC = 0;         }
  if (fHistFMDSingle)    { delete fHistFMDSingle;    fHistFMDSingle = 0;    }
  if (fHistFMDSum)       { delete fHistFMDSum;       fHistFMDSum = 0;       }
  if (fHistT0)           { delete fHistT0;           fHistT0 = 0;           }
  if (fEsdTrackCuts)     { delete fEsdTrackCuts;     fEsdTrackCuts =0;      }
  if (fTriggerClasses)   { fTriggerClasses->DeleteAll(); delete fTriggerClasses; fTriggerClasses = 0; }
}


//-------------------------------------------------------------------------------------------------
void AliTriggerAnalysis::EnableHistograms(Bool_t isLowFlux){
  // creates the monitoring histograms 
  // dynamical range of histograms can be adapted for pp and pPb via isLowFlux flag)
  // TODO check limits for FMD
  
  Int_t nBins  = isLowFlux ?  600 : 1202;
  Int_t nBinsX = isLowFlux ?  100 :  300;
  Int_t nBinsY = isLowFlux ?  500 : 1000;
  Float_t xMax = isLowFlux ?  400 : 2999.5;
  Float_t yMax = isLowFlux ? 4000 : 9999.5;
  
  // do not add these hists to the directory
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE); 
  fHistBitsSPD      = new TH2F("fHistBitsSPD", "SPD GFO;number of fired chips (offline);number of fired chips (hardware)", nBins, -1.5, -1.5 + nBins, nBins, -1.5, -1.5+nBins);
  fHistFiredBitsSPD = new TH1F("fHistFiredBitsSPD", "SPD GFO Hardware;chip number;events", 1200, -0.5, 1199.5);
  fHistSPDClsVsTrk  = new TH2F("fHistSPDClsVsTrk", "SPD Clusters vs Tracklets; n tracklets; n clusters", nBinsX, -0.5, xMax, nBinsY, -0.5, yMax);
  fHistV0A          = new TH1F("fHistV0A", "V0A;leading time (ns);events", 400, -100, 100);
  fHistV0C          = new TH1F("fHistV0C", "V0C;leading time (ns);events", 400, -100, 100);
  fHistZDC          = new TH1F("fHistZDC", "ZDC;trigger bits;events", 8, -1.5, 6.5);
  fHistTDCZDC       = new TH1F("fHistTDCZDC", "ZDC;TDC bits;events", 32, -0.5, 32-0.5);
  fHistTimeZDC      = new TH2F("fHistTimeZDC", "ZDC;TDC timing C-A;TDC timing C+A", 120,-30,30,120,-600,-540);
  fHistTimeCorrZDC  = new TH2F("fHistTimeCorrZDC", "ZDC;Corrected TDC timing C-A; Corrected TDC timing C+A", 120,-30,30,260,-100,30);
  fHistFMDA         = new TH1F("fHistFMDA", "FMDA;combinations above threshold;events", 102, -1.5, 100.5);
  fHistFMDC         = new TH1F("fHistFMDC", "FMDC;combinations above threshold;events", 102, -1.5, 100.5);
  fHistFMDSingle    = new TH1F("fHistFMDSingle", "FMD single;multiplicity value;counts", 1000, 0, 10);
  fHistFMDSum       = new TH1F("fHistFMDSum", "FMD sum;multiplicity value;counts", 1000, 0, 10);
  fHistT0           = new TH1F("fHistT0", "T0;time (ns);events", 100, -25, 25);
  fTriggerClasses = new TMap;
  fTriggerClasses->SetOwner();
  TH1::AddDirectory(oldStatus);
}


//-------------------------------------------------------------------------------------------------
const char* AliTriggerAnalysis::GetTriggerName(Trigger trigger){
  // returns the name of the requested trigger
  // the returned string will only be valid until the next call to this function [not thread-safe]
  
  static TString str;
  
  UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) kStartOfFlags;
  
  switch (triggerNoFlags)  {
    case kAcceptAll :      str = "ACCEPT ALL (bypass!)";      break;
    case kMB1 :            str = "MB1";                       break;
    case kMB2 :            str = "MB2";                       break;
    case kMB3 :            str = "MB3";                       break;
    case kSPDGFO :         str = "SPD GFO";                   break;
    case kSPDGFOBits :     str = "SPD GFO Bits";              break;
    case kSPDGFOL0 :       str = "SPD GFO L0 (first layer)";  break;
    case kSPDGFOL1 :       str = "SPD GFO L1 (second layer)"; break;
    case kSPDClsVsTrkBG :  str = "Cluster vs Tracklets";      break;
    case kV0A :            str = "V0 A BB";                   break;
    case kV0C :            str = "V0 C BB";                   break;
    case kV0OR :           str = "V0 OR BB";                  break;
    case kV0AND :          str = "V0 AND BB";                 break;
    case kV0ABG :          str = "V0 A BG";                   break;
    case kV0CBG :          str = "V0 C BG";                   break;
    case kZDC :            str = "ZDC";                       break;
    case kZDCA :           str = "ZDC A";                     break;
    case kZDCC :           str = "ZDC C";                     break;
    case kZNA :            str = "ZN A";                      break;
    case kZNC :            str = "ZN C";                      break;
    case kZNABG :          str = "ZN A BG";                   break;
    case kZNCBG :          str = "ZN C BG";                   break;
    case kFMDA :           str = "FMD A";                     break;
    case kFMDC :           str = "FMD C";                     break;
    case kFPANY :          str = "SPD GFO | V0 | ZDC | FMD";  break;
    case kNSD1 :           str = "NSD1";                      break;
    case kMB1Prime:        str = "MB1prime";                  break;
    case kZDCTDCA :        str = "ZDC TDC A";                 break;
    case kZDCTDCC :        str = "ZDC TDC C";                 break;
    case kZDCTime :        str = "ZDC Time Cut";              break;
    case kCentral :        str = "V0 Central";                break;
    case kSemiCentral :    str = "V0 Semi-central";           break;
    case kEmcalL0 :        str = "EMCAL";                     break;
    case kTRDHCO :         str = "TRD cosmics";               break;
    case kTRDHJT :         str = "TRD Jet";                   break;
    case kTRDHSE :         str = "TRD Single Electron";       break;
    case kTRDHQU :         str = "TRD Quarkonia";             break;
    case kTRDHEE :         str = "TRD Dielectron";            break;
    default:               str = "";                          break;
  }
  if (trigger & kOfflineFlag) str += " OFFLINE";  
  if (trigger & kOneParticle) str += " OneParticle";  
  if (trigger & kOneTrack)    str += " OneTrack";  
  return str;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsTriggerFired(const AliESDEvent* aEsd, Trigger trigger){
  // checks if an event has been triggered
  if (trigger & kOfflineFlag) return IsOfflineTriggerFired(aEsd, trigger);
  return IsTriggerBitFired(aEsd, trigger);
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsTriggerBitFired(const AliESDEvent* /*aEsd*/, Trigger /*trigger*/) const { 
  AliFatal("This IsTriggerBitFired function is obsolete.\n"); 
  return 0; 
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsTriggerBitFired(const AliESDEvent* aEsd, ULong64_t tclass) const {
  // Checks if corresponding bit in mask is on
  ULong64_t trigmask = aEsd->GetTriggerMask();
  return (trigmask & (1ull << (tclass-1)));
}


//-------------------------------------------------------------------------------------------------
Int_t AliTriggerAnalysis::EvaluateTrigger(const AliESDEvent* aEsd, Trigger trigger){
  // evaluates a given trigger
  // trigger combinations are not supported, for that see IsOfflineTriggerFired

  UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) kStartOfFlags;
  Bool_t offline = trigger & kOfflineFlag;
  
  if (!offline) {
    if ( triggerNoFlags==kT0BG
      || triggerNoFlags==kT0Pileup
      || triggerNoFlags==kSPDClsVsTrkBG
      || triggerNoFlags==kZDCA
      || triggerNoFlags==kZDCC
      || triggerNoFlags==kZDCTDCA
      || triggerNoFlags==kZDCTDCC
      || triggerNoFlags==kZDCTime
      || triggerNoFlags==kZNA
      || triggerNoFlags==kZNC
      || triggerNoFlags==kZNABG
      || triggerNoFlags==kZNCBG
      || triggerNoFlags==kFMDA
      || triggerNoFlags==kFMDC
      || triggerNoFlags==kTPCLaserWarmUp
      || triggerNoFlags==kTPCHVdip
      || triggerNoFlags==kIncompleteEvent
      || triggerNoFlags==kEMCAL
      || triggerNoFlags==kEmcalL0
      || triggerNoFlags==kEmcalL1GammaHigh
      || triggerNoFlags==kEmcalL1GammaLow
      || triggerNoFlags==kEmcalL1JetHigh
      || triggerNoFlags==kEmcalL1JetLow
      || triggerNoFlags==kTRDHCO
      || triggerNoFlags==kTRDHJT
      || triggerNoFlags==kTRDHSE
      || triggerNoFlags==kTRDHQU
      || triggerNoFlags==kTRDHEE
      ) AliFatal(Form("Online trigger not available for trigger %d", triggerNoFlags));
  } else {
    if (  triggerNoFlags==kCTPV0A 
        ||triggerNoFlags==kCTPV0C
        ||triggerNoFlags==kCentral
        ||triggerNoFlags==kSemiCentral
      ) AliFatal(Form("Offline trigger not available for trigger %d", triggerNoFlags));
  }
  
  switch (triggerNoFlags) {
    case kCTPV0A:          return aEsd->GetHeader()->IsTriggerInputFired("V0A");
    case kCTPV0C:          return aEsd->GetHeader()->IsTriggerInputFired("V0C");
    case kSPDGFO:          return SPDFiredChips(aEsd, !offline, kFALSE, 0); 
    case kSPDGFOL0:        return SPDFiredChips(aEsd, !offline, kFALSE, 1);
    case kSPDGFOL1:        return SPDFiredChips(aEsd, !offline, kFALSE, 2);
    case kSPDClsVsTrkBG:   return IsSPDClusterVsTrackletBG(aEsd);
    case kV0A:             return V0Trigger(aEsd, kASide, !offline) == kV0BB; 
    case kV0C:             return V0Trigger(aEsd, kCSide, !offline) == kV0BB;
    case kV0ABG:           return V0Trigger(aEsd, kASide, !offline) == kV0BG;
    case kV0CBG:           return V0Trigger(aEsd, kCSide, !offline) == kV0BG;
    case kT0:              return T0Trigger(aEsd, !offline) == kT0BB;
    case kT0BG:            return T0Trigger(aEsd, !offline) == kT0DecBG;
    case kT0Pileup:        return T0Trigger(aEsd, !offline) == kT0DecPileup;
    case kZDCA:            return ZDCTrigger(aEsd, kASide);
    case kZDCC:            return ZDCTrigger(aEsd, kCSide);
    case kZDCTDCA:         return ZDCTDCTrigger(aEsd, kASide);
    case kZDCTDCC:         return ZDCTDCTrigger(aEsd, kCSide);
    case kZDCTime:         return ZDCTimeTrigger(aEsd);
    case kZNA:             return ZDCTDCTrigger(aEsd,kASide,kTRUE,kFALSE,kFALSE);
    case kZNC:             return ZDCTDCTrigger(aEsd,kCSide,kTRUE,kFALSE,kFALSE);
    case kZNABG:           return ZDCTimeBGTrigger(aEsd,kASide);
    case kZNCBG:           return ZDCTimeBGTrigger(aEsd,kCSide);
    case kFMDA:            return FMDTrigger(aEsd, kASide);
    case kFMDC:            return FMDTrigger(aEsd, kCSide);
    case kTPCLaserWarmUp:  return IsLaserWarmUpTPCEvent(aEsd);
    case kTPCHVdip:        return IsHVdipTPCEvent(aEsd);
    case kIncompleteEvent: return IsIncompleteEvent(aEsd);
    case kEMCAL:           return EMCALCellsTrigger(aEsd);
    case kEmcalL0:         return EMCALTrigger(aEsd,kEmcalL0);
    case kEmcalL1GammaHigh:return EMCALTrigger(aEsd,kEmcalL1GammaHigh);
    case kEmcalL1GammaLow: return EMCALTrigger(aEsd,kEmcalL1GammaLow);
    case kEmcalL1JetHigh:  return EMCALTrigger(aEsd,kEmcalL1JetHigh);
    case kEmcalL1JetLow:   return EMCALTrigger(aEsd,kEmcalL1JetLow);
    case kTRDHCO:          return TRDTrigger(aEsd,kTRDHCO);
    case kTRDHJT:          return TRDTrigger(aEsd,kTRDHJT);
    case kTRDHSE:          return TRDTrigger(aEsd,kTRDHSE);
    case kTRDHQU:          return TRDTrigger(aEsd,kTRDHQU);
    case kTRDHEE:          return TRDTrigger(aEsd,kTRDHEE);
    case kCentral: {
      if (!aEsd->GetVZEROData()) { AliWarning("V0 centrality trigger bits were not filled!"); return kFALSE; }
      if (!aEsd->GetVZEROData()->TestBit(AliESDVZERO::kTriggerChargeBitsFilled)) return kFALSE;
      return aEsd->GetVZEROData()->GetTriggerBits() & (1<<AliESDVZERO::kCTA2andCTC2);
    }
    case kSemiCentral: {
      if (!aEsd->GetVZEROData()) { AliWarning("V0 centrality trigger bits were not filled!"); return kFALSE; }
      if (!aEsd->GetVZEROData()->TestBit(AliESDVZERO::kTriggerChargeBitsFilled)) return kFALSE;
      return aEsd->GetVZEROData()->GetTriggerBits() & (1<<AliESDVZERO::kCTA1andCTC1);
    }
    default: AliFatal(Form("Trigger type %d not implemented", triggerNoFlags));
  }
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsOfflineTriggerFired(const AliESDEvent* aEsd, Trigger trigger){
  // checks if an event has been triggered "offline"
  UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) kStartOfFlags;
  
  Bool_t decision = kFALSE;
  switch (triggerNoFlags) {
    case kAcceptAll:        decision = kTRUE; break;
    case kMB1:              decision = SPDGFOTrigger(aEsd, 0) ||  V0Trigger(aEsd, kASide, kFALSE) == kV0BB || V0Trigger(aEsd, kCSide, kFALSE) == kV0BB;  break;
    case kMB2:              decision = SPDGFOTrigger(aEsd, 0) && (V0Trigger(aEsd, kASide, kFALSE) == kV0BB || V0Trigger(aEsd, kCSide, kFALSE) == kV0BB); break;
    case kMB3:              decision = SPDGFOTrigger(aEsd, 0) &&  V0Trigger(aEsd, kASide, kFALSE) == kV0BB && V0Trigger(aEsd, kCSide, kFALSE) == kV0BB;  break;
    case kSPDGFO:           decision = SPDGFOTrigger(aEsd, 0); break;
    case kSPDGFOBits:       decision = SPDGFOTrigger(aEsd, 1); break;
    case kV0A:              decision = V0Trigger(aEsd, kASide, kFALSE) == kV0BB; break;
    case kV0C:              decision = V0Trigger(aEsd, kCSide, kFALSE) == kV0BB; break;
    case kV0OR:             decision = V0Trigger(aEsd, kASide, kFALSE) == kV0BB || V0Trigger(aEsd, kCSide, kFALSE) == kV0BB; break;
    case kV0AND:            decision = V0Trigger(aEsd, kASide, kFALSE) == kV0BB && V0Trigger(aEsd, kCSide, kFALSE) == kV0BB; break;
    case kV0ABG:            decision = V0Trigger(aEsd, kASide, kFALSE) == kV0BG; break;
    case kV0CBG:            decision = V0Trigger(aEsd, kCSide, kFALSE) == kV0BG; break;
    case kZDC:              decision = ZDCTrigger(aEsd, kASide) || ZDCTrigger(aEsd, kCentralBarrel) || ZDCTrigger(aEsd, kCSide); break;
    case kZDCA:             decision = ZDCTrigger(aEsd, kASide); break;
    case kZDCC:             decision = ZDCTrigger(aEsd, kCSide); break;
    case kZNA:              decision = ZDCTDCTrigger(aEsd,kASide,kTRUE,kFALSE,kFALSE); break;
    case kZNC:              decision = ZDCTDCTrigger(aEsd,kCSide,kTRUE,kFALSE,kFALSE); break;
    case kZNABG:            decision = ZDCTimeBGTrigger(aEsd,kASide); break;
    case kZNCBG:            decision = ZDCTimeBGTrigger(aEsd,kCSide); break;
    case kFMDA:             decision = FMDTrigger(aEsd, kASide); break;
    case kFMDC:             decision = FMDTrigger(aEsd, kCSide); break;
    case kEMCAL:            decision = EMCALCellsTrigger(aEsd); break;
    case kEmcalL0:          decision = EMCALTrigger(aEsd,kEmcalL0);          break;
    case kEmcalL1GammaHigh: decision = EMCALTrigger(aEsd,kEmcalL1GammaHigh); break;
    case kEmcalL1GammaLow:  decision = EMCALTrigger(aEsd,kEmcalL1GammaLow);  break;
    case kEmcalL1JetHigh:   decision = EMCALTrigger(aEsd,kEmcalL1JetHigh);   break;
    case kEmcalL1JetLow:    decision = EMCALTrigger(aEsd,kEmcalL1JetLow);    break;
    case kTRDHCO:           decision = TRDTrigger(aEsd,kTRDHCO); break;
    case kTRDHJT:           decision = TRDTrigger(aEsd,kTRDHJT); break;
    case kTRDHSE:           decision = TRDTrigger(aEsd,kTRDHSE); break;
    case kTRDHQU:           decision = TRDTrigger(aEsd,kTRDHQU); break;
    case kTRDHEE:           decision = TRDTrigger(aEsd,kTRDHEE); break;
    case kNSD1:             decision = SPDFiredChips(aEsd, 0) >= 5 || (V0Trigger(aEsd, kASide, kFALSE) == kV0BB && V0Trigger(aEsd, kCSide, kFALSE) == kV0BB); break;
    case kFPANY:            decision |= SPDGFOTrigger(aEsd, 0); 
                            decision |= V0Trigger(aEsd, kASide, kFALSE) == kV0BB;
                            decision |= V0Trigger(aEsd, kCSide, kFALSE) == kV0BB;
                            decision |= ZDCTrigger(aEsd, kASide);
                            decision |= ZDCTrigger(aEsd, kCentralBarrel);
                            decision |= ZDCTrigger(aEsd, kCSide);
                            decision |= FMDTrigger(aEsd, kASide);
                            decision |= FMDTrigger(aEsd, kCSide);
                            break; 
    case kMB1Prime:         decision |= SPDGFOTrigger(aEsd, 0) && V0Trigger(aEsd, kASide, kFALSE) == kV0BB;
                            decision |= SPDGFOTrigger(aEsd, 0) && V0Trigger(aEsd, kCSide, kFALSE) == kV0BB;
                            decision |= V0Trigger(aEsd, kASide, kFALSE) == kV0BB && V0Trigger(aEsd, kCSide, kFALSE) == kV0BB;
                            break; 
    default:                AliFatal(Form("Trigger type %d not implemented", triggerNoFlags));
  }
  
  // hadron-level requirement: SPD tracklets
  if (decision && (trigger & kOneParticle))  {
    decision = kFALSE;
    
    const AliESDVertex* vertex = aEsd->GetPrimaryVertexSPD();
    const AliMultiplicity* mult = aEsd->GetMultiplicity();
    
    if (mult && vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZ()) < 5.5)    {
      for (Int_t i=0; i<mult->GetNumberOfTracklets(); ++i) {
        if (TMath::Abs(mult->GetEta(i)) < 1) {
          decision = kTRUE;
          break;
        }
      }
    }
  }
  
  // hadron level requirement: TPC tracks
  if (decision && (trigger & kOneTrack)) {
    decision = kFALSE;
    const AliESDVertex* vertex =0x0;
    vertex = aEsd->GetPrimaryVertexTracks();
    if (!vertex || vertex->GetNContributors() <= 0) vertex = aEsd->GetPrimaryVertexSPD();
    Float_t ptmin, ptmax;
    fEsdTrackCuts->GetPtRange(ptmin,ptmax);
    AliDebug(3, Form("ptmin = %f, ptmax = %f\n",ptmin, ptmax));
    
    if (vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZ()) < 10.) {
      AliDebug(3,Form("Check on the vertex passed\n"));
      for (Int_t i=0; i<aEsd->GetNumberOfTracks(); ++i){
        if (fTPCOnly == kFALSE){
          if (fEsdTrackCuts->AcceptTrack(aEsd->GetTrack(i))){
            AliDebug(2, Form("pt of track = %f --> check passed\n",aEsd->GetTrack(i)->Pt()));
            decision = kTRUE;
            break;
          }
        }
        else {
          // TPC only tracks
          AliESDtrack *tpcTrack = fEsdTrackCuts->GetTPCOnlyTrack((AliESDEvent*)aEsd, i);
          if (!tpcTrack){
            AliDebug(3,Form("track %d is NOT a TPC track",i));
            continue;
          }
          else{
            AliDebug(3,Form("track %d IS a TPC track",i));
            if (!(fEsdTrackCuts->AcceptTrack(tpcTrack))) {
              AliDebug(2, Form("TPC track %d NOT ACCEPTED, pt = %f, eta = %f",i,tpcTrack->Pt(), tpcTrack->Eta()));
              delete tpcTrack; tpcTrack = 0x0;
              continue;
            } // end if the TPC track is not accepted
            else{
              AliDebug(2, Form("TPC track %d ACCEPTED, pt = %f, eta = %f",i,tpcTrack->Pt(), tpcTrack->Eta()));
              decision = kTRUE;
              delete tpcTrack; tpcTrack = 0x0;
              break;
            } // end if the TPC track is accepted
          } // end if it is a TPC track
        } // end if you are looking at TPC only tracks			
      } // end loop on tracks
    } // end check on vertex
    else{
      AliDebug(4,Form("Check on the vertex not passed\n"));
      for (Int_t i=0; i<aEsd->GetNumberOfTracks(); ++i){
        if (fEsdTrackCuts->AcceptTrack(aEsd->GetTrack(i))){
          AliDebug(4,Form("pt of track = %f --> check would be passed if the vertex was ok\n",aEsd->GetTrack(i)->Pt()));
          break;
        }
      }
    }
    if (!decision) AliDebug(3,("Check for kOneTrack NOT passed\n"));
  }
  
  return decision;
}



//-------------------------------------------------------------------------------------------------
Int_t AliTriggerAnalysis::SPDFiredChips(const AliESDEvent* aEsd, Int_t origin, Bool_t fillHists, Int_t layer){
  // returns the number of fired chips in the SPD
  //
  // origin = 0 --> aEsd->GetMultiplicity()->GetNumberOfFiredChips() (filled from clusters)
  // origin = 1 --> aEsd->GetMultiplicity()->TestFastOrFiredChips() (from hardware bits)
  // layer  = 0 --> both layers
  // layer  = 1 --> inner
  // layer  = 2 --> outer
  
  const AliMultiplicity* mult = aEsd->GetMultiplicity();
  if (!mult) { AliFatal("AliMultiplicity not available"); }
  
  if (origin == 0) {
    if (layer == 0) return mult->GetNumberOfFiredChips(0) + mult->GetNumberOfFiredChips(1);
    return mult->GetNumberOfFiredChips(layer-1); 
  }
  
  if (origin == 1) {
    Int_t nChips = 0;
    Int_t firstChip = 0;
    Int_t lastChip  = 1200;
    if(layer == 1) lastChip  = 400;
    if(layer == 2) firstChip = 400;

    for (Int_t i=firstChip; i<lastChip; i++) {
      if (mult->TestFastOrFiredChips(i)) {
        // efficiency simulation (if enabled)
        if (fSPDGFOEfficiency) if (gRandom->Uniform() > fSPDGFOEfficiency->GetBinContent(i+1)) continue;
        nChips++;
        if (fillHists) fHistFiredBitsSPD->Fill(i);
      }
    }
    return nChips;
  }
  
  return -1;
}


//-------------------------------------------------------------------------------------------------
Int_t AliTriggerAnalysis::SSDClusters(const AliVEvent* event){ 
  return event->GetNumberOfITSClusters(4)+event->GetNumberOfITSClusters(5); 
}


//-------------------------------------------------------------------------------------------------
AliTriggerAnalysis::V0Decision AliTriggerAnalysis::V0Trigger(const AliESDEvent* aEsd, AliceSide side, Bool_t online, Bool_t fillHists){
  // Returns the V0 trigger decision in V0A | V0C
  //
  // Returns kV0Fake if the calculated average time is in a window where neither BB nor BG is expected. 
  // The rate of such triggers can be used to estimate the background. Note that the rate has to be 
  // rescaled with the size of the windows (numerical values see below in the code)
  //
  // argument 'online' is used as a switch between online and offline trigger algorithms
  //
  // Based on an algorithm by Cvetan Cheshkov
  
  AliESDVZERO* esdV0 = aEsd->GetVZEROData();
  if (!esdV0) { AliError("AliESDVZERO not available");  return kV0Invalid; }
  if (side != kASide && side != kCSide) return kV0Invalid;
  
  AliDebug(2,Form("In V0Trigger: %f %f",esdV0->GetV0ATime(),esdV0->GetV0CTime()));
  
  Int_t begin = (side == kASide) ? 32 :  0;
  Int_t end   = (side == kASide) ? 64 : 32;
  
  if (esdV0->TestBit(AliESDVZERO::kDecisionFilled)) {
    if (online) {
      if (esdV0->TestBit(AliESDVZERO::kOnlineBitsFilled)) {
        for (Int_t i = begin; i < end; ++i) if (esdV0->GetBBFlag(i)) return kV0BB;
        for (Int_t i = begin; i < end; ++i) if (esdV0->GetBGFlag(i)) return kV0BG;
        return kV0Empty;
      }
      else {
        AliWarning("V0 online trigger analysis is not yet available!");
        return kV0BB;
      }
    }
    else {
      if (fillHists) {
        if (side == kASide && fHistV0A) fHistV0A->Fill(esdV0->GetV0ATime());
        if (side == kCSide && fHistV0C) fHistV0C->Fill(esdV0->GetV0CTime());
      }
      if      (side == kASide) return (V0Decision) esdV0->GetV0ADecision();
      else if (side == kCSide) return (V0Decision) esdV0->GetV0CDecision();
    }
  }
  
  Float_t time = 0;
  Float_t weight = 0;
  if (fMC) {
    Int_t runRange;
    if      (aEsd->GetRunNumber() <= 104803) runRange = 0;
    else if (aEsd->GetRunNumber() <= 104876) runRange = 1;
    else runRange = 2;
    
    Float_t factors[3][64] = {
      /*104792-104803*/ {4.6,5.9,6.3,6.0,4.7,5.9,4.9,5.4,4.8,4.1,4.9,4.6,4.5,5.5,5.1,5.8,4.3,4.0,4.0,3.3,3.1,2.9,3.0,5.6,3.3,4.9,3.9,5.3,4.1,4.4,3.9,5.5,5.7,9.5,5.1,5.3,6.6,7.1,8.9,4.4,4.1,5.9,9.0,4.5,4.1,6.0,4.7,7.1,4.2,4.7,3.9,6.3,5.9,4.8,4.7,4.5,4.7,5.4,5.8,5.0,5.1,5.9,5.3,3.6},
      /*104841-104876*/ {4.6,4.8,4.9,4.8,4.3,4.9,4.4,4.5,4.6,5.0,4.7,4.6,4.7,4.6,4.6,5.5,4.7,4.5,4.7,5.0,6.5,7.6,5.3,4.9,5.5,4.8,4.6,4.9,4.5,4.5,4.6,4.9,5.7,9.8,4.9,5.2,7.1,7.1,8.1,4.4,4.0,6.0,8.3,4.6,4.2,5.6,4.6,6.4,4.4,4.7,4.5,6.5,6.0,4.7,4.5,4.4,4.8,5.5,5.9,5.3,5.0,5.7,5.1,3.6},
      /*104890-104892*/ {4.7,5.2,4.8,5.0,4.4,5.0,4.4,4.6,4.6,4.5,4.4,4.6,4.5,4.6,4.8,5.5,4.8,4.5,4.4,4.3,5.4,7.7,5.6,5.0,5.4,4.3,4.5,4.8,4.5,4.5,4.6,5.3,5.7,9.6,4.9,5.4,6.1,7.2,8.6,4.4,4.0,5.4,8.8,4.4,4.2,5.8,4.7,6.7,4.3,4.7,4.0,6.1,6.0,4.9,4.8,4.6,4.7,5.2,5.7,5.0,5.0,5.8,5.3,3.6}
    };
    Float_t dA = 77.4 - 11.0;
    Float_t dC = 77.4 - 2.9;
    // Time misalignment
    Float_t timeShift[64] = {0.477957 , 0.0889999 , 0.757669 , 0.205439 , 0.239666 , -0.183705 , 0.442873 , -0.281366 , 0.260976 , 0.788995 , 0.974758 , 0.548532 , 0.495023 , 0.868472 , 0.661167 , 0.358307 , 0.221243 , 0.530179 , 1.26696 , 1.33082 , 1.27086 , 1.77133 , 1.10253 , 0.634806 , 2.14838 , 1.50212 , 1.59253 , 1.66122 , 1.16957 , 1.52056 , 1.47791 , 1.81905 , -1.94123 , -1.29124 , -2.16045 , -1.78939 , -3.11111 , -1.87178 , -1.57671 , -1.70311 , -1.81208 , -1.94475 , -2.53058 , -1.7042 , -2.08109 , -1.84416 , -0.61073 , -1.77145 , 0.16999 , -0.0585339 , 0.00401133 , 0.397726 , 0.851111 , 0.264187 , 0.59573 , -0.158263 , 0.584362 , 1.20835 , 0.927573 , 1.13895 , 0.64648 , 2.18747 , 1.68909 , 0.451194};
    Float_t dA2 = 2.8, dC2 = 3.3;
    
    if (online) {
      for (Int_t i = begin; i < end; ++i) {
        Float_t tempAdc = esdV0->GetAdc(i)/factors[runRange][i];
        Float_t tempTime = (i >= 32) ? esdV0->GetTime(i)+dA+timeShift[i]+dA2 : esdV0->GetTime(i)+dC+timeShift[i]+dC2;
        if (esdV0->GetTime(i) >= 1e-6 && tempTime > fV0HwWinLow && tempTime < fV0HwWinHigh && tempAdc > fV0HwAdcThr) return kV0BB;
      }
      return kV0Empty;
    }
    else {
      for (Int_t i = begin; i < end; ++i) {
        Float_t tempAdc = esdV0->GetAdc(i)/factors[runRange][i];
        Float_t tempTime = (i >= 32) ? esdV0->GetTime(i)+dA : esdV0->GetTime(i)+dC;
        Float_t tempRawTime = (i >= 32) ? esdV0->GetTime(i)+dA+timeShift[i]+dA2 : esdV0->GetTime(i)+dC+timeShift[i]+dC2;
        if (esdV0->GetTime(i) >= 1e-6 && tempRawTime < 125.0 && tempAdc > fV0AdcThr) {
          weight += 1.0;
          time += tempTime;
        }
      }
    }
  }
  else {
    if (online) {
      for (Int_t i = begin; i < end; ++i) {
        if (esdV0->GetTime(i) >= 1e-6 && esdV0->GetTime(i) > fV0HwWinLow && esdV0->GetTime(i) < fV0HwWinHigh && esdV0->GetAdc(i) > fV0HwAdcThr) return kV0BB;
      }
      return kV0Empty;
    }
    else {
      for (Int_t i = begin; i < end; ++i) {
        if (esdV0->GetTime(i) > 1e-6 && esdV0->GetAdc(i) > fV0AdcThr) {
          Float_t correctedTime = V0CorrectLeadingTime(i, esdV0->GetTime(i), esdV0->GetAdc(i),aEsd->GetRunNumber());
          Float_t timeWeight = V0LeadingTimeWeight(esdV0->GetAdc(i));
          time += correctedTime*timeWeight;
          weight += timeWeight;
        }
      }
    }
  }
  
  if (weight > 0) time /= weight;
  time += fV0TimeOffset;
  
  if (fillHists) {
    if (side == kASide && fHistV0A) fHistV0A->Fill(time);
    if (side == kCSide && fHistV0C) fHistV0C->Fill(time);
  }
  
  if (side == kASide) {
    if (time > 68 && time < 100)  return kV0BB;
    if (time > 54 && time < 57.5) return kV0BG;
    if (time > 57.5 && time < 68) return kV0Fake;
  }
  if (side == kCSide) {
    if (time > 75.5 && time < 100) return kV0BB;
    if (time > 69.5 && time < 73)  return kV0BG; 
    if (time > 55 && time < 69.5)  return kV0Fake;
  }
  
  return kV0Empty;
}


//-------------------------------------------------------------------------------------------------
Float_t AliTriggerAnalysis::V0CorrectLeadingTime(Int_t i, Float_t time, Float_t adc, Int_t runNumber) const {
  // Correct for slewing and align the channels
  // Authors: Cvetan Cheshkov / Raphael Tieulent
  if (time == 0) return 0;

  // Time alignment
  Float_t timeShift[64] = {0.477957 , 0.0889999 , 0.757669 , 0.205439 , 0.239666 , -0.183705 , 0.442873 , -0.281366 , 0.260976 , 0.788995 , 0.974758 , 0.548532 , 0.495023 , 0.868472 , 0.661167 , 0.358307 , 0.221243 , 0.530179 , 1.26696 , 1.33082 , 1.27086 , 1.77133 , 1.10253 , 0.634806 , 2.14838 , 1.50212 , 1.59253 , 1.66122 , 1.16957 , 1.52056 , 1.47791 , 1.81905 , -1.94123 , -1.29124 , -2.16045 , -1.78939 , -3.11111 , -1.87178 , -1.57671 , -1.70311 , -1.81208 , -1.94475 , -2.53058 , -1.7042 , -2.08109 , -1.84416 , -0.61073 , -1.77145 , 0.16999 , -0.0585339 , 0.00401133 , 0.397726 , 0.851111 , 0.264187 , 0.59573 , -0.158263 , 0.584362 , 1.20835 , 0.927573 , 1.13895 , 0.64648 , 2.18747 , 1.68909 , 0.451194};
  
  if(runNumber < 106031) time -= timeShift[i];
  
  // Slewing correction
  if (adc == 0) return time;
  
  Double_t p1 = 1.57345e+1;
  Double_t p2 =-4.25603e-1;
  
  if(runNumber >= 106031) adc *= (2.5/4.0);
  return (time - p1*TMath::Power(adc,p2));
}


//-------------------------------------------------------------------------------------------------
Float_t AliTriggerAnalysis::V0LeadingTimeWeight(Float_t adc) const {
  if (adc < 1e-6) return 0;
  
  Float_t p1 = 40.211;
  Float_t p2 =-4.25603e-1;
  Float_t p3 = 0.5646;
  
  return 1./(p1*p1*TMath::Power(adc,2.*(p2-1.))+p3*p3);
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::ZDCTDCTrigger(const AliESDEvent* aEsd, AliceSide side, Bool_t useZN, Bool_t useZP, Bool_t fillHists) const{
  // Returns if ZDC triggered, based on TDC information 
  
  AliESDZDC *esdZDC = aEsd->GetESDZDC();
  
  Bool_t zdcNA = kFALSE;
  Bool_t zdcNC = kFALSE;
  Bool_t zdcPA = kFALSE;
  Bool_t zdcPC = kFALSE;
  
  if (fMC) { // If it's MC, we use the energy
    Double_t minEnergy = 0;
    zdcNA = esdZDC->GetZDCN2Energy()>minEnergy;
    zdcNC = esdZDC->GetZDCN1Energy()>minEnergy;
    zdcPA = esdZDC->GetZDCP2Energy()>minEnergy;
    zdcPC = esdZDC->GetZDCP1Energy()>minEnergy;
  }
  else {
    Bool_t tdc[32] = {kFALSE};
    for(Int_t itdc=0; itdc<32; itdc++){
      for(Int_t i=0; i<4; i++) tdc[itdc] |= esdZDC->GetZDCTDCData(itdc, i)!=0;
      if(fillHists && tdc[itdc]) fHistTDCZDC->Fill(itdc);
    }
    zdcNA = tdc[12];
    zdcNC = tdc[10];
    zdcPA = tdc[13];
    zdcPC = tdc[11];
  }
  
  if (side == kASide) return ((useZP && zdcPA) || (useZN && zdcNA)); 
  if (side == kCSide) return ((useZP && zdcPC) || (useZN && zdcNC)); 
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::ZDCTimeTrigger(const AliESDEvent *aEsd, Bool_t fillHists) const {
  // This method implements a selection based on the timing in both sides of zdcN
  // It can be used in order to eliminate parasitic collisions
  AliESDZDC *esdZDC = aEsd->GetESDZDC();
  
  if(fMC) {
    UInt_t esdFlag =  esdZDC->GetESDQuality();
    Bool_t znaFired  = (esdFlag & 0x01) == 0x01;
    Bool_t zncFired  = (esdFlag & 0x10) == 0x10;
    return znaFired | zncFired;
  }
  else {
    for(Int_t i=0;i<4;++i) {
      if (esdZDC->GetZDCTDCData(10,i)==0) continue;
      Float_t tdcC = 0.025*(esdZDC->GetZDCTDCData(10,i)-esdZDC->GetZDCTDCData(14,i)); 
      Float_t tdcCcorr = esdZDC->GetZDCTDCCorrected(10,i); 
      for(Int_t j=0;j<4;++j) {
        if (esdZDC->GetZDCTDCData(12,j)==0) continue;
        Float_t tdcA = 0.025*(esdZDC->GetZDCTDCData(12,j)-esdZDC->GetZDCTDCData(14,j));
        Float_t tdcAcorr = esdZDC->GetZDCTDCCorrected(12,j);
        if(fillHists) {
          fHistTimeZDC->Fill(tdcC-tdcA,tdcC+tdcA);
          fHistTimeCorrZDC->Fill(tdcCcorr-tdcAcorr,tdcCcorr+tdcAcorr);
        }
        if (esdZDC->TestBit(AliESDZDC::kCorrectedTDCFilled)) {
          if (TMath::Power((tdcCcorr-tdcAcorr-fZDCCutRefDeltaCorr)/fZDCCutSigmaDeltaCorr,2.)+
              TMath::Power((tdcCcorr+tdcAcorr-fZDCCutRefSumCorr  )/fZDCCutSigmaSumCorr,2.) < 1.) return kTRUE;
        }
        else {
          if (TMath::Power((tdcC-tdcA-fZDCCutRefDelta)/fZDCCutSigmaDelta,2.)+
              TMath::Power((tdcC+tdcA-fZDCCutRefSum  )/fZDCCutSigmaSum,2.  )<1.0) return kTRUE;
        }
      }
    }
  }
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::ZDCTimeBGTrigger(const AliESDEvent *aEsd, AliceSide side) const{
  // This method implements a selection based on the timing in zdcN
  // It can be used in order to flag background
  if(fMC) return kFALSE;
  
  AliESDZDC* zdcData = aEsd->GetESDZDC();
  Bool_t znabadhit = kFALSE;
  Bool_t zncbadhit = kFALSE;
  
  Float_t tdcCcorr=999, tdcAcorr=999;
  for(Int_t i = 0; i < 4; ++i) {
    if (zdcData->GetZDCTDCData(10,i)==0) continue;
    tdcCcorr = TMath::Abs(zdcData->GetZDCTDCCorrected(10,i));
    if(tdcCcorr<fZDCCutZNCTimeCorrMax && tdcCcorr>fZDCCutZNCTimeCorrMin) zncbadhit = kTRUE;
  }
  for(Int_t i = 0; i < 4; ++i) {
    if (zdcData->GetZDCTDCData(12,i)==0) continue;
    tdcAcorr = TMath::Abs(zdcData->GetZDCTDCCorrected(12,i));
    if(tdcAcorr<fZDCCutZNATimeCorrMax && tdcAcorr>fZDCCutZNATimeCorrMin) znabadhit = kTRUE;
  }
  
  if (side == kASide) return znabadhit;
  if (side == kCSide) return zncbadhit;

  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::ZDCTrigger(const AliESDEvent* aEsd, AliceSide side) const {
  // Returns if ZDC triggered
  
  AliESDZDC* zdcData = aEsd->GetESDZDC();
  UInt_t quality = zdcData->GetESDQuality();

  // from Nora's presentation, general first physics meeting 16.10.09
  static UInt_t zpc  = 0x20;
  static UInt_t znc  = 0x10;
  static UInt_t zem1 = 0x08;
  static UInt_t zem2 = 0x04;
  static UInt_t zpa  = 0x02;
  static UInt_t zna  = 0x01;
  
  if (side == kASide         && ((quality & zpa)  || (quality & zna ))) return kTRUE;
  if (side == kCentralBarrel && ((quality & zem1) || (quality & zem2))) return kTRUE;
  if (side == kCSide         && ((quality & zpc)  || (quality & znc ))) return kTRUE;
  
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Int_t AliTriggerAnalysis::FMDHitCombinations(const AliESDEvent* aEsd, AliceSide side, Bool_t fillHists){
  // returns number of hit combinations above threshold
  // Authors: FMD team, Hans Dalsgaard (code merged from FMD/AliFMDOfflineTrigger)
  if (!fDoFMD) return -1;
  
  // Workaround for AliESDEvent::GetFMDData is not const!
  const AliESDFMD* fmdData = (const_cast<AliESDEvent*>(aEsd))->GetFMDData();
  if (!fmdData) {
    AliError("AliESDFMD not available");
    return -1;
  }
  
  Int_t detFrom = (side == kASide) ? 1 : 3;
  Int_t detTo   = (side == kASide) ? 2 : 3;
  
  Int_t triggers = 0;
  Float_t totalMult = 0;
  for (UShort_t det=detFrom;det<=detTo;det++) {
    Int_t nRings = (det == 1 ? 1 : 2);
    for (UShort_t ir = 0; ir < nRings; ir++) {
      Char_t   ring = (ir == 0 ? 'I' : 'O');
      UShort_t nsec = (ir == 0 ? 20  : 40);
      UShort_t nstr = (ir == 0 ? 512 : 256);
      for (UShort_t sec =0; sec < nsec;  sec++) {
        for (UShort_t strip = 0; strip < nstr; strip++) {
          Float_t mult = fmdData->Multiplicity(det,ring,sec,strip);
          if (mult == AliESDFMD::kInvalidMult) continue;
          if (fillHists) fHistFMDSingle->Fill(mult);
          if (mult > fFMDLowCut)
            totalMult = totalMult + mult;
          else {
            if (totalMult > fFMDHitCut) triggers++;
            if (fillHists) fHistFMDSum->Fill(totalMult);
            totalMult = 0;
          }
        }
      }
    }
  }
  return triggers;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::FMDTrigger(const AliESDEvent* aEsd, AliceSide side){
  // Returns if the FMD triggered
  // Authors: FMD team, Hans Dalsgaard (code merged from FMD/AliFMDOfflineTrigger)
  return FMDHitCombinations(aEsd, side, kFALSE);
}


//-------------------------------------------------------------------------------------------------
AliTriggerAnalysis::T0Decision AliTriggerAnalysis::T0Trigger(const AliESDEvent* aEsd, Bool_t online, Bool_t fillHists){
  // Returns the T0 TVDC trigger decision
  //  
  // argument 'online' is used as a switch between online and offline trigger algorithms
  // in online mode return 0TVX 
  // in offline mode in addition check pile-up and background :
  // pile-up readed from ESD: check if TVDC (0TVX module name) has more 1 hit;
  // backgroud flag readed from ESD : check in given time interval OrA and OrC were correct but TVDC not  
  // 
  // Based on an algorithm by Alla Maevskaya 
  
  const AliESDTZERO* esdT0 = aEsd->GetESDTZERO();
  if (!esdT0) {
    AliError("AliESDTZERO not available");
    return kT0Invalid;
  }

  Float_t  tvdc0 = esdT0->GetTVDC(0);
  if(fillHists) fHistT0->Fill(tvdc0);
  
  if (online) {
    if( aEsd->GetHeader()->IsTriggerInputFired("0TVX")) return kT0BB;
  }
  else {
    if (esdT0->GetPileupFlag()) return kT0DecPileup;
    if (esdT0->GetBackgroundFlag()) return kT0DecBG;
    if (tvdc0>-5 && tvdc0<5 && tvdc0!=0) return kT0BB; 
  }
  
  if (fMC) if(esdT0->GetT0zVertex()>-12.3 && esdT0->GetT0zVertex() < 10.3) return kT0BB; 
  return kT0Empty;
}

//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::EMCALCellsTrigger(const AliESDEvent *aEsd){
  //
  // Returns the EMCAL trigger decision
  // so far only implemented for LHC11a data
  // see http://alisoft.cern.ch/viewvc/trunk/PWGGA/EMCALTasks/AliEmcalPhysicsSelection.cxx?view=markup&root=AliRoot Revision 56136
  //
  
  Bool_t isFired = kTRUE;
  const Int_t runNumber = aEsd->GetRunNumber();
  
  /*
  // Load EMCAL branches from the manager
  AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
  am->LoadBranch("EMCALCells.");
  am->LoadBranch("CaloClusters");
   */
  
  // Get EMCAL cells
  AliVCaloCells *cells = aEsd->GetEMCALCells();
  const Short_t nCells = cells->GetNumberOfCells();
  
  // count cells above threshold per sm
  Int_t nCellCount[10] = {0,0,0,0,0,0,0,0,0,0};
  for(Int_t iCell=0; iCell<nCells; ++iCell) {
    Short_t cellId = cells->GetCellNumber(iCell);
    Double_t cellE = cells->GetCellAmplitude(cellId);
    Int_t sm       = cellId / (24*48);
    if (cellE>0.1)
      ++nCellCount[sm];
  }
  
  // Trigger decision for LHC11a
  Bool_t isLedEvent = kFALSE;
  if ((runNumber>=144871) && (runNumber<=146860)) {
    if (nCellCount[4] > 100)
      isLedEvent = kTRUE;
    else {
      if ((runNumber>=146858) && (runNumber<=146860)) {
        if (nCellCount[3]>=35)
          isLedEvent = kTRUE;
      }
    }
  }
  
  if (isLedEvent) {
    isFired = kFALSE;
  }
  
  return isFired;
}


//----------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::TRDTrigger(const AliESDEvent *esd, Trigger trigger){
  // evaluate the TRD trigger conditions,
  // so far HCO, HSE, HQU, HJT, HEE
  if(trigger!=kTRDHCO && trigger!=kTRDHJT && trigger!=kTRDHSE && trigger!=kTRDHQU && trigger!=kTRDHEE) {
    AliWarning("Beware you are erroneously trying to use this function (wrong trigger)");
    return kFALSE;
  }
  
  Int_t nTrdTracks = esd->GetNumberOfTrdTracks();
  if (nTrdTracks<=0) return kFALSE;
  if      (trigger==kTRDHCO) return kTRUE;
  else if (trigger!=kTRDHJT) {
    for (Int_t iTrack = 0; iTrack < nTrdTracks; ++iTrack) {
      AliESDTrdTrack *trdTrack = esd->GetTrdTrack(iTrack);
      if (!trdTrack) continue;
      // for the electron triggers we only consider matched tracks
      if(trigger==kTRDHQU) if (TMath::Abs(trdTrack->Pt())>fTRDptHQU && trdTrack->GetPID()>fTRDpidHQU) return kTRUE;
      if(trigger==kTRDHSE) if (TMath::Abs(trdTrack->Pt())>fTRDptHSE && trdTrack->GetPID()>fTRDpidHSE) return kTRUE; 
      if(trigger==kTRDHEE) if (TMath::Abs(trdTrack->Pt())>fTRDptHSE && trdTrack->GetPID()>fTRDpidHSE && trdTrack->GetSector()>=fTRDminSectorHEE && trdTrack->GetSector()<=fTRDmaxSectorHEE) return kTRUE;
    }
  } 
  else if (trigger==kTRDHJT) {
    Int_t nTracks[90] = { 0 }; // stack-wise counted number of tracks above pt threshold
    for (Int_t iTrack = 0; iTrack < nTrdTracks; ++iTrack) {
      AliESDTrdTrack *trdTrack = esd->GetTrdTrack(iTrack);    
      if (!trdTrack) continue;
      Int_t globalStack = 5*trdTrack->GetSector() + trdTrack->GetStack();
      // stack-wise counting of tracks above pt threshold for jet trigger
      if (TMath::Abs(trdTrack->GetPt()) >= fTRDptHJT) ++nTracks[globalStack];
    }
    // check if HJT condition is fulfilled in any stack
    for (Int_t iStack = 0; iStack < 90; iStack++) if (nTracks[iStack] >= fTRDnHJT) return kTRUE;
  }
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::EMCALTrigger(const AliVEvent* event, Trigger trigger){
  AliVCaloTrigger* emcalTrigger = event->GetCaloTrigger("EMCAL");
  if (!emcalTrigger) return kFALSE;
  Int_t emcalTriggerBits = 0;
  emcalTrigger->GetTriggerBits(emcalTriggerBits);
  if      (trigger==kEmcalL0         ) { return emcalTriggerBits & 1<<0; }
  else if (trigger==kEmcalL1GammaHigh) { return emcalTriggerBits & 1<<1; }
  else if (trigger==kEmcalL1GammaLow ) { return emcalTriggerBits & 1<<2; }
  else if (trigger==kEmcalL1JetHigh  ) { return emcalTriggerBits & 1<<3; }
  else if (trigger==kEmcalL1JetLow   ) { return emcalTriggerBits & 1<<4; }
  else {
    AliWarning("Beware you are erroneously trying to use this function (wrong trigger)");
    return kFALSE;
  }
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsSPDClusterVsTrackletBG(const AliVEvent* event, Bool_t fillHists){
  // rejects BG based on the cluster vs tracklet correlation
  // returns true if the event is BG
  const AliVMultiplicity* mult = event->GetMultiplicity();
  if (!mult) { AliFatal("No multiplicity object"); }
  Int_t ntracklet   = mult->GetNumberOfTracklets();
  Int_t spdClusters = event->GetNumberOfITSClusters(0) + event->GetNumberOfITSClusters(1);
  if(fillHists) fHistSPDClsVsTrk->Fill(ntracklet,spdClusters);
  return spdClusters > Float_t(fASPDCvsTCut) + Float_t(ntracklet)*fBSPDCvsTCut;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsLaserWarmUpTPCEvent(const AliESDEvent* esd){
  // This function flags noisy TPC events which can happen during laser warm-up.
  Int_t trackCounter = 0;
  for (Int_t i=0; i<esd->GetNumberOfTracks(); ++i) {
    AliESDtrack *track = esd->GetTrack(i);
    if (!track) continue;
    if (track->GetTPCNcls() < 30) continue;
    if (TMath::Abs(track->Eta()) > 0.005) continue;
    if (track->Pt() < 4) continue;
    if (track->GetKinkIndex(0) > 0) continue;
    UInt_t status = track->GetStatus();
    if ((status&AliESDtrack::kITSrefit)==AliESDtrack::kITSrefit) continue; // explicitly ask for tracks without ITS refit
    if ((status&AliESDtrack::kTPCrefit)!=AliESDtrack::kTPCrefit) continue;
    if (track->GetTPCsignal() > 10) continue;          // explicitly ask for tracks without dE/dx
    trackCounter++;
  }
  if (trackCounter > 15) return kTRUE;
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsHVdipTPCEvent(const AliESDEvent* esd) {
  // This function flags events in which the TPC chamber HV is not at its nominal value
  if (fMC) return kFALSE; // there are no dip events in MC
  if (!esd->IsDetectorOn(AliDAQ::kTPC)) return kTRUE;
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Bool_t AliTriggerAnalysis::IsIncompleteEvent(const AliESDEvent* esd){
  // Check whether the event is incomplete 
  // (due to DAQ-HLT issues, it could be only part of the event was saved)
  if (fMC) return kFALSE; // there are no incomplete events on MC
  if ((esd->GetEventType() == 7) &&
      (esd->GetDAQDetectorPattern() & (1<<4)) &&
      !(esd->GetDAQAttributes() & (1<<7))) return kTRUE;
  return kFALSE;
}


//-------------------------------------------------------------------------------------------------
Long64_t AliTriggerAnalysis::Merge(TCollection* list){
  // Merge a list of objects with this (needed for PROOF).
  // Returns the number of merged objects (including this).
  if (!list) return 0;
  if (list->IsEmpty()) return 1;
  TIterator* iter = list->MakeIterator();
  TObject* obj;
  
  // collections of all histograms
  const Int_t nHists = 14;
  TList collections[nHists];
  
  Int_t count = 0;
  while ((obj = iter->Next())) {
    AliTriggerAnalysis* entry = dynamic_cast<AliTriggerAnalysis*> (obj);
    if (entry == 0) continue;
    Int_t n = 0;
    collections[n++].Add(entry->fHistV0A);
    collections[n++].Add(entry->fHistV0C);
    collections[n++].Add(entry->fHistZDC);
    collections[n++].Add(entry->fHistTDCZDC);
    collections[n++].Add(entry->fHistTimeZDC);
    collections[n++].Add(entry->fHistTimeCorrZDC);
    collections[n++].Add(entry->fHistFMDA);
    collections[n++].Add(entry->fHistFMDC);
    collections[n++].Add(entry->fHistFMDSingle);
    collections[n++].Add(entry->fHistFMDSum);
    collections[n++].Add(entry->fHistBitsSPD);
    collections[n++].Add(entry->fHistFiredBitsSPD);
    collections[n++].Add(entry->fHistSPDClsVsTrk);
    collections[n++].Add(entry->fHistT0);
    
    // merge fTriggerClasses
    TIterator* iter2 = entry->fTriggerClasses->MakeIterator();
    TObjString* obj2 = 0;
    while ((obj2 = dynamic_cast<TObjString*> (iter2->Next()))) {
      TParameter<Long64_t>* param2 = static_cast<TParameter<Long64_t>*> (entry->fTriggerClasses->GetValue(obj2));
      TParameter<Long64_t>* param1 = dynamic_cast<TParameter<Long64_t>*> (fTriggerClasses->GetValue(obj2));
      if (param1) { param1->SetVal(param1->GetVal() + param2->GetVal()); }
      else {        
        param1 = dynamic_cast<TParameter<Long64_t>*> (param2->Clone());
        fTriggerClasses->Add(new TObjString(obj2->String()), param1);
      }
    }
    delete iter2;
    count++;
  }
  
  Int_t n = 0;
  fHistV0A->Merge(&collections[n++]);
  fHistV0C->Merge(&collections[n++]);
  fHistZDC->Merge(&collections[n++]);
  fHistTDCZDC->Merge(&collections[n++]);
  if (fHistTimeZDC)     fHistTimeZDC->Merge(&collections[n++]);     else n++;
  if (fHistTimeCorrZDC) fHistTimeCorrZDC->Merge(&collections[n++]); else n++;
  fHistFMDA->Merge(&collections[n++]);
  fHistFMDC->Merge(&collections[n++]);
  fHistFMDSingle->Merge(&collections[n++]);
  fHistFMDSum->Merge(&collections[n++]);
  fHistBitsSPD->Merge(&collections[n++]);
  fHistFiredBitsSPD->Merge(&collections[n++]);
  fHistSPDClsVsTrk->Merge(&collections[n++]);
  fHistT0->Merge(&collections[n++]);
  delete iter;
  return count+1;
}


//-------------------------------------------------------------------------------------------------
void AliTriggerAnalysis::FillHistograms(const AliESDEvent* aEsd){
  // fills the histograms with the info from the ESD
  
  fHistBitsSPD->Fill(SPDFiredChips(aEsd, 0), SPDFiredChips(aEsd, 1, kTRUE));
  
  V0Trigger(aEsd, kASide, kFALSE, kTRUE);
  V0Trigger(aEsd, kCSide, kFALSE, kTRUE);
  T0Trigger(aEsd, kFALSE, kTRUE);
  ZDCTDCTrigger(aEsd,kASide,kFALSE,kFALSE,kTRUE);
  ZDCTimeTrigger(aEsd,kTRUE);
  IsSPDClusterVsTrackletBG(aEsd, kTRUE);
  
  AliESDZDC* zdcData = aEsd->GetESDZDC();
  if (zdcData)  {
    UInt_t quality = zdcData->GetESDQuality();
    
    // from Nora's presentation, general first physics meeting 16.10.09
    static UInt_t zpc  = 0x20;
    static UInt_t znc  = 0x10;
    static UInt_t zem1 = 0x08;
    static UInt_t zem2 = 0x04;
    static UInt_t zpa  = 0x02;
    static UInt_t zna  = 0x01;
    
    fHistZDC->Fill(1, (quality & zna)  ? 1 : 0);
    fHistZDC->Fill(2, (quality & zpa)  ? 1 : 0);
    fHistZDC->Fill(3, (quality & zem2) ? 1 : 0);
    fHistZDC->Fill(4, (quality & zem1) ? 1 : 0);
    fHistZDC->Fill(5, (quality & znc)  ? 1 : 0);
    fHistZDC->Fill(6, (quality & zpc)  ? 1 : 0);
  }
  else {
    fHistZDC->Fill(-1);
    AliError("AliESDZDC not available");
  }
  
  if (fDoFMD) {
    fHistFMDA->Fill(FMDHitCombinations(aEsd, kASide, kTRUE));
    fHistFMDC->Fill(FMDHitCombinations(aEsd, kCSide, kTRUE));
  }
}


//-------------------------------------------------------------------------------------------------
void AliTriggerAnalysis::SaveHistograms() const {
  // write histograms to current directory
  if (fHistBitsSPD)      fHistBitsSPD->Write();
  if (fHistFiredBitsSPD) fHistFiredBitsSPD->Write();
  if (fHistV0A)          fHistV0A->Write();
  if (fHistV0C)          fHistV0C->Write();
  if (fHistZDC)          fHistZDC->Write();
  if (fHistTDCZDC)       fHistTDCZDC->Write();
  if (fHistTimeZDC)      fHistTimeZDC->Write();
  if (fHistTimeCorrZDC)  fHistTimeCorrZDC->Write();
  if (fHistFMDA)         fHistFMDA->Write();
  if (fHistFMDC)         fHistFMDC->Write();
  if (fHistFMDSingle)    fHistFMDSingle->Write();
  if (fHistFMDSum)       fHistFMDSum->Write();
  if (fSPDGFOEfficiency) fSPDGFOEfficiency->Write("fSPDGFOEfficiency");
  if (fHistSPDClsVsTrk)  fHistSPDClsVsTrk->Write("fHistSPDClsVsTrk");
  if (fHistT0)           fHistT0->Write("fHistT0");
  fTriggerClasses->Write("fTriggerClasses", TObject::kSingleKey);
}


//-------------------------------------------------------------------------------------------------
void AliTriggerAnalysis::FillTriggerClasses(const AliESDEvent* aEsd){
  // fills trigger classes map
  TParameter<Long64_t>* count = dynamic_cast<TParameter<Long64_t>*> (fTriggerClasses->GetValue(aEsd->GetFiredTriggerClasses().Data()));
  if (!count) {
    count = new TParameter<Long64_t>(aEsd->GetFiredTriggerClasses(), 0);
    fTriggerClasses->Add(new TObjString(aEsd->GetFiredTriggerClasses().Data()), count);
  }
  count->SetVal(count->GetVal() + 1);
}


//-------------------------------------------------------------------------------------------------
void AliTriggerAnalysis::PrintTriggerClasses() const {
  // print trigger classes
  
  Printf("Trigger Classes:");
  Printf("Event count for trigger combinations:");
  TMap singleTrigger;
  singleTrigger.SetOwner();
  TIterator* iter = fTriggerClasses->MakeIterator();
  TObjString* obj = 0;
  while ((obj = dynamic_cast<TObjString*> (iter->Next()))) {
    TParameter<Long64_t>* param = static_cast<TParameter<Long64_t>*> (fTriggerClasses->GetValue(obj));
    Printf(" %s: %ld triggers", obj->String().Data(), (Long_t)param->GetVal());
    TObjArray* tokens = obj->String().Tokenize(" ");
    for (Int_t i=0; i<tokens->GetEntries(); i++) {
      TParameter<Long64_t>* count = dynamic_cast<TParameter<Long64_t>*> (singleTrigger.GetValue(((TObjString*) tokens->At(i))->String().Data()));
      if (!count) {
        count = new TParameter<Long64_t>(((TObjString*) tokens->At(i))->String().Data(), 0);
        singleTrigger.Add(new TObjString(((TObjString*) tokens->At(i))->String().Data()), count);
      }
      count->SetVal(count->GetVal() + param->GetVal());
    }
    delete tokens;
  }
  delete iter;
  
  Printf("Event count for single trigger:");
  iter = singleTrigger.MakeIterator();
  while ((obj = dynamic_cast<TObjString*> (iter->Next()))) {
    TParameter<Long64_t>* param = static_cast<TParameter<Long64_t>*> (singleTrigger.GetValue(obj));
    Printf("  %s: %ld triggers", obj->String().Data(), (Long_t)param->GetVal());
  }
  delete iter;
  singleTrigger.DeleteAll();
}
 AliTriggerAnalysis.cxx:1
 AliTriggerAnalysis.cxx:2
 AliTriggerAnalysis.cxx:3
 AliTriggerAnalysis.cxx:4
 AliTriggerAnalysis.cxx:5
 AliTriggerAnalysis.cxx:6
 AliTriggerAnalysis.cxx:7
 AliTriggerAnalysis.cxx:8
 AliTriggerAnalysis.cxx:9
 AliTriggerAnalysis.cxx:10
 AliTriggerAnalysis.cxx:11
 AliTriggerAnalysis.cxx:12
 AliTriggerAnalysis.cxx:13
 AliTriggerAnalysis.cxx:14
 AliTriggerAnalysis.cxx:15
 AliTriggerAnalysis.cxx:16
 AliTriggerAnalysis.cxx:17
 AliTriggerAnalysis.cxx:18
 AliTriggerAnalysis.cxx:19
 AliTriggerAnalysis.cxx:20
 AliTriggerAnalysis.cxx:21
 AliTriggerAnalysis.cxx:22
 AliTriggerAnalysis.cxx:23
 AliTriggerAnalysis.cxx:24
 AliTriggerAnalysis.cxx:25
 AliTriggerAnalysis.cxx:26
 AliTriggerAnalysis.cxx:27
 AliTriggerAnalysis.cxx:28
 AliTriggerAnalysis.cxx:29
 AliTriggerAnalysis.cxx:30
 AliTriggerAnalysis.cxx:31
 AliTriggerAnalysis.cxx:32
 AliTriggerAnalysis.cxx:33
 AliTriggerAnalysis.cxx:34
 AliTriggerAnalysis.cxx:35
 AliTriggerAnalysis.cxx:36
 AliTriggerAnalysis.cxx:37
 AliTriggerAnalysis.cxx:38
 AliTriggerAnalysis.cxx:39
 AliTriggerAnalysis.cxx:40
 AliTriggerAnalysis.cxx:41
 AliTriggerAnalysis.cxx:42
 AliTriggerAnalysis.cxx:43
 AliTriggerAnalysis.cxx:44
 AliTriggerAnalysis.cxx:45
 AliTriggerAnalysis.cxx:46
 AliTriggerAnalysis.cxx:47
 AliTriggerAnalysis.cxx:48
 AliTriggerAnalysis.cxx:49
 AliTriggerAnalysis.cxx:50
 AliTriggerAnalysis.cxx:51
 AliTriggerAnalysis.cxx:52
 AliTriggerAnalysis.cxx:53
 AliTriggerAnalysis.cxx:54
 AliTriggerAnalysis.cxx:55
 AliTriggerAnalysis.cxx:56
 AliTriggerAnalysis.cxx:57
 AliTriggerAnalysis.cxx:58
 AliTriggerAnalysis.cxx:59
 AliTriggerAnalysis.cxx:60
 AliTriggerAnalysis.cxx:61
 AliTriggerAnalysis.cxx:62
 AliTriggerAnalysis.cxx:63
 AliTriggerAnalysis.cxx:64
 AliTriggerAnalysis.cxx:65
 AliTriggerAnalysis.cxx:66
 AliTriggerAnalysis.cxx:67
 AliTriggerAnalysis.cxx:68
 AliTriggerAnalysis.cxx:69
 AliTriggerAnalysis.cxx:70
 AliTriggerAnalysis.cxx:71
 AliTriggerAnalysis.cxx:72
 AliTriggerAnalysis.cxx:73
 AliTriggerAnalysis.cxx:74
 AliTriggerAnalysis.cxx:75
 AliTriggerAnalysis.cxx:76
 AliTriggerAnalysis.cxx:77
 AliTriggerAnalysis.cxx:78
 AliTriggerAnalysis.cxx:79
 AliTriggerAnalysis.cxx:80
 AliTriggerAnalysis.cxx:81
 AliTriggerAnalysis.cxx:82
 AliTriggerAnalysis.cxx:83
 AliTriggerAnalysis.cxx:84
 AliTriggerAnalysis.cxx:85
 AliTriggerAnalysis.cxx:86
 AliTriggerAnalysis.cxx:87
 AliTriggerAnalysis.cxx:88
 AliTriggerAnalysis.cxx:89
 AliTriggerAnalysis.cxx:90
 AliTriggerAnalysis.cxx:91
 AliTriggerAnalysis.cxx:92
 AliTriggerAnalysis.cxx:93
 AliTriggerAnalysis.cxx:94
 AliTriggerAnalysis.cxx:95
 AliTriggerAnalysis.cxx:96
 AliTriggerAnalysis.cxx:97
 AliTriggerAnalysis.cxx:98
 AliTriggerAnalysis.cxx:99
 AliTriggerAnalysis.cxx:100
 AliTriggerAnalysis.cxx:101
 AliTriggerAnalysis.cxx:102
 AliTriggerAnalysis.cxx:103
 AliTriggerAnalysis.cxx:104
 AliTriggerAnalysis.cxx:105
 AliTriggerAnalysis.cxx:106
 AliTriggerAnalysis.cxx:107
 AliTriggerAnalysis.cxx:108
 AliTriggerAnalysis.cxx:109
 AliTriggerAnalysis.cxx:110
 AliTriggerAnalysis.cxx:111
 AliTriggerAnalysis.cxx:112
 AliTriggerAnalysis.cxx:113
 AliTriggerAnalysis.cxx:114
 AliTriggerAnalysis.cxx:115
 AliTriggerAnalysis.cxx:116
 AliTriggerAnalysis.cxx:117
 AliTriggerAnalysis.cxx:118
 AliTriggerAnalysis.cxx:119
 AliTriggerAnalysis.cxx:120
 AliTriggerAnalysis.cxx:121
 AliTriggerAnalysis.cxx:122
 AliTriggerAnalysis.cxx:123
 AliTriggerAnalysis.cxx:124
 AliTriggerAnalysis.cxx:125
 AliTriggerAnalysis.cxx:126
 AliTriggerAnalysis.cxx:127
 AliTriggerAnalysis.cxx:128
 AliTriggerAnalysis.cxx:129
 AliTriggerAnalysis.cxx:130
 AliTriggerAnalysis.cxx:131
 AliTriggerAnalysis.cxx:132
 AliTriggerAnalysis.cxx:133
 AliTriggerAnalysis.cxx:134
 AliTriggerAnalysis.cxx:135
 AliTriggerAnalysis.cxx:136
 AliTriggerAnalysis.cxx:137
 AliTriggerAnalysis.cxx:138
 AliTriggerAnalysis.cxx:139
 AliTriggerAnalysis.cxx:140
 AliTriggerAnalysis.cxx:141
 AliTriggerAnalysis.cxx:142
 AliTriggerAnalysis.cxx:143
 AliTriggerAnalysis.cxx:144
 AliTriggerAnalysis.cxx:145
 AliTriggerAnalysis.cxx:146
 AliTriggerAnalysis.cxx:147
 AliTriggerAnalysis.cxx:148
 AliTriggerAnalysis.cxx:149
 AliTriggerAnalysis.cxx:150
 AliTriggerAnalysis.cxx:151
 AliTriggerAnalysis.cxx:152
 AliTriggerAnalysis.cxx:153
 AliTriggerAnalysis.cxx:154
 AliTriggerAnalysis.cxx:155
 AliTriggerAnalysis.cxx:156
 AliTriggerAnalysis.cxx:157
 AliTriggerAnalysis.cxx:158
 AliTriggerAnalysis.cxx:159
 AliTriggerAnalysis.cxx:160
 AliTriggerAnalysis.cxx:161
 AliTriggerAnalysis.cxx:162
 AliTriggerAnalysis.cxx:163
 AliTriggerAnalysis.cxx:164
 AliTriggerAnalysis.cxx:165
 AliTriggerAnalysis.cxx:166
 AliTriggerAnalysis.cxx:167
 AliTriggerAnalysis.cxx:168
 AliTriggerAnalysis.cxx:169
 AliTriggerAnalysis.cxx:170
 AliTriggerAnalysis.cxx:171
 AliTriggerAnalysis.cxx:172
 AliTriggerAnalysis.cxx:173
 AliTriggerAnalysis.cxx:174
 AliTriggerAnalysis.cxx:175
 AliTriggerAnalysis.cxx:176
 AliTriggerAnalysis.cxx:177
 AliTriggerAnalysis.cxx:178
 AliTriggerAnalysis.cxx:179
 AliTriggerAnalysis.cxx:180
 AliTriggerAnalysis.cxx:181
 AliTriggerAnalysis.cxx:182
 AliTriggerAnalysis.cxx:183
 AliTriggerAnalysis.cxx:184
 AliTriggerAnalysis.cxx:185
 AliTriggerAnalysis.cxx:186
 AliTriggerAnalysis.cxx:187
 AliTriggerAnalysis.cxx:188
 AliTriggerAnalysis.cxx:189
 AliTriggerAnalysis.cxx:190
 AliTriggerAnalysis.cxx:191
 AliTriggerAnalysis.cxx:192
 AliTriggerAnalysis.cxx:193
 AliTriggerAnalysis.cxx:194
 AliTriggerAnalysis.cxx:195
 AliTriggerAnalysis.cxx:196
 AliTriggerAnalysis.cxx:197
 AliTriggerAnalysis.cxx:198
 AliTriggerAnalysis.cxx:199
 AliTriggerAnalysis.cxx:200
 AliTriggerAnalysis.cxx:201
 AliTriggerAnalysis.cxx:202
 AliTriggerAnalysis.cxx:203
 AliTriggerAnalysis.cxx:204
 AliTriggerAnalysis.cxx:205
 AliTriggerAnalysis.cxx:206
 AliTriggerAnalysis.cxx:207
 AliTriggerAnalysis.cxx:208
 AliTriggerAnalysis.cxx:209
 AliTriggerAnalysis.cxx:210
 AliTriggerAnalysis.cxx:211
 AliTriggerAnalysis.cxx:212
 AliTriggerAnalysis.cxx:213
 AliTriggerAnalysis.cxx:214
 AliTriggerAnalysis.cxx:215
 AliTriggerAnalysis.cxx:216
 AliTriggerAnalysis.cxx:217
 AliTriggerAnalysis.cxx:218
 AliTriggerAnalysis.cxx:219
 AliTriggerAnalysis.cxx:220
 AliTriggerAnalysis.cxx:221
 AliTriggerAnalysis.cxx:222
 AliTriggerAnalysis.cxx:223
 AliTriggerAnalysis.cxx:224
 AliTriggerAnalysis.cxx:225
 AliTriggerAnalysis.cxx:226
 AliTriggerAnalysis.cxx:227
 AliTriggerAnalysis.cxx:228
 AliTriggerAnalysis.cxx:229
 AliTriggerAnalysis.cxx:230
 AliTriggerAnalysis.cxx:231
 AliTriggerAnalysis.cxx:232
 AliTriggerAnalysis.cxx:233
 AliTriggerAnalysis.cxx:234
 AliTriggerAnalysis.cxx:235
 AliTriggerAnalysis.cxx:236
 AliTriggerAnalysis.cxx:237
 AliTriggerAnalysis.cxx:238
 AliTriggerAnalysis.cxx:239
 AliTriggerAnalysis.cxx:240
 AliTriggerAnalysis.cxx:241
 AliTriggerAnalysis.cxx:242
 AliTriggerAnalysis.cxx:243
 AliTriggerAnalysis.cxx:244
 AliTriggerAnalysis.cxx:245
 AliTriggerAnalysis.cxx:246
 AliTriggerAnalysis.cxx:247
 AliTriggerAnalysis.cxx:248
 AliTriggerAnalysis.cxx:249
 AliTriggerAnalysis.cxx:250
 AliTriggerAnalysis.cxx:251
 AliTriggerAnalysis.cxx:252
 AliTriggerAnalysis.cxx:253
 AliTriggerAnalysis.cxx:254
 AliTriggerAnalysis.cxx:255
 AliTriggerAnalysis.cxx:256
 AliTriggerAnalysis.cxx:257
 AliTriggerAnalysis.cxx:258
 AliTriggerAnalysis.cxx:259
 AliTriggerAnalysis.cxx:260
 AliTriggerAnalysis.cxx:261
 AliTriggerAnalysis.cxx:262
 AliTriggerAnalysis.cxx:263
 AliTriggerAnalysis.cxx:264
 AliTriggerAnalysis.cxx:265
 AliTriggerAnalysis.cxx:266
 AliTriggerAnalysis.cxx:267
 AliTriggerAnalysis.cxx:268
 AliTriggerAnalysis.cxx:269
 AliTriggerAnalysis.cxx:270
 AliTriggerAnalysis.cxx:271
 AliTriggerAnalysis.cxx:272
 AliTriggerAnalysis.cxx:273
 AliTriggerAnalysis.cxx:274
 AliTriggerAnalysis.cxx:275
 AliTriggerAnalysis.cxx:276
 AliTriggerAnalysis.cxx:277
 AliTriggerAnalysis.cxx:278
 AliTriggerAnalysis.cxx:279
 AliTriggerAnalysis.cxx:280
 AliTriggerAnalysis.cxx:281
 AliTriggerAnalysis.cxx:282
 AliTriggerAnalysis.cxx:283
 AliTriggerAnalysis.cxx:284
 AliTriggerAnalysis.cxx:285
 AliTriggerAnalysis.cxx:286
 AliTriggerAnalysis.cxx:287
 AliTriggerAnalysis.cxx:288
 AliTriggerAnalysis.cxx:289
 AliTriggerAnalysis.cxx:290
 AliTriggerAnalysis.cxx:291
 AliTriggerAnalysis.cxx:292
 AliTriggerAnalysis.cxx:293
 AliTriggerAnalysis.cxx:294
 AliTriggerAnalysis.cxx:295
 AliTriggerAnalysis.cxx:296
 AliTriggerAnalysis.cxx:297
 AliTriggerAnalysis.cxx:298
 AliTriggerAnalysis.cxx:299
 AliTriggerAnalysis.cxx:300
 AliTriggerAnalysis.cxx:301
 AliTriggerAnalysis.cxx:302
 AliTriggerAnalysis.cxx:303
 AliTriggerAnalysis.cxx:304
 AliTriggerAnalysis.cxx:305
 AliTriggerAnalysis.cxx:306
 AliTriggerAnalysis.cxx:307
 AliTriggerAnalysis.cxx:308
 AliTriggerAnalysis.cxx:309
 AliTriggerAnalysis.cxx:310
 AliTriggerAnalysis.cxx:311
 AliTriggerAnalysis.cxx:312
 AliTriggerAnalysis.cxx:313
 AliTriggerAnalysis.cxx:314
 AliTriggerAnalysis.cxx:315
 AliTriggerAnalysis.cxx:316
 AliTriggerAnalysis.cxx:317
 AliTriggerAnalysis.cxx:318
 AliTriggerAnalysis.cxx:319
 AliTriggerAnalysis.cxx:320
 AliTriggerAnalysis.cxx:321
 AliTriggerAnalysis.cxx:322
 AliTriggerAnalysis.cxx:323
 AliTriggerAnalysis.cxx:324
 AliTriggerAnalysis.cxx:325
 AliTriggerAnalysis.cxx:326
 AliTriggerAnalysis.cxx:327
 AliTriggerAnalysis.cxx:328
 AliTriggerAnalysis.cxx:329
 AliTriggerAnalysis.cxx:330
 AliTriggerAnalysis.cxx:331
 AliTriggerAnalysis.cxx:332
 AliTriggerAnalysis.cxx:333
 AliTriggerAnalysis.cxx:334
 AliTriggerAnalysis.cxx:335
 AliTriggerAnalysis.cxx:336
 AliTriggerAnalysis.cxx:337
 AliTriggerAnalysis.cxx:338
 AliTriggerAnalysis.cxx:339
 AliTriggerAnalysis.cxx:340
 AliTriggerAnalysis.cxx:341
 AliTriggerAnalysis.cxx:342
 AliTriggerAnalysis.cxx:343
 AliTriggerAnalysis.cxx:344
 AliTriggerAnalysis.cxx:345
 AliTriggerAnalysis.cxx:346
 AliTriggerAnalysis.cxx:347
 AliTriggerAnalysis.cxx:348
 AliTriggerAnalysis.cxx:349
 AliTriggerAnalysis.cxx:350
 AliTriggerAnalysis.cxx:351
 AliTriggerAnalysis.cxx:352
 AliTriggerAnalysis.cxx:353
 AliTriggerAnalysis.cxx:354
 AliTriggerAnalysis.cxx:355
 AliTriggerAnalysis.cxx:356
 AliTriggerAnalysis.cxx:357
 AliTriggerAnalysis.cxx:358
 AliTriggerAnalysis.cxx:359
 AliTriggerAnalysis.cxx:360
 AliTriggerAnalysis.cxx:361
 AliTriggerAnalysis.cxx:362
 AliTriggerAnalysis.cxx:363
 AliTriggerAnalysis.cxx:364
 AliTriggerAnalysis.cxx:365
 AliTriggerAnalysis.cxx:366
 AliTriggerAnalysis.cxx:367
 AliTriggerAnalysis.cxx:368
 AliTriggerAnalysis.cxx:369
 AliTriggerAnalysis.cxx:370
 AliTriggerAnalysis.cxx:371
 AliTriggerAnalysis.cxx:372
 AliTriggerAnalysis.cxx:373
 AliTriggerAnalysis.cxx:374
 AliTriggerAnalysis.cxx:375
 AliTriggerAnalysis.cxx:376
 AliTriggerAnalysis.cxx:377
 AliTriggerAnalysis.cxx:378
 AliTriggerAnalysis.cxx:379
 AliTriggerAnalysis.cxx:380
 AliTriggerAnalysis.cxx:381
 AliTriggerAnalysis.cxx:382
 AliTriggerAnalysis.cxx:383
 AliTriggerAnalysis.cxx:384
 AliTriggerAnalysis.cxx:385
 AliTriggerAnalysis.cxx:386
 AliTriggerAnalysis.cxx:387
 AliTriggerAnalysis.cxx:388
 AliTriggerAnalysis.cxx:389
 AliTriggerAnalysis.cxx:390
 AliTriggerAnalysis.cxx:391
 AliTriggerAnalysis.cxx:392
 AliTriggerAnalysis.cxx:393
 AliTriggerAnalysis.cxx:394
 AliTriggerAnalysis.cxx:395
 AliTriggerAnalysis.cxx:396
 AliTriggerAnalysis.cxx:397
 AliTriggerAnalysis.cxx:398
 AliTriggerAnalysis.cxx:399
 AliTriggerAnalysis.cxx:400
 AliTriggerAnalysis.cxx:401
 AliTriggerAnalysis.cxx:402
 AliTriggerAnalysis.cxx:403
 AliTriggerAnalysis.cxx:404
 AliTriggerAnalysis.cxx:405
 AliTriggerAnalysis.cxx:406
 AliTriggerAnalysis.cxx:407
 AliTriggerAnalysis.cxx:408
 AliTriggerAnalysis.cxx:409
 AliTriggerAnalysis.cxx:410
 AliTriggerAnalysis.cxx:411
 AliTriggerAnalysis.cxx:412
 AliTriggerAnalysis.cxx:413
 AliTriggerAnalysis.cxx:414
 AliTriggerAnalysis.cxx:415
 AliTriggerAnalysis.cxx:416
 AliTriggerAnalysis.cxx:417
 AliTriggerAnalysis.cxx:418
 AliTriggerAnalysis.cxx:419
 AliTriggerAnalysis.cxx:420
 AliTriggerAnalysis.cxx:421
 AliTriggerAnalysis.cxx:422
 AliTriggerAnalysis.cxx:423
 AliTriggerAnalysis.cxx:424
 AliTriggerAnalysis.cxx:425
 AliTriggerAnalysis.cxx:426
 AliTriggerAnalysis.cxx:427
 AliTriggerAnalysis.cxx:428
 AliTriggerAnalysis.cxx:429
 AliTriggerAnalysis.cxx:430
 AliTriggerAnalysis.cxx:431
 AliTriggerAnalysis.cxx:432
 AliTriggerAnalysis.cxx:433
 AliTriggerAnalysis.cxx:434
 AliTriggerAnalysis.cxx:435
 AliTriggerAnalysis.cxx:436
 AliTriggerAnalysis.cxx:437
 AliTriggerAnalysis.cxx:438
 AliTriggerAnalysis.cxx:439
 AliTriggerAnalysis.cxx:440
 AliTriggerAnalysis.cxx:441
 AliTriggerAnalysis.cxx:442
 AliTriggerAnalysis.cxx:443
 AliTriggerAnalysis.cxx:444
 AliTriggerAnalysis.cxx:445
 AliTriggerAnalysis.cxx:446
 AliTriggerAnalysis.cxx:447
 AliTriggerAnalysis.cxx:448
 AliTriggerAnalysis.cxx:449
 AliTriggerAnalysis.cxx:450
 AliTriggerAnalysis.cxx:451
 AliTriggerAnalysis.cxx:452
 AliTriggerAnalysis.cxx:453
 AliTriggerAnalysis.cxx:454
 AliTriggerAnalysis.cxx:455
 AliTriggerAnalysis.cxx:456
 AliTriggerAnalysis.cxx:457
 AliTriggerAnalysis.cxx:458
 AliTriggerAnalysis.cxx:459
 AliTriggerAnalysis.cxx:460
 AliTriggerAnalysis.cxx:461
 AliTriggerAnalysis.cxx:462
 AliTriggerAnalysis.cxx:463
 AliTriggerAnalysis.cxx:464
 AliTriggerAnalysis.cxx:465
 AliTriggerAnalysis.cxx:466
 AliTriggerAnalysis.cxx:467
 AliTriggerAnalysis.cxx:468
 AliTriggerAnalysis.cxx:469
 AliTriggerAnalysis.cxx:470
 AliTriggerAnalysis.cxx:471
 AliTriggerAnalysis.cxx:472
 AliTriggerAnalysis.cxx:473
 AliTriggerAnalysis.cxx:474
 AliTriggerAnalysis.cxx:475
 AliTriggerAnalysis.cxx:476
 AliTriggerAnalysis.cxx:477
 AliTriggerAnalysis.cxx:478
 AliTriggerAnalysis.cxx:479
 AliTriggerAnalysis.cxx:480
 AliTriggerAnalysis.cxx:481
 AliTriggerAnalysis.cxx:482
 AliTriggerAnalysis.cxx:483
 AliTriggerAnalysis.cxx:484
 AliTriggerAnalysis.cxx:485
 AliTriggerAnalysis.cxx:486
 AliTriggerAnalysis.cxx:487
 AliTriggerAnalysis.cxx:488
 AliTriggerAnalysis.cxx:489
 AliTriggerAnalysis.cxx:490
 AliTriggerAnalysis.cxx:491
 AliTriggerAnalysis.cxx:492
 AliTriggerAnalysis.cxx:493
 AliTriggerAnalysis.cxx:494
 AliTriggerAnalysis.cxx:495
 AliTriggerAnalysis.cxx:496
 AliTriggerAnalysis.cxx:497
 AliTriggerAnalysis.cxx:498
 AliTriggerAnalysis.cxx:499
 AliTriggerAnalysis.cxx:500
 AliTriggerAnalysis.cxx:501
 AliTriggerAnalysis.cxx:502
 AliTriggerAnalysis.cxx:503
 AliTriggerAnalysis.cxx:504
 AliTriggerAnalysis.cxx:505
 AliTriggerAnalysis.cxx:506
 AliTriggerAnalysis.cxx:507
 AliTriggerAnalysis.cxx:508
 AliTriggerAnalysis.cxx:509
 AliTriggerAnalysis.cxx:510
 AliTriggerAnalysis.cxx:511
 AliTriggerAnalysis.cxx:512
 AliTriggerAnalysis.cxx:513
 AliTriggerAnalysis.cxx:514
 AliTriggerAnalysis.cxx:515
 AliTriggerAnalysis.cxx:516
 AliTriggerAnalysis.cxx:517
 AliTriggerAnalysis.cxx:518
 AliTriggerAnalysis.cxx:519
 AliTriggerAnalysis.cxx:520
 AliTriggerAnalysis.cxx:521
 AliTriggerAnalysis.cxx:522
 AliTriggerAnalysis.cxx:523
 AliTriggerAnalysis.cxx:524
 AliTriggerAnalysis.cxx:525
 AliTriggerAnalysis.cxx:526
 AliTriggerAnalysis.cxx:527
 AliTriggerAnalysis.cxx:528
 AliTriggerAnalysis.cxx:529
 AliTriggerAnalysis.cxx:530
 AliTriggerAnalysis.cxx:531
 AliTriggerAnalysis.cxx:532
 AliTriggerAnalysis.cxx:533
 AliTriggerAnalysis.cxx:534
 AliTriggerAnalysis.cxx:535
 AliTriggerAnalysis.cxx:536
 AliTriggerAnalysis.cxx:537
 AliTriggerAnalysis.cxx:538
 AliTriggerAnalysis.cxx:539
 AliTriggerAnalysis.cxx:540
 AliTriggerAnalysis.cxx:541
 AliTriggerAnalysis.cxx:542
 AliTriggerAnalysis.cxx:543
 AliTriggerAnalysis.cxx:544
 AliTriggerAnalysis.cxx:545
 AliTriggerAnalysis.cxx:546
 AliTriggerAnalysis.cxx:547
 AliTriggerAnalysis.cxx:548
 AliTriggerAnalysis.cxx:549
 AliTriggerAnalysis.cxx:550
 AliTriggerAnalysis.cxx:551
 AliTriggerAnalysis.cxx:552
 AliTriggerAnalysis.cxx:553
 AliTriggerAnalysis.cxx:554
 AliTriggerAnalysis.cxx:555
 AliTriggerAnalysis.cxx:556
 AliTriggerAnalysis.cxx:557
 AliTriggerAnalysis.cxx:558
 AliTriggerAnalysis.cxx:559
 AliTriggerAnalysis.cxx:560
 AliTriggerAnalysis.cxx:561
 AliTriggerAnalysis.cxx:562
 AliTriggerAnalysis.cxx:563
 AliTriggerAnalysis.cxx:564
 AliTriggerAnalysis.cxx:565
 AliTriggerAnalysis.cxx:566
 AliTriggerAnalysis.cxx:567
 AliTriggerAnalysis.cxx:568
 AliTriggerAnalysis.cxx:569
 AliTriggerAnalysis.cxx:570
 AliTriggerAnalysis.cxx:571
 AliTriggerAnalysis.cxx:572
 AliTriggerAnalysis.cxx:573
 AliTriggerAnalysis.cxx:574
 AliTriggerAnalysis.cxx:575
 AliTriggerAnalysis.cxx:576
 AliTriggerAnalysis.cxx:577
 AliTriggerAnalysis.cxx:578
 AliTriggerAnalysis.cxx:579
 AliTriggerAnalysis.cxx:580
 AliTriggerAnalysis.cxx:581
 AliTriggerAnalysis.cxx:582
 AliTriggerAnalysis.cxx:583
 AliTriggerAnalysis.cxx:584
 AliTriggerAnalysis.cxx:585
 AliTriggerAnalysis.cxx:586
 AliTriggerAnalysis.cxx:587
 AliTriggerAnalysis.cxx:588
 AliTriggerAnalysis.cxx:589
 AliTriggerAnalysis.cxx:590
 AliTriggerAnalysis.cxx:591
 AliTriggerAnalysis.cxx:592
 AliTriggerAnalysis.cxx:593
 AliTriggerAnalysis.cxx:594
 AliTriggerAnalysis.cxx:595
 AliTriggerAnalysis.cxx:596
 AliTriggerAnalysis.cxx:597
 AliTriggerAnalysis.cxx:598
 AliTriggerAnalysis.cxx:599
 AliTriggerAnalysis.cxx:600
 AliTriggerAnalysis.cxx:601
 AliTriggerAnalysis.cxx:602
 AliTriggerAnalysis.cxx:603
 AliTriggerAnalysis.cxx:604
 AliTriggerAnalysis.cxx:605
 AliTriggerAnalysis.cxx:606
 AliTriggerAnalysis.cxx:607
 AliTriggerAnalysis.cxx:608
 AliTriggerAnalysis.cxx:609
 AliTriggerAnalysis.cxx:610
 AliTriggerAnalysis.cxx:611
 AliTriggerAnalysis.cxx:612
 AliTriggerAnalysis.cxx:613
 AliTriggerAnalysis.cxx:614
 AliTriggerAnalysis.cxx:615
 AliTriggerAnalysis.cxx:616
 AliTriggerAnalysis.cxx:617
 AliTriggerAnalysis.cxx:618
 AliTriggerAnalysis.cxx:619
 AliTriggerAnalysis.cxx:620
 AliTriggerAnalysis.cxx:621
 AliTriggerAnalysis.cxx:622
 AliTriggerAnalysis.cxx:623
 AliTriggerAnalysis.cxx:624
 AliTriggerAnalysis.cxx:625
 AliTriggerAnalysis.cxx:626
 AliTriggerAnalysis.cxx:627
 AliTriggerAnalysis.cxx:628
 AliTriggerAnalysis.cxx:629
 AliTriggerAnalysis.cxx:630
 AliTriggerAnalysis.cxx:631
 AliTriggerAnalysis.cxx:632
 AliTriggerAnalysis.cxx:633
 AliTriggerAnalysis.cxx:634
 AliTriggerAnalysis.cxx:635
 AliTriggerAnalysis.cxx:636
 AliTriggerAnalysis.cxx:637
 AliTriggerAnalysis.cxx:638
 AliTriggerAnalysis.cxx:639
 AliTriggerAnalysis.cxx:640
 AliTriggerAnalysis.cxx:641
 AliTriggerAnalysis.cxx:642
 AliTriggerAnalysis.cxx:643
 AliTriggerAnalysis.cxx:644
 AliTriggerAnalysis.cxx:645
 AliTriggerAnalysis.cxx:646
 AliTriggerAnalysis.cxx:647
 AliTriggerAnalysis.cxx:648
 AliTriggerAnalysis.cxx:649
 AliTriggerAnalysis.cxx:650
 AliTriggerAnalysis.cxx:651
 AliTriggerAnalysis.cxx:652
 AliTriggerAnalysis.cxx:653
 AliTriggerAnalysis.cxx:654
 AliTriggerAnalysis.cxx:655
 AliTriggerAnalysis.cxx:656
 AliTriggerAnalysis.cxx:657
 AliTriggerAnalysis.cxx:658
 AliTriggerAnalysis.cxx:659
 AliTriggerAnalysis.cxx:660
 AliTriggerAnalysis.cxx:661
 AliTriggerAnalysis.cxx:662
 AliTriggerAnalysis.cxx:663
 AliTriggerAnalysis.cxx:664
 AliTriggerAnalysis.cxx:665
 AliTriggerAnalysis.cxx:666
 AliTriggerAnalysis.cxx:667
 AliTriggerAnalysis.cxx:668
 AliTriggerAnalysis.cxx:669
 AliTriggerAnalysis.cxx:670
 AliTriggerAnalysis.cxx:671
 AliTriggerAnalysis.cxx:672
 AliTriggerAnalysis.cxx:673
 AliTriggerAnalysis.cxx:674
 AliTriggerAnalysis.cxx:675
 AliTriggerAnalysis.cxx:676
 AliTriggerAnalysis.cxx:677
 AliTriggerAnalysis.cxx:678
 AliTriggerAnalysis.cxx:679
 AliTriggerAnalysis.cxx:680
 AliTriggerAnalysis.cxx:681
 AliTriggerAnalysis.cxx:682
 AliTriggerAnalysis.cxx:683
 AliTriggerAnalysis.cxx:684
 AliTriggerAnalysis.cxx:685
 AliTriggerAnalysis.cxx:686
 AliTriggerAnalysis.cxx:687
 AliTriggerAnalysis.cxx:688
 AliTriggerAnalysis.cxx:689
 AliTriggerAnalysis.cxx:690
 AliTriggerAnalysis.cxx:691
 AliTriggerAnalysis.cxx:692
 AliTriggerAnalysis.cxx:693
 AliTriggerAnalysis.cxx:694
 AliTriggerAnalysis.cxx:695
 AliTriggerAnalysis.cxx:696
 AliTriggerAnalysis.cxx:697
 AliTriggerAnalysis.cxx:698
 AliTriggerAnalysis.cxx:699
 AliTriggerAnalysis.cxx:700
 AliTriggerAnalysis.cxx:701
 AliTriggerAnalysis.cxx:702
 AliTriggerAnalysis.cxx:703
 AliTriggerAnalysis.cxx:704
 AliTriggerAnalysis.cxx:705
 AliTriggerAnalysis.cxx:706
 AliTriggerAnalysis.cxx:707
 AliTriggerAnalysis.cxx:708
 AliTriggerAnalysis.cxx:709
 AliTriggerAnalysis.cxx:710
 AliTriggerAnalysis.cxx:711
 AliTriggerAnalysis.cxx:712
 AliTriggerAnalysis.cxx:713
 AliTriggerAnalysis.cxx:714
 AliTriggerAnalysis.cxx:715
 AliTriggerAnalysis.cxx:716
 AliTriggerAnalysis.cxx:717
 AliTriggerAnalysis.cxx:718
 AliTriggerAnalysis.cxx:719
 AliTriggerAnalysis.cxx:720
 AliTriggerAnalysis.cxx:721
 AliTriggerAnalysis.cxx:722
 AliTriggerAnalysis.cxx:723
 AliTriggerAnalysis.cxx:724
 AliTriggerAnalysis.cxx:725
 AliTriggerAnalysis.cxx:726
 AliTriggerAnalysis.cxx:727
 AliTriggerAnalysis.cxx:728
 AliTriggerAnalysis.cxx:729
 AliTriggerAnalysis.cxx:730
 AliTriggerAnalysis.cxx:731
 AliTriggerAnalysis.cxx:732
 AliTriggerAnalysis.cxx:733
 AliTriggerAnalysis.cxx:734
 AliTriggerAnalysis.cxx:735
 AliTriggerAnalysis.cxx:736
 AliTriggerAnalysis.cxx:737
 AliTriggerAnalysis.cxx:738
 AliTriggerAnalysis.cxx:739
 AliTriggerAnalysis.cxx:740
 AliTriggerAnalysis.cxx:741
 AliTriggerAnalysis.cxx:742
 AliTriggerAnalysis.cxx:743
 AliTriggerAnalysis.cxx:744
 AliTriggerAnalysis.cxx:745
 AliTriggerAnalysis.cxx:746
 AliTriggerAnalysis.cxx:747
 AliTriggerAnalysis.cxx:748
 AliTriggerAnalysis.cxx:749
 AliTriggerAnalysis.cxx:750
 AliTriggerAnalysis.cxx:751
 AliTriggerAnalysis.cxx:752
 AliTriggerAnalysis.cxx:753
 AliTriggerAnalysis.cxx:754
 AliTriggerAnalysis.cxx:755
 AliTriggerAnalysis.cxx:756
 AliTriggerAnalysis.cxx:757
 AliTriggerAnalysis.cxx:758
 AliTriggerAnalysis.cxx:759
 AliTriggerAnalysis.cxx:760
 AliTriggerAnalysis.cxx:761
 AliTriggerAnalysis.cxx:762
 AliTriggerAnalysis.cxx:763
 AliTriggerAnalysis.cxx:764
 AliTriggerAnalysis.cxx:765
 AliTriggerAnalysis.cxx:766
 AliTriggerAnalysis.cxx:767
 AliTriggerAnalysis.cxx:768
 AliTriggerAnalysis.cxx:769
 AliTriggerAnalysis.cxx:770
 AliTriggerAnalysis.cxx:771
 AliTriggerAnalysis.cxx:772
 AliTriggerAnalysis.cxx:773
 AliTriggerAnalysis.cxx:774
 AliTriggerAnalysis.cxx:775
 AliTriggerAnalysis.cxx:776
 AliTriggerAnalysis.cxx:777
 AliTriggerAnalysis.cxx:778
 AliTriggerAnalysis.cxx:779
 AliTriggerAnalysis.cxx:780
 AliTriggerAnalysis.cxx:781
 AliTriggerAnalysis.cxx:782
 AliTriggerAnalysis.cxx:783
 AliTriggerAnalysis.cxx:784
 AliTriggerAnalysis.cxx:785
 AliTriggerAnalysis.cxx:786
 AliTriggerAnalysis.cxx:787
 AliTriggerAnalysis.cxx:788
 AliTriggerAnalysis.cxx:789
 AliTriggerAnalysis.cxx:790
 AliTriggerAnalysis.cxx:791
 AliTriggerAnalysis.cxx:792
 AliTriggerAnalysis.cxx:793
 AliTriggerAnalysis.cxx:794
 AliTriggerAnalysis.cxx:795
 AliTriggerAnalysis.cxx:796
 AliTriggerAnalysis.cxx:797
 AliTriggerAnalysis.cxx:798
 AliTriggerAnalysis.cxx:799
 AliTriggerAnalysis.cxx:800
 AliTriggerAnalysis.cxx:801
 AliTriggerAnalysis.cxx:802
 AliTriggerAnalysis.cxx:803
 AliTriggerAnalysis.cxx:804
 AliTriggerAnalysis.cxx:805
 AliTriggerAnalysis.cxx:806
 AliTriggerAnalysis.cxx:807
 AliTriggerAnalysis.cxx:808
 AliTriggerAnalysis.cxx:809
 AliTriggerAnalysis.cxx:810
 AliTriggerAnalysis.cxx:811
 AliTriggerAnalysis.cxx:812
 AliTriggerAnalysis.cxx:813
 AliTriggerAnalysis.cxx:814
 AliTriggerAnalysis.cxx:815
 AliTriggerAnalysis.cxx:816
 AliTriggerAnalysis.cxx:817
 AliTriggerAnalysis.cxx:818
 AliTriggerAnalysis.cxx:819
 AliTriggerAnalysis.cxx:820
 AliTriggerAnalysis.cxx:821
 AliTriggerAnalysis.cxx:822
 AliTriggerAnalysis.cxx:823
 AliTriggerAnalysis.cxx:824
 AliTriggerAnalysis.cxx:825
 AliTriggerAnalysis.cxx:826
 AliTriggerAnalysis.cxx:827
 AliTriggerAnalysis.cxx:828
 AliTriggerAnalysis.cxx:829
 AliTriggerAnalysis.cxx:830
 AliTriggerAnalysis.cxx:831
 AliTriggerAnalysis.cxx:832
 AliTriggerAnalysis.cxx:833
 AliTriggerAnalysis.cxx:834
 AliTriggerAnalysis.cxx:835
 AliTriggerAnalysis.cxx:836
 AliTriggerAnalysis.cxx:837
 AliTriggerAnalysis.cxx:838
 AliTriggerAnalysis.cxx:839
 AliTriggerAnalysis.cxx:840
 AliTriggerAnalysis.cxx:841
 AliTriggerAnalysis.cxx:842
 AliTriggerAnalysis.cxx:843
 AliTriggerAnalysis.cxx:844
 AliTriggerAnalysis.cxx:845
 AliTriggerAnalysis.cxx:846
 AliTriggerAnalysis.cxx:847
 AliTriggerAnalysis.cxx:848
 AliTriggerAnalysis.cxx:849
 AliTriggerAnalysis.cxx:850
 AliTriggerAnalysis.cxx:851
 AliTriggerAnalysis.cxx:852
 AliTriggerAnalysis.cxx:853
 AliTriggerAnalysis.cxx:854
 AliTriggerAnalysis.cxx:855
 AliTriggerAnalysis.cxx:856
 AliTriggerAnalysis.cxx:857
 AliTriggerAnalysis.cxx:858
 AliTriggerAnalysis.cxx:859
 AliTriggerAnalysis.cxx:860
 AliTriggerAnalysis.cxx:861
 AliTriggerAnalysis.cxx:862
 AliTriggerAnalysis.cxx:863
 AliTriggerAnalysis.cxx:864
 AliTriggerAnalysis.cxx:865
 AliTriggerAnalysis.cxx:866
 AliTriggerAnalysis.cxx:867
 AliTriggerAnalysis.cxx:868
 AliTriggerAnalysis.cxx:869
 AliTriggerAnalysis.cxx:870
 AliTriggerAnalysis.cxx:871
 AliTriggerAnalysis.cxx:872
 AliTriggerAnalysis.cxx:873
 AliTriggerAnalysis.cxx:874
 AliTriggerAnalysis.cxx:875
 AliTriggerAnalysis.cxx:876
 AliTriggerAnalysis.cxx:877
 AliTriggerAnalysis.cxx:878
 AliTriggerAnalysis.cxx:879
 AliTriggerAnalysis.cxx:880
 AliTriggerAnalysis.cxx:881
 AliTriggerAnalysis.cxx:882
 AliTriggerAnalysis.cxx:883
 AliTriggerAnalysis.cxx:884
 AliTriggerAnalysis.cxx:885
 AliTriggerAnalysis.cxx:886
 AliTriggerAnalysis.cxx:887
 AliTriggerAnalysis.cxx:888
 AliTriggerAnalysis.cxx:889
 AliTriggerAnalysis.cxx:890
 AliTriggerAnalysis.cxx:891
 AliTriggerAnalysis.cxx:892
 AliTriggerAnalysis.cxx:893
 AliTriggerAnalysis.cxx:894
 AliTriggerAnalysis.cxx:895
 AliTriggerAnalysis.cxx:896
 AliTriggerAnalysis.cxx:897
 AliTriggerAnalysis.cxx:898
 AliTriggerAnalysis.cxx:899
 AliTriggerAnalysis.cxx:900
 AliTriggerAnalysis.cxx:901
 AliTriggerAnalysis.cxx:902
 AliTriggerAnalysis.cxx:903
 AliTriggerAnalysis.cxx:904
 AliTriggerAnalysis.cxx:905
 AliTriggerAnalysis.cxx:906
 AliTriggerAnalysis.cxx:907
 AliTriggerAnalysis.cxx:908
 AliTriggerAnalysis.cxx:909
 AliTriggerAnalysis.cxx:910
 AliTriggerAnalysis.cxx:911
 AliTriggerAnalysis.cxx:912
 AliTriggerAnalysis.cxx:913
 AliTriggerAnalysis.cxx:914
 AliTriggerAnalysis.cxx:915
 AliTriggerAnalysis.cxx:916
 AliTriggerAnalysis.cxx:917
 AliTriggerAnalysis.cxx:918
 AliTriggerAnalysis.cxx:919
 AliTriggerAnalysis.cxx:920
 AliTriggerAnalysis.cxx:921
 AliTriggerAnalysis.cxx:922
 AliTriggerAnalysis.cxx:923
 AliTriggerAnalysis.cxx:924
 AliTriggerAnalysis.cxx:925
 AliTriggerAnalysis.cxx:926
 AliTriggerAnalysis.cxx:927
 AliTriggerAnalysis.cxx:928
 AliTriggerAnalysis.cxx:929
 AliTriggerAnalysis.cxx:930
 AliTriggerAnalysis.cxx:931
 AliTriggerAnalysis.cxx:932
 AliTriggerAnalysis.cxx:933
 AliTriggerAnalysis.cxx:934
 AliTriggerAnalysis.cxx:935
 AliTriggerAnalysis.cxx:936
 AliTriggerAnalysis.cxx:937
 AliTriggerAnalysis.cxx:938
 AliTriggerAnalysis.cxx:939
 AliTriggerAnalysis.cxx:940
 AliTriggerAnalysis.cxx:941
 AliTriggerAnalysis.cxx:942
 AliTriggerAnalysis.cxx:943
 AliTriggerAnalysis.cxx:944
 AliTriggerAnalysis.cxx:945
 AliTriggerAnalysis.cxx:946
 AliTriggerAnalysis.cxx:947
 AliTriggerAnalysis.cxx:948
 AliTriggerAnalysis.cxx:949
 AliTriggerAnalysis.cxx:950
 AliTriggerAnalysis.cxx:951
 AliTriggerAnalysis.cxx:952
 AliTriggerAnalysis.cxx:953
 AliTriggerAnalysis.cxx:954
 AliTriggerAnalysis.cxx:955
 AliTriggerAnalysis.cxx:956
 AliTriggerAnalysis.cxx:957
 AliTriggerAnalysis.cxx:958
 AliTriggerAnalysis.cxx:959
 AliTriggerAnalysis.cxx:960
 AliTriggerAnalysis.cxx:961
 AliTriggerAnalysis.cxx:962
 AliTriggerAnalysis.cxx:963
 AliTriggerAnalysis.cxx:964
 AliTriggerAnalysis.cxx:965
 AliTriggerAnalysis.cxx:966
 AliTriggerAnalysis.cxx:967
 AliTriggerAnalysis.cxx:968
 AliTriggerAnalysis.cxx:969
 AliTriggerAnalysis.cxx:970
 AliTriggerAnalysis.cxx:971
 AliTriggerAnalysis.cxx:972
 AliTriggerAnalysis.cxx:973
 AliTriggerAnalysis.cxx:974
 AliTriggerAnalysis.cxx:975
 AliTriggerAnalysis.cxx:976
 AliTriggerAnalysis.cxx:977
 AliTriggerAnalysis.cxx:978
 AliTriggerAnalysis.cxx:979
 AliTriggerAnalysis.cxx:980
 AliTriggerAnalysis.cxx:981
 AliTriggerAnalysis.cxx:982
 AliTriggerAnalysis.cxx:983
 AliTriggerAnalysis.cxx:984
 AliTriggerAnalysis.cxx:985
 AliTriggerAnalysis.cxx:986
 AliTriggerAnalysis.cxx:987
 AliTriggerAnalysis.cxx:988
 AliTriggerAnalysis.cxx:989
 AliTriggerAnalysis.cxx:990
 AliTriggerAnalysis.cxx:991
 AliTriggerAnalysis.cxx:992
 AliTriggerAnalysis.cxx:993
 AliTriggerAnalysis.cxx:994
 AliTriggerAnalysis.cxx:995
 AliTriggerAnalysis.cxx:996
 AliTriggerAnalysis.cxx:997
 AliTriggerAnalysis.cxx:998
 AliTriggerAnalysis.cxx:999
 AliTriggerAnalysis.cxx:1000
 AliTriggerAnalysis.cxx:1001
 AliTriggerAnalysis.cxx:1002
 AliTriggerAnalysis.cxx:1003
 AliTriggerAnalysis.cxx:1004
 AliTriggerAnalysis.cxx:1005
 AliTriggerAnalysis.cxx:1006
 AliTriggerAnalysis.cxx:1007
 AliTriggerAnalysis.cxx:1008
 AliTriggerAnalysis.cxx:1009
 AliTriggerAnalysis.cxx:1010
 AliTriggerAnalysis.cxx:1011
 AliTriggerAnalysis.cxx:1012
 AliTriggerAnalysis.cxx:1013
 AliTriggerAnalysis.cxx:1014
 AliTriggerAnalysis.cxx:1015
 AliTriggerAnalysis.cxx:1016
 AliTriggerAnalysis.cxx:1017
 AliTriggerAnalysis.cxx:1018
 AliTriggerAnalysis.cxx:1019
 AliTriggerAnalysis.cxx:1020
 AliTriggerAnalysis.cxx:1021
 AliTriggerAnalysis.cxx:1022
 AliTriggerAnalysis.cxx:1023
 AliTriggerAnalysis.cxx:1024
 AliTriggerAnalysis.cxx:1025
 AliTriggerAnalysis.cxx:1026
 AliTriggerAnalysis.cxx:1027
 AliTriggerAnalysis.cxx:1028
 AliTriggerAnalysis.cxx:1029
 AliTriggerAnalysis.cxx:1030
 AliTriggerAnalysis.cxx:1031
 AliTriggerAnalysis.cxx:1032
 AliTriggerAnalysis.cxx:1033
 AliTriggerAnalysis.cxx:1034
 AliTriggerAnalysis.cxx:1035
 AliTriggerAnalysis.cxx:1036
 AliTriggerAnalysis.cxx:1037
 AliTriggerAnalysis.cxx:1038
 AliTriggerAnalysis.cxx:1039
 AliTriggerAnalysis.cxx:1040
 AliTriggerAnalysis.cxx:1041
 AliTriggerAnalysis.cxx:1042
 AliTriggerAnalysis.cxx:1043
 AliTriggerAnalysis.cxx:1044
 AliTriggerAnalysis.cxx:1045
 AliTriggerAnalysis.cxx:1046
 AliTriggerAnalysis.cxx:1047
 AliTriggerAnalysis.cxx:1048
 AliTriggerAnalysis.cxx:1049
 AliTriggerAnalysis.cxx:1050
 AliTriggerAnalysis.cxx:1051
 AliTriggerAnalysis.cxx:1052
 AliTriggerAnalysis.cxx:1053
 AliTriggerAnalysis.cxx:1054
 AliTriggerAnalysis.cxx:1055
 AliTriggerAnalysis.cxx:1056
 AliTriggerAnalysis.cxx:1057
 AliTriggerAnalysis.cxx:1058
 AliTriggerAnalysis.cxx:1059
 AliTriggerAnalysis.cxx:1060
 AliTriggerAnalysis.cxx:1061
 AliTriggerAnalysis.cxx:1062
 AliTriggerAnalysis.cxx:1063
 AliTriggerAnalysis.cxx:1064
 AliTriggerAnalysis.cxx:1065
 AliTriggerAnalysis.cxx:1066
 AliTriggerAnalysis.cxx:1067
 AliTriggerAnalysis.cxx:1068
 AliTriggerAnalysis.cxx:1069
 AliTriggerAnalysis.cxx:1070
 AliTriggerAnalysis.cxx:1071
 AliTriggerAnalysis.cxx:1072
 AliTriggerAnalysis.cxx:1073
 AliTriggerAnalysis.cxx:1074
 AliTriggerAnalysis.cxx:1075
 AliTriggerAnalysis.cxx:1076
 AliTriggerAnalysis.cxx:1077
 AliTriggerAnalysis.cxx:1078
 AliTriggerAnalysis.cxx:1079
 AliTriggerAnalysis.cxx:1080
 AliTriggerAnalysis.cxx:1081
 AliTriggerAnalysis.cxx:1082
 AliTriggerAnalysis.cxx:1083
 AliTriggerAnalysis.cxx:1084
 AliTriggerAnalysis.cxx:1085
 AliTriggerAnalysis.cxx:1086
 AliTriggerAnalysis.cxx:1087
 AliTriggerAnalysis.cxx:1088
 AliTriggerAnalysis.cxx:1089
 AliTriggerAnalysis.cxx:1090
 AliTriggerAnalysis.cxx:1091
 AliTriggerAnalysis.cxx:1092
 AliTriggerAnalysis.cxx:1093
 AliTriggerAnalysis.cxx:1094
 AliTriggerAnalysis.cxx:1095
 AliTriggerAnalysis.cxx:1096
 AliTriggerAnalysis.cxx:1097
 AliTriggerAnalysis.cxx:1098
 AliTriggerAnalysis.cxx:1099
 AliTriggerAnalysis.cxx:1100
 AliTriggerAnalysis.cxx:1101
 AliTriggerAnalysis.cxx:1102
 AliTriggerAnalysis.cxx:1103
 AliTriggerAnalysis.cxx:1104
 AliTriggerAnalysis.cxx:1105
 AliTriggerAnalysis.cxx:1106
 AliTriggerAnalysis.cxx:1107
 AliTriggerAnalysis.cxx:1108
 AliTriggerAnalysis.cxx:1109
 AliTriggerAnalysis.cxx:1110
 AliTriggerAnalysis.cxx:1111
 AliTriggerAnalysis.cxx:1112
 AliTriggerAnalysis.cxx:1113
 AliTriggerAnalysis.cxx:1114
 AliTriggerAnalysis.cxx:1115
 AliTriggerAnalysis.cxx:1116
 AliTriggerAnalysis.cxx:1117
 AliTriggerAnalysis.cxx:1118
 AliTriggerAnalysis.cxx:1119
 AliTriggerAnalysis.cxx:1120
 AliTriggerAnalysis.cxx:1121
 AliTriggerAnalysis.cxx:1122
 AliTriggerAnalysis.cxx:1123
 AliTriggerAnalysis.cxx:1124
 AliTriggerAnalysis.cxx:1125
 AliTriggerAnalysis.cxx:1126
 AliTriggerAnalysis.cxx:1127
 AliTriggerAnalysis.cxx:1128
 AliTriggerAnalysis.cxx:1129
 AliTriggerAnalysis.cxx:1130
 AliTriggerAnalysis.cxx:1131
 AliTriggerAnalysis.cxx:1132
 AliTriggerAnalysis.cxx:1133
 AliTriggerAnalysis.cxx:1134
 AliTriggerAnalysis.cxx:1135
 AliTriggerAnalysis.cxx:1136
 AliTriggerAnalysis.cxx:1137
 AliTriggerAnalysis.cxx:1138
 AliTriggerAnalysis.cxx:1139
 AliTriggerAnalysis.cxx:1140
 AliTriggerAnalysis.cxx:1141
 AliTriggerAnalysis.cxx:1142
 AliTriggerAnalysis.cxx:1143
 AliTriggerAnalysis.cxx:1144
 AliTriggerAnalysis.cxx:1145
 AliTriggerAnalysis.cxx:1146
 AliTriggerAnalysis.cxx:1147
 AliTriggerAnalysis.cxx:1148
 AliTriggerAnalysis.cxx:1149
 AliTriggerAnalysis.cxx:1150
 AliTriggerAnalysis.cxx:1151
 AliTriggerAnalysis.cxx:1152
 AliTriggerAnalysis.cxx:1153
 AliTriggerAnalysis.cxx:1154
 AliTriggerAnalysis.cxx:1155
 AliTriggerAnalysis.cxx:1156
 AliTriggerAnalysis.cxx:1157
 AliTriggerAnalysis.cxx:1158
 AliTriggerAnalysis.cxx:1159
 AliTriggerAnalysis.cxx:1160
 AliTriggerAnalysis.cxx:1161
 AliTriggerAnalysis.cxx:1162
 AliTriggerAnalysis.cxx:1163
 AliTriggerAnalysis.cxx:1164
 AliTriggerAnalysis.cxx:1165
 AliTriggerAnalysis.cxx:1166
 AliTriggerAnalysis.cxx:1167
 AliTriggerAnalysis.cxx:1168
 AliTriggerAnalysis.cxx:1169
 AliTriggerAnalysis.cxx:1170
 AliTriggerAnalysis.cxx:1171
 AliTriggerAnalysis.cxx:1172
 AliTriggerAnalysis.cxx:1173
 AliTriggerAnalysis.cxx:1174
 AliTriggerAnalysis.cxx:1175
 AliTriggerAnalysis.cxx:1176
 AliTriggerAnalysis.cxx:1177
 AliTriggerAnalysis.cxx:1178
 AliTriggerAnalysis.cxx:1179
 AliTriggerAnalysis.cxx:1180
 AliTriggerAnalysis.cxx:1181
 AliTriggerAnalysis.cxx:1182
 AliTriggerAnalysis.cxx:1183
 AliTriggerAnalysis.cxx:1184
 AliTriggerAnalysis.cxx:1185
 AliTriggerAnalysis.cxx:1186
 AliTriggerAnalysis.cxx:1187
 AliTriggerAnalysis.cxx:1188
 AliTriggerAnalysis.cxx:1189
 AliTriggerAnalysis.cxx:1190
 AliTriggerAnalysis.cxx:1191
 AliTriggerAnalysis.cxx:1192
 AliTriggerAnalysis.cxx:1193
 AliTriggerAnalysis.cxx:1194
 AliTriggerAnalysis.cxx:1195
 AliTriggerAnalysis.cxx:1196
 AliTriggerAnalysis.cxx:1197
 AliTriggerAnalysis.cxx:1198
 AliTriggerAnalysis.cxx:1199
 AliTriggerAnalysis.cxx:1200
 AliTriggerAnalysis.cxx:1201
 AliTriggerAnalysis.cxx:1202
 AliTriggerAnalysis.cxx:1203
 AliTriggerAnalysis.cxx:1204
 AliTriggerAnalysis.cxx:1205
 AliTriggerAnalysis.cxx:1206
 AliTriggerAnalysis.cxx:1207
 AliTriggerAnalysis.cxx:1208
 AliTriggerAnalysis.cxx:1209
 AliTriggerAnalysis.cxx:1210
 AliTriggerAnalysis.cxx:1211
 AliTriggerAnalysis.cxx:1212
 AliTriggerAnalysis.cxx:1213
 AliTriggerAnalysis.cxx:1214
 AliTriggerAnalysis.cxx:1215
 AliTriggerAnalysis.cxx:1216
 AliTriggerAnalysis.cxx:1217
 AliTriggerAnalysis.cxx:1218
 AliTriggerAnalysis.cxx:1219
 AliTriggerAnalysis.cxx:1220
 AliTriggerAnalysis.cxx:1221
 AliTriggerAnalysis.cxx:1222
 AliTriggerAnalysis.cxx:1223
 AliTriggerAnalysis.cxx:1224
 AliTriggerAnalysis.cxx:1225
 AliTriggerAnalysis.cxx:1226
 AliTriggerAnalysis.cxx:1227
 AliTriggerAnalysis.cxx:1228
 AliTriggerAnalysis.cxx:1229
 AliTriggerAnalysis.cxx:1230
 AliTriggerAnalysis.cxx:1231
 AliTriggerAnalysis.cxx:1232
 AliTriggerAnalysis.cxx:1233
 AliTriggerAnalysis.cxx:1234
 AliTriggerAnalysis.cxx:1235
 AliTriggerAnalysis.cxx:1236
 AliTriggerAnalysis.cxx:1237
 AliTriggerAnalysis.cxx:1238
 AliTriggerAnalysis.cxx:1239
 AliTriggerAnalysis.cxx:1240
 AliTriggerAnalysis.cxx:1241
 AliTriggerAnalysis.cxx:1242