ROOT logo
// $Id$
// $MpId: testPrintLimits.C,v 1.9 2005/10/28 15:36:08 ivana Exp $
//
// Test macro for making an output file, where all mapping elements
// indices & positions are written.

#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 "AliMpRow.h"
#include "AliMpVRowSegment.h"
#include "AliMpMotifMap.h"
#include "AliMpMotifPosition.h"
#include "AliMpVPainter.h"
#include "AliMpEncodePair.h"

#include <Riostream.h>
#include <TCanvas.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 testPrintLimits(AliMq::Station12Type station, AliMp::PlaneType  plane,
		     ostream& out=cout)
{
  AliMpDataProcessor mp;
  AliMpDataMap* dataMap = mp.CreateDataMap("data");
  AliMpDataStreams dataStreams(dataMap);

  AliMpSectorReader r(dataStreams, station, plane);
  AliMpSector* sector = r.BuildSector();
  
  //new TCanvas(" ", " ", station, plane);  // BREAKS
  new TCanvas();

  AliMpVPainter* painter = AliMpVPainter::CreatePainter(sector);
  painter->Draw("ZSSMP");

  Long_t low,high;
  TVector2 rlow,rhigh;

  for (Int_t irow=0;irow<sector->GetNofRows();irow++){
    // For each row

    AliMpRow* row = sector->GetRow(irow);
    low  = row->GetLowIndicesLimit();
    high = row->GetHighIndicesLimit();
    rlow = TVector2(row->GetPositionX()-row->GetDimensionX(),
                    row->GetPositionY()-row->GetDimensionY());
    rhigh = TVector2(row->GetPositionX()+row->GetDimensionX(),
                     row->GetPositionY()+row->GetDimensionY());
    out<<"_______________________________________________________________"<<endl;
    out<<"Row "<<irow<<" between ";
    AliMp::PairPut(out, low)  <<  " and "; 
    AliMp::PairPut(out, high) 
       <<  "-->(" <<rlow.X()<<','<<rlow.Y()<<") and ("
       <<rhigh.X()<<','<<rhigh.Y()<<')'<<endl;
    out<<"_______________________________________________________________"<<endl;
  
    for (Int_t iseg=0;iseg<row->GetNofRowSegments();iseg++){
      // For each row segment  
  
      AliMpVRowSegment* seg = row->GetRowSegment(iseg);
      low  = seg->GetLowIndicesLimit();
      high = seg->GetHighIndicesLimit();
      rlow = TVector2(seg->GetPositionX()-seg->GetDimensionX(),
                      seg->GetPositionY()-seg->GetDimensionY());
      rhigh = TVector2(seg->GetPositionX()+seg->GetDimensionX(),
                       seg->GetPositionY()+seg->GetDimensionY());
      out<<"-----------------------------------------------------------"<<endl;
      out<<"     Segment "<<iseg<<" between ";
      AliMp::PairPut(out, low)  <<  " and "; 
      AliMp::PairPut(out, high) 
         <<"-->("<<rlow.X()<<','<<rlow.Y()<<") and ("
         <<rhigh.X()<<','<<rhigh.Y()<<')'<<endl;
      out<<"-----------------------------------------------------------"<<endl;

      for (Int_t imotif=0;imotif<seg->GetNofMotifs();imotif++){
         // For each motif pos
  
        AliMpMotifPosition* motifPos 
          = sector->GetMotifMap()
	      ->FindMotifPosition(seg->GetMotifPositionId(imotif));
        AliMpVMotif* motif = motifPos->GetMotif();
      
        low  = motifPos->GetLowIndicesLimit();
        high = motifPos->GetHighIndicesLimit();
        rlow = TVector2(motifPos->GetPositionX()-motif->DimensionX(),
                  motifPos->GetPositionY()-motif->DimensionY());
        rhigh = TVector2(motifPos->GetPositionX()+motif->DimensionX(),
                   motifPos->GetPositionY()+motif->DimensionY());
        out<<"          Motif "<<imotif<<" between ";
        AliMp::PairPut(out, low)  <<  " and "; 
        AliMp::PairPut(out, high) 
           <<"-->("<<rlow.X()<<','<<rlow.Y()<<") and ("
           <<rhigh.X()<<','<<rhigh.Y()<<')'<<endl;
      }
    }
  }
}

void testSt12PrintLimits()
{
  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 testPrintLimits for " 
           << AliMq::Station12TypeName(station[is]) << "  "
           << AliMp::PlaneTypeName(plane[ip])  << " ... " << endl;
       
      testPrintLimits(station[is], plane[ip]);
    
      cout << "... end running " << endl << endl;
    }  
  }   
}  
  
 testSt12PrintLimits.C:1
 testSt12PrintLimits.C:2
 testSt12PrintLimits.C:3
 testSt12PrintLimits.C:4
 testSt12PrintLimits.C:5
 testSt12PrintLimits.C:6
 testSt12PrintLimits.C:7
 testSt12PrintLimits.C:8
 testSt12PrintLimits.C:9
 testSt12PrintLimits.C:10
 testSt12PrintLimits.C:11
 testSt12PrintLimits.C:12
 testSt12PrintLimits.C:13
 testSt12PrintLimits.C:14
 testSt12PrintLimits.C:15
 testSt12PrintLimits.C:16
 testSt12PrintLimits.C:17
 testSt12PrintLimits.C:18
 testSt12PrintLimits.C:19
 testSt12PrintLimits.C:20
 testSt12PrintLimits.C:21
 testSt12PrintLimits.C:22
 testSt12PrintLimits.C:23
 testSt12PrintLimits.C:24
 testSt12PrintLimits.C:25
 testSt12PrintLimits.C:26
 testSt12PrintLimits.C:27
 testSt12PrintLimits.C:28
 testSt12PrintLimits.C:29
 testSt12PrintLimits.C:30
 testSt12PrintLimits.C:31
 testSt12PrintLimits.C:32
 testSt12PrintLimits.C:33
 testSt12PrintLimits.C:34
 testSt12PrintLimits.C:35
 testSt12PrintLimits.C:36
 testSt12PrintLimits.C:37
 testSt12PrintLimits.C:38
 testSt12PrintLimits.C:39
 testSt12PrintLimits.C:40
 testSt12PrintLimits.C:41
 testSt12PrintLimits.C:42
 testSt12PrintLimits.C:43
 testSt12PrintLimits.C:44
 testSt12PrintLimits.C:45
 testSt12PrintLimits.C:46
 testSt12PrintLimits.C:47
 testSt12PrintLimits.C:48
 testSt12PrintLimits.C:49
 testSt12PrintLimits.C:50
 testSt12PrintLimits.C:51
 testSt12PrintLimits.C:52
 testSt12PrintLimits.C:53
 testSt12PrintLimits.C:54
 testSt12PrintLimits.C:55
 testSt12PrintLimits.C:56
 testSt12PrintLimits.C:57
 testSt12PrintLimits.C:58
 testSt12PrintLimits.C:59
 testSt12PrintLimits.C:60
 testSt12PrintLimits.C:61
 testSt12PrintLimits.C:62
 testSt12PrintLimits.C:63
 testSt12PrintLimits.C:64
 testSt12PrintLimits.C:65
 testSt12PrintLimits.C:66
 testSt12PrintLimits.C:67
 testSt12PrintLimits.C:68
 testSt12PrintLimits.C:69
 testSt12PrintLimits.C:70
 testSt12PrintLimits.C:71
 testSt12PrintLimits.C:72
 testSt12PrintLimits.C:73
 testSt12PrintLimits.C:74
 testSt12PrintLimits.C:75
 testSt12PrintLimits.C:76
 testSt12PrintLimits.C:77
 testSt12PrintLimits.C:78
 testSt12PrintLimits.C:79
 testSt12PrintLimits.C:80
 testSt12PrintLimits.C:81
 testSt12PrintLimits.C:82
 testSt12PrintLimits.C:83
 testSt12PrintLimits.C:84
 testSt12PrintLimits.C:85
 testSt12PrintLimits.C:86
 testSt12PrintLimits.C:87
 testSt12PrintLimits.C:88
 testSt12PrintLimits.C:89
 testSt12PrintLimits.C:90
 testSt12PrintLimits.C:91
 testSt12PrintLimits.C:92
 testSt12PrintLimits.C:93
 testSt12PrintLimits.C:94
 testSt12PrintLimits.C:95
 testSt12PrintLimits.C:96
 testSt12PrintLimits.C:97
 testSt12PrintLimits.C:98
 testSt12PrintLimits.C:99
 testSt12PrintLimits.C:100
 testSt12PrintLimits.C:101
 testSt12PrintLimits.C:102
 testSt12PrintLimits.C:103
 testSt12PrintLimits.C:104
 testSt12PrintLimits.C:105
 testSt12PrintLimits.C:106
 testSt12PrintLimits.C:107
 testSt12PrintLimits.C:108
 testSt12PrintLimits.C:109
 testSt12PrintLimits.C:110
 testSt12PrintLimits.C:111
 testSt12PrintLimits.C:112
 testSt12PrintLimits.C:113
 testSt12PrintLimits.C:114
 testSt12PrintLimits.C:115
 testSt12PrintLimits.C:116
 testSt12PrintLimits.C:117
 testSt12PrintLimits.C:118
 testSt12PrintLimits.C:119
 testSt12PrintLimits.C:120
 testSt12PrintLimits.C:121
 testSt12PrintLimits.C:122
 testSt12PrintLimits.C:123
 testSt12PrintLimits.C:124
 testSt12PrintLimits.C:125
 testSt12PrintLimits.C:126
 testSt12PrintLimits.C:127
 testSt12PrintLimits.C:128
 testSt12PrintLimits.C:129
 testSt12PrintLimits.C:130
 testSt12PrintLimits.C:131
 testSt12PrintLimits.C:132
 testSt12PrintLimits.C:133
 testSt12PrintLimits.C:134
 testSt12PrintLimits.C:135
 testSt12PrintLimits.C:136
 testSt12PrintLimits.C:137