2 // $MpId: testAllIndices.C,v 1.7 2005/08/24 08:53:27 ivana Exp $
4 // Test macro for testing which pad is seen as "existing" by AliMpSector.
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 "AliMpVPainter.h"
18 #include "AliMpVRowSegment.h"
19 #include "AliMpMotifMap.h"
20 #include "AliMpMotifPosition.h"
21 #include "AliMpMotifType.h"
23 #include <Riostream.h>
29 void testAllIndices(AliMq::Station12Type station, AliMp::PlaneType plane)
31 AliMpDataProcessor mp;
32 AliMpDataMap* dataMap = mp.CreateDataMap("data");
33 AliMpDataStreams dataStreams(dataMap);
35 AliMpSectorReader r(dataStreams, station, plane);
37 AliMpSector *sector=r.BuildSector();
38 AliMpSectorSegmentation segmentation(sector);
39 AliMpVPainter* painter = AliMpVPainter::CreatePainter(sector);
41 TCanvas* c1 = new TCanvas("view",
42 "MSectorPainter::Draw() output (view per pad)");
43 painter->Draw("ZSSMP");
46 Int_t maxPadIndexX = segmentation.MaxPadIndexX();
47 Int_t maxPadIndexY = segmentation.MaxPadIndexY();
49 // Define histogram limits
50 Int_t nx = (maxPadIndexX/10 + 1)*10;
51 Int_t ny = (maxPadIndexY/10 + 1)*10;
52 TH2C* histo = new TH2C("histo","Existing pads",
53 nx, -0.5, nx-0.5, ny, -0.5, ny-0.5);
57 if (station == AliMq::kStation2) {
61 TH2F* histo2 = new TH2F("histo2","Existing positions",
62 nx2, 0, nx2*2, ny2, 0, ny2*2);
65 TCanvas* c2 = new TCanvas("c2","Only existing pads are filled");
66 TCanvas* c3 = new TCanvas("c3","Positions");
68 for ( Int_t irow=0; irow<sector->GetNofRows(); irow++ ) {
69 AliMpRow* row = sector->GetRow(irow);
71 for ( Int_t iseg=0; iseg<row->GetNofRowSegments(); iseg++ ) {
72 AliMpVRowSegment* seg = row->GetRowSegment(iseg);
74 for ( Int_t imot=0; imot<seg->GetNofMotifs(); imot++) {
75 AliMpMotifPosition* motifPos
76 = sector->GetMotifMap()->FindMotifPosition(seg->GetMotifPositionId(imot));
78 for ( Int_t gassNum=0; gassNum<64; gassNum++ ) {
79 if (motifPos->GetMotif()->GetMotifType()->FindConnectionByGassiNum(gassNum)){
81 AliMpPad pad = segmentation.PadByLocation(AliMpIntPair(motifPos->GetID(),gassNum));
82 if (pad != AliMpPad::Invalid()) {
83 histo->Fill(pad.GetIndices().GetFirst(),
84 pad.GetIndices().GetSecond());
85 histo2->Fill(pad.Position().X(),
101 AliMq::Station12Type station[2] = { AliMq::kStation1, AliMq::kStation2 };
102 AliMp::PlaneType plane[2] = { AliMp::kBendingPlane, AliMp::kNonBendingPlane };
104 for ( Int_t is = 0; is < 2; is++ ) {
105 for ( Int_t ip = 0; ip < 2; ip++ ) {
107 cout << "Running testAllIndices for "
108 << AliMq::Station12TypeName(station[is]) << " "
109 << AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
111 testAllIndices(station[is], plane[ip]);
113 cout << "... end running " << endl << endl;