ROOT logo
// $Id$
// $MpId: testIndicesLimits.C,v 1.5 2005/10/28 15:36:08 ivana Exp $
//
// Test macro for indices limits.

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

#include <Riostream.h>
#include <TCanvas.h>
#include <TH2.h>

#endif

void testIndicesLimits(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);

  // Loop over rows
  for (Int_t i=0; i<sector->GetNofRows(); i++) {
    AliMpRow* row = sector->GetRow(i);

    cout << i << "th row limits: "; 
    AliMp::PairPut(cout, row->GetLowIndicesLimit())  <<  "  "; 
    AliMp::PairPut(cout, row->GetHighIndicesLimit()) <<  endl;

    // Loop over row segments
    for (Int_t j=0; j<row->GetNofRowSegments(); j++) {
      AliMpVRowSegment* rowSegment = row->GetRowSegment(j);
      cout << "   "
           << j
           << "th row segment limits: ";
           AliMp::PairPut(cout, rowSegment->GetLowIndicesLimit())  <<  "  "; 
           AliMp::PairPut(cout, rowSegment->GetHighIndicesLimit()) <<  endl;
      
      // Loop over motif positions
      for (Int_t k=0; k<rowSegment->GetNofMotifs(); k++) {
        Int_t mposID = rowSegment->GetMotifPositionId(k);
        AliMpMotifPosition* mPos = 
	  sector->GetMotifMap()->FindMotifPosition(mposID);     
        if (mPos) {
         cout << "      "
              << mPos->GetID()
              << " motif position limits: ";
              AliMp::PairPut(cout, mPos->GetLowIndicesLimit())  <<  "  "; 
              AliMp::PairPut(cout, mPos->GetHighIndicesLimit()) <<  endl;
	}
	else {
	  cerr << "Motif position "
	       <<  mposID << " not found in the map" << endl; 
	}           
      }
    }  	   
  }   
  
  delete sector;
}			       
      
void testSt12IndicesLimits()
{
  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 testIndicesLimits for " 
           << AliMq::Station12TypeName(station[is]) << "  "
           << AliMp::PlaneTypeName(plane[ip])  << " ... " << endl;
       
      testIndicesLimits(station[is], plane[ip]);
    
      cout << "... end running " << endl << endl;
    }  
  }   
}  
  
 

 
 testSt12IndicesLimits.C:1
 testSt12IndicesLimits.C:2
 testSt12IndicesLimits.C:3
 testSt12IndicesLimits.C:4
 testSt12IndicesLimits.C:5
 testSt12IndicesLimits.C:6
 testSt12IndicesLimits.C:7
 testSt12IndicesLimits.C:8
 testSt12IndicesLimits.C:9
 testSt12IndicesLimits.C:10
 testSt12IndicesLimits.C:11
 testSt12IndicesLimits.C:12
 testSt12IndicesLimits.C:13
 testSt12IndicesLimits.C:14
 testSt12IndicesLimits.C:15
 testSt12IndicesLimits.C:16
 testSt12IndicesLimits.C:17
 testSt12IndicesLimits.C:18
 testSt12IndicesLimits.C:19
 testSt12IndicesLimits.C:20
 testSt12IndicesLimits.C:21
 testSt12IndicesLimits.C:22
 testSt12IndicesLimits.C:23
 testSt12IndicesLimits.C:24
 testSt12IndicesLimits.C:25
 testSt12IndicesLimits.C:26
 testSt12IndicesLimits.C:27
 testSt12IndicesLimits.C:28
 testSt12IndicesLimits.C:29
 testSt12IndicesLimits.C:30
 testSt12IndicesLimits.C:31
 testSt12IndicesLimits.C:32
 testSt12IndicesLimits.C:33
 testSt12IndicesLimits.C:34
 testSt12IndicesLimits.C:35
 testSt12IndicesLimits.C:36
 testSt12IndicesLimits.C:37
 testSt12IndicesLimits.C:38
 testSt12IndicesLimits.C:39
 testSt12IndicesLimits.C:40
 testSt12IndicesLimits.C:41
 testSt12IndicesLimits.C:42
 testSt12IndicesLimits.C:43
 testSt12IndicesLimits.C:44
 testSt12IndicesLimits.C:45
 testSt12IndicesLimits.C:46
 testSt12IndicesLimits.C:47
 testSt12IndicesLimits.C:48
 testSt12IndicesLimits.C:49
 testSt12IndicesLimits.C:50
 testSt12IndicesLimits.C:51
 testSt12IndicesLimits.C:52
 testSt12IndicesLimits.C:53
 testSt12IndicesLimits.C:54
 testSt12IndicesLimits.C:55
 testSt12IndicesLimits.C:56
 testSt12IndicesLimits.C:57
 testSt12IndicesLimits.C:58
 testSt12IndicesLimits.C:59
 testSt12IndicesLimits.C:60
 testSt12IndicesLimits.C:61
 testSt12IndicesLimits.C:62
 testSt12IndicesLimits.C:63
 testSt12IndicesLimits.C:64
 testSt12IndicesLimits.C:65
 testSt12IndicesLimits.C:66
 testSt12IndicesLimits.C:67
 testSt12IndicesLimits.C:68
 testSt12IndicesLimits.C:69
 testSt12IndicesLimits.C:70
 testSt12IndicesLimits.C:71
 testSt12IndicesLimits.C:72
 testSt12IndicesLimits.C:73
 testSt12IndicesLimits.C:74
 testSt12IndicesLimits.C:75
 testSt12IndicesLimits.C:76
 testSt12IndicesLimits.C:77
 testSt12IndicesLimits.C:78
 testSt12IndicesLimits.C:79
 testSt12IndicesLimits.C:80
 testSt12IndicesLimits.C:81
 testSt12IndicesLimits.C:82
 testSt12IndicesLimits.C:83
 testSt12IndicesLimits.C:84
 testSt12IndicesLimits.C:85
 testSt12IndicesLimits.C:86
 testSt12IndicesLimits.C:87
 testSt12IndicesLimits.C:88
 testSt12IndicesLimits.C:89
 testSt12IndicesLimits.C:90
 testSt12IndicesLimits.C:91
 testSt12IndicesLimits.C:92
 testSt12IndicesLimits.C:93
 testSt12IndicesLimits.C:94
 testSt12IndicesLimits.C:95
 testSt12IndicesLimits.C:96
 testSt12IndicesLimits.C:97
 testSt12IndicesLimits.C:98
 testSt12IndicesLimits.C:99
 testSt12IndicesLimits.C:100
 testSt12IndicesLimits.C:101
 testSt12IndicesLimits.C:102