ROOT logo
//
// Class to make array of trigger patch objects in AOD/ESD events.
// The input for the process are:
//   - AliCaloTrigger objects from ESS/AOD, which contain raw trigger information
//   - the CaloCells, which contain offline/FEE information
//
// The output is a list of AliEmcalTriggerPatchInfo objects which is stored in ESD/AOD (Use event->FindListObject to get them) with three types of trigger patches:
//  1) Online trigger info
//  2) Trigger info based on the offline FEE ADCs (SimpleOffline)
//  3) The highest gamma and jet patch in the event, even if it does 
//     not pass the threshold (RecalcJet and RecalcGamma); with two versions
//     a) based on the online trigger information
//     b) based offline FEE information
// The different types of patches are distinguished by bitflags according 
// to the enum AliEmcalTriggerPatchInfo::TriggerMakerBits and 
//   EMCAL/AliEmcalTriggerTypes.h
//
// Author: J.Kral
#include <TClonesArray.h>
#include <TArrayI.h>
#include <THashList.h>
#include "AliAODCaloTrigger.h"
#include "AliEMCALGeometry.h"
//#include "AliEMCALTriggerTypes.h"
#include "AliEmcalTriggerPatchInfo.h"
#include "AliEmcalTriggerSetupInfo.h"
#include "AliLog.h"
#include "AliVCaloCells.h"
#include "AliVCaloTrigger.h"
#include "AliVVZERO.h"
#include "AliEmcalTriggerMaker.h"

#include "THistManager.h"
#include "TString.h"

ClassImp(AliEmcalTriggerMaker)

using namespace std;

const TString AliEmcalTriggerMaker::fgkTriggerTypeNames[5] = {"EJE", "EGA", "EL0", "REJE", "REGA"};
//________________________________________________________________________
AliEmcalTriggerMaker::AliEmcalTriggerMaker() : 
  AliAnalysisTaskEmcal("AliEmcalTriggerMaker",kFALSE),
  fCaloTriggersOutName("EmcalTriggers"),
  fCaloTriggerSetupOutName("EmcalTriggersSetup"),
  fV0InName("AliAODVZERO"),
  fUseTriggerBitConfig(kNewConfig),
  fTriggerBitConfig(NULL),
  fCaloTriggersOut(0),
  fCaloTriggerSetupOut(0),
  fSimpleOfflineTriggers(0),
  fV0(0),
  fITrigger(0),
  fDoQA(kFALSE),
  fQAHistos(NULL)
{
  // Constructor.
  fRunTriggerType[kTMEMCalJet] = kTRUE;
  fRunTriggerType[kTMEMCalGamma] = kTRUE;
  fRunTriggerType[kTMEMCalLevel0] = kTRUE;
  fRunTriggerType[kTMEMCalRecalcJet] = kTRUE;
  fRunTriggerType[kTMEMCalRecalcGamma] = kTRUE;
  memset(fThresholdConstants, 0, sizeof(Int_t) * 12);
  memset(fPatchADCSimple, 0, sizeof(Double_t) * kPatchCols * kPatchRows);
  memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
}

//________________________________________________________________________
AliEmcalTriggerMaker::AliEmcalTriggerMaker(const char *name, Bool_t doQA) :
  AliAnalysisTaskEmcal(name,doQA),
  fCaloTriggersOutName("EmcalTriggers"),
  fCaloTriggerSetupOutName("EmcalTriggersSetup"),
  fV0InName("AliAODVZERO"),
  fUseTriggerBitConfig(kNewConfig),
  fTriggerBitConfig(NULL),
  fCaloTriggersOut(0),
  fCaloTriggerSetupOut(0),
  fSimpleOfflineTriggers(0),
  fV0(0),
  fITrigger(0),
  fDoQA(doQA),
  fQAHistos(NULL)
{
  // Constructor.
  fRunTriggerType[kTMEMCalJet] = kTRUE;
  fRunTriggerType[kTMEMCalGamma] = kTRUE;
  fRunTriggerType[kTMEMCalLevel0] = kTRUE;
  fRunTriggerType[kTMEMCalRecalcJet] = kTRUE;
  fRunTriggerType[kTMEMCalRecalcGamma] = kTRUE;
  memset(fThresholdConstants, 0, sizeof(Int_t) * 12);
  memset(fPatchADCSimple, 0, sizeof(Double_t) * kPatchCols * kPatchRows);
  memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
}

//________________________________________________________________________
AliEmcalTriggerMaker::~AliEmcalTriggerMaker()
{
  // Destructor.
  if(fTriggerBitConfig) delete fTriggerBitConfig;
}

//________________________________________________________________________
void AliEmcalTriggerMaker::ExecOnce()
{
  // Init the analysis.

  AliAnalysisTaskEmcal::ExecOnce();

  if (!fInitialized)
    return;

  if(!fTriggerBitConfig){
    switch(fUseTriggerBitConfig){
    case kNewConfig:
      fTriggerBitConfig = new AliEmcalTriggerBitConfigNew();
      break;
    case kOldConfig:
      fTriggerBitConfig = new AliEmcalTriggerBitConfigOld();
      break;
    }
  }

  if (!fCaloTriggersOutName.IsNull()) {
    fCaloTriggersOut = new TClonesArray("AliEmcalTriggerPatchInfo");
    fCaloTriggersOut->SetName(fCaloTriggersOutName);

    if (!(InputEvent()->FindListObject(fCaloTriggersOutName))) {
      InputEvent()->AddObject(fCaloTriggersOut);
    }
    else {
      fInitialized = kFALSE;
      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fCaloTriggersOutName.Data()));
      return;
    }
  }

  if (!fCaloTriggerSetupOutName.IsNull()) {
    fCaloTriggerSetupOut = new AliEmcalTriggerSetupInfo();
    fCaloTriggerSetupOut->SetName(fCaloTriggerSetupOutName);

    if (!(InputEvent()->FindListObject(fCaloTriggerSetupOutName))) {
      InputEvent()->AddObject(fCaloTriggerSetupOut);
    }
    else {
      fInitialized = kFALSE;
      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fCaloTriggerSetupOutName.Data()));
      return;
    }
  }

  if ( ! fV0InName.IsNull()) {
    fV0 = (AliVVZERO*)InputEvent()->FindListObject(fV0InName);
  }

  // container for simple offline trigger processing
  fSimpleOfflineTriggers = new AliAODCaloTrigger();
  fSimpleOfflineTriggers->Allocate(0);
}

//________________________________________________________________________
void AliEmcalTriggerMaker::UserCreateOutputObjects()
{
  // Do basic QA monitoring (if requested)
  AliAnalysisTaskEmcal::UserCreateOutputObjects();

  if(fDoQA && fOutput){
    fQAHistos = new THistManager("TriggerQA");

    for(int itype = 0; itype < 5; itype++){
      fQAHistos->CreateTH2(Form("RCPos%s", fgkTriggerTypeNames[itype].Data()), Form("Lower edge position of %s patches (col-row)", fgkTriggerTypeNames[itype].Data()), 48, -0.5, 47.5, 64, -0.5, 63.5);
      fQAHistos->CreateTH2(Form("EPCentPos%s", fgkTriggerTypeNames[itype].Data()), Form("Center position of the %s trigger patches", fgkTriggerTypeNames[itype].Data()), 20, -0.8, 0.8, 100, 1., 4.);
      fQAHistos->CreateTH2(Form("PatchADCvsE%s", fgkTriggerTypeNames[itype].Data()), Form("Patch ADC value for trigger type %s", fgkTriggerTypeNames[itype].Data()), 200, 0., 200, 200, 0., 200);
    }
    fQAHistos->CreateTH1("triggerBitsAll", "Trigger bits for all incoming patches", 64, -0.5, 63.5);
    fQAHistos->CreateTH1("triggerBitsSel", "Trigger bits for reconstructed patches", 64, -0.5, 63.5);
    fOutput->Add(fQAHistos->GetListOfHistograms());
    PostData(1, fOutput);
  }
}

//________________________________________________________________________
Bool_t AliEmcalTriggerMaker::Run() 
{
  // Create and fill the patch array.

  AliEmcalTriggerPatchInfo *trigger, *triggerMainJet, *triggerMainGamma, *triggerMainLevel0;
  AliEmcalTriggerPatchInfo *triggerMainJetSimple, *triggerMainGammaSimple;

  // delete patch array, clear setup object
  fCaloTriggersOut->Delete();
  fCaloTriggerSetupOut->Clean();

  if (!fCaloTriggers) {
    AliError(Form("Calo triggers container %s not available.", fCaloTriggersName.Data()));
    return kTRUE;
  }
  if (!fCaloCells) {
    AliError(Form("Calo cells container %s not available.", fCaloCellsName.Data()));
    return kTRUE;
  }
  if (!fCaloCells) {
    AliError(Form("V0 container %s not available.", fV0InName.Data()));
    return kTRUE;
  }
  
  // do not process, if sooner than 11h period
  // 160683 ??
  if( InputEvent()->GetRunNumber() < 167693 )
    return kTRUE;
 
//   // do not process any MC, since no MC was generated with correct
//   // EMCal trigger L1 jet trigger simulation, yet
//   // productions will be enabled, once some correct once are produced
//   if( MCEvent() != 0 )
//     return kTRUE;
  
  // must reset before usage, or the class will fail 
  fCaloTriggers->Reset();

  // first run over the patch array to compose a map of 2x2 patch energies
  // which is then needed to construct the full patch ADC energy
  // class is not empty
  if (fCaloTriggers->GetEntries() > 0) {
    // zero the arrays
    memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);

    // go throuth the trigger channels
    while (fCaloTriggers->Next()) {
      // get position in global 2x2 tower coordinates
      // A0 left bottom (0,0)
      Int_t globCol=-1, globRow=-1;
      fCaloTriggers->GetPosition(globCol, globRow);
      // for some strange reason some ADC amps are initialized in reconstruction
      // as -1, neglect those 
      Int_t adcAmp=-1;
      fCaloTriggers->GetL1TimeSum(adcAmp);
      if (adcAmp>-1)
	    fPatchADC[globCol][globRow] = adcAmp;
    } // patches
  } // array not empty
  
  // fill the array for offline trigger processing
  // using calibrated cell energies
  memset(fPatchADCSimple, 0, sizeof(Double_t) * kPatchRows * kPatchCols); // This works, but in principle cannot assume that the representation for 0 in a double really consists of only zeros...

  // fill the patch ADCs from cells
  Int_t nCell = fCaloCells->GetNumberOfCells();
  for(Int_t iCell = 0; iCell < nCell; ++iCell) {
    // get the cell info, based in index in array
    Short_t cellId = fCaloCells->GetCellNumber(iCell);
    Double_t amp = fCaloCells->GetAmplitude(iCell);
    // get position
    Int_t absId=-1;
    fGeom->GetFastORIndexFromCellIndex(cellId, absId);
    Int_t globCol=-1, globRow=-1;
    fGeom->GetPositionInEMCALFromAbsFastORIndex(absId, globCol, globRow);
    // add
    fPatchADCSimple[globCol][globRow] += amp/kEMCL1ADCtoGeV;
  }

  // dig out common data (thresholds)
  // 0 - jet high, 1 - gamma high, 2 - jet low, 3 - gamma low
  fCaloTriggerSetupOut->SetThresholds(fCaloTriggers->GetL1Threshold(0),
                                      fCaloTriggers->GetL1Threshold(1),
                                      fCaloTriggers->GetL1Threshold(2),
                                      fCaloTriggers->GetL1Threshold(3));

  // get the V0 value and compute and set the offline thresholds
  // get V0, compute thresholds and save them as global parameters
  Int_t v0[2];
  v0[0] = fV0->GetTriggerChargeA();
  v0[1] = fV0->GetTriggerChargeC();
  ULong64_t v0S = v0[0] + v0[1];
  fSimpleOfflineTriggers->SetL1V0(v0);
  
  for (Int_t i = 0; i < 4; ++i) {
    // A*V0^2/2^32+B*V0/2^16+C
    ULong64_t thresh = ( ((ULong64_t)fThresholdConstants[i][0]) * v0S * v0S ) >> 32;
    thresh += ( ((ULong64_t)fThresholdConstants[i][1]) * v0S ) >> 16;
    thresh += ((ULong64_t)fThresholdConstants[i][2]);
    fSimpleOfflineTriggers->SetL1Threshold(i,thresh);
  }
  
  // save the thresholds in output object
  fCaloTriggerSetupOut->SetThresholdsSimple(fSimpleOfflineTriggers->GetL1Threshold(0),
					    fSimpleOfflineTriggers->GetL1Threshold(1),
					    fSimpleOfflineTriggers->GetL1Threshold(2),
					    fSimpleOfflineTriggers->GetL1Threshold(3));

  // run the trigger
  RunSimpleOfflineTrigger();

  // reset for re-run
  fCaloTriggers->Reset();
  fSimpleOfflineTriggers->Reset();

  // class is not empty
  if (fCaloTriggers->GetEntries() > 0 ||  fSimpleOfflineTriggers->GetEntries() > 0) {
    fITrigger = 0;
    triggerMainGamma = 0;
    triggerMainJet = 0;
    triggerMainGammaSimple = 0;
    triggerMainJetSimple = 0;
    triggerMainLevel0 = 0;

    // go throuth the trigger channels, real first, then offline
    Bool_t isOfflineSimple=0;
    while (NextTrigger(isOfflineSimple)) {
      // process jet
       if(fRunTriggerType[kTMEMCalJet]){
        trigger = ProcessPatch(kTMEMCalJet, isOfflineSimple);
        // save main jet triggers in event
        if (trigger != 0) {
          // check if more energetic than others for main patch marking
          if (!isOfflineSimple) {
            if (triggerMainJet == 0 || (triggerMainJet->GetPatchE() < trigger->GetPatchE()))
              triggerMainJet = trigger;
          } else {
            if (triggerMainJetSimple == 0 || (triggerMainJetSimple->GetPatchE() < trigger->GetPatchE()))
              triggerMainJetSimple = trigger;
          }
        }
      }
      
      // process gamma
      if(fRunTriggerType[kTMEMCalGamma]){
        trigger = ProcessPatch(kTMEMCalGamma, isOfflineSimple);
        // save main gamma triggers in event
        if (trigger != 0) {
          // check if more energetic than others for main patch marking
          if (!isOfflineSimple) {
            if (triggerMainGamma == 0 || (triggerMainGamma->GetPatchE() < trigger->GetPatchE()))
              triggerMainGamma = trigger;
          } else {
            if (triggerMainGammaSimple == 0 || (triggerMainGammaSimple->GetPatchE() < trigger->GetPatchE()))
              triggerMainGammaSimple = trigger;
          }
        }
      }

      // level 0 triggers
      if(fRunTriggerType[kTMEMCalLevel0]){
        trigger = ProcessPatch(kTMEMCalLevel0, isOfflineSimple);
        // save main level0 trigger in the event
        if (trigger) {
          if (!triggerMainLevel0 || (triggerMainLevel0->GetPatchE() < trigger->GetPatchE()))
            triggerMainLevel0 = trigger;
        }
      }

      // Recalculated triggers (max patches without threshold)
      if(fRunTriggerType[kTMEMCalRecalcJet])
	ProcessPatch(kTMEMCalRecalcJet, isOfflineSimple);
      if(fRunTriggerType[kTMEMCalRecalcGamma])
	ProcessPatch(kTMEMCalRecalcGamma, isOfflineSimple);
    } // triggers
    
    // mark the most energetic patch as main
    // for real and also simple offline
    if (triggerMainJet != 0) {
      Int_t tBits = triggerMainJet->GetTriggerBits();
      // main trigger flag
      tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kMainTriggerBitNum );
      triggerMainJet->SetTriggerBits( tBits );
    }
    if (triggerMainJetSimple != 0) {
      Int_t tBits = triggerMainJetSimple->GetTriggerBits();
      // main trigger flag
      tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kMainTriggerBitNum );
      triggerMainJetSimple->SetTriggerBits(tBits);
    }
    if (triggerMainGamma != 0) {
      Int_t tBits = triggerMainGamma->GetTriggerBits();
      // main trigger flag
      tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kMainTriggerBitNum );
      triggerMainGamma->SetTriggerBits( tBits );
    }
    if (triggerMainGammaSimple != 0) {
      Int_t tBits = triggerMainGammaSimple->GetTriggerBits();
      // main trigger flag
      tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kMainTriggerBitNum );
      triggerMainGammaSimple->SetTriggerBits( tBits );
    }
    if(triggerMainLevel0){
      Int_t tBits = triggerMainLevel0->GetTriggerBits();
      // main trigger flag
      tBits |= (1 << AliEmcalTriggerPatchInfo::kMainTriggerBitNum);
      triggerMainLevel0->SetTriggerBits(tBits);
    }
  } // there are some triggers

  return kTRUE;
}

//________________________________________________________________________
AliEmcalTriggerPatchInfo* AliEmcalTriggerMaker::ProcessPatch(TriggerMakerTriggerType_t type, Bool_t isOfflineSimple)
{
  // Process and fill trigger patch.
  // check if jet trigger low or high
  Int_t tBits=-1;
  if (!isOfflineSimple)
    fCaloTriggers->GetTriggerBits(tBits);
  else
    fSimpleOfflineTriggers->GetTriggerBits(tBits);

  if(fDoQA){
    for(unsigned int ibit = 0; ibit < sizeof(tBits)*8; ibit++) {
      if(tBits & (1 << ibit)){
        fQAHistos->FillTH1("triggerBitsAll", ibit);
      }
    }
  }
	
  if ((type == kTMEMCalJet    && !IsEJE( tBits )) || 
      (type == kTMEMCalGamma  && !IsEGA( tBits )) || 
      (type == kTMEMCalLevel0 && !(CheckForL0(*fCaloTriggers))) ||
      (type == kTMEMCalRecalcJet && (tBits & (1 << AliEmcalTriggerPatchInfo::kRecalcJetBitNum))==0) ||
      (type == kTMEMCalRecalcGamma && (tBits & (1 << AliEmcalTriggerPatchInfo::kRecalcGammaBitNum))==0) ) 
    return 0;

  // save primary vertex in vector
  TVector3 vertex;
  vertex.SetXYZ(fVertex[0], fVertex[1], fVertex[2]);

  // get position in global 2x2 tower coordinates
  // A0 left bottom (0,0)
  Int_t globCol=-1, globRow=-1;
  if (!isOfflineSimple)
    fCaloTriggers->GetPosition(globCol,globRow);
  else
    fSimpleOfflineTriggers->GetPosition(globCol, globRow);

  // In case of level0 reject triggers with an odd row-col combination
  // if(type == kTMEMCalLevel0 && (globRow % 2 != 0 || globCol % 2 != 0)) return 0;

  // get the absolute trigger ID
  Int_t absId=-1;
  fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol, globRow, absId);
  // convert to the 4 absId of the cells composing the trigger channel
  Int_t cellAbsId[4]={-1,-1,-1,-1};
  fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
	
  // get low left edge (eta max, phi min)
  TVector3 edge1;
  fGeom->GetGlobal(cellAbsId[0], edge1);
	
  // sum the available energy in the 32/32 window of cells
  // step over trigger channels and get all the corresponding cells
  // make CM
  Float_t amp = 0;
  Float_t cmiCol = 0;
  Float_t cmiRow = 0;
  Int_t adcAmp = 0;
  Double_t adcOfflineAmp = 0;
  int nfastor = (type == kTMEMCalJet || type == kTMEMCalRecalcJet) ? 16 : 2; // 32x32 cell window for L1 Jet trigger, 4x4 for L1 Gamma or L0 trigger
  for (Int_t i = 0; i < nfastor; ++i) {
    for (Int_t j = 0; j < nfastor; ++j) {
	  // get the 4 cells composing the trigger channel
	  fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+i, globRow+j, absId);
	  fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
	  // add amplitudes and find patch edges
	  for (Int_t k = 0; k < 4; ++k) {
	    Float_t ca = fCaloCells->GetCellAmplitude(cellAbsId[k]);
	    //fGeom->GetGlobal(cellAbsId[k], cellCoor);
	    amp += ca;
	    cmiCol += ca*(Float_t)i;
	    cmiRow += ca*(Float_t)j;
	  }
	  // add the STU ADCs in the patch (in case of L1) or the TRU Amplitude (in case of L0)

	  if(type == kTMEMCalLevel0){
	    adcAmp += fPatchADC[globCol+i][globRow+j] * 4; // precision loss in case of global integer field
	  } else
	    adcAmp += fPatchADC[globCol+i][globRow+j];

	  adcOfflineAmp += fPatchADCSimple[globCol+i][globRow+j];
    }
  }

  if (amp == 0) {
    AliDebug(2,"EMCal trigger patch with 0 energy.");
    return 0;
  }
  
  // get the CM and patch index
  cmiCol /= amp;
  cmiRow /= amp;
  Int_t cmCol = globCol + (Int_t)cmiCol;
  Int_t cmRow = globRow + (Int_t)cmiRow;

  // get the patch and corresponding cells
  fGeom->GetAbsFastORIndexFromPositionInEMCAL( cmCol, cmRow, absId );
  fGeom->GetCellIndexFromFastORIndex( absId, cellAbsId );

  // find which out of the 4 cells is closest to CM and get it's position
  Int_t cmiCellCol = TMath::Nint(cmiCol * 2.);
  Int_t cmiCellRow = TMath::Nint(cmiRow * 2.);
  TVector3 centerMass;
  fGeom->GetGlobal(cellAbsId[(cmiCellRow%2)*2 + cmiCellCol%2], centerMass);
	
  // get up right edge (eta min, phi max)
  // get the absolute trigger ID
  Int_t posOffset=-1;
  switch(type){
  case kTMEMCalJet:
  case kTMEMCalRecalcJet:
    posOffset = 15;
    break;
  case kTMEMCalGamma:
  case kTMEMCalRecalcGamma:
    posOffset = 1;
    break;
  case kTMEMCalLevel0:
    posOffset = 1;
    break;
  default:
    posOffset = 0;
    break;
  };
  fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
  fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
  TVector3 edge2;
  fGeom->GetGlobal(cellAbsId[3], edge2);
	
  // get the geometrical center as an average of two diagonally
  // adjacent patches in the center
  // picking two diagonally closest cells from the patches
  switch(type){
  case kTMEMCalJet:
  case kTMEMCalRecalcJet:
    posOffset = 7;
    break;
  case kTMEMCalGamma:
  case kTMEMCalRecalcGamma:
    posOffset = 0;
    break;
  case kTMEMCalLevel0:
    posOffset = 0;
    break;
  default:
    posOffset = 0;
    break;
  };
  fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
  fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
  TVector3 center1;
  fGeom->GetGlobal(cellAbsId[3], center1);
	
  switch(type){
  case kTMEMCalJet:
  case kTMEMCalRecalcJet:
    posOffset = 8;
    break;
  case kTMEMCalGamma:
  case kTMEMCalRecalcGamma:
    posOffset = 1;
    break;
  case kTMEMCalLevel0:
    posOffset = 1;
    break;
  };
  fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
  fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
  TVector3 center2;
  fGeom->GetGlobal(cellAbsId[0], center2);
	
  TVector3 centerGeo(center1);
  centerGeo += center2;
  centerGeo *= 0.5;
	
  // relate all to primary vertex
  centerGeo -= vertex;
  centerMass -= vertex;
  edge1 -= vertex;
  edge2 -= vertex;

  Int_t isMC = MCEvent() ? 1 : 0;
  Int_t offSet = (1 - isMC) * fTriggerBitConfig->GetTriggerTypesEnd();
	
  // fix tbits .. remove the unwanted type triggers
  // for Jet and Gamma triggers we remove also the level 0 bit since it will be stored in the level 0 patch
  // for level 0 we remove all gamma and jet trigger bits
  switch(type){
  case kTMEMCalJet:
    tBits = tBits & ~( 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaLowBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaHighBit()) |
        1 << (fTriggerBitConfig->GetGammaLowBit()) | 1 << (fTriggerBitConfig->GetGammaHighBit()) |
		       1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetLevel0Bit()) | 1 << (fTriggerBitConfig->GetLevel0Bit()));
    break;
  case kTMEMCalGamma:
    tBits = tBits & ~( 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetHighBit()) |
        1 << (fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetJetHighBit()) |
		       1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetLevel0Bit()) | 1 << (fTriggerBitConfig->GetLevel0Bit()));
    break;
  case kTMEMCalLevel0:
    // Explicitly set the level 0 bit to overcome the masking out
    tBits |= 1 << (offSet + fTriggerBitConfig->GetLevel0Bit());
    tBits = tBits & ~( 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetHighBit()) |
        1 << (fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetJetHighBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaLowBit()) |
        1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaHighBit()) | 1 << (fTriggerBitConfig->GetGammaLowBit()) | 1 << (fTriggerBitConfig->GetGammaHighBit()));
    break;
  default:  // recalculated patches don't need any action
    break;
  };

  // save the trigger object
  AliEmcalTriggerPatchInfo *trigger = 
    new ((*fCaloTriggersOut)[fITrigger]) AliEmcalTriggerPatchInfo();
  fITrigger++;
  trigger->SetTriggerBitConfig(fTriggerBitConfig);
  trigger->SetCenterGeo(centerGeo, amp);
  trigger->SetCenterMass(centerMass, amp);
  trigger->SetEdge1(edge1, amp);
  trigger->SetEdge2(edge2, amp);
  trigger->SetADCAmp(adcAmp);
  trigger->SetADCOfflineAmp(Int_t(adcOfflineAmp));
  trigger->SetTriggerBits(tBits);
  trigger->SetOffSet(offSet);
  trigger->SetEdgeCell(globCol*2, globRow*2); // from triggers to cells
  if(fDoQA){
    fQAHistos->FillTH2(Form("RCPos%s", fgkTriggerTypeNames[type].Data()), globCol, globRow);
    fQAHistos->FillTH2(Form("EPCentPos%s", fgkTriggerTypeNames[type].Data()), centerGeo.Eta(), centerGeo.Phi());
    fQAHistos->FillTH2(Form("PatchADCvsE%s", fgkTriggerTypeNames[type].Data()), adcAmp, trigger->GetPatchE());
    // Redo checking of found trigger bits after masking of unwanted triggers
    for(unsigned int ibit = 0; ibit < sizeof(tBits)*8; ibit++) {
      if(tBits & (1 << ibit)){
        fQAHistos->FillTH1("triggerBitsSel", ibit);
      }
    }
  }
  return trigger;
}

//________________________________________________________________________
void AliEmcalTriggerMaker::RunSimpleOfflineTrigger() 
{
  // Runs a simple algorithm to calculate patch energies based on 
  // the offline/FEE ADC values (useOffline = kTRUE) or 
  // the online/trigger values (useOffline = kFALSE.
  //
  // It creates separate patches for jet and gamma triggers
  // on the same positions (different from STU reconstruction behavior)

  TArrayI tBitsArray(4), rowArray(4), colArray(4);
  
  // First entries are for recalculated patches

  tBitsArray[0] = 1 << AliEmcalTriggerPatchInfo::kRecalcJetBitNum;
  colArray[0] = -1;
  rowArray[0] = -1;

  tBitsArray[1] = 1 << AliEmcalTriggerPatchInfo::kRecalcJetBitNum | 1 << AliEmcalTriggerPatchInfo::kSimpleOfflineBitNum;
  colArray[1] = -1;
  rowArray[1] = -1;

  tBitsArray[2] = 1 << AliEmcalTriggerPatchInfo::kRecalcGammaBitNum;
  colArray[2] = -1;
  rowArray[2] = -1;

  tBitsArray[3] = 1 << AliEmcalTriggerPatchInfo::kRecalcGammaBitNum | 1 << AliEmcalTriggerPatchInfo::kSimpleOfflineBitNum;
  colArray[3] = -1;
  rowArray[3] = -1;

  Double_t maxPatchADCoffline = -1;
  Int_t maxPatchADC = -1;
  // run the trigger algo, stepping by 8 towers (= 4 trigger channels)
  Int_t maxCol = 48;
  Int_t maxRow = fGeom->GetNTotalTRU()*2;
  for (Int_t i = 0; i < (maxCol-16); i += 4) {
    for (Int_t j = 0; j < (maxRow-16); j += 4) {
      Double_t tSumOffline  = 0;
      Int_t tSum  = 0;
      Int_t tBits = 0;
      // window
      for (Int_t k = 0; k < 16; ++k) {
        for (Int_t l = 0; l < 16; ++l) {
	  tSumOffline += fPatchADCSimple[i+k][j+l];	  
	  tSum += (ULong64_t)fPatchADC[i+k][j+l];
	}
      }

      if (tSum > maxPatchADC) { // Mark highest Jet patch
	maxPatchADC = tSum;
	colArray[0] = i;
	rowArray[0] = j;
      }

      if (tSumOffline > maxPatchADCoffline) { // Mark highest Jet patch
	maxPatchADCoffline = tSumOffline;
	colArray[1] = i;
	rowArray[1] = j;
      }

      // check thresholds
      if (tSumOffline > fCaloTriggerSetupOut->GetThresholdJetLowSimple())
	tBits = tBits | ( 1 << ( fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetLowBit() ));
      if (tSumOffline > fCaloTriggerSetupOut->GetThresholdJetHighSimple())
	tBits = tBits | ( 1 << ( fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetHighBit() ));
      
      // add trigger values
      if (tBits != 0) {
	// add offline bit
	tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kSimpleOfflineBitNum );
	tBitsArray.Set( tBitsArray.GetSize() + 1 );
	colArray.Set( colArray.GetSize() + 1 );
	rowArray.Set( rowArray.GetSize() + 1 );
	tBitsArray[tBitsArray.GetSize()-1] = tBits;
	colArray[colArray.GetSize()-1] = i;
	rowArray[rowArray.GetSize()-1] = j;
      }
    }
  } // trigger algo
  
  // 4x4 trigger algo, stepping by 2 towers (= 1 trigger channel)
  maxPatchADC = -1;
  maxPatchADCoffline = -1;

  for (Int_t i = 0; i < (maxCol-2); ++i) {
    for (Int_t j = 0; j < (maxRow-2); ++j) {
      Int_t tSum = 0;
      Double_t tSumOffline = 0;
      Int_t tBits = 0;
      
      // window
      for (Int_t k = 0; k < 2; ++k) {
        for (Int_t l = 0; l < 2; ++l) {
	  tSumOffline += fPatchADCSimple[i+k][j+l];
	  tSum += (ULong64_t)fPatchADC[i+k][j+l];
	}
      }

      if (tSum > maxPatchADC) { // Mark highest Gamma patch
	maxPatchADC = tSum;
	colArray[2] = i;
	rowArray[2] = j;
      }
      if (tSumOffline > maxPatchADCoffline) { // Mark highest Gamma patch
	maxPatchADCoffline = tSumOffline;
	colArray[3] = i;
	rowArray[3] = j;
      }

      // check thresholds
      if (tSumOffline > fCaloTriggerSetupOut->GetThresholdGammaLowSimple())
	tBits = tBits | ( 1 << ( fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaLowBit() ));
      if (tSumOffline > fCaloTriggerSetupOut->GetThresholdGammaHighSimple())
	tBits = tBits | ( 1 << ( fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaHighBit() ));
      
      // add trigger values
      if (tBits != 0) {
	// add offline bit
	tBits = tBits | ( 1 << AliEmcalTriggerPatchInfo::kSimpleOfflineBitNum );
	tBitsArray.Set( tBitsArray.GetSize() + 1 );
	colArray.Set( colArray.GetSize() + 1 );
	rowArray.Set( rowArray.GetSize() + 1 );
	tBitsArray[tBitsArray.GetSize()-1] = tBits;
	colArray[colArray.GetSize()-1] = i;
	rowArray[rowArray.GetSize()-1] = j;
      }
    }
  } // trigger algo
  
  // save in object
  fSimpleOfflineTriggers->DeAllocate();
  fSimpleOfflineTriggers->Allocate(tBitsArray.GetSize());
  for (Int_t i = 0; i < tBitsArray.GetSize(); ++i){
    fSimpleOfflineTriggers->Add(colArray[i],rowArray[i], 0, 0, 0, 0, 0, tBitsArray[i]);
  }
}

//________________________________________________________________________
Bool_t AliEmcalTriggerMaker::NextTrigger(Bool_t &isOfflineSimple) 
{
  // Get next trigger
  
  isOfflineSimple = kFALSE;
  Bool_t loopContinue = fCaloTriggers->Next();
  if (!loopContinue) {
    loopContinue = fSimpleOfflineTriggers->Next();
    isOfflineSimple = kTRUE;
  }
  return loopContinue;
}

//________________________________________________________________________
Bool_t AliEmcalTriggerMaker::CheckForL0(const AliVCaloTrigger& trg) const {
  // Check whether the patch is a level0 patch
  if(MCEvent()){
    // For Monte-Carlo select
    Int_t tbits(-1);
    trg.GetTriggerBits(tbits);
    return tbits & (1 << fTriggerBitConfig->GetLevel0Bit());
  } else {
    // For Data check from the level0 times if the trigger has fired at level0
    Int_t nl0times(0);
    Bool_t l0fired(kFALSE);
    trg.GetNL0Times(nl0times);
    if(nl0times){
      TArrayI l0times(nl0times);
      trg.GetL0Times(l0times.GetArray());
      // Apply timing cut to see if a L0 has fired
      for(Int_t *l0timeIter = l0times.GetArray(); l0timeIter < l0times.GetArray() + l0times.GetSize(); l0timeIter++){
        if(*l0timeIter > 7 && *l0timeIter < 10){
          l0fired = kTRUE;
          break;
        }
      }
    }
    return l0fired;
  }
}
 AliEmcalTriggerMaker.cxx:1
 AliEmcalTriggerMaker.cxx:2
 AliEmcalTriggerMaker.cxx:3
 AliEmcalTriggerMaker.cxx:4
 AliEmcalTriggerMaker.cxx:5
 AliEmcalTriggerMaker.cxx:6
 AliEmcalTriggerMaker.cxx:7
 AliEmcalTriggerMaker.cxx:8
 AliEmcalTriggerMaker.cxx:9
 AliEmcalTriggerMaker.cxx:10
 AliEmcalTriggerMaker.cxx:11
 AliEmcalTriggerMaker.cxx:12
 AliEmcalTriggerMaker.cxx:13
 AliEmcalTriggerMaker.cxx:14
 AliEmcalTriggerMaker.cxx:15
 AliEmcalTriggerMaker.cxx:16
 AliEmcalTriggerMaker.cxx:17
 AliEmcalTriggerMaker.cxx:18
 AliEmcalTriggerMaker.cxx:19
 AliEmcalTriggerMaker.cxx:20
 AliEmcalTriggerMaker.cxx:21
 AliEmcalTriggerMaker.cxx:22
 AliEmcalTriggerMaker.cxx:23
 AliEmcalTriggerMaker.cxx:24
 AliEmcalTriggerMaker.cxx:25
 AliEmcalTriggerMaker.cxx:26
 AliEmcalTriggerMaker.cxx:27
 AliEmcalTriggerMaker.cxx:28
 AliEmcalTriggerMaker.cxx:29
 AliEmcalTriggerMaker.cxx:30
 AliEmcalTriggerMaker.cxx:31
 AliEmcalTriggerMaker.cxx:32
 AliEmcalTriggerMaker.cxx:33
 AliEmcalTriggerMaker.cxx:34
 AliEmcalTriggerMaker.cxx:35
 AliEmcalTriggerMaker.cxx:36
 AliEmcalTriggerMaker.cxx:37
 AliEmcalTriggerMaker.cxx:38
 AliEmcalTriggerMaker.cxx:39
 AliEmcalTriggerMaker.cxx:40
 AliEmcalTriggerMaker.cxx:41
 AliEmcalTriggerMaker.cxx:42
 AliEmcalTriggerMaker.cxx:43
 AliEmcalTriggerMaker.cxx:44
 AliEmcalTriggerMaker.cxx:45
 AliEmcalTriggerMaker.cxx:46
 AliEmcalTriggerMaker.cxx:47
 AliEmcalTriggerMaker.cxx:48
 AliEmcalTriggerMaker.cxx:49
 AliEmcalTriggerMaker.cxx:50
 AliEmcalTriggerMaker.cxx:51
 AliEmcalTriggerMaker.cxx:52
 AliEmcalTriggerMaker.cxx:53
 AliEmcalTriggerMaker.cxx:54
 AliEmcalTriggerMaker.cxx:55
 AliEmcalTriggerMaker.cxx:56
 AliEmcalTriggerMaker.cxx:57
 AliEmcalTriggerMaker.cxx:58
 AliEmcalTriggerMaker.cxx:59
 AliEmcalTriggerMaker.cxx:60
 AliEmcalTriggerMaker.cxx:61
 AliEmcalTriggerMaker.cxx:62
 AliEmcalTriggerMaker.cxx:63
 AliEmcalTriggerMaker.cxx:64
 AliEmcalTriggerMaker.cxx:65
 AliEmcalTriggerMaker.cxx:66
 AliEmcalTriggerMaker.cxx:67
 AliEmcalTriggerMaker.cxx:68
 AliEmcalTriggerMaker.cxx:69
 AliEmcalTriggerMaker.cxx:70
 AliEmcalTriggerMaker.cxx:71
 AliEmcalTriggerMaker.cxx:72
 AliEmcalTriggerMaker.cxx:73
 AliEmcalTriggerMaker.cxx:74
 AliEmcalTriggerMaker.cxx:75
 AliEmcalTriggerMaker.cxx:76
 AliEmcalTriggerMaker.cxx:77
 AliEmcalTriggerMaker.cxx:78
 AliEmcalTriggerMaker.cxx:79
 AliEmcalTriggerMaker.cxx:80
 AliEmcalTriggerMaker.cxx:81
 AliEmcalTriggerMaker.cxx:82
 AliEmcalTriggerMaker.cxx:83
 AliEmcalTriggerMaker.cxx:84
 AliEmcalTriggerMaker.cxx:85
 AliEmcalTriggerMaker.cxx:86
 AliEmcalTriggerMaker.cxx:87
 AliEmcalTriggerMaker.cxx:88
 AliEmcalTriggerMaker.cxx:89
 AliEmcalTriggerMaker.cxx:90
 AliEmcalTriggerMaker.cxx:91
 AliEmcalTriggerMaker.cxx:92
 AliEmcalTriggerMaker.cxx:93
 AliEmcalTriggerMaker.cxx:94
 AliEmcalTriggerMaker.cxx:95
 AliEmcalTriggerMaker.cxx:96
 AliEmcalTriggerMaker.cxx:97
 AliEmcalTriggerMaker.cxx:98
 AliEmcalTriggerMaker.cxx:99
 AliEmcalTriggerMaker.cxx:100
 AliEmcalTriggerMaker.cxx:101
 AliEmcalTriggerMaker.cxx:102
 AliEmcalTriggerMaker.cxx:103
 AliEmcalTriggerMaker.cxx:104
 AliEmcalTriggerMaker.cxx:105
 AliEmcalTriggerMaker.cxx:106
 AliEmcalTriggerMaker.cxx:107
 AliEmcalTriggerMaker.cxx:108
 AliEmcalTriggerMaker.cxx:109
 AliEmcalTriggerMaker.cxx:110
 AliEmcalTriggerMaker.cxx:111
 AliEmcalTriggerMaker.cxx:112
 AliEmcalTriggerMaker.cxx:113
 AliEmcalTriggerMaker.cxx:114
 AliEmcalTriggerMaker.cxx:115
 AliEmcalTriggerMaker.cxx:116
 AliEmcalTriggerMaker.cxx:117
 AliEmcalTriggerMaker.cxx:118
 AliEmcalTriggerMaker.cxx:119
 AliEmcalTriggerMaker.cxx:120
 AliEmcalTriggerMaker.cxx:121
 AliEmcalTriggerMaker.cxx:122
 AliEmcalTriggerMaker.cxx:123
 AliEmcalTriggerMaker.cxx:124
 AliEmcalTriggerMaker.cxx:125
 AliEmcalTriggerMaker.cxx:126
 AliEmcalTriggerMaker.cxx:127
 AliEmcalTriggerMaker.cxx:128
 AliEmcalTriggerMaker.cxx:129
 AliEmcalTriggerMaker.cxx:130
 AliEmcalTriggerMaker.cxx:131
 AliEmcalTriggerMaker.cxx:132
 AliEmcalTriggerMaker.cxx:133
 AliEmcalTriggerMaker.cxx:134
 AliEmcalTriggerMaker.cxx:135
 AliEmcalTriggerMaker.cxx:136
 AliEmcalTriggerMaker.cxx:137
 AliEmcalTriggerMaker.cxx:138
 AliEmcalTriggerMaker.cxx:139
 AliEmcalTriggerMaker.cxx:140
 AliEmcalTriggerMaker.cxx:141
 AliEmcalTriggerMaker.cxx:142
 AliEmcalTriggerMaker.cxx:143
 AliEmcalTriggerMaker.cxx:144
 AliEmcalTriggerMaker.cxx:145
 AliEmcalTriggerMaker.cxx:146
 AliEmcalTriggerMaker.cxx:147
 AliEmcalTriggerMaker.cxx:148
 AliEmcalTriggerMaker.cxx:149
 AliEmcalTriggerMaker.cxx:150
 AliEmcalTriggerMaker.cxx:151
 AliEmcalTriggerMaker.cxx:152
 AliEmcalTriggerMaker.cxx:153
 AliEmcalTriggerMaker.cxx:154
 AliEmcalTriggerMaker.cxx:155
 AliEmcalTriggerMaker.cxx:156
 AliEmcalTriggerMaker.cxx:157
 AliEmcalTriggerMaker.cxx:158
 AliEmcalTriggerMaker.cxx:159
 AliEmcalTriggerMaker.cxx:160
 AliEmcalTriggerMaker.cxx:161
 AliEmcalTriggerMaker.cxx:162
 AliEmcalTriggerMaker.cxx:163
 AliEmcalTriggerMaker.cxx:164
 AliEmcalTriggerMaker.cxx:165
 AliEmcalTriggerMaker.cxx:166
 AliEmcalTriggerMaker.cxx:167
 AliEmcalTriggerMaker.cxx:168
 AliEmcalTriggerMaker.cxx:169
 AliEmcalTriggerMaker.cxx:170
 AliEmcalTriggerMaker.cxx:171
 AliEmcalTriggerMaker.cxx:172
 AliEmcalTriggerMaker.cxx:173
 AliEmcalTriggerMaker.cxx:174
 AliEmcalTriggerMaker.cxx:175
 AliEmcalTriggerMaker.cxx:176
 AliEmcalTriggerMaker.cxx:177
 AliEmcalTriggerMaker.cxx:178
 AliEmcalTriggerMaker.cxx:179
 AliEmcalTriggerMaker.cxx:180
 AliEmcalTriggerMaker.cxx:181
 AliEmcalTriggerMaker.cxx:182
 AliEmcalTriggerMaker.cxx:183
 AliEmcalTriggerMaker.cxx:184
 AliEmcalTriggerMaker.cxx:185
 AliEmcalTriggerMaker.cxx:186
 AliEmcalTriggerMaker.cxx:187
 AliEmcalTriggerMaker.cxx:188
 AliEmcalTriggerMaker.cxx:189
 AliEmcalTriggerMaker.cxx:190
 AliEmcalTriggerMaker.cxx:191
 AliEmcalTriggerMaker.cxx:192
 AliEmcalTriggerMaker.cxx:193
 AliEmcalTriggerMaker.cxx:194
 AliEmcalTriggerMaker.cxx:195
 AliEmcalTriggerMaker.cxx:196
 AliEmcalTriggerMaker.cxx:197
 AliEmcalTriggerMaker.cxx:198
 AliEmcalTriggerMaker.cxx:199
 AliEmcalTriggerMaker.cxx:200
 AliEmcalTriggerMaker.cxx:201
 AliEmcalTriggerMaker.cxx:202
 AliEmcalTriggerMaker.cxx:203
 AliEmcalTriggerMaker.cxx:204
 AliEmcalTriggerMaker.cxx:205
 AliEmcalTriggerMaker.cxx:206
 AliEmcalTriggerMaker.cxx:207
 AliEmcalTriggerMaker.cxx:208
 AliEmcalTriggerMaker.cxx:209
 AliEmcalTriggerMaker.cxx:210
 AliEmcalTriggerMaker.cxx:211
 AliEmcalTriggerMaker.cxx:212
 AliEmcalTriggerMaker.cxx:213
 AliEmcalTriggerMaker.cxx:214
 AliEmcalTriggerMaker.cxx:215
 AliEmcalTriggerMaker.cxx:216
 AliEmcalTriggerMaker.cxx:217
 AliEmcalTriggerMaker.cxx:218
 AliEmcalTriggerMaker.cxx:219
 AliEmcalTriggerMaker.cxx:220
 AliEmcalTriggerMaker.cxx:221
 AliEmcalTriggerMaker.cxx:222
 AliEmcalTriggerMaker.cxx:223
 AliEmcalTriggerMaker.cxx:224
 AliEmcalTriggerMaker.cxx:225
 AliEmcalTriggerMaker.cxx:226
 AliEmcalTriggerMaker.cxx:227
 AliEmcalTriggerMaker.cxx:228
 AliEmcalTriggerMaker.cxx:229
 AliEmcalTriggerMaker.cxx:230
 AliEmcalTriggerMaker.cxx:231
 AliEmcalTriggerMaker.cxx:232
 AliEmcalTriggerMaker.cxx:233
 AliEmcalTriggerMaker.cxx:234
 AliEmcalTriggerMaker.cxx:235
 AliEmcalTriggerMaker.cxx:236
 AliEmcalTriggerMaker.cxx:237
 AliEmcalTriggerMaker.cxx:238
 AliEmcalTriggerMaker.cxx:239
 AliEmcalTriggerMaker.cxx:240
 AliEmcalTriggerMaker.cxx:241
 AliEmcalTriggerMaker.cxx:242
 AliEmcalTriggerMaker.cxx:243
 AliEmcalTriggerMaker.cxx:244
 AliEmcalTriggerMaker.cxx:245
 AliEmcalTriggerMaker.cxx:246
 AliEmcalTriggerMaker.cxx:247
 AliEmcalTriggerMaker.cxx:248
 AliEmcalTriggerMaker.cxx:249
 AliEmcalTriggerMaker.cxx:250
 AliEmcalTriggerMaker.cxx:251
 AliEmcalTriggerMaker.cxx:252
 AliEmcalTriggerMaker.cxx:253
 AliEmcalTriggerMaker.cxx:254
 AliEmcalTriggerMaker.cxx:255
 AliEmcalTriggerMaker.cxx:256
 AliEmcalTriggerMaker.cxx:257
 AliEmcalTriggerMaker.cxx:258
 AliEmcalTriggerMaker.cxx:259
 AliEmcalTriggerMaker.cxx:260
 AliEmcalTriggerMaker.cxx:261
 AliEmcalTriggerMaker.cxx:262
 AliEmcalTriggerMaker.cxx:263
 AliEmcalTriggerMaker.cxx:264
 AliEmcalTriggerMaker.cxx:265
 AliEmcalTriggerMaker.cxx:266
 AliEmcalTriggerMaker.cxx:267
 AliEmcalTriggerMaker.cxx:268
 AliEmcalTriggerMaker.cxx:269
 AliEmcalTriggerMaker.cxx:270
 AliEmcalTriggerMaker.cxx:271
 AliEmcalTriggerMaker.cxx:272
 AliEmcalTriggerMaker.cxx:273
 AliEmcalTriggerMaker.cxx:274
 AliEmcalTriggerMaker.cxx:275
 AliEmcalTriggerMaker.cxx:276
 AliEmcalTriggerMaker.cxx:277
 AliEmcalTriggerMaker.cxx:278
 AliEmcalTriggerMaker.cxx:279
 AliEmcalTriggerMaker.cxx:280
 AliEmcalTriggerMaker.cxx:281
 AliEmcalTriggerMaker.cxx:282
 AliEmcalTriggerMaker.cxx:283
 AliEmcalTriggerMaker.cxx:284
 AliEmcalTriggerMaker.cxx:285
 AliEmcalTriggerMaker.cxx:286
 AliEmcalTriggerMaker.cxx:287
 AliEmcalTriggerMaker.cxx:288
 AliEmcalTriggerMaker.cxx:289
 AliEmcalTriggerMaker.cxx:290
 AliEmcalTriggerMaker.cxx:291
 AliEmcalTriggerMaker.cxx:292
 AliEmcalTriggerMaker.cxx:293
 AliEmcalTriggerMaker.cxx:294
 AliEmcalTriggerMaker.cxx:295
 AliEmcalTriggerMaker.cxx:296
 AliEmcalTriggerMaker.cxx:297
 AliEmcalTriggerMaker.cxx:298
 AliEmcalTriggerMaker.cxx:299
 AliEmcalTriggerMaker.cxx:300
 AliEmcalTriggerMaker.cxx:301
 AliEmcalTriggerMaker.cxx:302
 AliEmcalTriggerMaker.cxx:303
 AliEmcalTriggerMaker.cxx:304
 AliEmcalTriggerMaker.cxx:305
 AliEmcalTriggerMaker.cxx:306
 AliEmcalTriggerMaker.cxx:307
 AliEmcalTriggerMaker.cxx:308
 AliEmcalTriggerMaker.cxx:309
 AliEmcalTriggerMaker.cxx:310
 AliEmcalTriggerMaker.cxx:311
 AliEmcalTriggerMaker.cxx:312
 AliEmcalTriggerMaker.cxx:313
 AliEmcalTriggerMaker.cxx:314
 AliEmcalTriggerMaker.cxx:315
 AliEmcalTriggerMaker.cxx:316
 AliEmcalTriggerMaker.cxx:317
 AliEmcalTriggerMaker.cxx:318
 AliEmcalTriggerMaker.cxx:319
 AliEmcalTriggerMaker.cxx:320
 AliEmcalTriggerMaker.cxx:321
 AliEmcalTriggerMaker.cxx:322
 AliEmcalTriggerMaker.cxx:323
 AliEmcalTriggerMaker.cxx:324
 AliEmcalTriggerMaker.cxx:325
 AliEmcalTriggerMaker.cxx:326
 AliEmcalTriggerMaker.cxx:327
 AliEmcalTriggerMaker.cxx:328
 AliEmcalTriggerMaker.cxx:329
 AliEmcalTriggerMaker.cxx:330
 AliEmcalTriggerMaker.cxx:331
 AliEmcalTriggerMaker.cxx:332
 AliEmcalTriggerMaker.cxx:333
 AliEmcalTriggerMaker.cxx:334
 AliEmcalTriggerMaker.cxx:335
 AliEmcalTriggerMaker.cxx:336
 AliEmcalTriggerMaker.cxx:337
 AliEmcalTriggerMaker.cxx:338
 AliEmcalTriggerMaker.cxx:339
 AliEmcalTriggerMaker.cxx:340
 AliEmcalTriggerMaker.cxx:341
 AliEmcalTriggerMaker.cxx:342
 AliEmcalTriggerMaker.cxx:343
 AliEmcalTriggerMaker.cxx:344
 AliEmcalTriggerMaker.cxx:345
 AliEmcalTriggerMaker.cxx:346
 AliEmcalTriggerMaker.cxx:347
 AliEmcalTriggerMaker.cxx:348
 AliEmcalTriggerMaker.cxx:349
 AliEmcalTriggerMaker.cxx:350
 AliEmcalTriggerMaker.cxx:351
 AliEmcalTriggerMaker.cxx:352
 AliEmcalTriggerMaker.cxx:353
 AliEmcalTriggerMaker.cxx:354
 AliEmcalTriggerMaker.cxx:355
 AliEmcalTriggerMaker.cxx:356
 AliEmcalTriggerMaker.cxx:357
 AliEmcalTriggerMaker.cxx:358
 AliEmcalTriggerMaker.cxx:359
 AliEmcalTriggerMaker.cxx:360
 AliEmcalTriggerMaker.cxx:361
 AliEmcalTriggerMaker.cxx:362
 AliEmcalTriggerMaker.cxx:363
 AliEmcalTriggerMaker.cxx:364
 AliEmcalTriggerMaker.cxx:365
 AliEmcalTriggerMaker.cxx:366
 AliEmcalTriggerMaker.cxx:367
 AliEmcalTriggerMaker.cxx:368
 AliEmcalTriggerMaker.cxx:369
 AliEmcalTriggerMaker.cxx:370
 AliEmcalTriggerMaker.cxx:371
 AliEmcalTriggerMaker.cxx:372
 AliEmcalTriggerMaker.cxx:373
 AliEmcalTriggerMaker.cxx:374
 AliEmcalTriggerMaker.cxx:375
 AliEmcalTriggerMaker.cxx:376
 AliEmcalTriggerMaker.cxx:377
 AliEmcalTriggerMaker.cxx:378
 AliEmcalTriggerMaker.cxx:379
 AliEmcalTriggerMaker.cxx:380
 AliEmcalTriggerMaker.cxx:381
 AliEmcalTriggerMaker.cxx:382
 AliEmcalTriggerMaker.cxx:383
 AliEmcalTriggerMaker.cxx:384
 AliEmcalTriggerMaker.cxx:385
 AliEmcalTriggerMaker.cxx:386
 AliEmcalTriggerMaker.cxx:387
 AliEmcalTriggerMaker.cxx:388
 AliEmcalTriggerMaker.cxx:389
 AliEmcalTriggerMaker.cxx:390
 AliEmcalTriggerMaker.cxx:391
 AliEmcalTriggerMaker.cxx:392
 AliEmcalTriggerMaker.cxx:393
 AliEmcalTriggerMaker.cxx:394
 AliEmcalTriggerMaker.cxx:395
 AliEmcalTriggerMaker.cxx:396
 AliEmcalTriggerMaker.cxx:397
 AliEmcalTriggerMaker.cxx:398
 AliEmcalTriggerMaker.cxx:399
 AliEmcalTriggerMaker.cxx:400
 AliEmcalTriggerMaker.cxx:401
 AliEmcalTriggerMaker.cxx:402
 AliEmcalTriggerMaker.cxx:403
 AliEmcalTriggerMaker.cxx:404
 AliEmcalTriggerMaker.cxx:405
 AliEmcalTriggerMaker.cxx:406
 AliEmcalTriggerMaker.cxx:407
 AliEmcalTriggerMaker.cxx:408
 AliEmcalTriggerMaker.cxx:409
 AliEmcalTriggerMaker.cxx:410
 AliEmcalTriggerMaker.cxx:411
 AliEmcalTriggerMaker.cxx:412
 AliEmcalTriggerMaker.cxx:413
 AliEmcalTriggerMaker.cxx:414
 AliEmcalTriggerMaker.cxx:415
 AliEmcalTriggerMaker.cxx:416
 AliEmcalTriggerMaker.cxx:417
 AliEmcalTriggerMaker.cxx:418
 AliEmcalTriggerMaker.cxx:419
 AliEmcalTriggerMaker.cxx:420
 AliEmcalTriggerMaker.cxx:421
 AliEmcalTriggerMaker.cxx:422
 AliEmcalTriggerMaker.cxx:423
 AliEmcalTriggerMaker.cxx:424
 AliEmcalTriggerMaker.cxx:425
 AliEmcalTriggerMaker.cxx:426
 AliEmcalTriggerMaker.cxx:427
 AliEmcalTriggerMaker.cxx:428
 AliEmcalTriggerMaker.cxx:429
 AliEmcalTriggerMaker.cxx:430
 AliEmcalTriggerMaker.cxx:431
 AliEmcalTriggerMaker.cxx:432
 AliEmcalTriggerMaker.cxx:433
 AliEmcalTriggerMaker.cxx:434
 AliEmcalTriggerMaker.cxx:435
 AliEmcalTriggerMaker.cxx:436
 AliEmcalTriggerMaker.cxx:437
 AliEmcalTriggerMaker.cxx:438
 AliEmcalTriggerMaker.cxx:439
 AliEmcalTriggerMaker.cxx:440
 AliEmcalTriggerMaker.cxx:441
 AliEmcalTriggerMaker.cxx:442
 AliEmcalTriggerMaker.cxx:443
 AliEmcalTriggerMaker.cxx:444
 AliEmcalTriggerMaker.cxx:445
 AliEmcalTriggerMaker.cxx:446
 AliEmcalTriggerMaker.cxx:447
 AliEmcalTriggerMaker.cxx:448
 AliEmcalTriggerMaker.cxx:449
 AliEmcalTriggerMaker.cxx:450
 AliEmcalTriggerMaker.cxx:451
 AliEmcalTriggerMaker.cxx:452
 AliEmcalTriggerMaker.cxx:453
 AliEmcalTriggerMaker.cxx:454
 AliEmcalTriggerMaker.cxx:455
 AliEmcalTriggerMaker.cxx:456
 AliEmcalTriggerMaker.cxx:457
 AliEmcalTriggerMaker.cxx:458
 AliEmcalTriggerMaker.cxx:459
 AliEmcalTriggerMaker.cxx:460
 AliEmcalTriggerMaker.cxx:461
 AliEmcalTriggerMaker.cxx:462
 AliEmcalTriggerMaker.cxx:463
 AliEmcalTriggerMaker.cxx:464
 AliEmcalTriggerMaker.cxx:465
 AliEmcalTriggerMaker.cxx:466
 AliEmcalTriggerMaker.cxx:467
 AliEmcalTriggerMaker.cxx:468
 AliEmcalTriggerMaker.cxx:469
 AliEmcalTriggerMaker.cxx:470
 AliEmcalTriggerMaker.cxx:471
 AliEmcalTriggerMaker.cxx:472
 AliEmcalTriggerMaker.cxx:473
 AliEmcalTriggerMaker.cxx:474
 AliEmcalTriggerMaker.cxx:475
 AliEmcalTriggerMaker.cxx:476
 AliEmcalTriggerMaker.cxx:477
 AliEmcalTriggerMaker.cxx:478
 AliEmcalTriggerMaker.cxx:479
 AliEmcalTriggerMaker.cxx:480
 AliEmcalTriggerMaker.cxx:481
 AliEmcalTriggerMaker.cxx:482
 AliEmcalTriggerMaker.cxx:483
 AliEmcalTriggerMaker.cxx:484
 AliEmcalTriggerMaker.cxx:485
 AliEmcalTriggerMaker.cxx:486
 AliEmcalTriggerMaker.cxx:487
 AliEmcalTriggerMaker.cxx:488
 AliEmcalTriggerMaker.cxx:489
 AliEmcalTriggerMaker.cxx:490
 AliEmcalTriggerMaker.cxx:491
 AliEmcalTriggerMaker.cxx:492
 AliEmcalTriggerMaker.cxx:493
 AliEmcalTriggerMaker.cxx:494
 AliEmcalTriggerMaker.cxx:495
 AliEmcalTriggerMaker.cxx:496
 AliEmcalTriggerMaker.cxx:497
 AliEmcalTriggerMaker.cxx:498
 AliEmcalTriggerMaker.cxx:499
 AliEmcalTriggerMaker.cxx:500
 AliEmcalTriggerMaker.cxx:501
 AliEmcalTriggerMaker.cxx:502
 AliEmcalTriggerMaker.cxx:503
 AliEmcalTriggerMaker.cxx:504
 AliEmcalTriggerMaker.cxx:505
 AliEmcalTriggerMaker.cxx:506
 AliEmcalTriggerMaker.cxx:507
 AliEmcalTriggerMaker.cxx:508
 AliEmcalTriggerMaker.cxx:509
 AliEmcalTriggerMaker.cxx:510
 AliEmcalTriggerMaker.cxx:511
 AliEmcalTriggerMaker.cxx:512
 AliEmcalTriggerMaker.cxx:513
 AliEmcalTriggerMaker.cxx:514
 AliEmcalTriggerMaker.cxx:515
 AliEmcalTriggerMaker.cxx:516
 AliEmcalTriggerMaker.cxx:517
 AliEmcalTriggerMaker.cxx:518
 AliEmcalTriggerMaker.cxx:519
 AliEmcalTriggerMaker.cxx:520
 AliEmcalTriggerMaker.cxx:521
 AliEmcalTriggerMaker.cxx:522
 AliEmcalTriggerMaker.cxx:523
 AliEmcalTriggerMaker.cxx:524
 AliEmcalTriggerMaker.cxx:525
 AliEmcalTriggerMaker.cxx:526
 AliEmcalTriggerMaker.cxx:527
 AliEmcalTriggerMaker.cxx:528
 AliEmcalTriggerMaker.cxx:529
 AliEmcalTriggerMaker.cxx:530
 AliEmcalTriggerMaker.cxx:531
 AliEmcalTriggerMaker.cxx:532
 AliEmcalTriggerMaker.cxx:533
 AliEmcalTriggerMaker.cxx:534
 AliEmcalTriggerMaker.cxx:535
 AliEmcalTriggerMaker.cxx:536
 AliEmcalTriggerMaker.cxx:537
 AliEmcalTriggerMaker.cxx:538
 AliEmcalTriggerMaker.cxx:539
 AliEmcalTriggerMaker.cxx:540
 AliEmcalTriggerMaker.cxx:541
 AliEmcalTriggerMaker.cxx:542
 AliEmcalTriggerMaker.cxx:543
 AliEmcalTriggerMaker.cxx:544
 AliEmcalTriggerMaker.cxx:545
 AliEmcalTriggerMaker.cxx:546
 AliEmcalTriggerMaker.cxx:547
 AliEmcalTriggerMaker.cxx:548
 AliEmcalTriggerMaker.cxx:549
 AliEmcalTriggerMaker.cxx:550
 AliEmcalTriggerMaker.cxx:551
 AliEmcalTriggerMaker.cxx:552
 AliEmcalTriggerMaker.cxx:553
 AliEmcalTriggerMaker.cxx:554
 AliEmcalTriggerMaker.cxx:555
 AliEmcalTriggerMaker.cxx:556
 AliEmcalTriggerMaker.cxx:557
 AliEmcalTriggerMaker.cxx:558
 AliEmcalTriggerMaker.cxx:559
 AliEmcalTriggerMaker.cxx:560
 AliEmcalTriggerMaker.cxx:561
 AliEmcalTriggerMaker.cxx:562
 AliEmcalTriggerMaker.cxx:563
 AliEmcalTriggerMaker.cxx:564
 AliEmcalTriggerMaker.cxx:565
 AliEmcalTriggerMaker.cxx:566
 AliEmcalTriggerMaker.cxx:567
 AliEmcalTriggerMaker.cxx:568
 AliEmcalTriggerMaker.cxx:569
 AliEmcalTriggerMaker.cxx:570
 AliEmcalTriggerMaker.cxx:571
 AliEmcalTriggerMaker.cxx:572
 AliEmcalTriggerMaker.cxx:573
 AliEmcalTriggerMaker.cxx:574
 AliEmcalTriggerMaker.cxx:575
 AliEmcalTriggerMaker.cxx:576
 AliEmcalTriggerMaker.cxx:577
 AliEmcalTriggerMaker.cxx:578
 AliEmcalTriggerMaker.cxx:579
 AliEmcalTriggerMaker.cxx:580
 AliEmcalTriggerMaker.cxx:581
 AliEmcalTriggerMaker.cxx:582
 AliEmcalTriggerMaker.cxx:583
 AliEmcalTriggerMaker.cxx:584
 AliEmcalTriggerMaker.cxx:585
 AliEmcalTriggerMaker.cxx:586
 AliEmcalTriggerMaker.cxx:587
 AliEmcalTriggerMaker.cxx:588
 AliEmcalTriggerMaker.cxx:589
 AliEmcalTriggerMaker.cxx:590
 AliEmcalTriggerMaker.cxx:591
 AliEmcalTriggerMaker.cxx:592
 AliEmcalTriggerMaker.cxx:593
 AliEmcalTriggerMaker.cxx:594
 AliEmcalTriggerMaker.cxx:595
 AliEmcalTriggerMaker.cxx:596
 AliEmcalTriggerMaker.cxx:597
 AliEmcalTriggerMaker.cxx:598
 AliEmcalTriggerMaker.cxx:599
 AliEmcalTriggerMaker.cxx:600
 AliEmcalTriggerMaker.cxx:601
 AliEmcalTriggerMaker.cxx:602
 AliEmcalTriggerMaker.cxx:603
 AliEmcalTriggerMaker.cxx:604
 AliEmcalTriggerMaker.cxx:605
 AliEmcalTriggerMaker.cxx:606
 AliEmcalTriggerMaker.cxx:607
 AliEmcalTriggerMaker.cxx:608
 AliEmcalTriggerMaker.cxx:609
 AliEmcalTriggerMaker.cxx:610
 AliEmcalTriggerMaker.cxx:611
 AliEmcalTriggerMaker.cxx:612
 AliEmcalTriggerMaker.cxx:613
 AliEmcalTriggerMaker.cxx:614
 AliEmcalTriggerMaker.cxx:615
 AliEmcalTriggerMaker.cxx:616
 AliEmcalTriggerMaker.cxx:617
 AliEmcalTriggerMaker.cxx:618
 AliEmcalTriggerMaker.cxx:619
 AliEmcalTriggerMaker.cxx:620
 AliEmcalTriggerMaker.cxx:621
 AliEmcalTriggerMaker.cxx:622
 AliEmcalTriggerMaker.cxx:623
 AliEmcalTriggerMaker.cxx:624
 AliEmcalTriggerMaker.cxx:625
 AliEmcalTriggerMaker.cxx:626
 AliEmcalTriggerMaker.cxx:627
 AliEmcalTriggerMaker.cxx:628
 AliEmcalTriggerMaker.cxx:629
 AliEmcalTriggerMaker.cxx:630
 AliEmcalTriggerMaker.cxx:631
 AliEmcalTriggerMaker.cxx:632
 AliEmcalTriggerMaker.cxx:633
 AliEmcalTriggerMaker.cxx:634
 AliEmcalTriggerMaker.cxx:635
 AliEmcalTriggerMaker.cxx:636
 AliEmcalTriggerMaker.cxx:637
 AliEmcalTriggerMaker.cxx:638
 AliEmcalTriggerMaker.cxx:639
 AliEmcalTriggerMaker.cxx:640
 AliEmcalTriggerMaker.cxx:641
 AliEmcalTriggerMaker.cxx:642
 AliEmcalTriggerMaker.cxx:643
 AliEmcalTriggerMaker.cxx:644
 AliEmcalTriggerMaker.cxx:645
 AliEmcalTriggerMaker.cxx:646
 AliEmcalTriggerMaker.cxx:647
 AliEmcalTriggerMaker.cxx:648
 AliEmcalTriggerMaker.cxx:649
 AliEmcalTriggerMaker.cxx:650
 AliEmcalTriggerMaker.cxx:651
 AliEmcalTriggerMaker.cxx:652
 AliEmcalTriggerMaker.cxx:653
 AliEmcalTriggerMaker.cxx:654
 AliEmcalTriggerMaker.cxx:655
 AliEmcalTriggerMaker.cxx:656
 AliEmcalTriggerMaker.cxx:657
 AliEmcalTriggerMaker.cxx:658
 AliEmcalTriggerMaker.cxx:659
 AliEmcalTriggerMaker.cxx:660
 AliEmcalTriggerMaker.cxx:661
 AliEmcalTriggerMaker.cxx:662
 AliEmcalTriggerMaker.cxx:663
 AliEmcalTriggerMaker.cxx:664
 AliEmcalTriggerMaker.cxx:665
 AliEmcalTriggerMaker.cxx:666
 AliEmcalTriggerMaker.cxx:667
 AliEmcalTriggerMaker.cxx:668
 AliEmcalTriggerMaker.cxx:669
 AliEmcalTriggerMaker.cxx:670
 AliEmcalTriggerMaker.cxx:671
 AliEmcalTriggerMaker.cxx:672
 AliEmcalTriggerMaker.cxx:673
 AliEmcalTriggerMaker.cxx:674
 AliEmcalTriggerMaker.cxx:675
 AliEmcalTriggerMaker.cxx:676
 AliEmcalTriggerMaker.cxx:677
 AliEmcalTriggerMaker.cxx:678
 AliEmcalTriggerMaker.cxx:679
 AliEmcalTriggerMaker.cxx:680
 AliEmcalTriggerMaker.cxx:681
 AliEmcalTriggerMaker.cxx:682
 AliEmcalTriggerMaker.cxx:683
 AliEmcalTriggerMaker.cxx:684
 AliEmcalTriggerMaker.cxx:685
 AliEmcalTriggerMaker.cxx:686
 AliEmcalTriggerMaker.cxx:687
 AliEmcalTriggerMaker.cxx:688
 AliEmcalTriggerMaker.cxx:689
 AliEmcalTriggerMaker.cxx:690
 AliEmcalTriggerMaker.cxx:691
 AliEmcalTriggerMaker.cxx:692
 AliEmcalTriggerMaker.cxx:693
 AliEmcalTriggerMaker.cxx:694
 AliEmcalTriggerMaker.cxx:695
 AliEmcalTriggerMaker.cxx:696
 AliEmcalTriggerMaker.cxx:697
 AliEmcalTriggerMaker.cxx:698
 AliEmcalTriggerMaker.cxx:699
 AliEmcalTriggerMaker.cxx:700
 AliEmcalTriggerMaker.cxx:701
 AliEmcalTriggerMaker.cxx:702
 AliEmcalTriggerMaker.cxx:703
 AliEmcalTriggerMaker.cxx:704
 AliEmcalTriggerMaker.cxx:705
 AliEmcalTriggerMaker.cxx:706
 AliEmcalTriggerMaker.cxx:707
 AliEmcalTriggerMaker.cxx:708
 AliEmcalTriggerMaker.cxx:709
 AliEmcalTriggerMaker.cxx:710
 AliEmcalTriggerMaker.cxx:711
 AliEmcalTriggerMaker.cxx:712
 AliEmcalTriggerMaker.cxx:713
 AliEmcalTriggerMaker.cxx:714
 AliEmcalTriggerMaker.cxx:715
 AliEmcalTriggerMaker.cxx:716
 AliEmcalTriggerMaker.cxx:717
 AliEmcalTriggerMaker.cxx:718
 AliEmcalTriggerMaker.cxx:719
 AliEmcalTriggerMaker.cxx:720
 AliEmcalTriggerMaker.cxx:721
 AliEmcalTriggerMaker.cxx:722
 AliEmcalTriggerMaker.cxx:723
 AliEmcalTriggerMaker.cxx:724
 AliEmcalTriggerMaker.cxx:725
 AliEmcalTriggerMaker.cxx:726
 AliEmcalTriggerMaker.cxx:727
 AliEmcalTriggerMaker.cxx:728
 AliEmcalTriggerMaker.cxx:729
 AliEmcalTriggerMaker.cxx:730
 AliEmcalTriggerMaker.cxx:731
 AliEmcalTriggerMaker.cxx:732
 AliEmcalTriggerMaker.cxx:733
 AliEmcalTriggerMaker.cxx:734
 AliEmcalTriggerMaker.cxx:735
 AliEmcalTriggerMaker.cxx:736
 AliEmcalTriggerMaker.cxx:737
 AliEmcalTriggerMaker.cxx:738
 AliEmcalTriggerMaker.cxx:739
 AliEmcalTriggerMaker.cxx:740
 AliEmcalTriggerMaker.cxx:741
 AliEmcalTriggerMaker.cxx:742
 AliEmcalTriggerMaker.cxx:743
 AliEmcalTriggerMaker.cxx:744
 AliEmcalTriggerMaker.cxx:745
 AliEmcalTriggerMaker.cxx:746
 AliEmcalTriggerMaker.cxx:747
 AliEmcalTriggerMaker.cxx:748
 AliEmcalTriggerMaker.cxx:749
 AliEmcalTriggerMaker.cxx:750
 AliEmcalTriggerMaker.cxx:751
 AliEmcalTriggerMaker.cxx:752
 AliEmcalTriggerMaker.cxx:753
 AliEmcalTriggerMaker.cxx:754
 AliEmcalTriggerMaker.cxx:755
 AliEmcalTriggerMaker.cxx:756
 AliEmcalTriggerMaker.cxx:757
 AliEmcalTriggerMaker.cxx:758
 AliEmcalTriggerMaker.cxx:759
 AliEmcalTriggerMaker.cxx:760
 AliEmcalTriggerMaker.cxx:761
 AliEmcalTriggerMaker.cxx:762
 AliEmcalTriggerMaker.cxx:763
 AliEmcalTriggerMaker.cxx:764
 AliEmcalTriggerMaker.cxx:765
 AliEmcalTriggerMaker.cxx:766
 AliEmcalTriggerMaker.cxx:767
 AliEmcalTriggerMaker.cxx:768
 AliEmcalTriggerMaker.cxx:769
 AliEmcalTriggerMaker.cxx:770
 AliEmcalTriggerMaker.cxx:771
 AliEmcalTriggerMaker.cxx:772
 AliEmcalTriggerMaker.cxx:773
 AliEmcalTriggerMaker.cxx:774
 AliEmcalTriggerMaker.cxx:775
 AliEmcalTriggerMaker.cxx:776
 AliEmcalTriggerMaker.cxx:777
 AliEmcalTriggerMaker.cxx:778
 AliEmcalTriggerMaker.cxx:779
 AliEmcalTriggerMaker.cxx:780
 AliEmcalTriggerMaker.cxx:781
 AliEmcalTriggerMaker.cxx:782
 AliEmcalTriggerMaker.cxx:783
 AliEmcalTriggerMaker.cxx:784
 AliEmcalTriggerMaker.cxx:785
 AliEmcalTriggerMaker.cxx:786
 AliEmcalTriggerMaker.cxx:787
 AliEmcalTriggerMaker.cxx:788
 AliEmcalTriggerMaker.cxx:789
 AliEmcalTriggerMaker.cxx:790
 AliEmcalTriggerMaker.cxx:791
 AliEmcalTriggerMaker.cxx:792
 AliEmcalTriggerMaker.cxx:793
 AliEmcalTriggerMaker.cxx:794
 AliEmcalTriggerMaker.cxx:795
 AliEmcalTriggerMaker.cxx:796
 AliEmcalTriggerMaker.cxx:797
 AliEmcalTriggerMaker.cxx:798
 AliEmcalTriggerMaker.cxx:799
 AliEmcalTriggerMaker.cxx:800
 AliEmcalTriggerMaker.cxx:801
 AliEmcalTriggerMaker.cxx:802
 AliEmcalTriggerMaker.cxx:803
 AliEmcalTriggerMaker.cxx:804
 AliEmcalTriggerMaker.cxx:805
 AliEmcalTriggerMaker.cxx:806
 AliEmcalTriggerMaker.cxx:807
 AliEmcalTriggerMaker.cxx:808
 AliEmcalTriggerMaker.cxx:809
 AliEmcalTriggerMaker.cxx:810