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$ */

#if !defined(__CINT__) || defined(__MAKECINT__)

#include "Riostream.h"

// ROOT includes
#include "TGrid.h"
#include "TString.h"
#include "TFile.h"
#include "TH1.h"

// MUON includes
#include "AliMUONCDB.h"
#include "AliMUONCalibrationData.h"
#include "AliMUONTriggerEfficiencyCells.h"
#include "AliMUONTriggerChamberEfficiency.h"
#include "AliCDBManager.h"
#include "AliCDBRunRange.h"

#endif

/// \ingroup macros
/// \file MUONTriggerChamberEfficiency.C
/// \brief Macro to view and save the trigger chamber efficiency map 
/// calculated during reconstruction.
///
/// Efficiency map can be made available for next simulation.
///
/// \author Diego Stocco, Subatech, Nantes

void MUONTriggerChamberEfficiency(TString inputFile = "./MUON.TriggerEfficiencyMap.root",
				  TString outputCDB = "",
				  Int_t firstRun=0, Int_t lastRun = AliCDBRunRange::Infinity()
)
{
/// \param inputFile (default "./MUON.TriggerEfficiencyMaps.root")
///     File with the numerator and denominator histos for efficiency calculation
///     (It is the output of the PWG3/muon/AliAnalysisTaskTrigChEff analysis
/// \param outputCDB (default "")
///     add the map on the specified CDB
/// \param firstRun (default 0)
///     first run of validity for CDB object
/// \param lastRun (default AliCDBRunRange::Infinity())
///     last run of validity for CDB Object

  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");

  AliMUONTriggerEfficiencyCells* effMap = new AliMUONTriggerEfficiencyCells(inputFile.Data());

  if ( outputCDB.IsNull() ){
    // Draw the efficiency and exit
    AliCDBManager::Instance()->SetRun(firstRun);
    AliMUONTriggerChamberEfficiency* trigChEff = new AliMUONTriggerChamberEfficiency(effMap);
 
    trigChEff->DisplayEfficiency(kFALSE,kFALSE);
    return;
  }


  // Write efficiency on OCDB

  AliCDBManager::Instance()->SetSpecificStorage("MUON/Calib/TriggerEfficiency", outputCDB.Data());
  
  AliMUONCDB::WriteToCDB(effMap, "MUON/Calib/TriggerEfficiency", firstRun, lastRun, "Measured efficiencies");
}

//____________________________________________________________
void ShowOCDBmap(Int_t runNumber = 0, TString specificCDB="", TString ocdbPath = "local://$ALICE_ROOT/OCDB", TString runType="Full")
{
/// \param runNumber (default 0)
///     run number
/// \param specificCDB (default "")
///     specific CDB for trigger efficiency
/// \param ocdbPath(default "local://$ALICE_ROOT/OCDB")
///     path to OCDB
  if ( ocdbPath.BeginsWith("alien://") || ocdbPath.BeginsWith("raw://"))
    TGrid::Connect("alien://");

  if (!ocdbPath.CompareTo("MC"))
    AliCDBManager::Instance()->SetDefaultStorage(ocdbPath.Data(),runType.Data());
  else
    AliCDBManager::Instance()->SetDefaultStorage(ocdbPath.Data());
  
  if ( !specificCDB.IsNull() )
    AliCDBManager::Instance()->SetSpecificStorage("MUON/Calib/TriggerEfficiency", specificCDB.Data());
  AliCDBManager::Instance()->SetRun(runNumber);
  AliMUONCalibrationData calib(runNumber);

  AliMUONTriggerChamberEfficiency* trigChEff = new AliMUONTriggerChamberEfficiency(calib.TriggerEfficiency());
  trigChEff->DisplayEfficiency(kFALSE,kFALSE);
}


//____________________________________________________________
void FillHisto(TH1* histo, Int_t nevents)
{
  /// Fill histogram with global value
  for ( Int_t ibin=1; ibin<=histo->GetXaxis()->GetNbins(); ++ibin ) {
    Double_t binCenter = histo->GetXaxis()->GetBinCenter(ibin);
    for ( Int_t ievent=0; ievent<nevents; ++ievent ) {
      histo->Fill(binCenter);
    }
  }
}

//____________________________________________________________
void BuildDefaultMap(TString outFilename="/tmp/defTrigChEff.root", Double_t globalValue = 1., Int_t nevents = 100000)
{
  /// Build default map (all boards with the same chosen value)
  
  // Create histograms
  enum { kBendingEff, kNonBendingEff, kBothPlanesEff, kAllTracks, kNcounts};
  TString countTypeName[kNcounts] = {"bendPlane", "nonBendPlane","bothPlanes", "allTracks"};

  const Char_t* yAxisTitle = "counts";

  const Int_t kNboards = 234; //AliMpConstants::NofLocalBoards();
  const Int_t kFirstTrigCh = 11;//AliMpConstants::NofTrackingChambers()+1;
  const Int_t kNchambers = 4;
  const Int_t kNslats = 18;

  Int_t chamberBins = kNchambers;
  Float_t chamberLow = kFirstTrigCh-0.5, chamberHigh = kFirstTrigCh+kNchambers-0.5;
  const Char_t* chamberName = "chamber";

  Int_t slatBins = kNslats;
  Float_t slatLow = 0-0.5, slatHigh = kNslats-0.5;
  const Char_t* slatName = "slat";

  Int_t boardBins = kNboards;
  Float_t boardLow = 1-0.5, boardHigh = kNboards+1.-0.5;
  const Char_t* boardName = "board";

  TString baseName, histoName, histoTitle;
  TList* histoList = new TList();
  histoList->SetOwner();
  
  TH1F* histo;

  for(Int_t icount=0; icount<kNcounts; icount++){
    histoName = Form("%sCountChamber", countTypeName[icount].Data());
    histo = new TH1F(histoName, histoName,
                     chamberBins, chamberLow, chamberHigh);
    histo->GetXaxis()->SetTitle(chamberName);
    histo->GetYaxis()->SetTitle(yAxisTitle);
    Double_t nfills = ( icount == kAllTracks ) ? nevents : globalValue * (Double_t)nevents;
    FillHisto(histo, (Int_t)nfills);
    histoList->AddLast(histo);
  } // loop on counts

  for(Int_t icount=0; icount<kNcounts; icount++){
    for(Int_t ch=0; ch<kNchambers; ch++){
      histoName = Form("%sCountSlatCh%i", countTypeName[icount].Data(), kFirstTrigCh+ch);
      histo = new TH1F(histoName, histoName,
                       slatBins, slatLow, slatHigh);
      histo->GetXaxis()->SetTitle(slatName);
      histo->GetYaxis()->SetTitle(yAxisTitle);
      Double_t nfills = ( icount == kAllTracks ) ? nevents : globalValue * (Double_t)nevents;
      FillHisto(histo, (Int_t)nfills);
      histoList->AddLast(histo);
    } // loop on chamber
  } // loop on counts

  for(Int_t icount=0; icount<kNcounts; icount++){
    for(Int_t ch=0; ch<kNchambers; ch++){
      histoName = Form("%sCountBoardCh%i", countTypeName[icount].Data(), kFirstTrigCh+ch);
      histo = new TH1F(histoName, histoName,
                       boardBins, boardLow, boardHigh);
      histo->GetXaxis()->SetTitle(boardName);
      histo->GetYaxis()->SetTitle(yAxisTitle);
      Double_t nfills = ( icount == kAllTracks ) ? nevents : globalValue * (Double_t)nevents;
      FillHisto(histo, (Int_t)nfills);
      histoList->AddLast(histo);
    } // loop on chamber
  } // loop on counts

  TFile* outFile = TFile::Open(outFilename,"create");
  histoList->Write("triggerChamberEff",TObject::kSingleKey);
  outFile->Close();
}


//____________________________________________________________
void CompleteEfficiency(TString effFileWithHoles, TString effFileCompatible, TString outFilename)
{
  //
  /// When a local board or RPC is missing, the efficiency of other boards cannot be calculated
  /// If an efficiency file of the same period is available, it could be used to fill the missing information
  //
  
  TList* histoList[2] = {0x0, 0x0};
  TString filenames[2] = {effFileWithHoles, effFileCompatible};
  for ( Int_t ifile=0; ifile<2; ifile++ ) {
    TFile* file = TFile::Open(filenames[ifile].Data());
    if ( ! file ) {
      printf("Fatal: cannot find %s\n", filenames[ifile].Data());
      return;
    }
    histoList[ifile] = static_cast<TList*> (file->FindObjectAny("triggerChamberEff"));
    if ( ! histoList[ifile] ) {
      printf("Cannot find histo list in file %s\n", filenames[ifile].Data());
      return;
    }
  }
  
  TString detElemName[2] = {"Slat", "Board"};
  enum { kBendingEff, kNonBendingEff, kBothPlanesEff, kAllTracks, kNcounts};
  TString countTypeName[kNcounts] = {"bendPlane", "nonBendPlane","bothPlanes", "allTracks"};
  
  Bool_t isChanged = kFALSE;
  TString histoName = "";
  for ( Int_t idet=0; idet<2; idet++ ) {
    for ( Int_t ich=11; ich<=14; ich++ ) {
      histoName = Form("%sCount%sCh%i", countTypeName[kAllTracks].Data(), detElemName[idet].Data(), ich);
      TH1* allTracksHisto = static_cast<TH1*> (histoList[0]->FindObject(histoName.Data()));
      for ( Int_t ibin=1; ibin<=allTracksHisto->GetXaxis()->GetNbins(); ibin++ ) {
        if ( allTracksHisto->GetBinContent(ibin) > 0. ) continue;
        isChanged = kTRUE;
        printf("Modifying info for Ch %i %s %3i\n", ich, detElemName[idet].Data(), (Int_t)allTracksHisto->GetXaxis()->GetBinCenter(ibin));
        // If allTracks has no entries, it means that efficiency could not be calculated for this bin:
        // fill information from the compatible histogram
        
        // Check the statistics collected by the switched off detection element
        Double_t nTracks = 0;
        for ( Int_t jch=11; jch<=14; jch++ ) {
          histoName = Form("%sCount%sCh%i", countTypeName[kAllTracks].Data(), detElemName[idet].Data(), jch);
          TH1* allTracksOtherCh = static_cast<TH1*> (histoList[0]->FindObject(histoName.Data()));
          nTracks = allTracksOtherCh->GetBinContent(ibin);
          if ( nTracks > 0. ) {
            //printf("Statistics for %s : %g\n", histoName.Data(), nTracks); // REMEMBER TO CUT
            break;
          }
        }
        
        histoName = Form("%sCount%sCh%i", countTypeName[kAllTracks].Data(), detElemName[idet].Data(), ich);
        TH1* allTracksHistoAux = static_cast<TH1*> (histoList[1]->FindObject(histoName.Data()));
        Double_t nTracksNew = allTracksHistoAux->GetBinContent(ibin);
        if ( nTracksNew == 0.) {
          printf("Warning: new histogram has no entries for Ch %i %s %3i\n", ich, detElemName[idet].Data(), (Int_t)allTracksHisto->GetXaxis()->GetBinCenter(ibin));
          continue;
        }
        Double_t scaleFactor = TMath::Min(nTracksNew, nTracks) / nTracksNew;
        //printf("Statistics ineff %g  new %g  scaleFactor %g\n", nTracks, nTracksNew, scaleFactor); // REMEMBER TO CUT
        
        for ( Int_t icount=0; icount<kNcounts; icount++ ) {
          histoName = Form("%sCount%sCh%i", countTypeName[icount].Data(), detElemName[idet].Data(), ich);
          TH1* auxHisto = static_cast<TH1*> (histoList[1]->FindObject(histoName.Data()));
          TH1* histo = static_cast<TH1*> (histoList[0]->FindObject(histoName.Data()));
          histo->SetBinContent(ibin, auxHisto->GetBinContent(ibin) * scaleFactor);
          if ( histo->GetSumw2N() > 0 ) histo->SetBinError(ibin, auxHisto->GetBinError(ibin)*scaleFactor);
        } // loop on cont types
      } // loop on histogram bins
    } // loop on chamber
  } // loop on detection element (slat or board)
  
  if ( ! isChanged ) {
    printf("Input histograms not modified\n");
    return;
  }
  TFile* outFile = TFile::Open(outFilename,"create");
  histoList[0]->Write("triggerChamberEff",TObject::kSingleKey);
  outFile->Close();  
}


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