ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


#include "AliMUONTriggerUtilities.h"

#include "TArrayS.h"

#include "AliLog.h"

#include "AliMUONCalibrationData.h"
//#include "AliMUONTriggerCrateStore.h"
//#include "AliMUONTriggerCrate.h"
//#include "AliMUONGlobalCrateConfig.h"
//#include "AliMUONVCalibParam.h"
//#include "AliMUONRegionalTriggerConfig.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONLocalTriggerBoard.h"
#include "AliMUONVDigit.h"
#include "AliMUONConstants.h"
#include "AliMUONTriggerElectronics.h"
#include "AliMUONDigitStoreV2R.h"
#include "AliMUONDigitMaker.h"
#include "AliMUONTriggerStoreV1.h"

#include "AliMpDDLStore.h"
#include "AliMpPad.h"
//#include "AliMpLocalBoard.h"
#include "AliMpConstants.h"
#include "AliMpVSegmentation.h"
#include "AliMpSegmentation.h"

/// \cond CLASSIMP
ClassImp(AliMUONTriggerUtilities)
/// \endcond


//_____________________________________________________________________________
AliMUONTriggerUtilities::AliMUONTriggerUtilities(AliMUONCalibrationData* calibData):
TObject(),
fCalibrationData(calibData),
fTriggerStatusMap(2*AliMUONConstants::NTriggerCh()*AliMUONConstants::NTriggerCircuit()),
fMaskedDigitsStore(new AliMUONDigitStoreV2R())
{
  /// Ctor.
  Init();
}

//_____________________________________________________________________________
AliMUONTriggerUtilities::~AliMUONTriggerUtilities()
{
  /// Destructor. Note we're the owner of some pointers.
  delete fMaskedDigitsStore;
}


//_____________________________________________________________________________
Bool_t AliMUONTriggerUtilities::Init()
{
  /// Build trigger status map from masks
  AliMUONTriggerElectronics trigElectronics(fCalibrationData);
  AliMUONDigitMaker digitMaker(kFALSE);
  AliMUONDigitStoreV2R digitStore, digitStorePart;
  AliMUONTriggerStoreV1 triggerStore, triggerStorePart;

  TArrayI activeBoards(AliMUONConstants::NTriggerCircuit());
//  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
//  {
//    UInt_t currMaskLpt = fCalibrationData->GlobalTriggerCrateConfig()->GetGlobalMask(iSide);
//    UInt_t currMaskHpt = fCalibrationData->GlobalTriggerCrateConfig()->GetGlobalMask(2+iSide);
//    for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
//    {
//      Bool_t isActiveLpt = ( currMaskLpt >> (4*iReg) ) & 0xF;
//      Bool_t isActiveHpt = ( currMaskHpt >> (4*iReg) ) & 0xF;
//      if ( ! isActiveLpt && ! isActiveHpt ) continue;
//      AliMUONTriggerCrate* cr = trigElectronics.GetCrateStore()->Crate(iSide, iReg);
//      TObjArray *boards = cr->Boards();
//      
//      for ( Int_t iboard = 1; iboard < boards->GetEntries(); iboard++)
//      {
//        TObject* currBoard = boards->At(iboard);
//        
//        if ( ! currBoard ) break;
//        Int_t idx = static_cast<AliMUONLocalTriggerBoard*>(currBoard)->GetNumber()-1;
//        if ( idx < 0 ) continue; // Some boards of crates 2 and 3 do not exist, but they are still in the board list
//        activeBoards[idx] = 1;
//      } // loop on boards in crate
//    } // loop on regional
//  } // loop on side
  
  TArrayS xyPatternAll[2]; 	 
  for(Int_t icath=0; icath<AliMpConstants::NofCathodes(); icath++){ 	 
    xyPatternAll[icath].Set(AliMpConstants::NofTriggerChambers()); 	 
    xyPatternAll[icath].Reset(0xFFFF);
  }
  
  // Create a store with all digits in trigger
  for ( Int_t iboard=1; iboard<=AliMpConstants::NofLocalBoards(); iboard++ ) {
    digitMaker.TriggerDigits(iboard, xyPatternAll, digitStore, kFALSE);
    
    // For each local board, fill all the strips and check the global output:
    // if the board is masked at the global level, the output will be 0
    digitStorePart.Clear();
    digitMaker.TriggerDigits(iboard, xyPatternAll, digitStorePart, kFALSE);
    triggerStorePart.Clear();
    trigElectronics.Digits2Trigger(digitStorePart, triggerStorePart);
    AliMUONGlobalTrigger* globalTrig = triggerStorePart.Global();
    if ( globalTrig->GetGlobalResponse() > 0 ) activeBoards[iboard-1] = 1;
  }
  
  // Create trigger with electronics (it applies masks)
  trigElectronics.Digits2Trigger(digitStore, triggerStore);
  
  // Re-compute digits from triggerStore
  // Since the masks were applied in the response,
  // the new store do not contain masked channels
  AliMUONDigitStoreV2R digitStoreMasked;
  digitMaker.TriggerToDigitsStore(triggerStore, digitStoreMasked);
  
  // Loop on non-masked digit store
  // Search for digits in the masked one:
  // if digit is not found, it means it was masked
  TIter next(digitStore.CreateIterator());
  AliMUONVDigit* dig = 0x0;
  while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) ) {
    Int_t cath = dig->Cathode();
    Int_t detElemId = dig->DetElemId();
    Int_t board = dig->ManuId();
    Int_t strip = dig->ManuChannel();
    AliMUONVDigit* currDigit = digitStoreMasked.FindObject(detElemId, board, strip, cath);
    Int_t ich = detElemId/100-11;
    const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(cath));
    AliMpPad pad = seg->PadByIndices(dig->PadX(), dig->PadY(), kTRUE);
    Bool_t isMasked = ( currDigit ) ? kFALSE : kTRUE;
    
    if ( currDigit ) {
      // Check if board is active
      // For the non-bending plane the digit is created for the first board only
      // The first board may be masked, but there may be some boards which are not.
      // If so, the strip won't be masked, so we should keep it
      Bool_t allBoardsMasked = kTRUE;
      for (Int_t iloc=0; iloc<pad.GetNofLocations(); iloc++) {
        Int_t currBoard = pad.GetLocalBoardId(iloc);
        if ( activeBoards[currBoard-1] == 1 ) {
          allBoardsMasked = kFALSE;
          break;
        }
      }
      isMasked = allBoardsMasked;
    }
    
    if ( isMasked ) fMaskedDigitsStore->Add(*((AliMUONVDigit*)dig->Clone()), AliMUONVDigitStore::kDeny);
    else {
      for (Int_t iloc=0; iloc<pad.GetNofLocations(); iloc++) {
        Int_t currBoard = pad.GetLocalBoardId(iloc);
        Int_t arrayIndex = GetArrayIndex(cath, ich, currBoard);
        fTriggerStatusMap[arrayIndex] |= ( 0x1 << strip );
      } // loop on locations (in bending plane we have to fill all copy boards)
    }
  }

//  AliMUONTriggerCrateStore crates;
//  crates.ReadFromFile(fCalibrationData);
//  
//  AliMUONRegionalTriggerConfig* regionalConfig = fCalibrationData->RegionalTriggerConfig();
//  if ( ! regionalConfig ) AliFatal("no valid regional trigger configuration in CDB\n");
//  
//  // Loop on crates
//  AliMUONTriggerCrate* cr = 0x0;
//  TIter next ( crates.CreateCrateIterator() );
//  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) ) {
//    TObjArray *boards = cr->Boards();
//    
//    AliMUONTriggerCrateConfig* crateConfig = regionalConfig->FindTriggerCrate(cr->GetName());
//    
//    if ( ! crateConfig ) AliFatal(Form("Crate %s not present in configuration !!!\n", cr->GetName()));
//    
//    UShort_t regionalMask = crateConfig->GetMask();
//    
//    // Loop on boards
//    for (Int_t iboard = 1; iboard < boards->GetEntries(); iboard++ ) {      
//      Bool_t activeBoard = ( ( regionalMask >> ( iboard - 1) ) & 1 );
//      AliMUONLocalTriggerBoard* board = (AliMUONLocalTriggerBoard*)boards->At(iboard);
//      Int_t cardNumber = board->GetNumber();
//      if ( cardNumber <= 0 ) continue; // interface board are not interested
//      AliMUONVCalibParam* localBoardMask = fCalibrationData->LocalTriggerBoardMasks(cardNumber);
//      for ( Int_t icath = 0; icath < 2; ++icath ) {
//        for ( Int_t ich = 0; ich < 4; ++ich ) {
//          Int_t planeIndex = icath * 4 + ich;
//          Int_t localMask = ( activeBoard ) ? localBoardMask->ValueAsInt(planeIndex) : 0;
//          Int_t arrayIndex = GetArrayIndex(icath, ich, cardNumber);
//          fTriggerStatusMap[arrayIndex] = localMask;
//        } // loop on chambers
//      } // loop on planes
//    } // loop on boards
//  } // loop on crates
  
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliMUONTriggerUtilities::IsMasked(const AliMUONVDigit& digit) const
{
  /// Check if pad is masked  
  return IsMasked(digit.DetElemId(), digit.Cathode(), digit.ManuId(), digit.ManuChannel());
}


//_____________________________________________________________________________
Bool_t AliMUONTriggerUtilities::IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode) const
{
  /// Check if pad is masked  
  return IsMasked(detElemId, cathode, pad.GetLocalBoardId(0), pad.GetLocalBoardChannel(0));
}


//_____________________________________________________________________________
Bool_t AliMUONTriggerUtilities::IsMasked(Int_t detElemId, Int_t cathode, Int_t localCircuit, Int_t strip) const
{
  /// Check if pad is masked
  Int_t trigCh = detElemId/100 - 11;
  
//  Int_t ibitxy = strip;
//  AliMpLocalBoard* localBoard = AliMpDDLStore::Instance()->GetLocalBoard(localCircuit);
//  if ( cathode && localBoard->GetSwitch(AliMpLocalBoard::kZeroAllYLSB) ) ibitxy += 8;
  Int_t arrayIndex = GetArrayIndex(cathode, trigCh, localCircuit);
  Bool_t isMasked = ( ( ( fTriggerStatusMap[arrayIndex] >> strip ) & 0x1 ) == 0 );
  AliDebug(1,Form("detElemId %i  cath %i  board %i  strip %i  is active %i\n", detElemId, cathode, localCircuit, strip, ! isMasked));
  return isMasked;
}

//_____________________________________________________________________________
Bool_t AliMUONTriggerUtilities::IsMaskedBoard ( Int_t localCircuit, Int_t detElemId, Int_t cathode ) const
{
  /// Check if board is masked
  Int_t trigCh = detElemId/100-11;
  Int_t arrayIndex = GetArrayIndex(cathode, trigCh, localCircuit);
  return ( fTriggerStatusMap[arrayIndex] == 0 );
}



//_____________________________________________________________________________
Int_t AliMUONTriggerUtilities::GetArrayIndex(Int_t cathode, Int_t trigCh, Int_t localCircuit) const
{
  /// Get index of array with trigger status map or efficiency
  return
  AliMUONConstants::NTriggerCircuit() * AliMUONConstants::NTriggerCh() * cathode +
  AliMUONConstants::NTriggerCircuit() * trigCh + localCircuit-1;
}
 AliMUONTriggerUtilities.cxx:1
 AliMUONTriggerUtilities.cxx:2
 AliMUONTriggerUtilities.cxx:3
 AliMUONTriggerUtilities.cxx:4
 AliMUONTriggerUtilities.cxx:5
 AliMUONTriggerUtilities.cxx:6
 AliMUONTriggerUtilities.cxx:7
 AliMUONTriggerUtilities.cxx:8
 AliMUONTriggerUtilities.cxx:9
 AliMUONTriggerUtilities.cxx:10
 AliMUONTriggerUtilities.cxx:11
 AliMUONTriggerUtilities.cxx:12
 AliMUONTriggerUtilities.cxx:13
 AliMUONTriggerUtilities.cxx:14
 AliMUONTriggerUtilities.cxx:15
 AliMUONTriggerUtilities.cxx:16
 AliMUONTriggerUtilities.cxx:17
 AliMUONTriggerUtilities.cxx:18
 AliMUONTriggerUtilities.cxx:19
 AliMUONTriggerUtilities.cxx:20
 AliMUONTriggerUtilities.cxx:21
 AliMUONTriggerUtilities.cxx:22
 AliMUONTriggerUtilities.cxx:23
 AliMUONTriggerUtilities.cxx:24
 AliMUONTriggerUtilities.cxx:25
 AliMUONTriggerUtilities.cxx:26
 AliMUONTriggerUtilities.cxx:27
 AliMUONTriggerUtilities.cxx:28
 AliMUONTriggerUtilities.cxx:29
 AliMUONTriggerUtilities.cxx:30
 AliMUONTriggerUtilities.cxx:31
 AliMUONTriggerUtilities.cxx:32
 AliMUONTriggerUtilities.cxx:33
 AliMUONTriggerUtilities.cxx:34
 AliMUONTriggerUtilities.cxx:35
 AliMUONTriggerUtilities.cxx:36
 AliMUONTriggerUtilities.cxx:37
 AliMUONTriggerUtilities.cxx:38
 AliMUONTriggerUtilities.cxx:39
 AliMUONTriggerUtilities.cxx:40
 AliMUONTriggerUtilities.cxx:41
 AliMUONTriggerUtilities.cxx:42
 AliMUONTriggerUtilities.cxx:43
 AliMUONTriggerUtilities.cxx:44
 AliMUONTriggerUtilities.cxx:45
 AliMUONTriggerUtilities.cxx:46
 AliMUONTriggerUtilities.cxx:47
 AliMUONTriggerUtilities.cxx:48
 AliMUONTriggerUtilities.cxx:49
 AliMUONTriggerUtilities.cxx:50
 AliMUONTriggerUtilities.cxx:51
 AliMUONTriggerUtilities.cxx:52
 AliMUONTriggerUtilities.cxx:53
 AliMUONTriggerUtilities.cxx:54
 AliMUONTriggerUtilities.cxx:55
 AliMUONTriggerUtilities.cxx:56
 AliMUONTriggerUtilities.cxx:57
 AliMUONTriggerUtilities.cxx:58
 AliMUONTriggerUtilities.cxx:59
 AliMUONTriggerUtilities.cxx:60
 AliMUONTriggerUtilities.cxx:61
 AliMUONTriggerUtilities.cxx:62
 AliMUONTriggerUtilities.cxx:63
 AliMUONTriggerUtilities.cxx:64
 AliMUONTriggerUtilities.cxx:65
 AliMUONTriggerUtilities.cxx:66
 AliMUONTriggerUtilities.cxx:67
 AliMUONTriggerUtilities.cxx:68
 AliMUONTriggerUtilities.cxx:69
 AliMUONTriggerUtilities.cxx:70
 AliMUONTriggerUtilities.cxx:71
 AliMUONTriggerUtilities.cxx:72
 AliMUONTriggerUtilities.cxx:73
 AliMUONTriggerUtilities.cxx:74
 AliMUONTriggerUtilities.cxx:75
 AliMUONTriggerUtilities.cxx:76
 AliMUONTriggerUtilities.cxx:77
 AliMUONTriggerUtilities.cxx:78
 AliMUONTriggerUtilities.cxx:79
 AliMUONTriggerUtilities.cxx:80
 AliMUONTriggerUtilities.cxx:81
 AliMUONTriggerUtilities.cxx:82
 AliMUONTriggerUtilities.cxx:83
 AliMUONTriggerUtilities.cxx:84
 AliMUONTriggerUtilities.cxx:85
 AliMUONTriggerUtilities.cxx:86
 AliMUONTriggerUtilities.cxx:87
 AliMUONTriggerUtilities.cxx:88
 AliMUONTriggerUtilities.cxx:89
 AliMUONTriggerUtilities.cxx:90
 AliMUONTriggerUtilities.cxx:91
 AliMUONTriggerUtilities.cxx:92
 AliMUONTriggerUtilities.cxx:93
 AliMUONTriggerUtilities.cxx:94
 AliMUONTriggerUtilities.cxx:95
 AliMUONTriggerUtilities.cxx:96
 AliMUONTriggerUtilities.cxx:97
 AliMUONTriggerUtilities.cxx:98
 AliMUONTriggerUtilities.cxx:99
 AliMUONTriggerUtilities.cxx:100
 AliMUONTriggerUtilities.cxx:101
 AliMUONTriggerUtilities.cxx:102
 AliMUONTriggerUtilities.cxx:103
 AliMUONTriggerUtilities.cxx:104
 AliMUONTriggerUtilities.cxx:105
 AliMUONTriggerUtilities.cxx:106
 AliMUONTriggerUtilities.cxx:107
 AliMUONTriggerUtilities.cxx:108
 AliMUONTriggerUtilities.cxx:109
 AliMUONTriggerUtilities.cxx:110
 AliMUONTriggerUtilities.cxx:111
 AliMUONTriggerUtilities.cxx:112
 AliMUONTriggerUtilities.cxx:113
 AliMUONTriggerUtilities.cxx:114
 AliMUONTriggerUtilities.cxx:115
 AliMUONTriggerUtilities.cxx:116
 AliMUONTriggerUtilities.cxx:117
 AliMUONTriggerUtilities.cxx:118
 AliMUONTriggerUtilities.cxx:119
 AliMUONTriggerUtilities.cxx:120
 AliMUONTriggerUtilities.cxx:121
 AliMUONTriggerUtilities.cxx:122
 AliMUONTriggerUtilities.cxx:123
 AliMUONTriggerUtilities.cxx:124
 AliMUONTriggerUtilities.cxx:125
 AliMUONTriggerUtilities.cxx:126
 AliMUONTriggerUtilities.cxx:127
 AliMUONTriggerUtilities.cxx:128
 AliMUONTriggerUtilities.cxx:129
 AliMUONTriggerUtilities.cxx:130
 AliMUONTriggerUtilities.cxx:131
 AliMUONTriggerUtilities.cxx:132
 AliMUONTriggerUtilities.cxx:133
 AliMUONTriggerUtilities.cxx:134
 AliMUONTriggerUtilities.cxx:135
 AliMUONTriggerUtilities.cxx:136
 AliMUONTriggerUtilities.cxx:137
 AliMUONTriggerUtilities.cxx:138
 AliMUONTriggerUtilities.cxx:139
 AliMUONTriggerUtilities.cxx:140
 AliMUONTriggerUtilities.cxx:141
 AliMUONTriggerUtilities.cxx:142
 AliMUONTriggerUtilities.cxx:143
 AliMUONTriggerUtilities.cxx:144
 AliMUONTriggerUtilities.cxx:145
 AliMUONTriggerUtilities.cxx:146
 AliMUONTriggerUtilities.cxx:147
 AliMUONTriggerUtilities.cxx:148
 AliMUONTriggerUtilities.cxx:149
 AliMUONTriggerUtilities.cxx:150
 AliMUONTriggerUtilities.cxx:151
 AliMUONTriggerUtilities.cxx:152
 AliMUONTriggerUtilities.cxx:153
 AliMUONTriggerUtilities.cxx:154
 AliMUONTriggerUtilities.cxx:155
 AliMUONTriggerUtilities.cxx:156
 AliMUONTriggerUtilities.cxx:157
 AliMUONTriggerUtilities.cxx:158
 AliMUONTriggerUtilities.cxx:159
 AliMUONTriggerUtilities.cxx:160
 AliMUONTriggerUtilities.cxx:161
 AliMUONTriggerUtilities.cxx:162
 AliMUONTriggerUtilities.cxx:163
 AliMUONTriggerUtilities.cxx:164
 AliMUONTriggerUtilities.cxx:165
 AliMUONTriggerUtilities.cxx:166
 AliMUONTriggerUtilities.cxx:167
 AliMUONTriggerUtilities.cxx:168
 AliMUONTriggerUtilities.cxx:169
 AliMUONTriggerUtilities.cxx:170
 AliMUONTriggerUtilities.cxx:171
 AliMUONTriggerUtilities.cxx:172
 AliMUONTriggerUtilities.cxx:173
 AliMUONTriggerUtilities.cxx:174
 AliMUONTriggerUtilities.cxx:175
 AliMUONTriggerUtilities.cxx:176
 AliMUONTriggerUtilities.cxx:177
 AliMUONTriggerUtilities.cxx:178
 AliMUONTriggerUtilities.cxx:179
 AliMUONTriggerUtilities.cxx:180
 AliMUONTriggerUtilities.cxx:181
 AliMUONTriggerUtilities.cxx:182
 AliMUONTriggerUtilities.cxx:183
 AliMUONTriggerUtilities.cxx:184
 AliMUONTriggerUtilities.cxx:185
 AliMUONTriggerUtilities.cxx:186
 AliMUONTriggerUtilities.cxx:187
 AliMUONTriggerUtilities.cxx:188
 AliMUONTriggerUtilities.cxx:189
 AliMUONTriggerUtilities.cxx:190
 AliMUONTriggerUtilities.cxx:191
 AliMUONTriggerUtilities.cxx:192
 AliMUONTriggerUtilities.cxx:193
 AliMUONTriggerUtilities.cxx:194
 AliMUONTriggerUtilities.cxx:195
 AliMUONTriggerUtilities.cxx:196
 AliMUONTriggerUtilities.cxx:197
 AliMUONTriggerUtilities.cxx:198
 AliMUONTriggerUtilities.cxx:199
 AliMUONTriggerUtilities.cxx:200
 AliMUONTriggerUtilities.cxx:201
 AliMUONTriggerUtilities.cxx:202
 AliMUONTriggerUtilities.cxx:203
 AliMUONTriggerUtilities.cxx:204
 AliMUONTriggerUtilities.cxx:205
 AliMUONTriggerUtilities.cxx:206
 AliMUONTriggerUtilities.cxx:207
 AliMUONTriggerUtilities.cxx:208
 AliMUONTriggerUtilities.cxx:209
 AliMUONTriggerUtilities.cxx:210
 AliMUONTriggerUtilities.cxx:211
 AliMUONTriggerUtilities.cxx:212
 AliMUONTriggerUtilities.cxx:213
 AliMUONTriggerUtilities.cxx:214
 AliMUONTriggerUtilities.cxx:215
 AliMUONTriggerUtilities.cxx:216
 AliMUONTriggerUtilities.cxx:217
 AliMUONTriggerUtilities.cxx:218
 AliMUONTriggerUtilities.cxx:219
 AliMUONTriggerUtilities.cxx:220
 AliMUONTriggerUtilities.cxx:221
 AliMUONTriggerUtilities.cxx:222
 AliMUONTriggerUtilities.cxx:223
 AliMUONTriggerUtilities.cxx:224
 AliMUONTriggerUtilities.cxx:225
 AliMUONTriggerUtilities.cxx:226
 AliMUONTriggerUtilities.cxx:227
 AliMUONTriggerUtilities.cxx:228
 AliMUONTriggerUtilities.cxx:229
 AliMUONTriggerUtilities.cxx:230
 AliMUONTriggerUtilities.cxx:231
 AliMUONTriggerUtilities.cxx:232
 AliMUONTriggerUtilities.cxx:233
 AliMUONTriggerUtilities.cxx:234
 AliMUONTriggerUtilities.cxx:235
 AliMUONTriggerUtilities.cxx:236
 AliMUONTriggerUtilities.cxx:237
 AliMUONTriggerUtilities.cxx:238
 AliMUONTriggerUtilities.cxx:239
 AliMUONTriggerUtilities.cxx:240
 AliMUONTriggerUtilities.cxx:241
 AliMUONTriggerUtilities.cxx:242
 AliMUONTriggerUtilities.cxx:243
 AliMUONTriggerUtilities.cxx:244
 AliMUONTriggerUtilities.cxx:245
 AliMUONTriggerUtilities.cxx:246
 AliMUONTriggerUtilities.cxx:247
 AliMUONTriggerUtilities.cxx:248
 AliMUONTriggerUtilities.cxx:249
 AliMUONTriggerUtilities.cxx:250
 AliMUONTriggerUtilities.cxx:251
 AliMUONTriggerUtilities.cxx:252
 AliMUONTriggerUtilities.cxx:253
 AliMUONTriggerUtilities.cxx:254
 AliMUONTriggerUtilities.cxx:255
 AliMUONTriggerUtilities.cxx:256
 AliMUONTriggerUtilities.cxx:257
 AliMUONTriggerUtilities.cxx:258
 AliMUONTriggerUtilities.cxx:259
 AliMUONTriggerUtilities.cxx:260
 AliMUONTriggerUtilities.cxx:261
 AliMUONTriggerUtilities.cxx:262