// $Id$
// $MpId: testExistingPads.C,v 1.12 2005/10/28 15:36:07 ivana Exp $
//
// Test macro for testing which pad is seen as "existing" by
// by AliMpSectorSegmentation and AliMpFastSegmentation
// To run macro:
// root [0] .L testExistingPads.C+
// root [1] testExistingPads();
#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 "AliMpFastSegmentation.h"
#include "AliMpArea.h"
#include "AliMpVPadIterator.h"
#include "AliMpVPainter.h"
#include <Riostream.h>
#include <TCanvas.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());
}
void testExistingPads(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 = new AliMpSectorSegmentation(sector);
AliMpVPainter* painter = AliMpVPainter::CreatePainter(sector);
TCanvas* c1 = CreateTCanvas("view ",
"AliMpSectorPainter::Draw() output (view per pad) ",
station, plane);
painter->Draw("ZSSMP");
c1->Update();
Int_t maxPadIndexX = segmentation->MaxPadIndexX();
Int_t maxPadIndexY = segmentation->MaxPadIndexY();
// Define histogram limits
Int_t nx = (maxPadIndexX/10 + 1)*10;
Int_t ny = (maxPadIndexY/10 + 1)*10;
TH2C* histo = new TH2C("histo","Existing pads",
nx, -0.5, nx-0.5, ny, -0.5, ny-0.5);
TCanvas* c2 = CreateTCanvas("c2 ","Only existing pads are filled ",
station, plane);
for (Int_t i=0; i<maxPadIndexX+1;i++){
for (Int_t j=0;j<maxPadIndexY+1;++j){
if ( segmentation->HasPadByIndices(i,j) ) histo->Fill(i,j);
}
}
c2->cd();
histo->Draw("box");
// the same plot with fast segmentation
TH2C* histo2 = new TH2C("histo2","Existing pads2",
nx, -0.5, nx-0.5, ny, -0.5, ny-0.5);
TCanvas* c3 = CreateTCanvas("c3 ","Only existing pads are filled ",
station, plane);
AliMpFastSegmentation* fast = new AliMpFastSegmentation(segmentation);
for (Int_t i=0; i<maxPadIndexX+1;i++){
for (Int_t j=0;j<maxPadIndexY+1;++j){
if ( fast->HasPadByIndices(i,j) ) histo2->Fill(i,j);
}
}
c3->cd();
histo2->Draw("box");
delete fast;
}
void testSt12ExistingPads()
{
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 testExistingPads for "
<< AliMq::Station12TypeName(station[is]) << " "
<< AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
testExistingPads(station[is], plane[ip]);
cout << "... end running " << endl << endl;
}
}
}
testSt12ExistingPads.C:10 testSt12ExistingPads.C:11 testSt12ExistingPads.C:12 testSt12ExistingPads.C:13 testSt12ExistingPads.C:14 testSt12ExistingPads.C:15 testSt12ExistingPads.C:16 testSt12ExistingPads.C:17 testSt12ExistingPads.C:18 testSt12ExistingPads.C:19 testSt12ExistingPads.C:20 testSt12ExistingPads.C:21 testSt12ExistingPads.C:22 testSt12ExistingPads.C:23 testSt12ExistingPads.C:24 testSt12ExistingPads.C:25 testSt12ExistingPads.C:26 testSt12ExistingPads.C:27 testSt12ExistingPads.C:28 testSt12ExistingPads.C:29 testSt12ExistingPads.C:30 testSt12ExistingPads.C:31 testSt12ExistingPads.C:32 testSt12ExistingPads.C:33 testSt12ExistingPads.C:34 testSt12ExistingPads.C:35 testSt12ExistingPads.C:36 testSt12ExistingPads.C:37 testSt12ExistingPads.C:38 testSt12ExistingPads.C:39 testSt12ExistingPads.C:40 testSt12ExistingPads.C:41 testSt12ExistingPads.C:42 testSt12ExistingPads.C:43 testSt12ExistingPads.C:44 testSt12ExistingPads.C:45 testSt12ExistingPads.C:46 testSt12ExistingPads.C:47 testSt12ExistingPads.C:48 testSt12ExistingPads.C:49 testSt12ExistingPads.C:50 testSt12ExistingPads.C:51 testSt12ExistingPads.C:52 testSt12ExistingPads.C:53 testSt12ExistingPads.C:54 testSt12ExistingPads.C:55 testSt12ExistingPads.C:56 testSt12ExistingPads.C:57 testSt12ExistingPads.C:58 testSt12ExistingPads.C:59 testSt12ExistingPads.C:60 testSt12ExistingPads.C:61 testSt12ExistingPads.C:62 testSt12ExistingPads.C:63 testSt12ExistingPads.C:64 testSt12ExistingPads.C:65 testSt12ExistingPads.C:66 testSt12ExistingPads.C:67 testSt12ExistingPads.C:68 testSt12ExistingPads.C:69 testSt12ExistingPads.C:70 testSt12ExistingPads.C:71 testSt12ExistingPads.C:72 testSt12ExistingPads.C:73 testSt12ExistingPads.C:74 testSt12ExistingPads.C:75 testSt12ExistingPads.C:76 testSt12ExistingPads.C:77 testSt12ExistingPads.C:78 testSt12ExistingPads.C:79 testSt12ExistingPads.C:80 testSt12ExistingPads.C:81 testSt12ExistingPads.C:82 testSt12ExistingPads.C:83 testSt12ExistingPads.C:84 testSt12ExistingPads.C:85 testSt12ExistingPads.C:86 testSt12ExistingPads.C:87 testSt12ExistingPads.C:88 testSt12ExistingPads.C:89 testSt12ExistingPads.C:90 testSt12ExistingPads.C:91 testSt12ExistingPads.C:92 testSt12ExistingPads.C:93 testSt12ExistingPads.C:94 testSt12ExistingPads.C:95 testSt12ExistingPads.C:96 testSt12ExistingPads.C:97 testSt12ExistingPads.C:98 testSt12ExistingPads.C:99 testSt12ExistingPads.C:100 testSt12ExistingPads.C:101 testSt12ExistingPads.C:102 testSt12ExistingPads.C:103 testSt12ExistingPads.C:104 testSt12ExistingPads.C:105 testSt12ExistingPads.C:106 testSt12ExistingPads.C:107 testSt12ExistingPads.C:108 testSt12ExistingPads.C:109 testSt12ExistingPads.C:110 testSt12ExistingPads.C:111 testSt12ExistingPads.C:112 testSt12ExistingPads.C:113 testSt12ExistingPads.C:114 testSt12ExistingPads.C:115 testSt12ExistingPads.C:116 testSt12ExistingPads.C:117 testSt12ExistingPads.C:118 testSt12ExistingPads.C:119 testSt12ExistingPads.C:120