2 // $MpId: testAnyPadIterators.C,v 1.17 2006/03/15 13:07:07 ivana Exp $
4 // Test macro for reading sector, and iterate over it
6 #if !defined(__CINT__) || defined(__MAKECINT__)
8 #include "AliMpStation12Type.h"
9 #include "AliMpPlaneType.h"
10 #include "AliMpDataProcessor.h"
11 #include "AliMpDataMap.h"
12 #include "AliMpDataStreams.h"
13 #include "AliMpSector.h"
14 #include "AliMpSectorReader.h"
15 #include "AliMpSectorSegmentation.h"
16 #include "AliMpMotifType.h"
17 #include "AliMpMotifMap.h"
18 #include "AliMpVMotif.h"
19 #include "AliMpVPadIterator.h"
20 #include "AliMpSectorPadIterator.h"
21 #include "AliMpNeighboursPadIterator.h"
22 #include "AliMpMotifPositionPadIterator.h"
23 #include "AliMpConstants.h"
25 #include <Riostream.h>
32 class AliMpVPadIterator;
33 void MarkPads(AliMpVPadIterator& it,Int_t xmax,Int_t ymax,Bool_t print=kTRUE)
35 // This function works with pad iterator, no matter which kind of iterator
36 // it is. So it can be used for drawing all pad of the sector (AliMpSectorPadIterator)
37 // or all pad around a given pad (AliMpNeighboursPadIterator), as with pads
38 // of a given motif type (AliMpMotifTypePadIterator)
42 for (it.First(); ! it.IsDone(); it.Next()){
43 AliMpIntPair indices = it.CurrentItem().GetIndices();
44 if (print) cout<<"Iterator number "<< num << " at "<< indices <<endl;
46 TMarker* marker = new TMarker( (Double_t)indices.GetFirst() /xmax,
47 (Double_t)indices.GetSecond()/ymax,
53 void testAnyPadIterators(AliMq::Station12Type station, AliMp::PlaneType plane,
54 Int_t i=50, Int_t j=50)
56 AliMpDataProcessor mp;
57 AliMpDataMap* dataMap = mp.CreateDataMap("data");
58 AliMpDataStreams dataStreams(dataMap);
60 AliMpSectorReader r(dataStreams, station, plane);
61 AliMpSector* sector = r.BuildSector();
62 AliMpSectorSegmentation segmentation(sector);
64 TCanvas *canv = new TCanvas("canv");
68 AliMpSectorPadIterator its(sector);
69 MarkPads(its, 150, 250, kFALSE);
72 AliMpVMotif* motif = sector->FindMotif(TVector2(30,3));
74 AliMpMotifType* motifType = motif->GetMotifType();
75 AliMpMotifTypePadIterator itm(motifType);
77 cout << "______________ MotifType " << motifType->GetID()
78 << "__________________________" << endl;
81 cout << "No motif found at given position..." << endl;
84 AliMpPad pad = segmentation.PadByIndices(AliMpIntPair(i,j));
85 AliMpNeighboursPadIterator itn(&segmentation,pad);
86 MarkPads(itn,i+8,j+8);
87 cout<<"________________ Neighbours __________________________"<<endl;
90 Int_t motifPosId = 20 | AliMpConstants::ManuMask(plane);
91 if ( plane == AliMp::kNonBendingPlane ) motifPosId = 19;
92 AliMpMotifPosition* motifPos = sector->GetMotifMap()->FindMotifPosition(motifPosId);
94 AliMpMotifPositionPadIterator itmp(motifPos);
96 cout<<"_________________ MotifPosition _________________________"<<endl;
100 void testAnyPadIterators()
102 AliMq::Station12Type station[2] = { AliMq::kStation1, AliMq::kStation2 };
103 AliMp::PlaneType plane[2] = { AliMp::kBendingPlane, AliMp::kNonBendingPlane };
105 for ( Int_t is = 0; is < 2; is++ ) {
106 for ( Int_t ip = 0; ip < 2; ip++ ) {
108 cout << "Running testAnyPadIterators for "
109 << AliMq::Station12TypeName(station[is]) << " "
110 << AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
112 testAnyPadIterators(station[is], plane[ip]);
114 cout << "... end running " << endl << endl;