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

#include "AliMUONBusPatchPainter.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONPCBPainter.h"
#include "AliMUONContour.h"
#include "AliMUONPainterHelper.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVTrackerData.h"
#include "AliMUONObjectPair.h"
#include "AliMpDDLStore.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpPCB.h"
#include "AliMpSector.h"
#include "AliMpSlat.h"
#include "AliLog.h"
#include <TMap.h>
#include <TObjString.h>
#include "AliMUONPainterGroup.h"

/// \class AliMUONDEPainter
///
/// Painter for one detection element
///
/// It draws a given plane (bending or non bending) of a given detection element
///
/// \author Laurent Aphecetche, Subatech

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

//_____________________________________________________________________________
AliMUONDEPainter::AliMUONDEPainter()
: AliMUONVPainter(),
fDetElemId(-1)
{
  /// default ctor
}

//_____________________________________________________________________________
AliMUONDEPainter::AliMUONDEPainter(TRootIOCtor* ioCtor)
: AliMUONVPainter(ioCtor),
fDetElemId(-1)
{
  /// default streaming ctor
}

//_____________________________________________________________________________
AliMUONDEPainter::AliMUONDEPainter(const AliMUONAttPainter& att, Int_t detElemId)
: AliMUONVPainter("DE"),
fDetElemId(detElemId)
{
  /// normal ctor

  AliMUONAttPainter deAtt(att);
  
  if ( att.IsCathodeDefined() )
  {
    AliMp::CathodType cathodType = ( att.IsCathode0() ? AliMp::kCath0 : AliMp::kCath1 ) ;
    
    Bool_t cath0 = ( cathodType == AliMp::kCath0 ) ;
    
    AliMp::PlaneType planeType = AliMpDEManager::GetPlaneType(detElemId,cathodType);
    
    Bool_t bending = (  planeType == AliMp::kBendingPlane );
    
    deAtt.SetCathode(cath0,!cath0);
    deAtt.SetPlane(bending,!bending);

  }
  
  if ( att.IsPlaneDefined() ) 
  {  
    AliMp::PlaneType planeType = ( att.IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );
  
    Bool_t bending = ( planeType == AliMp::kBendingPlane );
  
    Bool_t cath0 = ( AliMpDEManager::GetCathod(detElemId,planeType) == AliMp::kCath0 );
    
    deAtt.SetCathode(cath0,!cath0);
    deAtt.SetPlane(bending,!bending);

  }
  
  deAtt.SetCathodeAndPlaneMutuallyExclusive(kFALSE);
                                            
  SetAttributes(deAtt);
  
  AliMUONPainterHelper* h = AliMUONPainterHelper::Instance();
  
  SetID(detElemId,-1);
  SetName(h->DEName(fDetElemId).Data());
  SetPathName(h->DEPathName(fDetElemId).Data());
              
  AliMp::PlaneType planeType = ( Attributes().IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );
  
  Double_t x,y,z;
  
  if ( AliMpDEManager::GetStationType(DetElemId()) == AliMp::kStation345 ) 
  {
    const AliMpSlat* slat = h->GetSlat(DetElemId(),planeType);
  
    for ( Int_t i = 0; i < slat->GetSize(); ++i ) 
    {
      Add(new AliMUONPCBPainter(Attributes(),DetElemId(),i));
    }
    
    AliMUONPainterHelper::Instance()->Local2Global(fDetElemId,0.0,0.0,0.0,x,y,z);    
  }
  else if ( AliMpDEManager::GetStationType(DetElemId()) != AliMp::kStationTrigger )
  {
    const AliMpSector* sector = h->GetSector(DetElemId(),planeType);

    Double_t xl(sector->GetDimensionX());
    Double_t yl(sector->GetDimensionY());
    
    h->Local2Global(fDetElemId,xl,yl,0.0,x,y,z);
  }
  else
  {
    AliFatal("Not implemented for trigger !!!");
  }
  
  AliMUONContour* contour = h->GetContour(ContourName());
  
  TObjArray contourArray;
    
  AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(fDetElemId);
  
  AliDebug(1,Form("de %p n %d",de,de->GetNofBusPatches()));
  
  for ( Int_t i = 0; i < de->GetNofBusPatches(); ++i ) 
  {
    AliMUONBusPatchPainter* painter = new AliMUONBusPatchPainter(Attributes(),de->GetBusPatchId(i));
                                                                 
    if ( !painter->IsValid() ) 
    {
      AliDebug(1,Form("Skipping BP %d which seem to have no manu in plane %s",
                   de->GetBusPatchId(i),
                   Attributes().IsBendingPlane() ? "bending" : "non bending"));
      delete painter;
      continue;
    }
    else
    {
      Add(painter);
    }
    
    if ( !contour ) 
    {
      contourArray.Add(painter->Contour());
    }
  }
  
  if (!contour)
  {
    contour = h->MergeContours(contourArray,ContourName());
    if (!contour)
    {
      AliError(Form("%s : could not merge those contours",Name().Data()));
      StdoutToAliError(contourArray.Print(););
    }
  }
  
  SetContour(contour);  
}

//_____________________________________________________________________________
AliMUONDEPainter::AliMUONDEPainter(const AliMUONDEPainter& rhs):
AliMUONVPainter(rhs), fDetElemId(-1)
{
  /// copy ctor
  rhs.Copy(*this);
}

//_____________________________________________________________________________
AliMUONDEPainter& 
AliMUONDEPainter::operator=(const AliMUONDEPainter& rhs)
{
  /// assignment operator
  if ( this != &rhs ) 
  {
    rhs.Copy(*this);
  }
  return *this;
}

//_____________________________________________________________________________
AliMUONDEPainter::~AliMUONDEPainter()
{
  /// dtor = nop
}

//_____________________________________________________________________________
void 
AliMUONDEPainter::ComputeDataRange(const AliMUONVTrackerData& data, Int_t dataIndex, 
                                         Double_t& dataMin, Double_t& dataMax) const
{
  /// Compute the data range spanned by this detection element
  dataMin = dataMax = data.DetectionElement(fDetElemId, dataIndex);
}

//_____________________________________________________________________________
void
AliMUONDEPainter::Copy(TObject& object) const
{
  /// Copy this to object
  AliMUONVPainter::Copy((AliMUONVPainter&)(object));
  ((AliMUONDEPainter&)(object)).fDetElemId = fDetElemId;
}

//_____________________________________________________________________________
TString
AliMUONDEPainter::Describe(const AliMUONVTrackerData& data, Int_t dataIndex,
                             Double_t, Double_t)
{
  /// Describe data at this detection element
  
  if (!data.HasDetectionElement(fDetElemId)) return "";
  
  Double_t value = data.DetectionElement(fDetElemId,dataIndex);
  
  return AliMUONPainterHelper::Instance()->FormatValue(data.DimensionName(dataIndex).Data(),value);
}

//_____________________________________________________________________________
void
AliMUONDEPainter::FillManuList(TObjArray& manuList) const
{
  /// Fill (append to) manu list
  TIter next(Children());
  AliMUONVPainter* p;
  
  while ( ( p = static_cast<AliMUONVPainter*>(next()) ) )
  {
    if ( p->IsA() == AliMUONBusPatchPainter::Class() )
    {
      // Only consider bus patch painters (and not PCB ones),
      // in order not to double count some manus
      p->FillManuList(manuList);
    }
  }
}

//_____________________________________________________________________________
Bool_t
AliMUONDEPainter::IsIncluded() const
{
  /// whether this detection element is included in the readout or not
  return ( InteractiveReadOutConfig()->DetectionElement(fDetElemId) > 0 );
}

//_____________________________________________________________________________
void
AliMUONDEPainter::PaintArea(const AliMUONVTrackerData& data, Int_t dataIndex,
                                  Double_t min, Double_t max)
{
  /// Paint the area of this detection element
  
  if (!data.HasDetectionElement(fDetElemId)) return;
  
  Double_t value = data.DetectionElement(fDetElemId,dataIndex);
  
  if ( value >= AliMUONVCalibParam::InvalidFloatValue() ) return;
  
  Int_t color = AliMUONPainterHelper::Instance()->ColorFromValue(value,min,max);
  
  PaintArea(color);
}

//_____________________________________________________________________________
AliMUONAttPainter 
AliMUONDEPainter::Validate(const AliMUONAttPainter& attributes) const
{
  /// Normalize attributes
  
  AliMUONAttPainter norm(attributes);
  
  norm.SetCathodeAndPlaneMutuallyExclusive(kFALSE);
  
  if ( norm.IsCathodeDefined() && !norm.IsPlaneDefined() )
  {
    // only cathode known : derive the plane
    
    AliMp::CathodType cathodType = ( norm.IsCathode0() ? AliMp::kCath0 : AliMp::kCath1 );
    
    AliMp::PlaneType planeType = AliMpDEManager::GetPlaneType(fDetElemId,cathodType);

    Bool_t bending = ( planeType == AliMp::kBendingPlane ) ;
    
    norm.SetPlane(bending,!bending);
  }
  
  else if ( !norm.IsCathodeDefined() && norm.IsPlaneDefined() )
  {
    // only plane is known : derive the cathode
    
    AliMp::PlaneType planeType = ( norm.IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );
        
    Bool_t cath0 = ( AliMpDEManager::GetCathod(fDetElemId,planeType) == AliMp::kCath0 );
    
    norm.SetCathode(cath0,!cath0);
  }  
  else    
  {
    // check that both information are compatible
    
    AliMp::PlaneType planeType = ( norm.IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );

    AliMp::CathodType cathode = AliMpDEManager::GetCathod(fDetElemId,planeType);
    
    if ( (cathode == AliMp::kCath0 && norm.IsCathode1()) ||
         (cathode == AliMp::kCath1 && norm.IsCathode0()) ) 
    {
      norm.SetValid(kFALSE);
    }
  }
  
  return norm;
}

//_____________________________________________________________________________
void
AliMUONDEPainter::SetResponder(Int_t depth)
{
  /// Select as responder the *first* group that has a given depth

  AliDebug(1,Form("depth=%d",depth));
  
  if (!fPainterGroups)
  {
    CreateGroups();
  }
  
  TIter next(fPainterGroups);
  TObjString* str;
  
  fResponderGroup = 0x0;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    AliMUONPainterGroup* group = static_cast<AliMUONPainterGroup*>(fPainterGroups->GetValue(str));
    if ( str->String() == "BUSPATCH" ) 
    {
      AliDebug(1,Form("group %s is indeed buspatch, using as responder %d",
                      group->Type(),depth));
      group->SetResponder(kTRUE);
      fResponderGroup = group;
      break;
    }
    else
    {
      group->SetResponder(kFALSE);
    }
  }
}

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