// $Id$
// $MpId: testExistingPads2.C,v 1.3 2005/08/24 08:53:27 ivana Exp $
//
// Extended testExistingPads macro for testing which pad is seen as
// "existing" by AliMpSectorSegmentation or AliMpFastSegmentation.
// The loop over pads is performed in two ways:
// 1) via sector area pad iterator
// 2) via indices
// To run macro:
// root [0] .L testExistingPads2.C+
// root [1] testExistingPads2();
#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 <Riostream.h>
#include <TString.h>
#endif
void testExistingPads2(AliMq::Station12Type station, AliMp::PlaneType plane,
Bool_t useFastSegmentation = kTRUE)
{
// Read data
AliMpDataProcessor mp;
AliMpDataMap* dataMap = mp.CreateDataMap("data");
AliMpDataStreams dataStreams(dataMap);
AliMpSectorReader r(dataStreams, station, plane);
AliMpSector* sector = r.BuildSector();
// Segmentation
AliMpVSegmentation* segmentation;
if ( useFastSegmentation)
segmentation = new AliMpFastSegmentation(new AliMpSectorSegmentation(sector));
else
segmentation = new AliMpSectorSegmentation(sector);
// Output files
TString outName = "testExistingPads.";
outName += AliMq::Station12TypeName(station);
outName += AliMp::PlaneTypeName(plane);
TString out1Name = outName + ".ixiy.out";
TString out2Name = outName + ".iter.out";
ofstream out1(out1Name.Data(), ios::out);
ofstream out2(out2Name.Data(), ios::out);
// First loop over indices
cout << "Iterating via indices ..." << endl;
Int_t counter1 = 0;
if ( sector->GetDirection() == AliMp::kX )
for (Int_t i=1; i<segmentation->MaxPadIndexX()+1; i++) {
for (Int_t j=1; j<segmentation->MaxPadIndexY()+1; j++) {
if ( segmentation->HasPadByIndices(i,j) )
out1 << std::setw(4) << ++counter1 << " "
<< segmentation->PadByIndices(i,j) << endl;;
}
}
if ( sector->GetDirection() == AliMp::kY )
for (Int_t j=1; j<segmentation->MaxPadIndexY()+1; j++) {
for (Int_t i=1; i<segmentation->MaxPadIndexX()+1; i++) {
if ( segmentation->HasPadByIndices(i,j) )
out1 << std::setw(4) << ++counter1 << " "
<< segmentation->PadByIndices(i,j) << endl;;
}
}
// Second loop via pad area iterator
cout << "Iterating via iterator ..." << endl;
AliMpArea area(60.,60.,60.,60.);
AliMpVPadIterator* it = segmentation->CreateIterator(area);
Int_t counter2 = 0;
for (it->First(); ! it->IsDone(); it->Next()){
out2 << std::setw(4) << ++counter2 << " "
<< it->CurrentItem() << endl;
}
delete segmentation;
}
void testSt12ExistingPads2()
{
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 testExistingPads2 for "
<< AliMq::Station12TypeName(station[is]) << " "
<< AliMp::PlaneTypeName(plane[ip]) << " ... " << endl;
testExistingPads2(station[is], plane[ip]);
cout << "... end running " << endl << endl;
}
}
}
testSt12ExistingPads2.C:1 testSt12ExistingPads2.C:2 testSt12ExistingPads2.C:3 testSt12ExistingPads2.C:4 testSt12ExistingPads2.C:5 testSt12ExistingPads2.C:6 testSt12ExistingPads2.C:7 testSt12ExistingPads2.C:8 testSt12ExistingPads2.C:9 testSt12ExistingPads2.C:10 testSt12ExistingPads2.C:11 testSt12ExistingPads2.C:12 testSt12ExistingPads2.C:13 testSt12ExistingPads2.C:14 testSt12ExistingPads2.C:15 testSt12ExistingPads2.C:16 testSt12ExistingPads2.C:17 testSt12ExistingPads2.C:18 testSt12ExistingPads2.C:19 testSt12ExistingPads2.C:20 testSt12ExistingPads2.C:21 testSt12ExistingPads2.C:22 testSt12ExistingPads2.C:23 testSt12ExistingPads2.C:24 testSt12ExistingPads2.C:25 testSt12ExistingPads2.C:26 testSt12ExistingPads2.C:27 testSt12ExistingPads2.C:28 testSt12ExistingPads2.C:29 testSt12ExistingPads2.C:30 testSt12ExistingPads2.C:31 testSt12ExistingPads2.C:32 testSt12ExistingPads2.C:33 testSt12ExistingPads2.C:34 testSt12ExistingPads2.C:35 testSt12ExistingPads2.C:36 testSt12ExistingPads2.C:37 testSt12ExistingPads2.C:38 testSt12ExistingPads2.C:39 testSt12ExistingPads2.C:40 testSt12ExistingPads2.C:41 testSt12ExistingPads2.C:42 testSt12ExistingPads2.C:43 testSt12ExistingPads2.C:44 testSt12ExistingPads2.C:45 testSt12ExistingPads2.C:46 testSt12ExistingPads2.C:47 testSt12ExistingPads2.C:48 testSt12ExistingPads2.C:49 testSt12ExistingPads2.C:50 testSt12ExistingPads2.C:51 testSt12ExistingPads2.C:52 testSt12ExistingPads2.C:53 testSt12ExistingPads2.C:54 testSt12ExistingPads2.C:55 testSt12ExistingPads2.C:56 testSt12ExistingPads2.C:57 testSt12ExistingPads2.C:58 testSt12ExistingPads2.C:59 testSt12ExistingPads2.C:60 testSt12ExistingPads2.C:61 testSt12ExistingPads2.C:62 testSt12ExistingPads2.C:63 testSt12ExistingPads2.C:64 testSt12ExistingPads2.C:65 testSt12ExistingPads2.C:66 testSt12ExistingPads2.C:67 testSt12ExistingPads2.C:68 testSt12ExistingPads2.C:69 testSt12ExistingPads2.C:70 testSt12ExistingPads2.C:71 testSt12ExistingPads2.C:72 testSt12ExistingPads2.C:73 testSt12ExistingPads2.C:74 testSt12ExistingPads2.C:75 testSt12ExistingPads2.C:76 testSt12ExistingPads2.C:77 testSt12ExistingPads2.C:78 testSt12ExistingPads2.C:79 testSt12ExistingPads2.C:80 testSt12ExistingPads2.C:81 testSt12ExistingPads2.C:82 testSt12ExistingPads2.C:83 testSt12ExistingPads2.C:84 testSt12ExistingPads2.C:85 testSt12ExistingPads2.C:86 testSt12ExistingPads2.C:87 testSt12ExistingPads2.C:88 testSt12ExistingPads2.C:89 testSt12ExistingPads2.C:90 testSt12ExistingPads2.C:91 testSt12ExistingPads2.C:92 testSt12ExistingPads2.C:93 testSt12ExistingPads2.C:94 testSt12ExistingPads2.C:95 testSt12ExistingPads2.C:96 testSt12ExistingPads2.C:97 testSt12ExistingPads2.C:98 testSt12ExistingPads2.C:99 testSt12ExistingPads2.C:100 testSt12ExistingPads2.C:101 testSt12ExistingPads2.C:102 testSt12ExistingPads2.C:103 testSt12ExistingPads2.C:104 testSt12ExistingPads2.C:105 testSt12ExistingPads2.C:106 testSt12ExistingPads2.C:107 testSt12ExistingPads2.C:108 testSt12ExistingPads2.C:109 testSt12ExistingPads2.C:110 testSt12ExistingPads2.C:111 testSt12ExistingPads2.C:112 testSt12ExistingPads2.C:113 testSt12ExistingPads2.C:114