2 #include <TGButtonGroup.h>
4 #include <TGNumberEntry.h>
6 #include <TApplication.h>
7 #include <TGComboBox.h>
11 class ButtonWindow : public TGMainFrame {
28 TGTextEntry *customCutSelection;
29 TGTextEntry *customDrawSelection;
30 TGNumberEntry *nEntries;
31 TGNumberEntry *firstEntry;
37 ClassDef(ButtonWindow, 0)
40 //________________________________________________
42 ButtonWindow::ButtonWindow() : TGMainFrame(gClient->GetRoot(), 10, 10, kHorizontalFrame)
46 SetCleanup(kDeepCleanup);
49 TGVerticalFrame *controls = new TGVerticalFrame(this);
50 AddFrame(controls, new TGLayoutHints(kLHintsRight | kLHintsExpandY, 5, 5, 5, 5));
52 // control margins of the text
60 TGHorizontal3DLine *separator = 0;
62 TGGroupFrame *margins = new TGGroupFrame(controls, "Residuals Drawing Options");
63 margins->SetTitlePos(TGGroupFrame::kCenter);
65 //==========================
67 separator = new TGHorizontal3DLine(margins);
69 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
71 label1 = new TGLabel(margins, "Axes");
73 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
75 TGHorizontalFrame *hframe1 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
77 label1 = new TGLabel(hframe1, "X axis: ");
79 option1 = new TGComboBox(hframe1,"Draw option");
80 option1->AddEntry("fX",1);
81 option1->AddEntry("fY",2);
82 option1->AddEntry("fZ",3);
83 option1->AddEntry("fR",4);
84 option1->Resize(120,20);
86 label3 = new TGLabel(hframe1, "Y axis: ");
88 option2 = new TGComboBox(hframe1,"Draw option");
89 option2->AddEntry("fPx",1);
90 option2->AddEntry("fPy",2);
91 option2->AddEntry("fPz",3);
92 option2->AddEntry("fPt",4);
93 option2->AddEntry("fP",5);
94 option2->Resize(120,20);
96 hframe1->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
97 hframe1->AddFrame(option1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
98 hframe1->AddFrame(label3, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
99 hframe1->AddFrame(option2, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
101 margins->AddFrame(hframe1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
103 //==========================
105 separator = new TGHorizontal3DLine(margins);
107 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
109 label1 = new TGLabel(margins, "Cut Selection");
111 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
113 //===============================
115 TGHorizontalFrame *hframe3 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
117 label1 = new TGLabel(hframe3, " 1. ");
119 option3 = new TGComboBox(hframe3,"Cut");
120 option3->AddEntry("fPx",1);
121 option3->AddEntry("fPy",2);
122 option3->AddEntry("fPz",3);
123 option3->AddEntry("fPt",4);
124 option3->AddEntry("fP",5);
125 option3->Resize(100,20);
127 option4 = new TGComboBox(hframe3,"-");
128 option4->AddEntry("(no cut)",0);
129 option4->AddEntry("<",1);
130 option4->AddEntry(">",2);
131 option4->Resize(100,20);
133 cut1 = new TGTextEntry(hframe3);
135 hframe3->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
136 hframe3->AddFrame(option3, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
137 hframe3->AddFrame(option4, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
138 hframe3->AddFrame(cut1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
140 margins->AddFrame(hframe3, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
142 //=====================================
144 TGHorizontalFrame *hframe4 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
146 label1 = new TGLabel(hframe4, "2. ");
148 option5 = new TGComboBox(hframe4,"Cut");
149 option5->AddEntry("fPx",1);
150 option5->AddEntry("fPy",2);
151 option5->AddEntry("fPz",3);
152 option5->AddEntry("fPt",4);
153 option5->AddEntry("fP",5);
154 option5->Resize(100,20);
156 option6 = new TGComboBox(hframe4,"-");
157 option6->AddEntry("(no cut)",0);
158 option6->AddEntry("<",1);
159 option6->AddEntry(">",2);
160 option6->Resize(100,20);
162 cut2 = new TGTextEntry(hframe4);
163 // cut2 = new TGNumberEntryField(hframe4, 40, 20, kFixedWidth);
165 hframe4->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
166 hframe4->AddFrame(option5, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
167 hframe4->AddFrame(option6, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
168 hframe4->AddFrame(cut2, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
170 margins->AddFrame(hframe4, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
172 separator = new TGHorizontal3DLine(margins);
174 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
176 label1 = new TGLabel(margins, "Custom Cut Selection");
178 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
180 customCutSelection = new TGTextEntry(margins);
182 margins->AddFrame(customCutSelection, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
184 //========================================
186 separator = new TGHorizontal3DLine(margins);
188 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
190 label1 = new TGLabel(margins, "Draw Selection");
192 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
194 //========================================
196 TGHorizontalFrame *hframe5 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
198 label1 = new TGLabel(hframe5, "1. ");
200 option7 = new TGComboBox(hframe5,"Cut");
201 option7->AddEntry("fPx",1);
202 option7->AddEntry("fPy",2);
203 option7->AddEntry("fPz",3);
204 option7->AddEntry("fPt",4);
205 option7->AddEntry("fP",5);
206 option7->Resize(100,20);
208 option8 = new TGComboBox(hframe5,"-");
209 option8->AddEntry("(no cut)",0);
210 option8->AddEntry("<",1);
211 option8->AddEntry(">",2);
212 option8->Resize(100,20);
214 cut3 = new TGTextEntry(hframe5);
215 // cut3 = new TGNumberEntryField(hframe5, 40, 20, kFixedWidth);
217 hframe5->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
218 hframe5->AddFrame(option7, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
219 hframe5->AddFrame(option8, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
220 hframe5->AddFrame(cut3, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
222 margins->AddFrame(hframe5, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
224 //=======================================
226 TGHorizontalFrame *hframe6 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
228 label1 = new TGLabel(hframe6, "2. ");
230 option9 = new TGComboBox(hframe6,"Cut");
231 option9->AddEntry("fPx",1);
232 option9->AddEntry("fPy",2);
233 option9->AddEntry("fPz",3);
234 option9->AddEntry("fPt",4);
235 option9->AddEntry("fP",5);
236 option9->Resize(100,20);
238 option10 = new TGComboBox(hframe6,"-");
239 option10->AddEntry("(no cut)",0);
240 option10->AddEntry("<",1);
241 option10->AddEntry(">",2);
242 option10->Resize(100,20);
244 cut4 = new TGTextEntry(hframe6);
245 // cut4 = new TGNumberEntryField(hframe6, 40, 20, kFixedWidth);
247 hframe6->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
248 hframe6->AddFrame(option9, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
249 hframe6->AddFrame(option10, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
250 hframe6->AddFrame(cut4, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
252 margins->AddFrame(hframe6, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
254 separator = new TGHorizontal3DLine(margins);
256 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
258 label1 = new TGLabel(margins, "Custom Draw Selection");
260 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
262 customDrawSelection = new TGTextEntry(margins);
264 margins->AddFrame(customDrawSelection, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
266 //==========================
268 separator = new TGHorizontal3DLine(margins);
270 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
272 label1 = new TGLabel(margins, "Entries Selection");
274 margins->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
276 //========================================
278 TGHorizontalFrame *hframe7 = new TGHorizontalFrame(margins, 400, 20, kFixedWidth);
280 label1 = new TGLabel(hframe7, "nEntries");
282 nEntries = new TGNumberEntry(hframe7, 40, 20, kFixedWidth);
284 label2 = new TGLabel(hframe7, "firstEntry");
286 firstEntry = new TGNumberEntry(hframe7, 40, 20, kFixedWidth);
288 hframe7->AddFrame(label1, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
289 hframe7->AddFrame(nEntries, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
290 hframe7->AddFrame(label2, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
291 hframe7->AddFrame(firstEntry, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
293 margins->AddFrame(hframe7, new TGLayoutHints(kLHintsExpandX, 5, 5, 1, 1));
295 //==========================
297 separator = new TGHorizontal3DLine(margins);
299 margins->AddFrame(separator, new TGLayoutHints(kLHintsExpandX));
301 const TGFont *font = gClient->GetFont("-*-times-bold-r-*-*-16-*-*-*-*-*-*-*");
302 // const TGFont *font = gClient->GetFont("-*-symbol-medium-r-normal-*-16-*-*-*-*-*-*-*");
303 FontStruct_t buttonFont = font->GetFontStruct();
304 ULong_t buttonRedColor;
305 gClient->GetColorByName("red", buttonRedColor);
306 TGTextButton *draw = new TGTextButton(margins,"Draw Residuals");
307 draw->SetTextColor(buttonRedColor);
308 draw->SetFont(buttonFont);
309 draw->Connect("Clicked()", "ButtonWindow", this, "DrawResiduals()");
310 margins->AddFrame(draw, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
312 controls->AddFrame(margins, new TGLayoutHints(kLHintsExpandX));
317 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), 1000, 1000, 0 ,0);
318 SetWindowName("Residuals");
322 //______________________________________________________________________________
323 void ButtonWindow::DrawResiduals()
326 TString selection1, selection2, selection3, selection4, selection5 selection6, selection7, selection8, selection9, selection10;
328 switch(option1->GetSelected())
344 switch(option2->GetSelected())
366 switch(option3->GetSelected())
388 switch(option4->GetSelected())
401 switch(option5->GetSelected())
423 switch(option6->GetSelected())
436 switch(option7->GetSelected())
458 switch(option8->GetSelected())
471 switch(option9->GetSelected())
493 switch(option10->GetSelected())
506 TString cutSelectionMerged;// = ("abs(ESDfriend.fTracks[].fTPCOut."+selection3+"[4])"+selection4+cut1->GetText());
507 TString drawSelectionMerged1 = ("track[]."+selection2+"[0]:track[]."+selection1);
508 TString drawSelectionMerged2;// = ("abs(track[]."+selection7+"[0])"+selection8+cut3->GetText());
510 if(customCutSelection->GetText())
511 cutSelectionMerged = customCutSelection->GetText();
513 if(customDrawSelection->GetText())
514 drawSelectionMerged2 = customDrawSelection->GetText();
517 cout << cutSelectionMerged << endl;
518 cout << "abs(ESDfriend.fTracks[].fTPCOut.fP[4])<0.5" <<endl;
520 cout << drawSelectionMerged1 << endl;
521 cout << "track[].fP[0]:track[].fX" << endl;
523 cout << drawSelectionMerged2 << endl;
524 cout << "abs(track[].fP[0])<20" << endl;
526 cout << "nEntries: " << nEntries->GetNumber() << endl;
527 cout << "firstEntry: " << firstEntry->GetNumber() << endl;
530 TEveUtil::LoadMacro("ConfigCalibTrain.C");
532 AliESDEvent *esd = AliEveEventManager::AssertESD();
534 ConfigCalibTrain(esd->GetRunNumber());
536 AliESDfriendTrack::MakeDebugStreamer(kTRUE);
538 TTreeSRedirector *pcstreamRes = AliESDfriendTrack::GetDebugStreamer();
540 TFile fRes("AliESDfriends.root");
542 TTree *treeRes = (TTree*)fRes.Get("esdFriendTree");
544 TCanvas* cnv = new TCanvas();
546 treeRes->Draw("ESDfriend.fTracks[].MakeResidualGraph(1)",cutSelectionMerged," ",nEntries->GetNumber(),firstEntry->GetNumber());
547 // treeRes->Draw("ESDfriend.fTracks[].MakeResidualGraph(1)","abs(ESDfriend.fTracks[].fTPCOut.fP[4])<0.5"," ",nEntries,firstEntry);
551 TFile fRes("residual.root");
553 dump.Draw(drawSelectionMerged1,drawSelectionMerged2);
555 // dump.Draw("track[].fP[0]:track[].fX","abs(track[].fP[0])<20");
561 //_____________________________________________________________________________
562 void make_residuals()