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$

//-----------------------------------------------------------------------------
/// \class AliMUONCheck
///
/// This class check the ESD tree, providing the matching with the trigger
/// response and designing useful plots (Pt, Y, ITS vertex, multiplicity).
///  Note that there is a special flag to turn on for pdc06 production. 
/// It also checks the TR tree giving hit densities on the two first and 
/// last planes of the spectrometer as well as the time of flight on these planes.
/// MUONkine() provides event stack and check if the event are generated with 
/// at least one muon and two muons (for PDC06).
/// DumpDigit() as a replacement of the function from MUONCheck.C macro.
///
/// \author Frederic Yermia, INFN Torino
//-----------------------------------------------------------------------------

#include "AliMUONCheck.h"
#include "AliMUONConstants.h"
#include "AliMUONMCDataInterface.h"
#include "AliMUONDataInterface.h"
#include "AliMpCDB.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
#include "AliMpDEManager.h"
#include "AliMpCDB.h"
#include "AliMUONVDigitStore.h"

#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliStack.h"
#include "AliTrackReference.h"
#include "AliTracker.h"
#include "AliESDEvent.h"
#include "AliESDMuonTrack.h"
#include "AliESDVertex.h"
#include "AliMagF.h"
#include "AliLog.h"

#include <TSystem.h>
#include <TCanvas.h>
#include <TLorentzVector.h>
#include <TFile.h>
#include <TH1.h>
#include <TParticle.h>

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

//_____________________________________________________________________________
const TString& AliMUONCheck::GetDefaultOutFileName()
{
  /// Default output file name 
  static const TString kDefaultOutFileName = "output.txt";
  return kDefaultOutFileName;
}  

//_____________________________________________________________________________
AliMUONCheck::AliMUONCheck(const char* galiceFile, const char* esdFile,Int_t firstEvent, Int_t lastEvent,const char* outDir) 
: TObject(),
fFileName(galiceFile),
fFileNameSim(),
fesdFileName(esdFile),
fkOutDir(outDir),
fOutFileName(GetDefaultOutFileName()),
fFirstEvent(firstEvent),
fLastEvent(lastEvent)
{
  /// ctor  
}

//_____________________________________________________________________________
AliMUONCheck::AliMUONCheck(const char* galiceFile, const char* galiceFileSim,
                           const char* esdFile,Int_t firstEvent, Int_t lastEvent,
                           const char* outDir) 
: TObject(),
fFileName(galiceFile),
fFileNameSim(galiceFileSim),
fesdFileName(esdFile),
fkOutDir(outDir),
fOutFileName(GetDefaultOutFileName()),
fFirstEvent(firstEvent),
fLastEvent(lastEvent)
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONCheck::~AliMUONCheck()
{
  /// Destructor
}

//_____________________________________________________________________________
void
AliMUONCheck::CheckESD(Bool_t pdc06TriggerResponse) 
{
  /// Check ESD files
  
  // Histograms
  TH1F * fhMUONVertex ; //! 
  TH1F * fhMUONMult   ; //!
  
  // create histograms 
  fhMUONVertex = new TH1F("hMUONVertex","ITS Vertex"                ,100, -25., 25.);
  fhMUONMult   = new TH1F("hMUONMult"  ,"Multiplicity of ESD tracks",10,  -0.5, 9.5);
  
  TH1F *hY = new TH1F("hY","Rapidity",100,-5.,-1.);
  TH1F *hPt = new TH1F("hPt","Pt",100, 0.,20.);
  
  // ------------->open the ESD file
  TFile* esdFile = TFile::Open(fesdFileName.Data());
  
  if (!esdFile || !esdFile->IsOpen()) 
  {
    AliError(Form("Error opening %s file \n",fesdFileName.Data()));
    return;
  }
  
  Int_t fSPLowpt=0     ; //!
  Int_t fSPHighpt=0    ; //!
  Int_t fSPAllpt=0     ; //!
  Int_t fSMLowpt=0     ; //!
  Int_t fSMHighpt =0   ; //!
  Int_t fSMAllpt=0     ; //!
  Int_t fSULowpt=0     ; //!
  Int_t fSUHighpt=0    ; //!
  Int_t fSUAllpt=0     ; //!
  Int_t fUSLowpt=0     ; //!
  Int_t fUSHighpt=0    ; //!
  Int_t fUSAllpt=0     ; //! 
  Int_t fLSLowpt=0     ; //!
  Int_t fLSHighpt=0    ; //! 
  Int_t fLSAllpt=0     ; //!
  
  Int_t fSLowpt=0      ; //!
  Int_t fSHighpt=0     ; //!
  
  Int_t fnTrackTrig=0  ; //!
  Int_t ftracktot=0    ; //!
  Int_t effMatch=0     ; //!
  
  TLorentzVector fV1;
  Float_t muonMass = 0.105658389;
  Double_t thetaX, thetaY, pYZ;
  Double_t fPxRec1, fPyRec1, fPzRec1, fE1;
  
  AliESDEvent* fESD = new AliESDEvent();
  TTree* tree = (TTree*) esdFile->Get("esdTree");
  if (!tree) 
  {
    Error("CheckESD", "no ESD tree found");
    AliError(Form("no ESD tree found"));
    return ;
  }
  fESD->ReadFromTree(tree);
  
  Int_t fnevents = tree->GetEntries();
  Int_t endOfLoop = fLastEvent+1;
  
  if ( fLastEvent == -1 ) endOfLoop = fnevents;
  Int_t ievent=0;
  Int_t nev=0;
  
  for (ievent = fFirstEvent; ievent < endOfLoop; ++ievent ) 
  {
    nev++;    
    if (tree->GetEvent(ievent) <= 0) 
    {
      Error("CheckESD", "no ESD object found for event %d", ievent);
      return ;
    }
    AliESDVertex* vertex = (AliESDVertex*) fESD->GetVertex();
    
    Double_t zVertex = 0. ;
    if (vertex) zVertex = vertex->GetZ();
    
    Int_t nTracks = (Int_t)fESD->GetNumberOfMuonTracks() ;
    ULong64_t trigword=fESD->GetTriggerMask();
    
    if(pdc06TriggerResponse)
    {
      if (trigword & 0x01) {
        fSPLowpt++;
      }
      
      if (trigword & 0x02){
        fSPHighpt++;
      }
      if (trigword & 0x04){
        fSPAllpt++;
      } 
      if (trigword & 0x08){
        fSMLowpt++;
      }  
      if (trigword & 0x010){
        fSMHighpt++;
      }
      if (trigword & 0x020){
        fSMAllpt++;
      } 
      if (trigword & 0x040){
        fSULowpt++;
      }  
      if (trigword & 0x080){
        fSUHighpt++;
      }   
      if (trigword & 0x100){
        fSUAllpt++;
      }  
      if (trigword & 0x200){
        fUSLowpt++;
      }
      
      if (trigword & 0x400){
        fUSHighpt++;
      }
      if (trigword & 0x800){
        fUSAllpt++;
      }
      if (trigword & 0x1000){
        fLSLowpt++;
      }
      
      if (trigword & 0x2000){
        fLSHighpt++;
      }
      
      if (trigword & 0x4000){
        fLSAllpt++;
      }
    }// if pdc06TriggerResponse
    else {
      if (trigword & 0x01) {
        fSLowpt++;
      }
      
      if (trigword & 0x02){
        fSHighpt++;
      }
      if (trigword & 0x04){
        fLSLowpt++;
      } 
      if (trigword & 0x08){
        fLSHighpt++;
      }  
      if (trigword & 0x010){
        fUSLowpt++;
      }
      if (trigword & 0x020){
        fUSHighpt++;
      }
    }
    
    Int_t tracktrig=0;
    
    for ( Int_t iTrack1 = 0; iTrack1<nTracks; ++iTrack1 ) 
    { //1st loop
      AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iTrack1);
      
      // skip fake tracks (ghosts)
      if (!muonTrack->ContainTrackerData()) continue;
      
      ftracktot++;
      
      thetaX = muonTrack->GetThetaX();
      thetaY = muonTrack->GetThetaY();
      pYZ     =  1./TMath::Abs(muonTrack->GetInverseBendingMomentum());
      
      fPzRec1  = - pYZ / TMath::Sqrt(1.0 + TMath::Tan(thetaY)*TMath::Tan(thetaY));
      fPxRec1  = fPzRec1 * TMath::Tan(thetaX);
      fPyRec1  = fPzRec1 * TMath::Tan(thetaY);
      fE1 = TMath::Sqrt(muonMass * muonMass + fPxRec1 * fPxRec1 + fPyRec1 * fPyRec1 + fPzRec1 * fPzRec1);
      fV1.SetPxPyPzE(fPxRec1, fPyRec1, fPzRec1, fE1);
      // -----------> transverse momentum
      Float_t pt1 = fV1.Pt();
      // ----------->Rapidity
      Float_t y1 = fV1.Rapidity();
      
      if(muonTrack->GetMatchTrigger()) 
      {
        fnTrackTrig++;
        tracktrig++;
      }
      hY->Fill(y1);
      hPt->Fill(pt1);
    } // loop on track
    
    fhMUONVertex->Fill(zVertex) ;
    fhMUONMult->Fill(Float_t(nTracks)) ;
    
  } // loop over events
  
  AliInfo(Form("Terminate %s:", GetName())) ;
  
  effMatch=100*fnTrackTrig/ftracktot;
  
  if(pdc06TriggerResponse)
  {
    printf("=================================================================\n") ;
    printf("================  %s ESD SUMMARY    ==============\n", GetName()) ;
    printf("                                                   \n") ;
    printf("         Total number of processed events  %d      \n", nev) ;
    printf("\n")  ;
    printf("\n")  ;
    printf("Table 1:                                         \n") ;
    printf(" Global Trigger output       Low pt  High pt   All\n") ;
    printf(" number of Single Plus      :\t");
    printf("%i\t%i\t%i\t", fSPLowpt, fSPHighpt, fSPAllpt) ;
    printf("\n");
    printf(" number of Single Minus     :\t");
    printf("%i\t%i\t%i\t", fSMLowpt, fSMHighpt, fSMAllpt) ;
    printf("\n");
    printf(" number of Single Undefined :\t"); 
    printf("%i\t%i\t%i\t", fSULowpt, fSUHighpt, fSUAllpt) ;
    printf("\n");
    printf(" number of UnlikeSign pair  :\t"); 
    printf("%i\t%i\t%i\t", fUSLowpt, fUSHighpt, fUSAllpt) ;
    printf("\n");
    printf(" number of LikeSign pair    :\t");  
    printf("%i\t%i\t%i\t", fLSLowpt, fLSHighpt, fLSAllpt) ;
    printf("\n");
    printf("===================================================\n") ;
    printf("\n") ;
    printf("matching efficiency with the trigger for single tracks = %2d %% \n", effMatch);
    printf("================================================================\n") ;  printf("\n") ;
    
  }//if(pdc06TriggerResponse)
  
  gSystem->cd(fkOutDir);
  
  FILE *outtxt=fopen(fOutFileName.Data(),"a");
  
  if(pdc06TriggerResponse){
    fprintf(outtxt,"                                                   \n");
    fprintf(outtxt,"===================================================\n");
    fprintf(outtxt,"================      ESD SUMMARY    ==============\n");
    fprintf(outtxt,"                                                   \n");
    fprintf(outtxt,"    Total number of processed events  %d      \n", nev); 
    fprintf(outtxt,"\n");
    fprintf(outtxt,"\n");
    fprintf(outtxt,"Table 1:                                         \n");
    fprintf(outtxt," Global Trigger output       Low pt  High pt   All\n");
    fprintf(outtxt," number of Single Plus      :\t");
    fprintf(outtxt,"%i\t%i\t%i\t",fSPLowpt,fSPHighpt,fSPAllpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of Single Minus     :\t");
    fprintf(outtxt,"%i\t%i\t%i\t",fSMLowpt,fSMHighpt,fSMAllpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of Single Undefined :\t"); 
    fprintf(outtxt,"%i\t%i\t%i\t",fSULowpt,fSUHighpt,fSUAllpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of UnlikeSign pair  :\t"); 
    fprintf(outtxt,"%i\t%i\t%i\t",fUSLowpt,fUSHighpt,fUSAllpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of LikeSign pair    :\t");  
    fprintf(outtxt,"%i\t%i\t%i\t",fLSLowpt,fLSHighpt, fLSAllpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt,"===================================================\n");
    fprintf(outtxt,"\n");
    fprintf(outtxt,"matching efficiency with the trigger for single tracks = %2d %% \n", effMatch);
  }//if(pdc06TriggerResponse)
  
  else {
    
    fprintf(outtxt,"                                                   \n");
    fprintf(outtxt,"===================================================\n");
    fprintf(outtxt,"================      ESD SUMMARY    ==============\n");
    fprintf(outtxt,"                                                   \n");
    fprintf(outtxt,"    Total number of processed events  %d      \n", nev); 
    fprintf(outtxt,"\n");
    fprintf(outtxt,"\n");
    fprintf(outtxt,"Table 1:                                         \n");
    fprintf(outtxt," Global Trigger output       Low pt  High pt     \n");
    fprintf(outtxt," number of Single       :\t");
    fprintf(outtxt,"%i\t%i\t",fSLowpt,fSHighpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of UnlikeSign pair :\t"); 
    fprintf(outtxt,"%i\t%i\t",fUSLowpt,fUSHighpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt," number of LikeSign pair    :\t");  
    fprintf(outtxt,"%i\t%i\t",fLSLowpt,fLSHighpt);
    fprintf(outtxt,"\n");
    fprintf(outtxt,"===================================================\n");
    fprintf(outtxt,"\n");
    fprintf(outtxt,"matching efficiency with the trigger for single tracks = %2d %% \n", effMatch);
  }//else
  fclose(outtxt);
  
  TCanvas * c1 = new TCanvas("c1", "ESD", 400, 10, 600, 700) ;
  c1->Divide(1,2) ;
  c1->cd(1) ;
  fhMUONVertex->Draw() ;
  c1->cd(2) ;
  fhMUONMult->Draw() ;  
  c1->Print("VertexAndMul.eps") ; 
  TCanvas *c2 = new TCanvas("c2","ESD",400,10,600,700);
  c2->Divide(1,2);
  c2->cd(1);
  hY->Draw();
  c2->cd(2);
  hPt->Draw();
  c2->Print("YandPt.eps") ; 
}

//_____________________________________________________________________________
void
AliMUONCheck::CheckKine() 
{
  /// Check Stack 
  
  AliMUONMCDataInterface diSim(fFileNameSim.Data());
  if (!diSim.IsValid()) return;
  
  Int_t fnevents = diSim.NumberOfEvents();
  
  Int_t endOfLoop = fLastEvent+1;
  
  if ( fLastEvent == -1 ) endOfLoop = fnevents;
  
  Int_t nev=0;
  Int_t nmu=0;
  Int_t nonemu=0;
  Int_t ndimu=0;
  
  for ( Int_t ievent = fFirstEvent; ievent < endOfLoop; ++ievent ) 
  {
    Int_t nmu2=0;
    ++nev;  
    
    AliStack* stack = diSim.Stack(ievent);
    Int_t npa = stack->GetNprimary();
    Int_t npb = stack->GetNtrack(); 
    printf("Primary particles  %i   \n",npa); 
    printf("Sec particles  %i   \n",npb); 
    printf("=================================================================\n") ;
    printf("Primary particles listing:  \n"); 
    printf("=================================================================\n") ;
    for (Int_t i=0; i<npa; ++i) 
    {
      TParticle *p  = stack->Particle(i);
      p->Print("");
      Int_t pdg=p->GetPdgCode(); 
      
      if (TMath::Abs(pdg) == 13)
      {
        ++nmu2;
      }
    }
    printf("=================================================================\n") ;
    printf("=================================================================\n") ;
    
    printf("Secondaries particles listing:  \n"); 
    printf("=================================================================\n") ;
    for (Int_t i=npa; i<npb; ++i) 
    {
      stack->Particle(i)->Print("");
    }
    
    printf("=================================================================\n") ; 
    printf(">>> Event %d, Number of primary particles is %d \n",ievent, npa); 
    printf(">>> Event %d, Number of secondary articles is %d \n",ievent, npb-npa); 
    printf("=================================================================\n");
    if(nmu2>0)
    {
      printf(">>> Okay!!! Event %d with at least one muon on primary stack! \n",ievent); 
      ++nonemu;
    }
    
    if(nmu2==0)
    {
      printf(">>> Warning!!! Event %d without muon on primary stack! \n",ievent);     
      ++nmu;
    }
    
    if(nmu2>1)
    {
      printf(">>> Okay!!! Event %d with at least two muons on primary stack! \n",ievent); 
      ++ndimu; 
    }
    printf("=================================================================\n");  
    printf("                                                                  \n");
    printf("                                                                  \n") ;
  }//ievent
  
  printf("=================================================================\n") ;
  printf("               Total number of processed events  %d               \n", nev) ;
  printf("                                                                 \n") ;
  
  if(nmu>0)
  {
    printf("--->                       WARNING!!!                       <---\n"); 
    printf(" %i events without muon on primary stack \n",nmu); 
  }
  
  if(nmu==0)
  {
    printf("--->                          OKAY!!!                        <---\n"); 
    printf("  %i events generated with at least one muon on primary stack \n",nonemu);
  }
  
  if(ndimu>0)
  {
    printf("--->                          OKAY!!!                        <---\n"); 
    printf("  %i events generated with at least two muons on primary stack \n",ndimu); 
  }
  
  printf("                                                                 \n") ;
  printf("***                       Leaving MuonKine()                 *** \n");
  printf("**************************************************************** \n");
  
  gSystem->cd(fkOutDir);
  FILE *outtxt=fopen(fOutFileName.Data(),"a");
  fprintf(outtxt,"                                                   \n");
  fprintf(outtxt,"=================================================================\n");
  fprintf(outtxt,"================         MUONkine SUMMARY        ================\n");
  fprintf(outtxt,"\n");
  fprintf(outtxt,"=================================================================\n");
  fprintf(outtxt,"               Total number of processed events  %d              \n", nev) ;
  fprintf(outtxt,"                                                                 \n");
  
  if(nmu>0)
  {
    fprintf(outtxt,"                        ---> WARNING!!! <---                     \n"); 
    fprintf(outtxt,"  %i events without muon on primary stack \n",nmu); 
  }
  
  if(nmu==0)
  {
    fprintf(outtxt,"                         ---> OKAY!!! <---                       \n"); 
    fprintf(outtxt,"  %i events generated with at least one muon on primary stack \n",nonemu); 
  }
  
  if(ndimu>0)
  {
    fprintf(outtxt,"                         ---> OKAY!!! <---                       \n"); 
    fprintf(outtxt,"  %i events generated with at least two muons on primary stack \n",ndimu); 
  }
  
  fprintf(outtxt,"                                                                 \n") ;
  fprintf(outtxt,"***                       Leaving MuonKine()                 *** \n");
  fprintf(outtxt,"**************************************************************** \n");
  fclose(outtxt);
}

//_____________________________________________________________________________
void
AliMUONCheck::CheckTrackRef() 
{
  /// Check TrackRef files
  
  AliMUONMCDataInterface diSim(fFileNameSim.Data());
  if ( !diSim.IsValid() ) return;
  
  Int_t flag11=0,flag12=0,flag13=0,flag14=0;
  
  TH1F *tof01= new TH1F("tof01","TOF for first tracking plane",100,0.,100);
  tof01->SetXTitle("tof (ns)");
  TH1F *tof14= new TH1F("tof14","TOF for MT22",100,0.,100);
  tof14->SetXTitle("tof (ns)");
  
  TH1F   *hitDensity[4];
  hitDensity[0] =  new TH1F("TR_dhits01","",30,0,300);
  hitDensity[0]->SetFillColor(3);
  hitDensity[0]->SetXTitle("R (cm)");
  hitDensity[1] =  new TH1F("TR_dhits10","",30,0,300);
  hitDensity[1]->SetFillColor(3);
  hitDensity[1]->SetXTitle("R (cm)");
  hitDensity[2] =  new TH1F("TR_dhits11","",30,0,300);
  hitDensity[2]->SetFillColor(3);
  hitDensity[2]->SetXTitle("R (cm)");
  hitDensity[3] =  new TH1F("TR_dhits14","",30,0,300);
  hitDensity[3]->SetFillColor(3);
  hitDensity[3]->SetXTitle("R (cm)");
  
  Int_t fnevents = diSim.NumberOfEvents();
  
  Int_t endOfLoop = fLastEvent+1;
  
  if ( fLastEvent == -1 ) endOfLoop = fnevents;
  
  Int_t nev=0;
  Int_t ntot=fLastEvent+1-fFirstEvent;
  
  for ( Int_t ievent = fFirstEvent; ievent < endOfLoop; ++ievent ) 
  {
    Int_t  save=-99;
    ++nev;  
    
    Int_t nentries = diSim.NumberOfTrackRefs(ievent);
    
    for ( Int_t l=0; l<nentries; ++l )
    {
      TClonesArray* trackRefs = diSim.TrackRefs(ievent,l);
      if (!trackRefs) continue;
      
      Int_t nnn = trackRefs->GetEntriesFast();
      
      for ( Int_t k=0; k<nnn; ++k ) 
      {
        AliTrackReference *tref = static_cast<AliTrackReference*>(trackRefs->UncheckedAt(k));
        Int_t label = tref->GetTrack();
        Float_t x     =    tref->X();        // x-pos of hit
        Float_t y     =    tref->Y();        // y-pos
        Float_t z     = tref->Z();
        
        Float_t r=TMath::Sqrt(x*x+y*y);
        Float_t time =    tref->GetTime();  
        
        Float_t wgt=1/(2*10*TMath::Pi()*r)/(ntot);
        
        if (save!=label){
          save=label;
          flag11=0;
          flag12=0;
          flag13=0;
          flag14=0;
        }
        
        if (save==label){
          
          //Ch 1, z=-526.16
          if (z<=-521&& z>=-531&&flag11==0){
            flag11=1;
            hitDensity[0]->Fill(r,wgt);
            tof01->Fill(1000000000*time,1);
          };
          
          //Ch 10, z=-1437.6
          if (z<=-1432&&z>=-1442&&flag12==0){
            flag12=1;
            hitDensity[1]->Fill(r,wgt);
          }
          
          //Ch 11, z=-1603.5
          if (z<=-1598&& z>=-1608&&flag13==0){
            flag13=1;
            hitDensity[2]->Fill(r,wgt);
          };
          
          //ch 14 z=-1720.5    
          if(z<=-1715&&z>=-1725&&flag14==0){
            flag14=1;
            hitDensity[3]->Fill(r,wgt);
            tof14->Fill(1000000000*time,1);
          }; 
          
        }//if save==label
        
      }//hits de tTR
      
    }//entree de tTR 
    
  }//evt loop
  
  gSystem->cd(fkOutDir);
  TCanvas *c6 = new TCanvas("c6","TOF",400,10,600,700);
  c6->Divide(1,2);
  c6->cd(1);
  
  tof01->Draw();
  c6->cd(2);
  tof14->Draw();
  c6->Print("tof_on_trigger.ps");
  
  TCanvas *c5 = new TCanvas("c5","TRef:Hits Density",400,10,600,700);
  c5->Divide(2,2);
  c5->cd(1);
  hitDensity[0]->Draw();
  c5->cd(2);
  hitDensity[1]->Draw();
  c5->cd(3);
  hitDensity[2]->Draw();
  c5->cd(4);
  hitDensity[3]->Draw();
  c5->Print("TR_Hit_densities.ps");
  printf("=================================================================\n") ;
  printf("================  %s Tref SUMMARY    ==============\n", GetName()) ;
  printf("                                                   \n") ;
  printf("         Total number of processed events  %d      \n", nev) ;
  printf("***                Leaving TRef()               *** \n");
  printf("*************************************************** \n");
}

//_____________________________________________________________________________
void 
AliMUONCheck::CheckOccupancy(Bool_t perDetEle) const
{
  /// Check occupancy for the first event selected
  
  Int_t dEoccupancyBending[14][26];
  Int_t dEoccupancyNonBending[14][26];
  Int_t cHoccupancyBending[14];
  Int_t cHoccupancyNonBending[14];
  Int_t totaloccupancyBending =0;
  Int_t totaloccupancyNonBending =0;
  
  Int_t dEchannelsBending[14][26];
  Int_t dEchannelsNonBending[14][26];
  Int_t cHchannelsBending[14];
  Int_t cHchannelsNonBending[14];
  Int_t totalchannelsBending =0;
  Int_t totalchannelsNonBending =0;
  
  Int_t nchambers = AliMUONConstants::NCh();
  
  AliMUONDataInterface di(fFileNameSim);
  
  AliMUONVDigitStore* digitStore = di.DigitStore(fFirstEvent);
  
  // Compute values
  for (Int_t ichamber=0; ichamber<nchambers; ++ichamber) 
  {
    cHchannelsBending[ichamber]=0;
    cHchannelsNonBending[ichamber]=0;
    cHoccupancyBending[ichamber]=0;
    cHoccupancyNonBending[ichamber]=0;
    
    for (Int_t idetele=0; idetele<26; idetele++) 
    {
      Int_t detele = 100*(ichamber +1)+idetele;
      
      if ( AliMpDEManager::IsValidDetElemId(detele) ) 
      {
        Int_t cathode(0);
        
        const AliMpVSegmentation* segbend = AliMpSegmentation::Instance()
        ->GetMpSegmentation(detele, AliMp::kCath0);
        const AliMpVSegmentation* segnonbend = AliMpSegmentation::Instance()
          ->GetMpSegmentation(detele, AliMp::kCath1);
        
        if (AliMpDEManager::GetPlaneType(detele, AliMp::kCath0) != AliMp::kBendingPlane ) 
        {
          const AliMpVSegmentation* tmp = segbend;
          segbend    =  segnonbend;
          segnonbend =  tmp;
          cathode = 1;
        }  
        
        Int_t nchannels = segbend->NofPads();
        Int_t ndigits = digitStore->GetSize(detele,cathode);
	      dEchannelsBending[ichamber][idetele] = nchannels;
        dEoccupancyBending[ichamber][idetele] = ndigits;
	      cHchannelsBending[ichamber] += nchannels;
        cHoccupancyBending[ichamber] += ndigits;
	      totalchannelsBending += nchannels;
        totaloccupancyBending += ndigits;
        
        nchannels = segnonbend->NofPads();
        ndigits = digitStore->GetSize(detele,1-cathode);
        
	      dEchannelsNonBending[ichamber][idetele] = nchannels;
        dEoccupancyNonBending[ichamber][idetele] = ndigits;
	      cHchannelsNonBending[ichamber] += nchannels;
	      cHoccupancyNonBending[ichamber] += ndigits;
	      totalchannelsNonBending += nchannels;
	      totaloccupancyNonBending += ndigits;
	    }
      if (perDetEle) 
      {
        printf(">>> Detection element %4d has %5d channels in bending and %5d channels in nonbending \n",
               detele, dEchannelsBending[ichamber][idetele], dEchannelsNonBending[ichamber][idetele] ); 
      }
    }
    printf(">>> Chamber %2d has %6d channels in bending and %6d channels in nonbending \n",
           ichamber+1,  cHchannelsBending[ichamber], cHchannelsNonBending[ichamber]);
  }
  printf(">>Spectrometer has  %7d channels in bending and %7d channels in nonbending \n",
         totalchannelsBending, totalchannelsNonBending);
  
  // Output values
  
  for ( Int_t ichamber = 0; ichamber < nchambers; ++ichamber ) 
  {
    printf(">>> Chamber %2d  nChannels Bending %5d  nChannels NonBending %5d \n", 
         ichamber+1, 
         cHoccupancyBending[ichamber],
         cHoccupancyNonBending[ichamber]);  
    if ( cHchannelsBending[ichamber] != 0 && cHchannelsBending[ichamber] ) {               
      printf(">>> Chamber %2d  Occupancy Bending %5.2f %%  Occupancy NonBending %5.2f %% \n", 
           ichamber+1, 
           100.*((Float_t) cHoccupancyBending[ichamber])/((Float_t) cHchannelsBending[ichamber]),
           100.*((Float_t) cHoccupancyNonBending[ichamber])/((Float_t) cHchannelsBending[ichamber]));
    }
  
    if ( perDetEle )
    {
      for(Int_t idetele=0; idetele<26; idetele++) 
      {
        Int_t detele = idetele + 100*(ichamber+1);
        if ( AliMpDEManager::IsValidDetElemId(detele) ) 
        {
          printf(">>> DetEle %4d nChannels Bending %5d  nChannels NonBending %5d \n", 
               idetele+100*(ichamber+1), 
               dEoccupancyBending[ichamber][idetele],
               dEoccupancyNonBending[ichamber][idetele]);  
               
          if ( dEchannelsBending[ichamber][idetele] != 0 && dEchannelsBending[ichamber][idetele] !=0 ) {     
            printf(">>> DetEle %4d Occupancy Bending %5.2f %%  Occupancy NonBending %5.2f %% \n", 
                 idetele+100*(ichamber+1), 
                 100.*((Float_t) dEoccupancyBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]),
                 100.*((Float_t) dEoccupancyNonBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]));
          }       
        }
      }
    }
  }

  if ( totalchannelsBending != 0 && totalchannelsNonBending != 0 ) {
    printf(">>> Muon Spectrometer  Occupancy Bending %5.2f %%  Occupancy NonBending %5.2f %% \n",  
         100.*((Float_t) totaloccupancyBending)/((Float_t) totalchannelsBending),
         100.*((Float_t) totaloccupancyNonBending)/((Float_t) totalchannelsNonBending));
  }       
}

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