4480f0fdd55331b5a33b17afd2d32760d66d0606
[u/mrichter/AliRoot.git] / MUON / mapping / macros / testMotifTypeIterators.C
1 // $Id$
2 // $MpId: testMotifTypeIterators.C,v 1.10 2005/08/24 08:53:27 ivana Exp $
3 //
4 // Test macro for reading motif type data and iterate over them.
5
6 void testMotifTypeIterators(AliMpStationType station = kStation1,
7                             AliMpPlaneType plane = kBendingPlane)
8 {
9   TString names;
10   TString names2;
11   Int_t nv =0;
12   if ( station == kStation1 )
13     if ( plane == kBendingPlane ) 
14       names ="ABCDEFGHI";
15     else
16       names = "ABCDEFGHIJKLMN";
17   else if ( station == kStation2 ) 
18     if ( plane == kBendingPlane ) {
19       names ="ABCDEFGHIJKLMNOPQRSTUVWXY";
20       names2 ="abcdefghimnptuvvvvv";
21       nv = 5;
22     }  
23     else {
24       names = "ABCEFGHIJKLMN";
25       names2 ="abcdefgijklmnopqrstuwvvvvv";
26       nv = 5;
27     }  
28   Int_t nofMotifs = names.Length() + names2.Length(); 
29   // cout << " nofMotifs: " << nofMotifs << endl;   
30     
31   TH2C* histos[] = new TH2C* [nofMotifs];
32   TCanvas* canv[] = new TCanvas* [1+(nofMotifs-1)/4];
33   Int_t i;
34   for (i=0;i<1+(nofMotifs-1)/4;++i){
35     // canv[i] = new TCanvas(Form("canv%d",i),"Iterator viewing...");
36                // CINT limitation on DEC
37                
38     TString cname("canv"); cname += i;
39     canv[i] = new TCanvas(cname.Data(),"Iterator viewing...");
40     
41     canv[i]->Divide(2,2); 
42   }
43     
44   AliMpMotifReader r(station, plane);
45   //r.SetVerboseLevel(2);
46
47   for (i=0;i<nofMotifs;++i){
48
49     // Get motif name
50     TString mname;
51     if (i<names.Length())
52       mname = names(i, 1);
53     else {
54       mname = names2(i-names.Length(), 1); 
55       if (mname == "v")
56         mname += i - names.Length() - (names2.Length()-nv-1);
57       else         
58         mname += "1";
59     }   
60     //if (i==36) continue;  
61         // break for these motifs (St2, BP) - to be investigated
62    
63     AliMpMotifType *mt = r.BuildMotifType(mname);
64
65     canv[i/4]->cd(1+ (i%4));
66     //histos[i] = new TH2C(Form("h%d",i),Form("Motif type %c",names[i]),
67     //                     mt->GetNofPadsX(),-0.5,mt->GetNofPadsX()-0.5,
68     //                     mt->GetNofPadsY(),-0.5,mt->GetNofPadsY()-0.5);
69                // CINT limitation on DEC
70
71     TString hname("h"); hname += i;
72
73     histos[i] = new TH2C(hname.Data(), mname.Data(),
74                          mt->GetNofPadsX(),-0.5,mt->GetNofPadsX()-0.5,
75                          mt->GetNofPadsY(),-0.5,mt->GetNofPadsY()-0.5);
76
77     cout<<"Motif Type "<<mt->GetID()<<endl;
78     cout<<"--------------------------------"<<endl;
79     Int_t num=0;
80
81     AliMpMotifTypePadIterator it = AliMpMotifTypePadIterator(mt);
82
83     for (it.First(); ! it.IsDone(); it.Next()) {
84       cout << "Iterator " << num << ' '<< it.CurrentItem().GetIndices() << endl;
85       ++num;
86       histos[i]->Fill(it.CurrentItem().GetIndices().GetFirst(),
87                       it.CurrentItem().GetIndices().GetSecond(),num);
88     }
89
90     //delete mt;
91     histos[i]->Draw("text");
92     canv[i/4]->Update();
93   }
94 }