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

/// \class AliMUONTrackerDataCompareDialog
///
/// Widget to select 2 VTrackerData objects (D1,D2) to be compared
///
/// The type of differences that can be used are : 
///
/// - Difference = plain difference D1-D2
/// - Absolute difference = absolute value of the preceeding = |D1-D2|
/// - Relative difference = relative difference = (D1-D2)/D1
/// - Absolute relative difference = absolute value of preceeding = |(D1-D2)/D1|
///
/// \author Laurent Aphecetche, Subatech
///

#include "AliLog.h"
#include "AliMUON2DMap.h"
#include "AliMUONCalibParamND.h"
#include "AliMUONPainterDataRegistry.h"
#include "AliMUONTrackerData.h"
#include "AliMUONTrackerDataWrapper.h"
#include "AliMUONVTrackerData.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
#include "AliMpDetElement.h"
#include "AliMpManuIterator.h"
#include <TGComboBox.h>
#include <TGLabel.h>
#include <TGTextEntry.h>
#include <TTimer.h>

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

const Int_t AliMUONTrackerDataCompareDialog::fgkDifference(1);
const Int_t AliMUONTrackerDataCompareDialog::fgkAbsoluteDifference(2);
const Int_t AliMUONTrackerDataCompareDialog::fgkRelativeDifference(3);
const Int_t AliMUONTrackerDataCompareDialog::fgkAbsoluteRelativeDifference(4);
const Int_t AliMUONTrackerDataCompareDialog::fgkAll(5);

namespace
{
  
#define PRECISION 1E-12
  
  Double_t Difference(Double_t v1, Double_t v2)
  {
    Double_t d = v1-v2;
    return TMath::Abs(d) < PRECISION ? 0.0 : d;
  }
    
  Double_t AbsoluteDifference(Double_t v1, Double_t v2)
  {
    return TMath::Abs(Difference(v1,v2));
  }
  
  
  Double_t RelativeDifference(Double_t v1, Double_t v2)
  {
    if ( TMath::Abs(v1) < PRECISION ) return 0.0;
    return (v1-v2)/v1;
  }
  
  Double_t AbsoluteRelativeDifference(Double_t v1, Double_t v2)
  {
    return TMath::Abs(RelativeDifference(v1,v2));
  }
}


//_____________________________________________________________________________
AliMUONTrackerDataCompareDialog::AliMUONTrackerDataCompareDialog(const TGWindow* p, const TGWindow* main, UInt_t w, UInt_t h)
: TGTransientFrame(p,main,w,h),
fF1(new TGHorizontalFrame(this)),
fData1(new TGComboBox(fF1)),
fF2(new TGHorizontalFrame(this)),
fData2(new TGComboBox(fF2)),
fF3(new TGHorizontalFrame(this)),
fDiffType(new TGComboBox(fF3)),
fF4(new TGHorizontalFrame(this)),
fBasename(new TGTextEntry(fF4)),
fButtonFrame(new TGHorizontalFrame(this)),
fOK(new TGTextButton(fButtonFrame,"OK")),
fCancel(new TGTextButton(fButtonFrame,"Cancel"))
{
  /// ctor
  
  SetCleanup(kDeepCleanup);
  
  AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
  
  for ( Int_t i = 0; i < reg->NumberOfDataSources(); ++i ) 
  {
    AliMUONVTrackerData* data = reg->DataSource(i);
    fData1->AddEntry(data->GetName(),i);
    fData2->AddEntry(data->GetName(),i);
  }
  
  fDiffType->AddEntry("Difference",fgkDifference);
  fDiffType->AddEntry("Absolute difference",fgkAbsoluteDifference);
  fDiffType->AddEntry("Relative difference",fgkRelativeDifference);
  fDiffType->AddEntry("Absolute relative difference",fgkAbsoluteRelativeDifference);
  fDiffType->AddEntry("All four",fgkAll);

  fData1->Select(0);
  fData2->Select(0);
  fDiffType->Select(4);
  
  fF1->AddFrame(new TGLabel(fF1,"First data"),new TGLayoutHints(kLHintsLeft|kLHintsTop,5,5,5,5));
  fF1->AddFrame(fData1,new TGLayoutHints(kLHintsRight|kLHintsExpandX|kLHintsTop,5,5,5,5));

  fF2->AddFrame(new TGLabel(fF2,"Second data"),new TGLayoutHints(kLHintsLeft|kLHintsTop,5,5,5,5));
  fF2->AddFrame(fData2,new TGLayoutHints(kLHintsRight|kLHintsExpandX|kLHintsTop,5,5,5,5));

  fF3->AddFrame(new TGLabel(fF3,"Difference type"),new TGLayoutHints(kLHintsLeft|kLHintsTop,5,5,5,5));
  fF3->AddFrame(fDiffType,new TGLayoutHints(kLHintsRight|kLHintsExpandX|kLHintsTop,5,5,5,5));

  fF4->AddFrame(new TGLabel(fF4,"Output basename"),new TGLayoutHints(kLHintsLeft|kLHintsTop,5,5,5,5));
  fF4->AddFrame(fBasename,new TGLayoutHints(kLHintsRight|kLHintsExpandX|kLHintsTop,5,5,5,5));

  AddFrame(fF1,new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsTop,5,5,5,5));
  AddFrame(fF2,new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsTop,5,5,5,5));
  AddFrame(fF3,new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsTop,5,5,5,5));
  AddFrame(fF4,new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsTop,5,5,5,5));
  
  fButtonFrame->AddFrame(fOK,new TGLayoutHints(kLHintsLeft|kLHintsTop,5,5,5,5));
  fButtonFrame->AddFrame(fCancel,new TGLayoutHints(kLHintsRight|kLHintsTop,5,5,5,5));

  AddFrame(fButtonFrame,new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsTop,5,5,5,5));
  
  fData1->Resize(200,20);
  fData2->Resize(200,20);
  fDiffType->Resize(200,20);
  
  fOK->Connect("Clicked()", "AliMUONTrackerDataCompareDialog",this,"DoOK()");
  fCancel->Connect("Clicked()","AliMUONTrackerDataCompareDialog",this,"DoCancel()");
}

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

//______________________________________________________________________________
void
AliMUONTrackerDataCompareDialog::DoOK()
{
  /// Do the job.
  
  TGTextLBEntry* t1 = static_cast<TGTextLBEntry*>(fData1->GetSelectedEntry());
  TString s1 = t1->GetText()->GetString();
  TGTextLBEntry* t2 = static_cast<TGTextLBEntry*>(fData2->GetSelectedEntry());
  TString s2 = t2->GetText()->GetString();
  
  Int_t nd = fDiffType->GetSelected();
  
  if ( nd == fgkAll ) 
  {
    CompareData(s1.Data(),s2.Data(),fgkDifference);
    CompareData(s1.Data(),s2.Data(),fgkRelativeDifference);
    CompareData(s1.Data(),s2.Data(),fgkAbsoluteDifference);
    CompareData(s1.Data(),s2.Data(),fgkAbsoluteRelativeDifference);
  }
  else
  {
    CompareData(s1.Data(),s2.Data(),nd);
  }
  
  TTimer::SingleShot(150,"AliMUONTrackerDataCompareDialog",this,"CloseWindow()");
}

//______________________________________________________________________________
void
AliMUONTrackerDataCompareDialog::DoCancel()
{
  /// Kills the dialog
  TTimer::SingleShot(150,"AliMUONTrackerDataCompareDialog",this,"CloseWindow()");
}

//______________________________________________________________________________
void
AliMUONTrackerDataCompareDialog::CompareData(const char* d1name,
                                             const char* d2name,
                                             Int_t difftype) const
{
  /// Compare two data sources
  
  AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
  
  AliMUONVTrackerData* d1 = reg->DataSource(d1name);
  if (!d1)
  {
    AliError(Form("Cannot find data source %s",d1name));
    return;
  }
  
  AliMUONVTrackerData* d2 = reg->DataSource(d2name);
  if (!d2)
  {
    AliError(Form("Cannot find data source %s",d2name));
    return;
  }
  
  Double_t (*difffunction)(Double_t,Double_t)=0x0;
  TString suffix("unknown");
  
  if ( difftype == fgkDifference ) 
  {
    difffunction = Difference;
    suffix = "D";
  }
  if ( difftype == fgkAbsoluteDifference ) 
  {
    difffunction = AbsoluteDifference;
    suffix = "AD";
  }
  if ( difftype == fgkRelativeDifference ) 
  {
    difffunction = RelativeDifference;
    suffix = "RD";
  }
  if ( difftype == fgkAbsoluteRelativeDifference ) 
  {
    difffunction = AbsoluteRelativeDifference;
    suffix = "ARD";
  }
  
  if ( difffunction ) 
  {
    TString basename = fBasename->GetText(); 
  
    AliMUONVTrackerData* d = CompareData(*d1,*d2,Form("%s:%s",basename.Data(),suffix.Data()),difffunction);
    
    AliMUONVTrackerDataMaker* dw = new AliMUONTrackerDataWrapper(d);
    
    AliMUONPainterDataRegistry::Instance()->Register(dw);
  }
}

//______________________________________________________________________________
AliMUONVTrackerData*
AliMUONTrackerDataCompareDialog::CompareData(const AliMUONVTrackerData& d1,
                                             const AliMUONVTrackerData& d2,
                                             const char* outname,
                                             Double_t(*diff)(Double_t,Double_t)) const
{
  /// Compare two data objects, using the diff method
  
  if ( d1.NumberOfDimensions() != d2.NumberOfDimensions() ) 
  {
    AliError("Cannot compare data of incompatible dimensions");
    return 0x0;
  }
  
  AliMpManuIterator it;
  Int_t detElemId, manuId;
  
  AliMUONVStore* store = new AliMUON2DMap(kTRUE);
  
  while ( it.Next(detElemId,manuId) )
  {
    if ( d1.HasDetectionElement(detElemId) && d2.HasDetectionElement(detElemId) &&
         d1.HasManu(detElemId,manuId) && d2.HasManu(detElemId,manuId) )
    {
      AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
      
      AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(store->FindObject(detElemId,manuId));
      
      if (!param)
	    {
	      param = new AliMUONCalibParamND(d1.ExternalDimension(),64,detElemId,manuId,
                                        AliMUONVCalibParam::InvalidFloatValue());
	      store->Add(param);
	    }
      
      for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) 
	    {
	      if ( de->IsConnectedChannel(manuId,i) )
        {
          for ( Int_t k = 0; k < d1.ExternalDimension(); ++k ) 
          {
            
            Double_t d = diff(d1.Channel(detElemId,manuId,i,k),
                                  d2.Channel(detElemId,manuId,i,k));
          
            param->SetValueAsDouble(i,k,d);
          }
        }
	    }
    }
  }
  
  AliMUONVTrackerData* d = new AliMUONTrackerData(outname,outname,d1.ExternalDimension(),kTRUE);
  for ( Int_t k = 0; k < d1.ExternalDimension(); ++k ) 
  {
    d->SetDimensionName(k,Form("D:%s",d1.ExternalDimensionName(k).Data()));
  }
  d->Add(*store);
  
  return d;
}

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