// $Id$
// $MpId: testSectorAreaIterator.C,v 1.5 2005/10/28 15:37:12 ivana Exp $
//
// Test macro for iterating over the whole sector
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliMpStation12Type.h"
#include "AliMpPlaneType.h"
#include "AliMpDataProcessor.h"
#include "AliMpDataMap.h"
#include "AliMpDataStreams.h"
#include "AliMpSector.h"
#include "AliMpSectorSegmentation.h"
#include "AliMpSectorReader.h"
#include "AliMpArea.h"
#include "AliMpVPadIterator.h"
#include "AliMpVPainter.h"
#include <Riostream.h>
#include <TCanvas.h>
#include <TMarker.h>
#include <TH2.h>
#include <TStopwatch.h>
#endif
class AliMpVPadIterator;
TCanvas* CreateTCanvas(const TString& name, const TString& title,
AliMq::Station12Type station, AliMp::PlaneType plane)
{
TString newName(name);
TString newTitle(title);
TString unique = AliMq::Station12TypeName(station) + AliMp::PlaneTypeName(plane);
newName += unique;
newTitle += unique;
return new TCanvas(newName.Data(), newTitle.Data());
}
void MarkPads(AliMpVPadIterator& it, Double_t xmax, Double_t ymax,
AliMq::Station12Type station, AliMp::PlaneType plane,
Bool_t print = kTRUE)
{
// Marks pads according their position.
// Fills histogram with pad indices.
// Measures time that takes processing of full quadrant
// ---
Int_t num=0;
TH2C* histo = new TH2C("pads", "pads", 201, 0, 200, 251, 0, 250);
TStopwatch timer;
timer.Start();
for (it.First(); ! it.IsDone(); it.Next()){
if (print) cout << endl
<< setw(5) << ++num
<< " " << it.CurrentItem() << endl;
// mark pads positions
Double_t posix = it.CurrentItem().GetPositionX();
Double_t posiy = it.CurrentItem().GetPositionY();
TMarker* marker = new TMarker( posix/xmax, posiy/ymax, 2);
marker->Draw();
// fill pads indices in the histogram
histo->Fill(it.CurrentItem().GetIx(), it.CurrentItem().GetIy());
}
TCanvas* canv2 = CreateTCanvas("canv2 ", " ", station, plane);
canv2->cd();
//histo->SetMinimum(1.5);
histo->Draw("box");
timer.Stop();
//timer.Print();
}
void testSectorAreaIterator(AliMq::Station12Type station, AliMp::PlaneType plane)
{
AliMpDataProcessor mp;
AliMpDataMap* dataMap = mp.CreateDataMap("data");
AliMpDataStreams dataStreams(dataMap);
AliMpSectorReader r(dataStreams, station, plane);
AliMpSector* sector = r.BuildSector();
AliMpSectorSegmentation segmentation(sector);
AliMpArea area;
if ( station == AliMq::kStation1 )
area = AliMpArea(45.,45.,45.,45.);
else
area = AliMpArea(60.,60.,60.,60.);
AliMpVPadIterator* iter = segmentation.CreateIterator(area);
CreateTCanvas("Graph ", " ", station, plane);
AliMpVPainter::CreatePainter(sector)->Draw("ZSSMP");
TCanvas* canv = CreateTCanvas("canv ", " ", station, plane);
canv->Range(-1,-1,1,1);
MarkPads(*iter, TMath::Abs(area.GetPositionX())+area.GetDimensionX(),
TMath::Abs(area.GetPositionY())+area.GetDimensionY(),
station, plane, kTRUE);
}
void testSt12SectorAreaIterator()
{
AliMq::Station12Type station[2] = { AliMq::kStation1, AliMq::kStation2 };
AliMp::PlaneType plane[2] = { AliMp::kBendingPlane, AliMp::kNonBendingPlane };
for ( Int_t is = 0; is < 2; is++ ) {
for ( Int_t ip = 0; ip < 2; ip++ ) {
cout << "Running testSectorAreaIterator for "
<< AliMq::Station12TypeName(station[is]) << " "
<< AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
testSectorAreaIterator(station[is], plane[ip]);
cout << "... end running " << endl << endl;
}
}
}
testSt12SectorAreaIterator.C:1 testSt12SectorAreaIterator.C:2 testSt12SectorAreaIterator.C:3 testSt12SectorAreaIterator.C:4 testSt12SectorAreaIterator.C:5 testSt12SectorAreaIterator.C:6 testSt12SectorAreaIterator.C:7 testSt12SectorAreaIterator.C:8 testSt12SectorAreaIterator.C:9 testSt12SectorAreaIterator.C:10 testSt12SectorAreaIterator.C:11 testSt12SectorAreaIterator.C:12 testSt12SectorAreaIterator.C:13 testSt12SectorAreaIterator.C:14 testSt12SectorAreaIterator.C:15 testSt12SectorAreaIterator.C:16 testSt12SectorAreaIterator.C:17 testSt12SectorAreaIterator.C:18 testSt12SectorAreaIterator.C:19 testSt12SectorAreaIterator.C:20 testSt12SectorAreaIterator.C:21 testSt12SectorAreaIterator.C:22 testSt12SectorAreaIterator.C:23 testSt12SectorAreaIterator.C:24 testSt12SectorAreaIterator.C:25 testSt12SectorAreaIterator.C:26 testSt12SectorAreaIterator.C:27 testSt12SectorAreaIterator.C:28 testSt12SectorAreaIterator.C:29 testSt12SectorAreaIterator.C:30 testSt12SectorAreaIterator.C:31 testSt12SectorAreaIterator.C:32 testSt12SectorAreaIterator.C:33 testSt12SectorAreaIterator.C:34 testSt12SectorAreaIterator.C:35 testSt12SectorAreaIterator.C:36 testSt12SectorAreaIterator.C:37 testSt12SectorAreaIterator.C:38 testSt12SectorAreaIterator.C:39 testSt12SectorAreaIterator.C:40 testSt12SectorAreaIterator.C:41 testSt12SectorAreaIterator.C:42 testSt12SectorAreaIterator.C:43 testSt12SectorAreaIterator.C:44 testSt12SectorAreaIterator.C:45 testSt12SectorAreaIterator.C:46 testSt12SectorAreaIterator.C:47 testSt12SectorAreaIterator.C:48 testSt12SectorAreaIterator.C:49 testSt12SectorAreaIterator.C:50 testSt12SectorAreaIterator.C:51 testSt12SectorAreaIterator.C:52 testSt12SectorAreaIterator.C:53 testSt12SectorAreaIterator.C:54 testSt12SectorAreaIterator.C:55 testSt12SectorAreaIterator.C:56 testSt12SectorAreaIterator.C:57 testSt12SectorAreaIterator.C:58 testSt12SectorAreaIterator.C:59 testSt12SectorAreaIterator.C:60 testSt12SectorAreaIterator.C:61 testSt12SectorAreaIterator.C:62 testSt12SectorAreaIterator.C:63 testSt12SectorAreaIterator.C:64 testSt12SectorAreaIterator.C:65 testSt12SectorAreaIterator.C:66 testSt12SectorAreaIterator.C:67 testSt12SectorAreaIterator.C:68 testSt12SectorAreaIterator.C:69 testSt12SectorAreaIterator.C:70 testSt12SectorAreaIterator.C:71 testSt12SectorAreaIterator.C:72 testSt12SectorAreaIterator.C:73 testSt12SectorAreaIterator.C:74 testSt12SectorAreaIterator.C:75 testSt12SectorAreaIterator.C:76 testSt12SectorAreaIterator.C:77 testSt12SectorAreaIterator.C:78 testSt12SectorAreaIterator.C:79 testSt12SectorAreaIterator.C:80 testSt12SectorAreaIterator.C:81 testSt12SectorAreaIterator.C:82 testSt12SectorAreaIterator.C:83 testSt12SectorAreaIterator.C:84 testSt12SectorAreaIterator.C:85 testSt12SectorAreaIterator.C:86 testSt12SectorAreaIterator.C:87 testSt12SectorAreaIterator.C:88 testSt12SectorAreaIterator.C:89 testSt12SectorAreaIterator.C:90 testSt12SectorAreaIterator.C:91 testSt12SectorAreaIterator.C:92 testSt12SectorAreaIterator.C:93 testSt12SectorAreaIterator.C:94 testSt12SectorAreaIterator.C:95 testSt12SectorAreaIterator.C:96 testSt12SectorAreaIterator.C:97 testSt12SectorAreaIterator.C:98 testSt12SectorAreaIterator.C:99 testSt12SectorAreaIterator.C:100 testSt12SectorAreaIterator.C:101 testSt12SectorAreaIterator.C:102 testSt12SectorAreaIterator.C:103 testSt12SectorAreaIterator.C:104 testSt12SectorAreaIterator.C:105 testSt12SectorAreaIterator.C:106 testSt12SectorAreaIterator.C:107 testSt12SectorAreaIterator.C:108 testSt12SectorAreaIterator.C:109 testSt12SectorAreaIterator.C:110 testSt12SectorAreaIterator.C:111 testSt12SectorAreaIterator.C:112 testSt12SectorAreaIterator.C:113 testSt12SectorAreaIterator.C:114 testSt12SectorAreaIterator.C:115 testSt12SectorAreaIterator.C:116 testSt12SectorAreaIterator.C:117 testSt12SectorAreaIterator.C:118 testSt12SectorAreaIterator.C:119 testSt12SectorAreaIterator.C:120 testSt12SectorAreaIterator.C:121 testSt12SectorAreaIterator.C:122 testSt12SectorAreaIterator.C:123 testSt12SectorAreaIterator.C:124 testSt12SectorAreaIterator.C:125 testSt12SectorAreaIterator.C:126 testSt12SectorAreaIterator.C:127 testSt12SectorAreaIterator.C:128