#include "AliMUONContourMaker.h"
#include "AliCodeTimer.h"
#include "AliLog.h"
#include "AliMUONContour.h"
#include "AliMUONPointWithRef.h"
#include "AliMUONPolygon.h"
#include "AliMUONSegment.h"
#include "AliMUONSegmentTree.h"
#include "Riostream.h"
#include "TArrayD.h"
#include "TMath.h"
#include <cassert>
#include "TArrayI.h"
ClassImp(AliMUONContourMaker)
AliMUONContourMaker::AliMUONContourMaker()
{
}
AliMUONContourMaker::~AliMUONContourMaker()
{
}
AliMUONContour*
AliMUONContourMaker::CreateContour(const TObjArray& polygons, const char* name) const
{
AliCodeTimerAuto("",0);
if ( polygons.IsEmpty() ) return 0x0;
TIter next(&polygons);
AliMUONPolygon* pol;
while ( ( pol = static_cast<AliMUONPolygon*>(next()) ) )
{
if ( !pol->IsCounterClockwiseOriented() )
{
AliError(Form("Got a clockwise oriented polygon in CreateContour(%s). That's not OK !",name));
StdoutToAliError(polygons.Print());
return 0x0;
}
}
AliMUONContour* contour(0x0);
if ( polygons.GetLast() == 0 )
{
AliCodeTimerAuto("Trivial case",1);
contour = new AliMUONContour(name);
pol = static_cast<AliMUONPolygon*>(polygons.First());
contour->Add(*pol);
contour->AssertOrientation();
return contour;
}
TObjArray polygonVerticalEdges;
polygonVerticalEdges.SetOwner(kTRUE);
GetVerticalEdges(polygons,polygonVerticalEdges);
polygonVerticalEdges.Sort();
if ( polygonVerticalEdges.GetLast()+1 < 2 )
{
polygons.Print();
AliFatal(Form("Got too few edges here for createContour %s",name));
}
TObjArray contourVerticalEdges;
contourVerticalEdges.SetOwner(kTRUE);
Sweep(polygonVerticalEdges,contourVerticalEdges);
TObjArray horizontals;
horizontals.SetOwner(kTRUE);
VerticalToHorizontal(contourVerticalEdges,horizontals);
contour = FinalizeContour(contourVerticalEdges,horizontals);
if ( contour && name ) contour->SetName(name);
return contour;
}
AliMUONContour*
AliMUONContourMaker::FinalizeContour(const TObjArray& verticals,
const TObjArray& horizontals) const
{
AliCodeTimerAuto("",0);
TObjArray all;
TObjArray inorder;
all.SetOwner(kFALSE);
inorder.SetOwner(kFALSE);
for ( Int_t i = 0; i <= verticals.GetLast(); ++i )
{
all.Add(verticals.UncheckedAt(i));
all.Add(horizontals.UncheckedAt(i));
}
TArrayI alreadyAdded(all.GetLast()+1);
alreadyAdded.Reset();
Int_t i(0);
AliMUONContour* contour = new AliMUONContour;
int total(0);
while ( !all.IsEmpty() )
{
total++;
if ( total > 1000 )
{
AliError("Total 1000 reached !!!!");
return 0x0;
}
AliMUONSegment* si = static_cast<AliMUONSegment*>(all.UncheckedAt(i));
inorder.Add(si);
alreadyAdded[i] = 1;
const AliMUONSegment* all0 = static_cast<const AliMUONSegment*>(all.First());
if ( i != 0 && AliMUONSegment::AreEqual(si->EndX(),all0->StartX()) && AliMUONSegment::AreEqual(si->EndY(),all0->StartY()) )
{
Int_t n(-1);
AliMUONPolygon polygon(inorder.GetLast()+2);
for ( Int_t j = 0; j <= inorder.GetLast(); ++j )
{
AliMUONSegment* s = static_cast<AliMUONSegment*>(inorder.UncheckedAt(j));
polygon.SetVertex(++n,s->StartX(),s->StartY());
all.Remove(s);
}
all.Compress();
polygon.Close();
contour->Add(polygon);
if ( ! all.IsEmpty() )
{
i = 0;
inorder.Clear();
alreadyAdded.Set(all.GetLast()+1);
alreadyAdded.Reset();
}
continue;
}
for ( Int_t j = 0; j <= all.GetLast(); ++j)
{
if ( j != i && alreadyAdded[j] == 0 )
{
const AliMUONSegment* sj = static_cast<const AliMUONSegment*>(all.UncheckedAt(j));
if ( AliMUONSegment::AreEqual(si->EndX(),sj->StartX()) && AliMUONSegment::AreEqual(si->EndY(),sj->StartY()))
{
i = j;
break;
}
}
}
}
contour->AssertOrientation(kTRUE);
return contour;
}
void
AliMUONContourMaker::GetVerticalEdges(const TObjArray& polygons, TObjArray& polygonVerticalEdges) const
{
AliCodeTimerAuto("",0);
for ( Int_t i = 0; i <= polygons.GetLast(); ++i )
{
const AliMUONPolygon* g = static_cast<const AliMUONPolygon*>(polygons.UncheckedAt(i));
for ( Int_t j = 0; j < g->NumberOfVertices()-1; ++j )
{
if ( AliMUONSegment::AreEqual(g->X(j),g->X(j+1)) )
{
polygonVerticalEdges.Add(new AliMUONSegment(g->X(j),g->Y(j),g->X(j+1),g->Y(j+1)));
}
}
}
}
void
AliMUONContourMaker::GetYPositions(const TObjArray& polygonVerticalEdges,
TArrayD& yPositions) const
{
AliCodeTimerAuto("",0);
Double_t* y = new Double_t[polygonVerticalEdges.GetSize()*2];
Int_t n(0);
for ( Int_t i = 0; i < polygonVerticalEdges.GetLast(); ++i )
{
AliMUONSegment* s = static_cast<AliMUONSegment*>(polygonVerticalEdges.UncheckedAt(i));
y[n] = s->StartY();
y[n+1] = s->EndY();
n += 2;
}
Int_t* ix = new Int_t[n+1];
TMath::Sort(n,y,ix,kFALSE);
yPositions.Set(n+1);
Int_t u(0);
Double_t x(FLT_MAX);
for ( Int_t i = 0; i < n; ++i )
{
if ( y[ix[i]] != x )
{
yPositions[u] = y[ix[i]];
x = y[ix[i]];
++u;
}
}
yPositions.Set(u);
delete[] ix;
delete[] y;
}
AliMUONContour*
AliMUONContourMaker::MergeContour(const TObjArray& contours, const char* name) const
{
AliCodeTimerAuto("",0);
TObjArray polygons;
polygons.SetOwner(kTRUE);
TIter next(&contours);
AliMUONContour* contour;
while ( ( contour = static_cast<AliMUONContour*>(next()) ) )
{
const TObjArray* contourPolygons = contour->Polygons();
TIter nextPol(contourPolygons);
AliMUONPolygon* pol;
while ( ( pol = static_cast<AliMUONPolygon*>(nextPol()) ) )
{
polygons.Add(new AliMUONPolygon(*pol));
}
}
if ( polygons.IsEmpty() ) return 0x0;
contour = CreateContour(polygons,name);
return contour;
}
void
AliMUONContourMaker::SortPoints(const TObjArray& polygonVerticalEdges,
TObjArray& sortedPoints) const
{
AliCodeTimerAuto("",0);
for ( Int_t i = 0; i <= polygonVerticalEdges.GetLast(); ++i )
{
const AliMUONSegment* e = static_cast<const AliMUONSegment*>(polygonVerticalEdges.UncheckedAt(i));
sortedPoints.Add(new AliMUONPointWithRef(e->StartX(),e->StartY(),i));
sortedPoints.Add(new AliMUONPointWithRef(e->EndX(),e->EndY(),i));
}
sortedPoints.Sort();
}
void
AliMUONContourMaker::Sweep(const TObjArray& polygonVerticalEdges,
TObjArray& contourVerticalEdges) const
{
AliCodeTimerAuto("",0);
TArrayD yPositions;
GetYPositions(polygonVerticalEdges,yPositions);
AliMUONSegmentTree segmentTree(yPositions);
for ( Int_t i = 0; i <= polygonVerticalEdges.GetLast(); ++i )
{
const AliMUONSegment* edge = static_cast<const AliMUONSegment*>(polygonVerticalEdges.UncheckedAt(i));
assert(edge!=0x0);
if ( edge->IsLeftEdge() )
{
segmentTree.Contribution(edge->Bottom(),edge->Top());
segmentTree.InsertInterval(edge->Bottom(),edge->Top());
}
else
{
segmentTree.DeleteInterval(edge->Bottom(),edge->Top());
segmentTree.Contribution(edge->Bottom(),edge->Top());
}
AliMUONSegment e1(*edge);
if ( i < polygonVerticalEdges.GetLast() )
{
const AliMUONSegment* next = static_cast<const AliMUONSegment*>(polygonVerticalEdges.UncheckedAt(i+1));
e1 = *next;
}
if ( ( edge->IsLeftEdge() != e1.IsLeftEdge() ) ||
( !AliMUONSegment::AreEqual(edge->StartX(),e1.StartX() ) ) ||
( i == polygonVerticalEdges.GetLast() ) )
{
const TObjArray& stack = segmentTree.Stack();
double x = edge->StartX();
for ( Int_t j = 0; j <= stack.GetLast(); ++j )
{
AliMUONSegment* sj = static_cast<AliMUONSegment*>(stack.UncheckedAt(j));
AliMUONSegment* s = new AliMUONSegment(x,sj->StartY(),x,sj->EndY());
if (s->IsAPoint())
{
delete s;
continue;
}
if ( edge->IsLeftEdge() != s->IsLeftEdge() )
{
s->Set(x,sj->EndY(),x,sj->StartY());
}
contourVerticalEdges.Add(s);
}
segmentTree.ResetStack();
}
}
}
void
AliMUONContourMaker::VerticalToHorizontal(const TObjArray& polygonVerticalEdges,
TObjArray& horizontalEdges) const
{
AliCodeTimerAuto("",0);
TObjArray points;
points.SetOwner(kTRUE);
SortPoints(polygonVerticalEdges,points);
for ( Int_t k = 0; k < (points.GetLast()+1)/2; ++k )
{
const AliMUONPointWithRef* p1 = static_cast<AliMUONPointWithRef*>(points.UncheckedAt(k*2));
const AliMUONPointWithRef* p2 = static_cast<AliMUONPointWithRef*>(points.UncheckedAt(k*2+1));
const AliMUONSegment* refEdge = static_cast<const AliMUONSegment*>(polygonVerticalEdges.UncheckedAt(p1->Ref()));
if ( AliMUONSegment::AreEqual(p1->X(),refEdge->EndX()) && AliMUONSegment::AreEqual(p1->Y(),refEdge->EndY()) )
{
horizontalEdges.Add(new AliMUONSegment(p1->X(),p1->Y(),p2->X(),p2->Y()));
}
else
{
horizontalEdges.Add(new AliMUONSegment(p2->X(),p2->Y(),p1->X(),p1->Y()));
}
}
}
AliMUONContourMaker.cxx:1 AliMUONContourMaker.cxx:2 AliMUONContourMaker.cxx:3 AliMUONContourMaker.cxx:4 AliMUONContourMaker.cxx:5 AliMUONContourMaker.cxx:6 AliMUONContourMaker.cxx:7 AliMUONContourMaker.cxx:8 AliMUONContourMaker.cxx:9 AliMUONContourMaker.cxx:10 AliMUONContourMaker.cxx:11 AliMUONContourMaker.cxx:12 AliMUONContourMaker.cxx:13 AliMUONContourMaker.cxx:14 AliMUONContourMaker.cxx:15 AliMUONContourMaker.cxx:16 AliMUONContourMaker.cxx:17 AliMUONContourMaker.cxx:18 AliMUONContourMaker.cxx:19 AliMUONContourMaker.cxx:20 AliMUONContourMaker.cxx:21 AliMUONContourMaker.cxx:22 AliMUONContourMaker.cxx:23 AliMUONContourMaker.cxx:24 AliMUONContourMaker.cxx:25 AliMUONContourMaker.cxx:26 AliMUONContourMaker.cxx:27 AliMUONContourMaker.cxx:28 AliMUONContourMaker.cxx:29 AliMUONContourMaker.cxx:30 AliMUONContourMaker.cxx:31 AliMUONContourMaker.cxx:32 AliMUONContourMaker.cxx:33 AliMUONContourMaker.cxx:34 AliMUONContourMaker.cxx:35 AliMUONContourMaker.cxx:36 AliMUONContourMaker.cxx:37 AliMUONContourMaker.cxx:38 AliMUONContourMaker.cxx:39 AliMUONContourMaker.cxx:40 AliMUONContourMaker.cxx:41 AliMUONContourMaker.cxx:42 AliMUONContourMaker.cxx:43 AliMUONContourMaker.cxx:44 AliMUONContourMaker.cxx:45 AliMUONContourMaker.cxx:46 AliMUONContourMaker.cxx:47 AliMUONContourMaker.cxx:48 AliMUONContourMaker.cxx:49 AliMUONContourMaker.cxx:50 AliMUONContourMaker.cxx:51 AliMUONContourMaker.cxx:52 AliMUONContourMaker.cxx:53 AliMUONContourMaker.cxx:54 AliMUONContourMaker.cxx:55 AliMUONContourMaker.cxx:56 AliMUONContourMaker.cxx:57 AliMUONContourMaker.cxx:58 AliMUONContourMaker.cxx:59 AliMUONContourMaker.cxx:60 AliMUONContourMaker.cxx:61 AliMUONContourMaker.cxx:62 AliMUONContourMaker.cxx:63 AliMUONContourMaker.cxx:64 AliMUONContourMaker.cxx:65 AliMUONContourMaker.cxx:66 AliMUONContourMaker.cxx:67 AliMUONContourMaker.cxx:68 AliMUONContourMaker.cxx:69 AliMUONContourMaker.cxx:70 AliMUONContourMaker.cxx:71 AliMUONContourMaker.cxx:72 AliMUONContourMaker.cxx:73 AliMUONContourMaker.cxx:74 AliMUONContourMaker.cxx:75 AliMUONContourMaker.cxx:76 AliMUONContourMaker.cxx:77 AliMUONContourMaker.cxx:78 AliMUONContourMaker.cxx:79 AliMUONContourMaker.cxx:80 AliMUONContourMaker.cxx:81 AliMUONContourMaker.cxx:82 AliMUONContourMaker.cxx:83 AliMUONContourMaker.cxx:84 AliMUONContourMaker.cxx:85 AliMUONContourMaker.cxx:86 AliMUONContourMaker.cxx:87 AliMUONContourMaker.cxx:88 AliMUONContourMaker.cxx:89 AliMUONContourMaker.cxx:90 AliMUONContourMaker.cxx:91 AliMUONContourMaker.cxx:92 AliMUONContourMaker.cxx:93 AliMUONContourMaker.cxx:94 AliMUONContourMaker.cxx:95 AliMUONContourMaker.cxx:96 AliMUONContourMaker.cxx:97 AliMUONContourMaker.cxx:98 AliMUONContourMaker.cxx:99 AliMUONContourMaker.cxx:100 AliMUONContourMaker.cxx:101 AliMUONContourMaker.cxx:102 AliMUONContourMaker.cxx:103 AliMUONContourMaker.cxx:104 AliMUONContourMaker.cxx:105 AliMUONContourMaker.cxx:106 AliMUONContourMaker.cxx:107 AliMUONContourMaker.cxx:108 AliMUONContourMaker.cxx:109 AliMUONContourMaker.cxx:110 AliMUONContourMaker.cxx:111 AliMUONContourMaker.cxx:112 AliMUONContourMaker.cxx:113 AliMUONContourMaker.cxx:114 AliMUONContourMaker.cxx:115 AliMUONContourMaker.cxx:116 AliMUONContourMaker.cxx:117 AliMUONContourMaker.cxx:118 AliMUONContourMaker.cxx:119 AliMUONContourMaker.cxx:120 AliMUONContourMaker.cxx:121 AliMUONContourMaker.cxx:122 AliMUONContourMaker.cxx:123 AliMUONContourMaker.cxx:124 AliMUONContourMaker.cxx:125 AliMUONContourMaker.cxx:126 AliMUONContourMaker.cxx:127 AliMUONContourMaker.cxx:128 AliMUONContourMaker.cxx:129 AliMUONContourMaker.cxx:130 AliMUONContourMaker.cxx:131 AliMUONContourMaker.cxx:132 AliMUONContourMaker.cxx:133 AliMUONContourMaker.cxx:134 AliMUONContourMaker.cxx:135 AliMUONContourMaker.cxx:136 AliMUONContourMaker.cxx:137 AliMUONContourMaker.cxx:138 AliMUONContourMaker.cxx:139 AliMUONContourMaker.cxx:140 AliMUONContourMaker.cxx:141 AliMUONContourMaker.cxx:142 AliMUONContourMaker.cxx:143 AliMUONContourMaker.cxx:144 AliMUONContourMaker.cxx:145 AliMUONContourMaker.cxx:146 AliMUONContourMaker.cxx:147 AliMUONContourMaker.cxx:148 AliMUONContourMaker.cxx:149 AliMUONContourMaker.cxx:150 AliMUONContourMaker.cxx:151 AliMUONContourMaker.cxx:152 AliMUONContourMaker.cxx:153 AliMUONContourMaker.cxx:154 AliMUONContourMaker.cxx:155 AliMUONContourMaker.cxx:156 AliMUONContourMaker.cxx:157 AliMUONContourMaker.cxx:158 AliMUONContourMaker.cxx:159 AliMUONContourMaker.cxx:160 AliMUONContourMaker.cxx:161 AliMUONContourMaker.cxx:162 AliMUONContourMaker.cxx:163 AliMUONContourMaker.cxx:164 AliMUONContourMaker.cxx:165 AliMUONContourMaker.cxx:166 AliMUONContourMaker.cxx:167 AliMUONContourMaker.cxx:168 AliMUONContourMaker.cxx:169 AliMUONContourMaker.cxx:170 AliMUONContourMaker.cxx:171 AliMUONContourMaker.cxx:172 AliMUONContourMaker.cxx:173 AliMUONContourMaker.cxx:174 AliMUONContourMaker.cxx:175 AliMUONContourMaker.cxx:176 AliMUONContourMaker.cxx:177 AliMUONContourMaker.cxx:178 AliMUONContourMaker.cxx:179 AliMUONContourMaker.cxx:180 AliMUONContourMaker.cxx:181 AliMUONContourMaker.cxx:182 AliMUONContourMaker.cxx:183 AliMUONContourMaker.cxx:184 AliMUONContourMaker.cxx:185 AliMUONContourMaker.cxx:186 AliMUONContourMaker.cxx:187 AliMUONContourMaker.cxx:188 AliMUONContourMaker.cxx:189 AliMUONContourMaker.cxx:190 AliMUONContourMaker.cxx:191 AliMUONContourMaker.cxx:192 AliMUONContourMaker.cxx:193 AliMUONContourMaker.cxx:194 AliMUONContourMaker.cxx:195 AliMUONContourMaker.cxx:196 AliMUONContourMaker.cxx:197 AliMUONContourMaker.cxx:198 AliMUONContourMaker.cxx:199 AliMUONContourMaker.cxx:200 AliMUONContourMaker.cxx:201 AliMUONContourMaker.cxx:202 AliMUONContourMaker.cxx:203 AliMUONContourMaker.cxx:204 AliMUONContourMaker.cxx:205 AliMUONContourMaker.cxx:206 AliMUONContourMaker.cxx:207 AliMUONContourMaker.cxx:208 AliMUONContourMaker.cxx:209 AliMUONContourMaker.cxx:210 AliMUONContourMaker.cxx:211 AliMUONContourMaker.cxx:212 AliMUONContourMaker.cxx:213 AliMUONContourMaker.cxx:214 AliMUONContourMaker.cxx:215 AliMUONContourMaker.cxx:216 AliMUONContourMaker.cxx:217 AliMUONContourMaker.cxx:218 AliMUONContourMaker.cxx:219 AliMUONContourMaker.cxx:220 AliMUONContourMaker.cxx:221 AliMUONContourMaker.cxx:222 AliMUONContourMaker.cxx:223 AliMUONContourMaker.cxx:224 AliMUONContourMaker.cxx:225 AliMUONContourMaker.cxx:226 AliMUONContourMaker.cxx:227 AliMUONContourMaker.cxx:228 AliMUONContourMaker.cxx:229 AliMUONContourMaker.cxx:230 AliMUONContourMaker.cxx:231 AliMUONContourMaker.cxx:232 AliMUONContourMaker.cxx:233 AliMUONContourMaker.cxx:234 AliMUONContourMaker.cxx:235 AliMUONContourMaker.cxx:236 AliMUONContourMaker.cxx:237 AliMUONContourMaker.cxx:238 AliMUONContourMaker.cxx:239 AliMUONContourMaker.cxx:240 AliMUONContourMaker.cxx:241 AliMUONContourMaker.cxx:242 AliMUONContourMaker.cxx:243 AliMUONContourMaker.cxx:244 AliMUONContourMaker.cxx:245 AliMUONContourMaker.cxx:246 AliMUONContourMaker.cxx:247 AliMUONContourMaker.cxx:248 AliMUONContourMaker.cxx:249 AliMUONContourMaker.cxx:250 AliMUONContourMaker.cxx:251 AliMUONContourMaker.cxx:252 AliMUONContourMaker.cxx:253 AliMUONContourMaker.cxx:254 AliMUONContourMaker.cxx:255 AliMUONContourMaker.cxx:256 AliMUONContourMaker.cxx:257 AliMUONContourMaker.cxx:258 AliMUONContourMaker.cxx:259 AliMUONContourMaker.cxx:260 AliMUONContourMaker.cxx:261 AliMUONContourMaker.cxx:262 AliMUONContourMaker.cxx:263 AliMUONContourMaker.cxx:264 AliMUONContourMaker.cxx:265 AliMUONContourMaker.cxx:266 AliMUONContourMaker.cxx:267 AliMUONContourMaker.cxx:268 AliMUONContourMaker.cxx:269 AliMUONContourMaker.cxx:270 AliMUONContourMaker.cxx:271 AliMUONContourMaker.cxx:272 AliMUONContourMaker.cxx:273 AliMUONContourMaker.cxx:274 AliMUONContourMaker.cxx:275 AliMUONContourMaker.cxx:276 AliMUONContourMaker.cxx:277 AliMUONContourMaker.cxx:278 AliMUONContourMaker.cxx:279 AliMUONContourMaker.cxx:280 AliMUONContourMaker.cxx:281 AliMUONContourMaker.cxx:282 AliMUONContourMaker.cxx:283 AliMUONContourMaker.cxx:284 AliMUONContourMaker.cxx:285 AliMUONContourMaker.cxx:286 AliMUONContourMaker.cxx:287 AliMUONContourMaker.cxx:288 AliMUONContourMaker.cxx:289 AliMUONContourMaker.cxx:290 AliMUONContourMaker.cxx:291 AliMUONContourMaker.cxx:292 AliMUONContourMaker.cxx:293 AliMUONContourMaker.cxx:294 AliMUONContourMaker.cxx:295 AliMUONContourMaker.cxx:296 AliMUONContourMaker.cxx:297 AliMUONContourMaker.cxx:298 AliMUONContourMaker.cxx:299 AliMUONContourMaker.cxx:300 AliMUONContourMaker.cxx:301 AliMUONContourMaker.cxx:302 AliMUONContourMaker.cxx:303 AliMUONContourMaker.cxx:304 AliMUONContourMaker.cxx:305 AliMUONContourMaker.cxx:306 AliMUONContourMaker.cxx:307 AliMUONContourMaker.cxx:308 AliMUONContourMaker.cxx:309 AliMUONContourMaker.cxx:310 AliMUONContourMaker.cxx:311 AliMUONContourMaker.cxx:312 AliMUONContourMaker.cxx:313 AliMUONContourMaker.cxx:314 AliMUONContourMaker.cxx:315 AliMUONContourMaker.cxx:316 AliMUONContourMaker.cxx:317 AliMUONContourMaker.cxx:318 AliMUONContourMaker.cxx:319 AliMUONContourMaker.cxx:320 AliMUONContourMaker.cxx:321 AliMUONContourMaker.cxx:322 AliMUONContourMaker.cxx:323 AliMUONContourMaker.cxx:324 AliMUONContourMaker.cxx:325 AliMUONContourMaker.cxx:326 AliMUONContourMaker.cxx:327 AliMUONContourMaker.cxx:328 AliMUONContourMaker.cxx:329 AliMUONContourMaker.cxx:330 AliMUONContourMaker.cxx:331 AliMUONContourMaker.cxx:332 AliMUONContourMaker.cxx:333 AliMUONContourMaker.cxx:334 AliMUONContourMaker.cxx:335 AliMUONContourMaker.cxx:336 AliMUONContourMaker.cxx:337 AliMUONContourMaker.cxx:338 AliMUONContourMaker.cxx:339 AliMUONContourMaker.cxx:340 AliMUONContourMaker.cxx:341 AliMUONContourMaker.cxx:342 AliMUONContourMaker.cxx:343 AliMUONContourMaker.cxx:344 AliMUONContourMaker.cxx:345 AliMUONContourMaker.cxx:346 AliMUONContourMaker.cxx:347 AliMUONContourMaker.cxx:348 AliMUONContourMaker.cxx:349 AliMUONContourMaker.cxx:350 AliMUONContourMaker.cxx:351 AliMUONContourMaker.cxx:352 AliMUONContourMaker.cxx:353 AliMUONContourMaker.cxx:354 AliMUONContourMaker.cxx:355 AliMUONContourMaker.cxx:356 AliMUONContourMaker.cxx:357 AliMUONContourMaker.cxx:358 AliMUONContourMaker.cxx:359 AliMUONContourMaker.cxx:360 AliMUONContourMaker.cxx:361 AliMUONContourMaker.cxx:362 AliMUONContourMaker.cxx:363 AliMUONContourMaker.cxx:364 AliMUONContourMaker.cxx:365 AliMUONContourMaker.cxx:366 AliMUONContourMaker.cxx:367 AliMUONContourMaker.cxx:368 AliMUONContourMaker.cxx:369 AliMUONContourMaker.cxx:370 AliMUONContourMaker.cxx:371 AliMUONContourMaker.cxx:372 AliMUONContourMaker.cxx:373 AliMUONContourMaker.cxx:374 AliMUONContourMaker.cxx:375 AliMUONContourMaker.cxx:376 AliMUONContourMaker.cxx:377 AliMUONContourMaker.cxx:378 AliMUONContourMaker.cxx:379 AliMUONContourMaker.cxx:380 AliMUONContourMaker.cxx:381 AliMUONContourMaker.cxx:382 AliMUONContourMaker.cxx:383 AliMUONContourMaker.cxx:384 AliMUONContourMaker.cxx:385 AliMUONContourMaker.cxx:386 AliMUONContourMaker.cxx:387 AliMUONContourMaker.cxx:388 AliMUONContourMaker.cxx:389 AliMUONContourMaker.cxx:390 AliMUONContourMaker.cxx:391 AliMUONContourMaker.cxx:392 AliMUONContourMaker.cxx:393 AliMUONContourMaker.cxx:394 AliMUONContourMaker.cxx:395 AliMUONContourMaker.cxx:396 AliMUONContourMaker.cxx:397 AliMUONContourMaker.cxx:398 AliMUONContourMaker.cxx:399 AliMUONContourMaker.cxx:400 AliMUONContourMaker.cxx:401 AliMUONContourMaker.cxx:402 AliMUONContourMaker.cxx:403 AliMUONContourMaker.cxx:404 AliMUONContourMaker.cxx:405 AliMUONContourMaker.cxx:406 AliMUONContourMaker.cxx:407 AliMUONContourMaker.cxx:408 AliMUONContourMaker.cxx:409 AliMUONContourMaker.cxx:410 AliMUONContourMaker.cxx:411 AliMUONContourMaker.cxx:412 AliMUONContourMaker.cxx:413 AliMUONContourMaker.cxx:414 AliMUONContourMaker.cxx:415 AliMUONContourMaker.cxx:416 AliMUONContourMaker.cxx:417 AliMUONContourMaker.cxx:418 AliMUONContourMaker.cxx:419 AliMUONContourMaker.cxx:420 AliMUONContourMaker.cxx:421 AliMUONContourMaker.cxx:422 AliMUONContourMaker.cxx:423 AliMUONContourMaker.cxx:424 AliMUONContourMaker.cxx:425 AliMUONContourMaker.cxx:426 AliMUONContourMaker.cxx:427 AliMUONContourMaker.cxx:428 AliMUONContourMaker.cxx:429 AliMUONContourMaker.cxx:430 AliMUONContourMaker.cxx:431 AliMUONContourMaker.cxx:432 AliMUONContourMaker.cxx:433 AliMUONContourMaker.cxx:434 AliMUONContourMaker.cxx:435 AliMUONContourMaker.cxx:436 AliMUONContourMaker.cxx:437 AliMUONContourMaker.cxx:438 AliMUONContourMaker.cxx:439 AliMUONContourMaker.cxx:440 AliMUONContourMaker.cxx:441 AliMUONContourMaker.cxx:442 AliMUONContourMaker.cxx:443 AliMUONContourMaker.cxx:444 AliMUONContourMaker.cxx:445 AliMUONContourMaker.cxx:446 AliMUONContourMaker.cxx:447 AliMUONContourMaker.cxx:448 AliMUONContourMaker.cxx:449 AliMUONContourMaker.cxx:450 AliMUONContourMaker.cxx:451 AliMUONContourMaker.cxx:452 AliMUONContourMaker.cxx:453 AliMUONContourMaker.cxx:454 AliMUONContourMaker.cxx:455