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 "AliMUONTriggerQAChecker.h"

/// \class AliMUONTriggerQAChecker
///
/// Implementation of QAChecker for MTR
///
/// For the moment we only implement the checking of raw data QA for the trigger
/// by looking at the local structure and trigger response errors.
///
/// \author Diego Stocco, Subatech


#include "AliRecoParam.h"
#include "AliMUONQAIndices.h"
#include "AliQAv1.h"
#include "TH1.h"
#include "TPaveText.h"
#include "TString.h"
#include "TObjArray.h"
#include "TList.h"

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

//__________________________________________________________________
AliMUONTriggerQAChecker::AliMUONTriggerQAChecker() : AliMUONVQAChecker()
{
	/// ctor
}          

//__________________________________________________________________
AliMUONTriggerQAChecker::~AliMUONTriggerQAChecker() 
{
	/// dtor
}

//______________________________________________________________________________
AliMUONVQAChecker::ECheckCode 
AliMUONTriggerQAChecker::MarkHisto(TH1& histo, AliMUONVQAChecker::ECheckCode value) const
{
  /// Mark histo as originator of some QA error/warning
  
  if ( value != AliMUONVQAChecker::kInfo )
  {
    histo.SetBit(AliQAv1::GetQABit());
  }
  
  return value;
}

//__________________________________________________________________
AliMUONVQAChecker::ECheckCode* 
AliMUONTriggerQAChecker::CheckRaws(TObjArray** list, const AliMUONRecoParam* )
{
  /// Check raw data

  AliMUONVQAChecker::ECheckCode * rv = new AliMUONVQAChecker::ECheckCode[AliRecoParam::kNSpecies];

  Int_t histoRawsPercentIndex[] = {
    AliMUONQAIndices::kTriggerErrorSummaryNorm, 
    AliMUONQAIndices::kTriggerCalibSummaryNorm,
    AliMUONQAIndices::kTriggerReadOutErrorsNorm
  };
  const Int_t kNrawsHistos = sizeof(histoRawsPercentIndex)/sizeof(histoRawsPercentIndex[0]);

  // BEGIN OF LIMITS
  // Fixme: Move me to reference histos
  Float_t safeFactor = 5.;
  Float_t warningPercentTrigAlgo[AliMUONQAIndices::kNtrigAlgoErrorBins] = {static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), 100., 100., 100., 100., static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.)};
  Float_t warningPercentCalib[AliMUONQAIndices::kNtrigCalibSummaryBins] = {static_cast<Float_t>(safeFactor*0.4), static_cast<Float_t>(safeFactor*1.), 3.1, 0.0001, static_cast<Float_t>(safeFactor*0.4)};
  Float_t warningPercentReadout[AliMUONQAIndices::kNtrigStructErrorBins] = {static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.)};

  Float_t* warningPercent[kNrawsHistos] = {warningPercentTrigAlgo, warningPercentCalib, warningPercentReadout};
  
  Float_t errorFactor = 30.;
  Float_t errorPercentTrigAlgo[AliMUONQAIndices::kNtrigAlgoErrorBins] = {static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), 100., 100., 100., 100., static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.)};
  Float_t errorPercentCalib[AliMUONQAIndices::kNtrigCalibSummaryBins] = {static_cast<Float_t>(errorFactor*0.4), static_cast<Float_t>(errorFactor*1.), 6.2, 3.*0.0001, static_cast<Float_t>(errorFactor*0.4)};
  Float_t errorPercentReadout[AliMUONQAIndices::kNtrigStructErrorBins] = {static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.)};
  // END OF LIMTS

  Float_t* errorPercent[kNrawsHistos] = {errorPercentTrigAlgo, errorPercentCalib, errorPercentReadout};
  
  TObjArray messages;
  messages.SetOwner(kTRUE);

  TH1* currHisto = 0x0;
  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
    rv[specie] = AliMUONVQAChecker::kInfo;

    TH1* hAnalyzedEvents = AliQAv1::GetData(list,AliMUONQAIndices::kTriggerRawNAnalyzedEvents,AliRecoParam::ConvertIndex(specie));

    //if ( nAnalyzedEvents == 0 ) rv[specie] = AliMUONVQAChecker::kFatal;

    for(Int_t ihisto = 0; ihisto<kNrawsHistos; ihisto++){
      Int_t nAnalyzedEvents = 0;
      Int_t ibinNevents = ( histoRawsPercentIndex[ihisto] == AliMUONQAIndices::kTriggerReadOutErrorsNorm ) ? 1 : 2;
      if ( hAnalyzedEvents ) nAnalyzedEvents = TMath::Nint(hAnalyzedEvents->GetBinContent(ibinNevents));
      AliMUONVQAChecker::ECheckCode currRv = AliMUONVQAChecker::kInfo;
      messages.Clear();
      currHisto = AliQAv1::GetData(list,histoRawsPercentIndex[ihisto],AliRecoParam::ConvertIndex(specie));
      if ( ! currHisto ) continue;

      Int_t nbins = currHisto->GetXaxis()->GetNbins();
      for (Int_t ibin = 1; ibin<=nbins; ibin++){
        Double_t binContent = currHisto->GetBinContent(ibin);
        if ( binContent > errorPercent[ihisto][ibin-1] )
          currRv = AliMUONVQAChecker::kError;
        else if ( binContent > warningPercent[ihisto][ibin-1] )
          currRv = AliMUONVQAChecker::kWarning;
        else if ( ibin == 4 && binContent > 50. && AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) {
          messages.Add(new TObjString("Do not panic:")); 
          messages.Add(new TObjString("copy errors do not affect data"));
        }
      } // loop on bins
      if ( currRv != AliMUONVQAChecker::kInfo ) {
	switch ( histoRawsPercentIndex[ihisto] ) {
	case AliMUONQAIndices::kTriggerErrorSummaryNorm:
	case AliMUONQAIndices::kTriggerCalibSummaryNorm:
	  messages.Add(new TObjString("Trigger algo errors"));
	  break;
	case AliMUONQAIndices::kTriggerReadOutErrorsNorm:
	  messages.Add(new TObjString("Readout errors"));
	  break;
	}
	if ( currRv == AliMUONVQAChecker::kWarning )
	  messages.Add(new TObjString("are a little bit high"));
	else if ( currRv == AliMUONVQAChecker::kError || 
		  currRv == AliMUONVQAChecker::kFatal )
	  messages.Add(new TObjString("are too high"));
      }
      else if ( nAnalyzedEvents != 0 ) {
	switch ( histoRawsPercentIndex[ihisto] ) {
	case AliMUONQAIndices::kTriggerErrorSummaryNorm:
	case AliMUONQAIndices::kTriggerCalibSummaryNorm:
	case AliMUONQAIndices::kTriggerReadOutErrorsNorm:
	  messages.Add(new TObjString("Values within limits"));
	  break;
	}
      }
      if ( MarkHisto(*currHisto, currRv) < rv[specie] )
	rv[specie] = currRv;
      currHisto->GetYaxis()->SetRangeUser(0., 110.);
      SetupHisto(nAnalyzedEvents, messages, *currHisto, currRv, specie);
    } // loop on histos
  } // loop on species

  return rv;
}

//__________________________________________________________________
AliMUONVQAChecker::ECheckCode* 
AliMUONTriggerQAChecker::CheckRecPoints(TObjArray** , const AliMUONRecoParam* )
{
  /// Check rec points
  return 0x0;
}

//__________________________________________________________________
AliMUONVQAChecker::ECheckCode* 
AliMUONTriggerQAChecker::CheckESD(TObjArray** , const AliMUONRecoParam* )
{
  /// Check esd
  return 0x0;
}


//___________________________________________________________________ 
void AliMUONTriggerQAChecker::SetupHisto(Int_t nevents, const TObjArray& messages, TH1& histo, AliMUONVQAChecker::ECheckCode code, Int_t esIndex)
{
  //
  /// Add text to histos
  //

  Double_t y1 = 0.87 - (messages.GetLast()+2)*0.075;
  TPaveText* text = new TPaveText(0.25,y1,0.75,0.89,"NDC");
  
  Int_t eventLimit = ( AliRecoParam::ConvertIndex(esIndex) == AliRecoParam::kCalib ) ? 5 : 20;

  text->AddText(Form("MTR - Specie: %s", AliRecoParam::GetEventSpecieName(esIndex)));
  text->AddText(Form("Total events %i", nevents));

  TString defaultText = "";  
  Int_t color = 0;
  
  if ( nevents == 0 ) {
    color = AliMUONVQAChecker::kFatalColor;
    defaultText = "No events analyzed!";
  }
  else if ( nevents <= eventLimit ) {
    color = AliMUONVQAChecker::kWarningColor;
    text->AddText("Not enough events to judge");
    defaultText = "Please wait for more statistics";
  }
  else {
    TIter next(&messages);
    TObjString* str;
    
    while ( ( str = static_cast<TObjString*>(next()) ) ){
      text->AddText(str->String());
    }
    
    switch ( code ) {
      case AliMUONVQAChecker::kInfo:
        color = AliMUONVQAChecker::kInfoColor;
        defaultText = "All is fine!";
        break;
      case AliMUONVQAChecker::kWarning:
        color = AliMUONVQAChecker::kWarningColor;
        defaultText = "Please keep an eye on it!";
        break;
      case AliMUONVQAChecker::kFatal:
        color = AliMUONVQAChecker::kFatalColor;
        defaultText = "PLEASE CALL MUON TRIGGER EXPERT!!!";
        break;
      default:
        color = AliMUONVQAChecker::kErrorColor;
        defaultText = "PLEASE CALL MUON TRIGGER EXPERT!";
        break;
    }
  }

  text->AddText(defaultText.Data());
  text->SetFillColor(color);
                      
  histo.SetFillStyle(1001);
  histo.SetFillColor(color);

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