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

#include "AliLog.h"
#include "AliMUONPainterGroup.h"
#include "AliMUONSparseHisto.h"
#include "AliMUONVPainter.h"
#include "AliMUONVTrackerData.h"
#include "AliMpBusPatch.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
#include "AliMpDEIterator.h"
#include "AliMpDetElement.h"
#include "AliMpManuUID.h"
#include <TClass.h>
#include <TH1.h>
#include <TObjArray.h>
#include <TROOT.h>
#include <TMath.h>

///\class AliMUONTrackerDataHistogrammer
///
/// Class to generate histograms from AliMUONVTrackerData 
/// (and AliMUONVPainter) objects
///
/// \author Laurent Aphecetche, Subatech
///

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

//_____________________________________________________________________________
AliMUONTrackerDataHistogrammer::AliMUONTrackerDataHistogrammer(const AliMUONVTrackerData& data,
                                                               Int_t externalDim,
                                                               Int_t internalDim)
: TObject(),
fkData(data),
fExternalDim(externalDim),
fInternalDim(internalDim)
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONTrackerDataHistogrammer::~AliMUONTrackerDataHistogrammer()
{
  /// dtor
}

//_____________________________________________________________________________
void
AliMUONTrackerDataHistogrammer::Add(TH1& h, const AliMUONSparseHisto& sh) const
{
  /// Add sparse histo content to histogram.
  
  Double_t entries(h.GetEntries());
  
  for ( Int_t i = 0; i < sh.GetNbins(); ++i ) 
  {
    Int_t count = sh.GetBinContent(i);
    
    h.Fill(sh.GetBinCenter(i),count);
    
    entries += count;
  }
  
  h.SetEntries(entries);
  
  if (sh.HasUnderflow()) h.SetBinContent(0,1);
  if (sh.HasOverflow()) h.SetBinContent(h.GetNbinsX()+1,1);
}

//_____________________________________________________________________________
void
AliMUONTrackerDataHistogrammer::AddBusPatchHisto(TH1& h, Int_t busPatchId) const
{
  /// Add data from one bus patch to the histogram
  
  if ( fkData.HasBusPatch(busPatchId ) )
  {
    AliMpBusPatch* busPatch = AliMpDDLStore::Instance()->GetBusPatch(busPatchId);
    for ( Int_t i = 0; i < busPatch->GetNofManus(); ++i ) 
    {
      Int_t manuId = busPatch->GetManuId(i);
      AddManuHisto(h,busPatch->GetDEId(),manuId);
    }
  }
}
//_____________________________________________________________________________
void
AliMUONTrackerDataHistogrammer::AddDEHisto(TH1& h, Int_t detElemId) const
{
  /// Add data from one detection element to the histogram
  
  if ( fkData.HasDetectionElement(detElemId) )
  {
    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
    for ( Int_t i = 0; i < de->GetNofBusPatches(); ++ i ) 
    {
      Int_t busPatchId = de->GetBusPatchId(i);
      AddBusPatchHisto(h,busPatchId);
    }
  }
}

//_____________________________________________________________________________
void
AliMUONTrackerDataHistogrammer::AddManuHisto(TH1& h, Int_t detElemId, Int_t manuId) const
{
  /// Add data from a given manu to histogram
  
  if ( fkData.HasManu(detElemId,manuId) )
  {
    if ( fkData.IsChannelLevelEnabled() )
    {
      for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) 
      {
        if ( fkData.HasChannel(detElemId,manuId,i) )
        {
          if ( IsInternalMode() ) 
          {
            h.Fill(fkData.Channel(detElemId,manuId,i,fInternalDim));
          }
          else
          {
            AliMUONSparseHisto* sh = fkData.GetChannelSparseHisto(detElemId,manuId,i,fExternalDim);
            
            if ( sh ) 
            {       
              Add(h,*sh);
            }
          }
        }
      }
    }
    else
    {
      if ( IsInternalMode() ) 
      {
        h.Fill(fkData.Manu(detElemId,manuId,fInternalDim));
      }
      else
      {
        AliMUONSparseHisto* sh = fkData.GetManuSparseHisto(detElemId,manuId,fExternalDim);
        if (sh)
        {
          Add(h,*sh);
        }
      }
    }
  }
}

//_____________________________________________________________________________
TH1*
AliMUONTrackerDataHistogrammer::CreateChannelHisto(Int_t detElemId, 
                                                   Int_t manuId, 
                                                   Int_t manuChannel) const
{
  /// Create histogram of a given channel. Note that in order
  /// to keep memory footprint as low as possible, you should delete
  /// the returned pointer as soon as possible...
  
  if ( fkData.HasChannel(detElemId, manuId, manuChannel) && fkData.IsHistogrammed(fExternalDim) )
  {
    AliMUONSparseHisto* sh = fkData.GetChannelSparseHisto(detElemId,manuId,manuChannel);
    
    if ( sh ) 
    {
      Int_t nbins((1<<sh->Nbits()));
      Double_t xmin,xmax;
      fkData.HistogramRange(xmin,xmax);
      
      TH1* h = CreateHisto(Form("DE%04dMANU%04dCH%02d",detElemId,manuId,manuChannel),
                           nbins,xmin,xmax);
      if (h ) 
      {
        Add(*h,*sh);
      }
      return h;
    }
  }
  return 0x0;
}

//_____________________________________________________________________________
TH1*
AliMUONTrackerDataHistogrammer::CreateHisto(const char* name,
                                            Int_t nbins,
                                            Double_t xmin,
                                            Double_t xmax) const
{
  /// Create a single histogram
  
  TH1* h(0);
  
  if ( xmin < xmax ) 
  {
    h = new TH1F(name,name,nbins,xmin,xmax);
    h->SetDirectory(gROOT);
  }
	else
	{
		AliError(Form("Cannot create histo for name=%s nbins=%d xmin=%e xmax=%e",name,nbins,xmin,xmax));
	}
  return h;
}

//_____________________________________________________________________________
TH1* 
AliMUONTrackerDataHistogrammer::CreateHisto(const AliMUONVPainter& painter, 
																						Int_t externalDim,
																						Int_t internalDim)
{
  /// Create an histogram, from given dim of given data, 
  /// for all the channels handled by painter

  AliMUONPainterGroup* group = painter.Master()->PlotterGroup();
  
  if ( !group ) return 0x0; // no data to histogram in this painter
  
  AliMUONVTrackerData* data = group->Data();
  
  if ( externalDim >= data->ExternalDimension() )
  {
    AliErrorClass(Form("externalDim %d is out of bounds",externalDim));
    return 0x0;
  }

  if ( internalDim >= data->NumberOfDimensions() )
  {
    AliErrorClass(Form("internalDim %d is out of bounds",internalDim));
    return 0x0;
  }
  
  if ( internalDim < 0 && externalDim < 0 ) 
  {
    AliErrorClass("Both internal and external dim are < 0 !!!");
    return 0x0;
  }
  
  AliMUONTrackerDataHistogrammer tdh(*data,externalDim,internalDim);

  TObjArray manuArray;
  
  painter.FillManuList(manuArray);

  AliMpManuUID* mid;
  TIter next(&manuArray);

  TString basename(Form("%s-%s",painter.PathName().Data(),painter.Attributes().GetName()));
  TString ext;
  Int_t nbins((1<<12));
  Double_t xmin(0.0);
  Double_t xmax(0.0);
  
  if ( !tdh.IsInternalMode() ) 
  {
    data->HistogramRange(xmin,xmax);
    
    xmin -= 0.5;
    xmax -= 0.5;
    
    ext = data->ExternalDimensionName(externalDim).Data();
  }
  else
  {
    tdh.GetDataRange(manuArray,xmin,xmax);
    ext = data->DimensionName(internalDim).Data();
    nbins = 100;
  }
  
  TString name(Form("%s-%s",basename.Data(),ext.Data()));

  TH1* histo = tdh.CreateHisto(name.Data(),nbins,xmin,xmax);

  if ( histo ) 
  {
    while ( ( mid = static_cast<AliMpManuUID*>(next()) ) )
    {
      TH1* h = tdh.CreateManuHisto(mid->DetElemId(),mid->ManuId(),nbins,xmin,xmax);
      if ( h ) 
      {
        histo->Add(h);
      }
      delete h;
    }
  }
  else
  {
    AliErrorClass(Form("Could not create histo for painter %s (%p) data %s (%p) external dim %d internal dim %d",
                       painter.PathName().Data(),&painter,
                       data->GetName(),data,externalDim,internalDim));
  }
  
  if (histo) histo->SetDirectory(gROOT);
  
  return histo;
}

//_____________________________________________________________________________
TH1*
AliMUONTrackerDataHistogrammer::CreateManuHisto(Int_t detElemId, Int_t manuId,
                                                Int_t nbins,
                                                Double_t xmin,
                                                Double_t xmax) const
{
  /// Create histogram of a given manu. Note that in order
  /// to keep memory footprint as low as possible, you should delete
  /// the returned pointer as soon as possible...
  
  TH1* h(0x0);
  
  if ( !fkData.HasManu(detElemId,manuId) ) return 0x0;
  
  if ( ( fExternalDim >= 0 && fkData.IsHistogrammed(fExternalDim) ) ||
       ( fInternalDim >= 0 && fInternalDim < fkData.NumberOfDimensions() ) )
  {
    h = CreateHisto(Form("DE%04dMANU%04d",detElemId,manuId),
                    nbins,xmin,xmax);
    if ( h ) AddManuHisto(*h,detElemId,manuId);
  }
  
  return h;
}

//_____________________________________________________________________________
void
AliMUONTrackerDataHistogrammer::GetDataRange(const TObjArray& manuArray, 
                                             Double_t& xmin, Double_t& xmax) const
{
  /// Get data range (in case of InternalMode() only) spanned by the manus in
  /// manuArray
  
  xmin = FLT_MAX;
  xmax = -FLT_MAX;
  
  if (!IsInternalMode())
  {
    AliError("Cannot use this method for external mode !");
  }

  AliMpManuUID* mid;
  TIter next(&manuArray);
  
  while ( ( mid = static_cast<AliMpManuUID*>(next()) ) )
  {
    Int_t detElemId = mid->DetElemId();
    Int_t manuId = mid->ManuId();
    
    for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) 
    {
      if ( fkData.HasChannel(detElemId,manuId,i) ) 
      {
        Double_t value = fkData.Channel(detElemId,manuId,i,fInternalDim);
				
				if ( ! TMath::Finite(value) )
				{
					AliError(Form("Got a NaN for DE %d manu %d ch %d",detElemId,manuId,i));
				}
				else
				{
					xmin = TMath::Min(xmin,value);
					xmax = TMath::Max(xmax,value);
				}
      }
    }
  }

}

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