Main changes:
[u/mrichter/AliRoot.git] / MUON / mchview.cxx
1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
7 * Permission to use, copy, modify and distribute this software and its   *
8 * documentation strictly for non-commercial purposes is hereby granted   *
9 * without fee, provided that the above copyright notice appears in all   *
10 * copies and that both the copyright notice and this permission notice   *
11 * appear in the supporting documentation. The authors make no claims     *
12 * about the suitability of this software for any purpose. It is          *
13 * provided "as is" without express or implied warranty.                  *
14 **************************************************************************/
15
16 // $Id$
17
18 /// \ingroup graphics
19 /// \file mchview.cxx
20 /// \brief Tracker visualization program
21 ///
22 /// \author Laurent Aphecetche, Subatech
23
24
25 #include "AliMUONMchViewApplication.h"
26
27 #include "AliCDBManager.h"
28 #include "AliCodeTimer.h"
29 #include "AliLog.h"
30 #include "AliMUONPainterHelper.h"
31 #include <Riostream.h>
32 #include <TObjArray.h>
33 #include <TObjString.h>
34 #include <TROOT.h>
35 #include <TStyle.h>
36
37 //______________________________________________________________________________
38 Int_t Usage()
39 {
40   /// Printout available options of the program
41   cout << "mchview " << endl;
42   cout << "  --version : shows the current version of the program" << endl;
43   cout << "  --use filename.root : reuse a previously saved (from this program) root file. Several --use can be used ;-)" << endl;
44   cout << "  --geometry #x#+#+# : manually specify the geometry of the window, ala X11..., e.g. --geometry 1280x900+1600+0 will" << endl;
45   cout << "    get a window of size 1280x900, located at (1600,0) from the top-left of the (multihead) display " << endl;
46   return -1;
47 }
48
49 //______________________________________________________________________________
50 int main(int argc, char** argv)
51 {
52   /// Main function for the program
53   TObjArray args;
54   
55   for ( int i = 1; i < argc; ++i ) 
56   {
57     args.Add(new TObjString(argv[i]));
58   }
59   
60   Int_t nok(0);
61   
62   TObjArray filesToOpen;
63   Bool_t isGeometryFixed(kFALSE);
64   Int_t gix, giy;
65   Int_t gox,goy;
66
67   for ( Int_t i = 0; i <= args.GetLast(); ++i ) 
68   {
69     TString a(static_cast<TObjString*>(args.At(i))->String());
70     if ( a == "--version" ) 
71     {
72       cout << "mchview Version " << AliMUONMchViewApplication::Version() << " ($Id$)" << endl;
73       ++nok;
74       return 0;
75     }
76     if ( a == "--use" && i < args.GetLast() )
77     {
78       filesToOpen.Add(args.At(i+1));
79       ++i;
80       nok += 2;
81     }
82     else if ( a == "--geometry" )
83     {
84       isGeometryFixed = kTRUE;
85       TString g(static_cast<TObjString*>(args.At(i+1))->String());
86       sscanf(g.Data(),"%dx%d+%d+%d",&gix,&giy,&gox,&goy);
87       nok += 2;
88       ++i;
89     }
90     
91     else
92     {
93       return Usage();
94     }
95   }
96   
97   if ( nok < args.GetLast() )
98   {
99     return Usage();
100   }
101   
102   AliWarningGeneral("main","FIXME ? Remove default storage and run number from here...");
103   
104   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
105   AliCDBManager::Instance()->SetRun(0);
106  
107   gROOT->SetStyle("Plain");  
108   gStyle->SetPalette(1);
109   Int_t n = gStyle->GetNumberOfColors();
110   Int_t* colors = new Int_t[n+2];
111   for ( Int_t i = 1; i <= n; ++i )
112   {
113     colors[i] = gStyle->GetColorPalette(i-1);
114   }
115   colors[0] = 0;
116   colors[n+1] = 1;
117   gStyle->SetPalette(n+2,colors);
118   delete[] colors;
119
120   UInt_t w(0);
121   UInt_t h(0);
122   UInt_t ox(0);
123   UInt_t oy(0);
124
125   if ( isGeometryFixed )
126   {
127     w = gix;
128     h = giy;
129     ox = gox;
130     oy = goy;
131   }
132   
133   AliMUONMchViewApplication* theApp = new AliMUONMchViewApplication("mchview", &argc, argv, w,h,gox,goy);
134    
135   AliCodeTimer::Instance()->Print();
136
137   TIter next(&filesToOpen);
138   TObjString* s;
139   while ( ( s = static_cast<TObjString*>(next()) ) )
140   {
141     theApp->Open(s->String().Data());
142   }
143   
144   // --- Start the event loop ---
145   theApp->Run(kTRUE);
146
147   delete AliMUONPainterHelper::Instance(); // important to trigger the saving of the env. file
148 }