TOF + macros to each detector folder
[u/mrichter/AliRoot.git] / TRD / TRDgui / AliTRDqaGuiJPsi.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 //////////////////////////////////////////////////////////////////////////////////
17 //
18 // This class is a Graphical User Interface for the Quality Monitorig 
19 //
20 // S. Radomski 
21 // Uni-Heidelberg
22 // April 2008
23 // 
24 //////////////////////////////////////////////////////////////////////////////////
25
26 #include "AliTRDqaGuiJPsi.h"
27
28 #include "TH1D.h"
29 #include "TFile.h"
30 #include "TCanvas.h"
31 #include "TString.h"
32 #include "TSystem.h"
33
34 #include "TGLabel.h"
35 #include "TGComboBox.h"
36 #include "TGButton.h"
37 #include "TRootEmbeddedCanvas.h"
38
39 ClassImp(AliTRDqaGuiJPsi)
40
41 //////////////////////////////////////////////////////////////////////////////////
42
43 AliTRDqaGuiJPsi::AliTRDqaGuiJPsi() 
44   : fIdx(0),
45     fFileName(0),
46     fGPanel(0),
47     fGCanvas(0),
48     fGSelect(0),
49     fGPrev(0),
50     fGNext(0)
51 {
52   //
53   // Default constructor
54   //
55
56   for (Int_t i = 0; i < 6; i++) {
57     fNameList[i]   = 0x0;
58     fCanvasList[i] = 0x0;
59     fHistList[i]   = 0x0;
60   }
61
62   //strncpy(fFileName,"",256);
63
64 }
65
66 //////////////////////////////////////////////////////////////////////////////////
67
68 AliTRDqaGuiJPsi::AliTRDqaGuiJPsi(TGWindow *parent) 
69   : TGCompositeFrame(parent, 720, 500),
70     fIdx(0),
71     fFileName(0),
72     fGPanel(0),
73     fGCanvas(0),
74     fGSelect(0),
75     fGPrev(0),
76     fGNext(0)
77 {
78   //
79   // Main constructor
80   //
81   
82   fIdx = 0;
83   
84   // steering panel 
85   
86   SetLayoutManager(new TGVerticalLayout(this));
87
88   fGPanel = new TGHorizontalFrame(this);
89
90   // fGLabel = new TGLabel(fGPanel, "Current Step: ");
91   fGPrev = new TGTextButton(fGPanel, "Prev Step");
92   fGNext = new TGTextButton(fGPanel, "Next Step");
93
94   fGSelect = new TGComboBox(fGPanel);
95   for(int i=0; i<5; i++) fGSelect->AddEntry(Form("Step %d", i), i);
96   fGSelect->Resize(100, fGPrev->GetHeight());
97   fGSelect->Select(fIdx);
98   
99   TGLayoutHints *hint = new TGLayoutHints(kLHintsNormal, 5, 5, 5, 5);
100   
101   // fGPanel->AddFrame(fGLabel, hint);
102   fGPanel->AddFrame(fGPrev, hint);
103   fGPanel->AddFrame(fGSelect, hint);
104   fGPanel->AddFrame(fGNext, hint);
105
106   AddFrame(fGPanel);
107
108   // panel logic
109   fGPrev->Connect("Clicked()", "AliTRDqaGuiJPsi", this, "PreviusStep()");
110   fGNext->Connect("Clicked()", "AliTRDqaGuiJPsi", this, "NextStep()");
111   fGSelect->Connect("Selected(Int_t", "AliTRDqaGuiJPsi", this, "SelectStep(Int_t)");
112  
113   // histograms
114   /**/
115   fGCanvas = new TGCompositeFrame(this);
116   fGCanvas->SetLayoutManager(new TGMatrixLayout(fGCanvas,2,3,1,1));
117
118   fNameList[0] = "mass";
119   fNameList[1] = "nTracksNeg";
120   fNameList[2] = "ptNeg";
121   fNameList[3] = "pidNeg";
122   //fNameList[3] = "ptAngle";
123   fNameList[4] = "nTracksPos";
124   fNameList[5] = "ptPos";
125
126   for(Int_t i=0; i<6; i++) {
127     fCanvasList[i] = new TRootEmbeddedCanvas(fNameList[i], fGCanvas, 320, 300);
128     fGCanvas->AddFrame(fCanvasList[i]);
129     fCanvasList[i]->GetCanvas()->SetRightMargin(0.05);
130   }
131   
132   for(Int_t i=0; i<4; i++) {
133     fHistList[i] = 0;
134   }
135
136   AddFrame(fGCanvas);
137   /**/
138 }
139
140 //////////////////////////////////////////////////////////////////////////////////
141
142 void AliTRDqaGuiJPsi::SetQAFile(const char *filename) {
143   //
144   // Ste file with histograms
145   // 
146
147   //strncpy(fFileName,filename,256);
148   fFileName = filename;
149
150   for(Int_t i=0; i<6; i++) {
151     if (fHistList[i]) delete fHistList[i];
152   }
153   
154   const Int_t logy[6] = {0, 1, 1, 1, 1, 1};
155   const Int_t logz[6] = {0, 0, 0, 1, 0, 0};
156   const char *opt[6]  = {"", "", "", "", "", ""};
157
158   TFile *file = new TFile(filename);
159   
160   for(Int_t i=0; i<6; i++) {
161     fHistList[i] = (TH1D*)gDirectory->Get(Form("%s_%d", fNameList[i], fIdx));
162     if (fHistList[i]) fHistList[i]->SetDirectory(0);
163     fCanvasList[i]->GetCanvas()->cd();
164     if (fHistList[i]) fHistList[i]->Draw(opt[i]);
165     gPad->SetLogy(logy[i]);
166     gPad->SetLogz(logz[i]);
167     fCanvasList[i]->GetCanvas()->Update();
168   }
169
170   file->Close();
171   delete file;
172 }
173
174 //////////////////////////////////////////////////////////////////////////////////
175
176 void AliTRDqaGuiJPsi::SetStep(Int_t idx) {
177   //
178   // Sets active supermodule 
179   //
180
181   fIdx = idx; 
182   fGSelect->Select(fIdx, 0); 
183   SetQAFile(fFileName);
184 }
185
186 //////////////////////////////////////////////////////////////////////////////////
187