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

// $Id$

#include "AliMUONTriggerSubprocessor.h"

#include "AliCDBMetaData.h"
#include "AliLog.h"
#include "AliMUON1DArray.h"
#include "AliMUONGlobalCrateConfig.h"
#include "AliMUONRegionalTriggerConfig.h"
#include "AliMUONCalibParamNI.h"
#include "AliMUONPreprocessor.h"
#include "AliMUONTriggerIO.h"
#include "AliMUONTriggerLut.h"
#include "AliMpConstants.h"
#include <Riostream.h>
#include <TList.h>
#include <TObjString.h>
#include <TSystem.h>

/// \class AliMUONTriggerSubprocessor
///
/// Implementation of AliMUONVSubprocessor for MUON trigger system
///
/// Reads masks and LUT online files to feed the OCDB
///
/// \author L. Aphecetche

using std::ifstream;
/// \cond CLASSIMP
ClassImp(AliMUONTriggerSubprocessor)
/// \endcond

//_____________________________________________________________________________
AliMUONTriggerSubprocessor::AliMUONTriggerSubprocessor(AliMUONPreprocessor* master)
: AliMUONVSubprocessor(master,
                       "Triggers",
                       "Upload MUON Trigger masks and LUT to OCDB"),
fRegionalConfig(0x0),
fLocalMasks(0x0),
fGlobalConfig(0x0),
fLUT(0x0)
{
  /// default ctor
}

//_____________________________________________________________________________
AliMUONTriggerSubprocessor::~AliMUONTriggerSubprocessor()
{
  /// dtor
  delete fRegionalConfig;
  delete fLocalMasks;
  delete fGlobalConfig;
  delete fLUT;
}

//_____________________________________________________________________________
TString
AliMUONTriggerSubprocessor::GetFileName(const char* fid) const
{
  /// Get filename for a given id
  
  const Int_t kSystem = AliMUONPreprocessor::kDAQ;
  
  TList* sources = Master()->GetFileSources(kSystem,fid);
  if ( sources && sources->GetSize() == 1 ) 
  {
    return Master()->GetFile(kSystem,fid,static_cast<TObjString*>(sources->First())->GetName());
  }
  return "";
}

//_____________________________________________________________________________
Bool_t 
AliMUONTriggerSubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
{
  /// When starting a new run, reads in the trigger online files.
  
  // First thing to do (after cleanup, that is), is to check whether the DA
  // was alive or not. If it was, it should have put the "MtgCurrent.dat" file
  // on the FXS. 
  //
  
  Bool_t da(kTRUE);
  
  TString exportedFiles(gSystem->ExpandPathName(GetFileName("EXPORTED").Data()));
  
  if ( exportedFiles == "" ) 
  {
    Master()->Log("exported files not specified !");
    da = kFALSE;
  }
  
  if ( gSystem->AccessPathName(exportedFiles.Data(),kFileExists) ) // mind the strange return value convention of that method !
  {
    Master()->Log(Form("%s is not there !",exportedFiles.Data()));
    da = kFALSE;
  }
  
  if (!da)
  {
    Master()->Log("FATAL ERROR : DA does not seem to have been run !!!");
    Master()->Invalidate();
    return kFALSE;
  }
  
  // OK. We have an exportedFiles.dat file at hand.
  // Read it to know what other files should be there.
  
  Bool_t regionalFile(kFALSE);
  Bool_t globalFile(kFALSE);
  Bool_t localFile(kFALSE);
  Bool_t lutFile(kFALSE);
  
  WhichFilesToRead(GetFileName("EXPORTED").Data(),
                   globalFile,regionalFile,localFile,lutFile);
  
  if ((globalFile+regionalFile+localFile+lutFile) == 0) {
    Master()->Log("No file(s) to be processed for this run. Exiting.");
    return kTRUE;
  }
  
  delete fRegionalConfig; fRegionalConfig = 0x0;
  delete fLocalMasks; fLocalMasks = 0x0;
  delete fGlobalConfig; fGlobalConfig = 0x0;
  delete fLUT; fLUT = 0x0;
  
  Master()->Log(Form("Reading trigger masks for Run %d startTime %u endTime %u",
                     run,startTime,endTime));
    
  Int_t check = 
    TestFile("REGIONAL",regionalFile) + 
    TestFile("LOCAL",localFile) + 
    TestFile("GLOBAL",globalFile) +
    TestFile("LUT",lutFile);

  if ( check ) 
  {
    Master()->Log("Could not read some input file(s). Exiting");
    Master()->Invalidate();
    return kFALSE;
  }
  
  if ( regionalFile ) globalFile = kTRUE;

  if ( regionalFile ) fRegionalConfig = new AliMUONRegionalTriggerConfig();
  if ( localFile ) fLocalMasks = new AliMUON1DArray(AliMpConstants::TotalNofLocalBoards()+1);
  if ( globalFile )   fGlobalConfig   = new AliMUONGlobalCrateConfig();

  AliMUONTriggerIO tio;
  
  Bool_t ok = tio.ReadConfig(localFile ? GetFileName("LOCAL").Data() : "",
                             regionalFile ? GetFileName("REGIONAL").Data() : "",
                             globalFile ? GetFileName("GLOBAL").Data() : "",
                             fLocalMasks,fRegionalConfig,fGlobalConfig);
  
  if (!ok)
  {
    Master()->Log("ERROR : ReadConfig failed");
    delete fLocalMasks;
    delete fRegionalConfig;
    delete fGlobalConfig;
    fLocalMasks = 0x0;
    fRegionalConfig = 0x0;
    fGlobalConfig = 0x0;
  }

  if ( lutFile ) 
  {
    fLUT = new AliMUONTriggerLut;
    
    Master()->Log(Form("Reading trigger LUT for Run %d startTime %u endTime %u",
                       run,startTime,endTime));
  
    ok = tio.ReadLUT(GetFileName("LUT").Data(),*fLUT);

    if (!ok)
    {
      Master()->Log("ERROR : ReadLUT failed");
      delete fLUT;
      fLUT = 0x0;
    }
  }
  return kTRUE;
}

//_____________________________________________________________________________
UInt_t 
AliMUONTriggerSubprocessor::Process(TMap* /*dcsAliasMap*/)
{
  /// Store the trigger masks into the CDB
  
  if ( !fGlobalConfig && !fRegionalConfig && !fLocalMasks && !fLUT )
  {
    // nothing to do
    return 0;
  }
  
  Master()->Log(Form("N global = %d N regional = %d N local %d N lut %d",                     
                     (fGlobalConfig ? 1 : 0 ),
                     (fRegionalConfig ? fRegionalConfig->GetNofTriggerCrates() : 0 ),
                     (fLocalMasks ? fLocalMasks->GetSize() : 0 ),
                     (fLUT ? 1 : 0)));
  
  AliCDBMetaData metaData;
	metaData.SetBeamPeriod(0);
	metaData.SetResponsible("MUON TRG");
	metaData.SetComment("Computed by AliMUONTriggerSubprocessor $Id$");
  
  Bool_t validToInfinity = kTRUE;

	Bool_t result1(kTRUE);
  Bool_t result2(kTRUE);
  Bool_t result3(kTRUE);
  Bool_t result4(kTRUE);
  
  if ( fGlobalConfig ) 
  {
    result1 = Master()->Store("Calib", "GlobalTriggerCrateConfig", fGlobalConfig, 
                              &metaData, 0, validToInfinity);
  }
  
  if ( fRegionalConfig && fRegionalConfig->GetNofTriggerCrates() > 0 )
  {
    result2 = Master()->Store("Calib", "RegionalTriggerConfig", fRegionalConfig, 
                              &metaData, 0, validToInfinity);
  }
  
  if ( fLocalMasks && fLocalMasks->GetSize() > 0 ) 
  {
    result3 = Master()->Store("Calib", "LocalTriggerBoardMasks", fLocalMasks, 
                              &metaData, 0, validToInfinity);
  }

  if ( fLUT )
  {
    result4 = Master()->Store("Calib", "TriggerLut", fLUT, 
                              &metaData, 0, validToInfinity);
  }
  
  return ( result1 != kTRUE || result2 != kTRUE || result3 != kTRUE || result4 != kTRUE ); // return 0 if everything is ok.  
}

//_____________________________________________________________________________
Int_t
AliMUONTriggerSubprocessor::TestFile(const char* baseName, Bool_t shouldBeThere) const
{
  /// Check if required file can be accessed 
  if (!shouldBeThere) return 0; // all is ok
  
  TString fileName(gSystem->ExpandPathName(GetFileName(baseName).Data()));
  
  if ( gSystem->AccessPathName(fileName.Data(),kFileExists) ) 
  {
    // mind the strange return value convention of that method !
    Master()->Log(Form("File %s does not exist",fileName.Data()));    
    return 1; // this is an error
  }
  return 0; // all is ok.
}

//_____________________________________________________________________________
void
AliMUONTriggerSubprocessor::WhichFilesToRead(const char* exportedFiles,
                                             Bool_t& globalFile,
                                             Bool_t& regionalFile,
                                             Bool_t& localFile,
                                             Bool_t& lutFile) const
{
  /// From the exportedFiles file, determine which other files will need
  /// to be read in
  ifstream in(gSystem->ExpandPathName(exportedFiles));
  
  globalFile = kFALSE;
  regionalFile = kFALSE;
  localFile = kFALSE;
  lutFile = kFALSE;
  
  char line[1024];
  
  while ( in.getline(line,1024,'\n') )
  {
    TString sline(line);
    sline.ToUpper();
    
    if ( sline.Contains("REGIONAL") ) regionalFile = kTRUE;
    if ( sline.Contains("LUT") ) lutFile = kTRUE;
    if ( sline.Contains("LOCAL") && sline.Contains("MASK") ) localFile = kTRUE;
    if ( sline.Contains("GLOBAL") ) globalFile = kTRUE;
  }
    
  if ( regionalFile || localFile || globalFile || lutFile ) 
  {
    Master()->Log(Form("Will have to read the following file types:"));
    if ( globalFile) Master()->Log("GLOBAL");
    if ( regionalFile ) Master()->Log("REGIONAL");
    if ( localFile) Master()->Log("LOCAL");
    if ( lutFile ) Master()->Log("LUT");
  }
}

 AliMUONTriggerSubprocessor.cxx:1
 AliMUONTriggerSubprocessor.cxx:2
 AliMUONTriggerSubprocessor.cxx:3
 AliMUONTriggerSubprocessor.cxx:4
 AliMUONTriggerSubprocessor.cxx:5
 AliMUONTriggerSubprocessor.cxx:6
 AliMUONTriggerSubprocessor.cxx:7
 AliMUONTriggerSubprocessor.cxx:8
 AliMUONTriggerSubprocessor.cxx:9
 AliMUONTriggerSubprocessor.cxx:10
 AliMUONTriggerSubprocessor.cxx:11
 AliMUONTriggerSubprocessor.cxx:12
 AliMUONTriggerSubprocessor.cxx:13
 AliMUONTriggerSubprocessor.cxx:14
 AliMUONTriggerSubprocessor.cxx:15
 AliMUONTriggerSubprocessor.cxx:16
 AliMUONTriggerSubprocessor.cxx:17
 AliMUONTriggerSubprocessor.cxx:18
 AliMUONTriggerSubprocessor.cxx:19
 AliMUONTriggerSubprocessor.cxx:20
 AliMUONTriggerSubprocessor.cxx:21
 AliMUONTriggerSubprocessor.cxx:22
 AliMUONTriggerSubprocessor.cxx:23
 AliMUONTriggerSubprocessor.cxx:24
 AliMUONTriggerSubprocessor.cxx:25
 AliMUONTriggerSubprocessor.cxx:26
 AliMUONTriggerSubprocessor.cxx:27
 AliMUONTriggerSubprocessor.cxx:28
 AliMUONTriggerSubprocessor.cxx:29
 AliMUONTriggerSubprocessor.cxx:30
 AliMUONTriggerSubprocessor.cxx:31
 AliMUONTriggerSubprocessor.cxx:32
 AliMUONTriggerSubprocessor.cxx:33
 AliMUONTriggerSubprocessor.cxx:34
 AliMUONTriggerSubprocessor.cxx:35
 AliMUONTriggerSubprocessor.cxx:36
 AliMUONTriggerSubprocessor.cxx:37
 AliMUONTriggerSubprocessor.cxx:38
 AliMUONTriggerSubprocessor.cxx:39
 AliMUONTriggerSubprocessor.cxx:40
 AliMUONTriggerSubprocessor.cxx:41
 AliMUONTriggerSubprocessor.cxx:42
 AliMUONTriggerSubprocessor.cxx:43
 AliMUONTriggerSubprocessor.cxx:44
 AliMUONTriggerSubprocessor.cxx:45
 AliMUONTriggerSubprocessor.cxx:46
 AliMUONTriggerSubprocessor.cxx:47
 AliMUONTriggerSubprocessor.cxx:48
 AliMUONTriggerSubprocessor.cxx:49
 AliMUONTriggerSubprocessor.cxx:50
 AliMUONTriggerSubprocessor.cxx:51
 AliMUONTriggerSubprocessor.cxx:52
 AliMUONTriggerSubprocessor.cxx:53
 AliMUONTriggerSubprocessor.cxx:54
 AliMUONTriggerSubprocessor.cxx:55
 AliMUONTriggerSubprocessor.cxx:56
 AliMUONTriggerSubprocessor.cxx:57
 AliMUONTriggerSubprocessor.cxx:58
 AliMUONTriggerSubprocessor.cxx:59
 AliMUONTriggerSubprocessor.cxx:60
 AliMUONTriggerSubprocessor.cxx:61
 AliMUONTriggerSubprocessor.cxx:62
 AliMUONTriggerSubprocessor.cxx:63
 AliMUONTriggerSubprocessor.cxx:64
 AliMUONTriggerSubprocessor.cxx:65
 AliMUONTriggerSubprocessor.cxx:66
 AliMUONTriggerSubprocessor.cxx:67
 AliMUONTriggerSubprocessor.cxx:68
 AliMUONTriggerSubprocessor.cxx:69
 AliMUONTriggerSubprocessor.cxx:70
 AliMUONTriggerSubprocessor.cxx:71
 AliMUONTriggerSubprocessor.cxx:72
 AliMUONTriggerSubprocessor.cxx:73
 AliMUONTriggerSubprocessor.cxx:74
 AliMUONTriggerSubprocessor.cxx:75
 AliMUONTriggerSubprocessor.cxx:76
 AliMUONTriggerSubprocessor.cxx:77
 AliMUONTriggerSubprocessor.cxx:78
 AliMUONTriggerSubprocessor.cxx:79
 AliMUONTriggerSubprocessor.cxx:80
 AliMUONTriggerSubprocessor.cxx:81
 AliMUONTriggerSubprocessor.cxx:82
 AliMUONTriggerSubprocessor.cxx:83
 AliMUONTriggerSubprocessor.cxx:84
 AliMUONTriggerSubprocessor.cxx:85
 AliMUONTriggerSubprocessor.cxx:86
 AliMUONTriggerSubprocessor.cxx:87
 AliMUONTriggerSubprocessor.cxx:88
 AliMUONTriggerSubprocessor.cxx:89
 AliMUONTriggerSubprocessor.cxx:90
 AliMUONTriggerSubprocessor.cxx:91
 AliMUONTriggerSubprocessor.cxx:92
 AliMUONTriggerSubprocessor.cxx:93
 AliMUONTriggerSubprocessor.cxx:94
 AliMUONTriggerSubprocessor.cxx:95
 AliMUONTriggerSubprocessor.cxx:96
 AliMUONTriggerSubprocessor.cxx:97
 AliMUONTriggerSubprocessor.cxx:98
 AliMUONTriggerSubprocessor.cxx:99
 AliMUONTriggerSubprocessor.cxx:100
 AliMUONTriggerSubprocessor.cxx:101
 AliMUONTriggerSubprocessor.cxx:102
 AliMUONTriggerSubprocessor.cxx:103
 AliMUONTriggerSubprocessor.cxx:104
 AliMUONTriggerSubprocessor.cxx:105
 AliMUONTriggerSubprocessor.cxx:106
 AliMUONTriggerSubprocessor.cxx:107
 AliMUONTriggerSubprocessor.cxx:108
 AliMUONTriggerSubprocessor.cxx:109
 AliMUONTriggerSubprocessor.cxx:110
 AliMUONTriggerSubprocessor.cxx:111
 AliMUONTriggerSubprocessor.cxx:112
 AliMUONTriggerSubprocessor.cxx:113
 AliMUONTriggerSubprocessor.cxx:114
 AliMUONTriggerSubprocessor.cxx:115
 AliMUONTriggerSubprocessor.cxx:116
 AliMUONTriggerSubprocessor.cxx:117
 AliMUONTriggerSubprocessor.cxx:118
 AliMUONTriggerSubprocessor.cxx:119
 AliMUONTriggerSubprocessor.cxx:120
 AliMUONTriggerSubprocessor.cxx:121
 AliMUONTriggerSubprocessor.cxx:122
 AliMUONTriggerSubprocessor.cxx:123
 AliMUONTriggerSubprocessor.cxx:124
 AliMUONTriggerSubprocessor.cxx:125
 AliMUONTriggerSubprocessor.cxx:126
 AliMUONTriggerSubprocessor.cxx:127
 AliMUONTriggerSubprocessor.cxx:128
 AliMUONTriggerSubprocessor.cxx:129
 AliMUONTriggerSubprocessor.cxx:130
 AliMUONTriggerSubprocessor.cxx:131
 AliMUONTriggerSubprocessor.cxx:132
 AliMUONTriggerSubprocessor.cxx:133
 AliMUONTriggerSubprocessor.cxx:134
 AliMUONTriggerSubprocessor.cxx:135
 AliMUONTriggerSubprocessor.cxx:136
 AliMUONTriggerSubprocessor.cxx:137
 AliMUONTriggerSubprocessor.cxx:138
 AliMUONTriggerSubprocessor.cxx:139
 AliMUONTriggerSubprocessor.cxx:140
 AliMUONTriggerSubprocessor.cxx:141
 AliMUONTriggerSubprocessor.cxx:142
 AliMUONTriggerSubprocessor.cxx:143
 AliMUONTriggerSubprocessor.cxx:144
 AliMUONTriggerSubprocessor.cxx:145
 AliMUONTriggerSubprocessor.cxx:146
 AliMUONTriggerSubprocessor.cxx:147
 AliMUONTriggerSubprocessor.cxx:148
 AliMUONTriggerSubprocessor.cxx:149
 AliMUONTriggerSubprocessor.cxx:150
 AliMUONTriggerSubprocessor.cxx:151
 AliMUONTriggerSubprocessor.cxx:152
 AliMUONTriggerSubprocessor.cxx:153
 AliMUONTriggerSubprocessor.cxx:154
 AliMUONTriggerSubprocessor.cxx:155
 AliMUONTriggerSubprocessor.cxx:156
 AliMUONTriggerSubprocessor.cxx:157
 AliMUONTriggerSubprocessor.cxx:158
 AliMUONTriggerSubprocessor.cxx:159
 AliMUONTriggerSubprocessor.cxx:160
 AliMUONTriggerSubprocessor.cxx:161
 AliMUONTriggerSubprocessor.cxx:162
 AliMUONTriggerSubprocessor.cxx:163
 AliMUONTriggerSubprocessor.cxx:164
 AliMUONTriggerSubprocessor.cxx:165
 AliMUONTriggerSubprocessor.cxx:166
 AliMUONTriggerSubprocessor.cxx:167
 AliMUONTriggerSubprocessor.cxx:168
 AliMUONTriggerSubprocessor.cxx:169
 AliMUONTriggerSubprocessor.cxx:170
 AliMUONTriggerSubprocessor.cxx:171
 AliMUONTriggerSubprocessor.cxx:172
 AliMUONTriggerSubprocessor.cxx:173
 AliMUONTriggerSubprocessor.cxx:174
 AliMUONTriggerSubprocessor.cxx:175
 AliMUONTriggerSubprocessor.cxx:176
 AliMUONTriggerSubprocessor.cxx:177
 AliMUONTriggerSubprocessor.cxx:178
 AliMUONTriggerSubprocessor.cxx:179
 AliMUONTriggerSubprocessor.cxx:180
 AliMUONTriggerSubprocessor.cxx:181
 AliMUONTriggerSubprocessor.cxx:182
 AliMUONTriggerSubprocessor.cxx:183
 AliMUONTriggerSubprocessor.cxx:184
 AliMUONTriggerSubprocessor.cxx:185
 AliMUONTriggerSubprocessor.cxx:186
 AliMUONTriggerSubprocessor.cxx:187
 AliMUONTriggerSubprocessor.cxx:188
 AliMUONTriggerSubprocessor.cxx:189
 AliMUONTriggerSubprocessor.cxx:190
 AliMUONTriggerSubprocessor.cxx:191
 AliMUONTriggerSubprocessor.cxx:192
 AliMUONTriggerSubprocessor.cxx:193
 AliMUONTriggerSubprocessor.cxx:194
 AliMUONTriggerSubprocessor.cxx:195
 AliMUONTriggerSubprocessor.cxx:196
 AliMUONTriggerSubprocessor.cxx:197
 AliMUONTriggerSubprocessor.cxx:198
 AliMUONTriggerSubprocessor.cxx:199
 AliMUONTriggerSubprocessor.cxx:200
 AliMUONTriggerSubprocessor.cxx:201
 AliMUONTriggerSubprocessor.cxx:202
 AliMUONTriggerSubprocessor.cxx:203
 AliMUONTriggerSubprocessor.cxx:204
 AliMUONTriggerSubprocessor.cxx:205
 AliMUONTriggerSubprocessor.cxx:206
 AliMUONTriggerSubprocessor.cxx:207
 AliMUONTriggerSubprocessor.cxx:208
 AliMUONTriggerSubprocessor.cxx:209
 AliMUONTriggerSubprocessor.cxx:210
 AliMUONTriggerSubprocessor.cxx:211
 AliMUONTriggerSubprocessor.cxx:212
 AliMUONTriggerSubprocessor.cxx:213
 AliMUONTriggerSubprocessor.cxx:214
 AliMUONTriggerSubprocessor.cxx:215
 AliMUONTriggerSubprocessor.cxx:216
 AliMUONTriggerSubprocessor.cxx:217
 AliMUONTriggerSubprocessor.cxx:218
 AliMUONTriggerSubprocessor.cxx:219
 AliMUONTriggerSubprocessor.cxx:220
 AliMUONTriggerSubprocessor.cxx:221
 AliMUONTriggerSubprocessor.cxx:222
 AliMUONTriggerSubprocessor.cxx:223
 AliMUONTriggerSubprocessor.cxx:224
 AliMUONTriggerSubprocessor.cxx:225
 AliMUONTriggerSubprocessor.cxx:226
 AliMUONTriggerSubprocessor.cxx:227
 AliMUONTriggerSubprocessor.cxx:228
 AliMUONTriggerSubprocessor.cxx:229
 AliMUONTriggerSubprocessor.cxx:230
 AliMUONTriggerSubprocessor.cxx:231
 AliMUONTriggerSubprocessor.cxx:232
 AliMUONTriggerSubprocessor.cxx:233
 AliMUONTriggerSubprocessor.cxx:234
 AliMUONTriggerSubprocessor.cxx:235
 AliMUONTriggerSubprocessor.cxx:236
 AliMUONTriggerSubprocessor.cxx:237
 AliMUONTriggerSubprocessor.cxx:238
 AliMUONTriggerSubprocessor.cxx:239
 AliMUONTriggerSubprocessor.cxx:240
 AliMUONTriggerSubprocessor.cxx:241
 AliMUONTriggerSubprocessor.cxx:242
 AliMUONTriggerSubprocessor.cxx:243
 AliMUONTriggerSubprocessor.cxx:244
 AliMUONTriggerSubprocessor.cxx:245
 AliMUONTriggerSubprocessor.cxx:246
 AliMUONTriggerSubprocessor.cxx:247
 AliMUONTriggerSubprocessor.cxx:248
 AliMUONTriggerSubprocessor.cxx:249
 AliMUONTriggerSubprocessor.cxx:250
 AliMUONTriggerSubprocessor.cxx:251
 AliMUONTriggerSubprocessor.cxx:252
 AliMUONTriggerSubprocessor.cxx:253
 AliMUONTriggerSubprocessor.cxx:254
 AliMUONTriggerSubprocessor.cxx:255
 AliMUONTriggerSubprocessor.cxx:256
 AliMUONTriggerSubprocessor.cxx:257
 AliMUONTriggerSubprocessor.cxx:258
 AliMUONTriggerSubprocessor.cxx:259
 AliMUONTriggerSubprocessor.cxx:260
 AliMUONTriggerSubprocessor.cxx:261
 AliMUONTriggerSubprocessor.cxx:262
 AliMUONTriggerSubprocessor.cxx:263
 AliMUONTriggerSubprocessor.cxx:264
 AliMUONTriggerSubprocessor.cxx:265
 AliMUONTriggerSubprocessor.cxx:266
 AliMUONTriggerSubprocessor.cxx:267
 AliMUONTriggerSubprocessor.cxx:268
 AliMUONTriggerSubprocessor.cxx:269
 AliMUONTriggerSubprocessor.cxx:270
 AliMUONTriggerSubprocessor.cxx:271
 AliMUONTriggerSubprocessor.cxx:272
 AliMUONTriggerSubprocessor.cxx:273
 AliMUONTriggerSubprocessor.cxx:274
 AliMUONTriggerSubprocessor.cxx:275
 AliMUONTriggerSubprocessor.cxx:276
 AliMUONTriggerSubprocessor.cxx:277
 AliMUONTriggerSubprocessor.cxx:278
 AliMUONTriggerSubprocessor.cxx:279
 AliMUONTriggerSubprocessor.cxx:280
 AliMUONTriggerSubprocessor.cxx:281
 AliMUONTriggerSubprocessor.cxx:282
 AliMUONTriggerSubprocessor.cxx:283
 AliMUONTriggerSubprocessor.cxx:284
 AliMUONTriggerSubprocessor.cxx:285
 AliMUONTriggerSubprocessor.cxx:286
 AliMUONTriggerSubprocessor.cxx:287
 AliMUONTriggerSubprocessor.cxx:288
 AliMUONTriggerSubprocessor.cxx:289
 AliMUONTriggerSubprocessor.cxx:290
 AliMUONTriggerSubprocessor.cxx:291
 AliMUONTriggerSubprocessor.cxx:292
 AliMUONTriggerSubprocessor.cxx:293
 AliMUONTriggerSubprocessor.cxx:294
 AliMUONTriggerSubprocessor.cxx:295
 AliMUONTriggerSubprocessor.cxx:296
 AliMUONTriggerSubprocessor.cxx:297
 AliMUONTriggerSubprocessor.cxx:298
 AliMUONTriggerSubprocessor.cxx:299
 AliMUONTriggerSubprocessor.cxx:300
 AliMUONTriggerSubprocessor.cxx:301
 AliMUONTriggerSubprocessor.cxx:302
 AliMUONTriggerSubprocessor.cxx:303
 AliMUONTriggerSubprocessor.cxx:304
 AliMUONTriggerSubprocessor.cxx:305
 AliMUONTriggerSubprocessor.cxx:306
 AliMUONTriggerSubprocessor.cxx:307
 AliMUONTriggerSubprocessor.cxx:308
 AliMUONTriggerSubprocessor.cxx:309
 AliMUONTriggerSubprocessor.cxx:310
 AliMUONTriggerSubprocessor.cxx:311
 AliMUONTriggerSubprocessor.cxx:312
 AliMUONTriggerSubprocessor.cxx:313
 AliMUONTriggerSubprocessor.cxx:314
 AliMUONTriggerSubprocessor.cxx:315