f7f593b764d7cd269000deccb75be4c555f3d39a
[u/mrichter/AliRoot.git] / MUON / mapping / macros / testSectorAreaIterator.C
1 // $Id$
2 // $MpId: testSectorAreaIterator.C,v 1.3 2005/08/24 08:53:27 ivana Exp $
3 //
4 // Test macro for iterating over the whole sector
5
6 #include <iomanip>
7
8 class AliMpVPadIterator;
9
10 void MarkPads(AliMpVPadIterator& it, Double_t xmax, Double_t ymax, 
11               Bool_t print = kTRUE)
12 {
13 // Marks pads according their position.
14 // Fills histogram with pad indices.
15 // Measures time that takes processing of full quadrant 
16 // ---
17
18   Int_t num=0;
19
20   TH2C* histo = new TH2C("pads", "pads", 201, 0, 200, 251, 0, 250); 
21
22   TStopwatch timer;
23   timer.Start();  
24
25   for (it.First(); ! it.IsDone(); it.Next()){
26    
27     if (print) cout << endl 
28                     << setw(5) << ++num 
29                     << " " << it.CurrentItem() << endl;   
30     
31     // mark pads positions
32     TVector2 posi = it.CurrentItem().Position();
33     TMarker* marker = new TMarker( posi.X()/xmax, posi.Y()/ymax, 2);
34     marker->Draw();
35
36     // fill pads indices in the histogram
37     histo->Fill(it.CurrentItem().GetIndices().GetFirst(),
38                 it.CurrentItem().GetIndices().GetSecond());             
39   }
40   
41   TCanvas *canv2 = new TCanvas("canv2");
42   canv2->cd();
43   //histo->SetMinimum(1.5);
44   histo->Draw("box");
45
46   timer.Stop();
47   //timer.Print();
48 }
49
50 void testSectorAreaIterator(AliMpStationType station = kStation1,
51                             AliMpPlaneType planeType = kBendingPlane)
52 {
53   AliMpSectorReader reader(station, planeType);  
54   AliMpSector* sector = reader.BuildSector();
55   AliMpSectorSegmentation segmentation(sector);
56
57   AliMpArea area;
58   if ( station == kStation1 )
59     area = AliMpArea(TVector2(450.,450.),TVector2(450.,450.));
60   else   
61     area = AliMpArea(TVector2(600.,600.),TVector2(600.,600.));
62   AliMpVPadIterator* iter = segmentation.CreateIterator(area);
63
64   TCanvas* graph = new TCanvas("Graph");
65   AliMpVPainter::CreatePainter(sector)->Draw("ZSSMP");
66
67   TCanvas *canv = new TCanvas("canv");
68   canv->Range(-1,-1,1,1);
69   MarkPads(*iter, TMath::Abs(area.Position().X())+area.Dimensions().X(),
70                   TMath::Abs(area.Position().Y())+area.Dimensions().Y(), kTRUE);
71 }