// $Id$
// $MpId: testAnyPadIterators.C,v 1.17 2006/03/15 13:07:07 ivana Exp $
//
// Test macro for reading sector, and iterate over it
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliMpStation12Type.h"
#include "AliMpPlaneType.h"
#include "AliMpDataProcessor.h"
#include "AliMpDataMap.h"
#include "AliMpDataStreams.h"
#include "AliMpSector.h"
#include "AliMpSectorReader.h"
#include "AliMpSectorSegmentation.h"
#include "AliMpMotifType.h"
#include "AliMpMotifMap.h"
#include "AliMpVMotif.h"
#include "AliMpVPadIterator.h"
#include "AliMpSectorPadIterator.h"
#include "AliMpMotifPositionPadIterator.h"
#include "AliMpConstants.h"
#include "AliMpEncodePair.h"
#include <Riostream.h>
#include <TCanvas.h>
#include <TMarker.h>
#include <TH2.h>
#endif
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());
}
class AliMpVPadIterator;
void MarkPads(AliMpVPadIterator& it,Int_t xmax,Int_t ymax,Bool_t print=kTRUE)
{
// This function works with pad iterator, no matter which kind of iterator
// it is. So it can be used for drawing all pad of the sector (AliMpSectorPadIterator)
// or all pad around a given pad (AliMpNeighboursPadIterator), as with pads
// of a given motif type (AliMpMotifTypePadIterator)
Int_t num=0;
for (it.First(); ! it.IsDone(); it.Next()){
Long_t indices = it.CurrentItem().GetIndices();
if (print) {
cout<<"Iterator number "<< num << " at ";
AliMp::PairPut(cout, indices) << endl;
}
num++;
TMarker* marker = new TMarker( (Double_t)AliMp::PairFirst(indices) /xmax,
(Double_t)AliMp::PairSecond(indices)/ymax,
2);
marker->Draw();
}
}
void testAnyPadIterators(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);
TCanvas* canv = CreateTCanvas("canv ", "", station, plane);
canv->Divide(2,2);
canv->cd(1);
AliMpSectorPadIterator its(sector);
MarkPads(its, 150, 250, kFALSE);
/*
canv->cd(2);
AliMpVMotif* motif = sector->FindMotif(30,3);
if ( motif ) {
AliMpMotifType* motifType = motif->GetMotifType();
AliMpMotifTypePadIterator itm(motifType);
MarkPads(itm,15,15);
cout << "______________ MotifType " << motifType->GetID()
<< "__________________________" << endl;
}
else
cout << "No motif found at given position..." << endl;
*/
canv->cd(4);
Int_t motifPosId = 20 | AliMpConstants::ManuMask(plane);
if ( plane == AliMp::kNonBendingPlane ) motifPosId = 19;
AliMpMotifPosition* motifPos = sector->GetMotifMap()->FindMotifPosition(motifPosId);
if ( motifPos ){
AliMpMotifPositionPadIterator itmp(motifPos);
MarkPads(itmp,15,15);
cout<<"_________________ MotifPosition _________________________"<<endl;
}
}
void testSt12AnyPadIterators()
{
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 testAnyPadIterators for "
<< AliMq::Station12TypeName(station[is]) << " "
<< AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
testAnyPadIterators(station[is], plane[ip]);
cout << "... end running " << endl << endl;
}
}
}
testSt12AnyPadIterators.C:1 testSt12AnyPadIterators.C:2 testSt12AnyPadIterators.C:3 testSt12AnyPadIterators.C:4 testSt12AnyPadIterators.C:5 testSt12AnyPadIterators.C:6 testSt12AnyPadIterators.C:7 testSt12AnyPadIterators.C:8 testSt12AnyPadIterators.C:9 testSt12AnyPadIterators.C:10 testSt12AnyPadIterators.C:11 testSt12AnyPadIterators.C:12 testSt12AnyPadIterators.C:13 testSt12AnyPadIterators.C:14 testSt12AnyPadIterators.C:15 testSt12AnyPadIterators.C:16 testSt12AnyPadIterators.C:17 testSt12AnyPadIterators.C:18 testSt12AnyPadIterators.C:19 testSt12AnyPadIterators.C:20 testSt12AnyPadIterators.C:21 testSt12AnyPadIterators.C:22 testSt12AnyPadIterators.C:23 testSt12AnyPadIterators.C:24 testSt12AnyPadIterators.C:25 testSt12AnyPadIterators.C:26 testSt12AnyPadIterators.C:27 testSt12AnyPadIterators.C:28 testSt12AnyPadIterators.C:29 testSt12AnyPadIterators.C:30 testSt12AnyPadIterators.C:31 testSt12AnyPadIterators.C:32 testSt12AnyPadIterators.C:33 testSt12AnyPadIterators.C:34 testSt12AnyPadIterators.C:35 testSt12AnyPadIterators.C:36 testSt12AnyPadIterators.C:37 testSt12AnyPadIterators.C:38 testSt12AnyPadIterators.C:39 testSt12AnyPadIterators.C:40 testSt12AnyPadIterators.C:41 testSt12AnyPadIterators.C:42 testSt12AnyPadIterators.C:43 testSt12AnyPadIterators.C:44 testSt12AnyPadIterators.C:45 testSt12AnyPadIterators.C:46 testSt12AnyPadIterators.C:47 testSt12AnyPadIterators.C:48 testSt12AnyPadIterators.C:49 testSt12AnyPadIterators.C:50 testSt12AnyPadIterators.C:51 testSt12AnyPadIterators.C:52 testSt12AnyPadIterators.C:53 testSt12AnyPadIterators.C:54 testSt12AnyPadIterators.C:55 testSt12AnyPadIterators.C:56 testSt12AnyPadIterators.C:57 testSt12AnyPadIterators.C:58 testSt12AnyPadIterators.C:59 testSt12AnyPadIterators.C:60 testSt12AnyPadIterators.C:61 testSt12AnyPadIterators.C:62 testSt12AnyPadIterators.C:63 testSt12AnyPadIterators.C:64 testSt12AnyPadIterators.C:65 testSt12AnyPadIterators.C:66 testSt12AnyPadIterators.C:67 testSt12AnyPadIterators.C:68 testSt12AnyPadIterators.C:69 testSt12AnyPadIterators.C:70 testSt12AnyPadIterators.C:71 testSt12AnyPadIterators.C:72 testSt12AnyPadIterators.C:73 testSt12AnyPadIterators.C:74 testSt12AnyPadIterators.C:75 testSt12AnyPadIterators.C:76 testSt12AnyPadIterators.C:77 testSt12AnyPadIterators.C:78 testSt12AnyPadIterators.C:79 testSt12AnyPadIterators.C:80 testSt12AnyPadIterators.C:81 testSt12AnyPadIterators.C:82 testSt12AnyPadIterators.C:83 testSt12AnyPadIterators.C:84 testSt12AnyPadIterators.C:85 testSt12AnyPadIterators.C:86 testSt12AnyPadIterators.C:87 testSt12AnyPadIterators.C:88 testSt12AnyPadIterators.C:89 testSt12AnyPadIterators.C:90 testSt12AnyPadIterators.C:91 testSt12AnyPadIterators.C:92 testSt12AnyPadIterators.C:93 testSt12AnyPadIterators.C:94 testSt12AnyPadIterators.C:95 testSt12AnyPadIterators.C:96 testSt12AnyPadIterators.C:97 testSt12AnyPadIterators.C:98 testSt12AnyPadIterators.C:99 testSt12AnyPadIterators.C:100 testSt12AnyPadIterators.C:101 testSt12AnyPadIterators.C:102 testSt12AnyPadIterators.C:103 testSt12AnyPadIterators.C:104 testSt12AnyPadIterators.C:105 testSt12AnyPadIterators.C:106 testSt12AnyPadIterators.C:107 testSt12AnyPadIterators.C:108 testSt12AnyPadIterators.C:109 testSt12AnyPadIterators.C:110 testSt12AnyPadIterators.C:111 testSt12AnyPadIterators.C:112 testSt12AnyPadIterators.C:113 testSt12AnyPadIterators.C:114 testSt12AnyPadIterators.C:115 testSt12AnyPadIterators.C:116 testSt12AnyPadIterators.C:117 testSt12AnyPadIterators.C:118 testSt12AnyPadIterators.C:119 testSt12AnyPadIterators.C:120 testSt12AnyPadIterators.C:121 testSt12AnyPadIterators.C:122 testSt12AnyPadIterators.C:123 testSt12AnyPadIterators.C:124 testSt12AnyPadIterators.C:125 testSt12AnyPadIterators.C:126