2 // Author: Matevz Tadel 2007
4 /**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveV0ListEditor.h"
13 #include "TEveGValuators.h"
15 #include "TVirtualPad.h"
18 // Cleanup these includes:
21 #include "TGNumberEntry.h"
22 #include "TGColorSelect.h"
23 #include "TGDoubleSlider.h"
24 #include "TGComboBox.h"
27 //______________________________________________________________________________
28 // GUI editor for AliEveV0List.
31 ClassImp(AliEveV0ListEditor)
33 //______________________________________________________________________________
34 AliEveV0ListEditor::AliEveV0ListEditor(const TGWindow *p, Int_t width, Int_t height,
35 UInt_t options, Pixel_t back) :
36 TGedFrame(p, width, height, options | kVerticalFrame, back),
39 fMinMaxDaughterDCA(0),
43 fNegativeCheckMaxPidProbability(0),
44 fPositiveCheckMaxPidProbability(0),
45 fNegativeLevelPidProbability(0),
46 fPositiveLevelPidProbability(0),
47 fMinMaxInvariantMass(0)
51 MakeTitle("AliEveV0List");
54 // fXYZZ = new TGSomeWidget(this, ...);
55 // AddFrame(fXYZZ, new TGLayoutHints(...));
56 // fXYZZ->Connect("SignalName()", "Reve::AliEveV0ListEditor", this, "DoXYZZ()");
58 fMinMaxRCut = new TEveGDoubleValuator(this,"Radius:", 130, 0);
59 fMinMaxRCut->SetNELength(5);
60 fMinMaxRCut->SetLabelWidth(74);
62 fMinMaxRCut->GetSlider()->SetWidth(200);
63 fMinMaxRCut->SetLimits(0, 100, TGNumberFormat::kNESRealOne);
64 fMinMaxRCut->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxRCut()");
65 AddFrame(fMinMaxRCut, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
67 fMinMaxDaughterDCA = new TEveGDoubleValuator(this,"DCA:", 130, 0);
68 fMinMaxDaughterDCA->SetNELength(5);
69 fMinMaxDaughterDCA->SetLabelWidth(74);
70 fMinMaxDaughterDCA->Build();
71 fMinMaxDaughterDCA->GetSlider()->SetWidth(200);
72 fMinMaxDaughterDCA->SetLimits(0, 1, TGNumberFormat::kNESRealTwo);
73 fMinMaxDaughterDCA->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxDaughterDCA()");
74 AddFrame(fMinMaxDaughterDCA, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
76 fMinMaxPt = new TEveGDoubleValuator(this,"pT:", 80, 0);
77 fMinMaxPt->SetNELength(5);
78 fMinMaxPt->SetLabelWidth(74);
80 fMinMaxPt->GetSlider()->SetWidth(200);
81 fMinMaxPt->SetLimits(0, 20, TGNumberFormat::kNESRealOne);
82 fMinMaxPt->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxPt()");
83 AddFrame(fMinMaxPt, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
85 TGHorizontalFrame* fNegFrame = new TGHorizontalFrame(this);
86 TGLabel* labNeg = new TGLabel(fNegFrame, "Neg:");
87 fNegFrame->AddFrame(labNeg, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 1, 1, 1));
88 fNegativeSpecies = new TGComboBox(fNegFrame);
89 fNegativeSpecies->AddEntry("e", 11);
90 fNegativeSpecies->AddEntry("mu", 13);
91 fNegativeSpecies->AddEntry("pi", 211);
92 fNegativeSpecies->AddEntry("K", 321);
93 fNegativeSpecies->AddEntry("p", 2212);
94 TGListBox* lbNeg = fNegativeSpecies->GetListBox();
95 lbNeg->Resize(lbNeg->GetWidth(), 2*18);
96 fNegativeSpecies->Resize(45, 20);
97 fNegativeSpecies->Connect("Selected(Int_t)", "AliEveV0ListEditor", this, "DoSelectNegPid(Int_t)");
98 fNegFrame->AddFrame(fNegativeSpecies, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
101 fNegativeCheckMaxPidProbability = new TGCheckButton(fNegFrame, "Check");
102 fNegFrame->AddFrame(fNegativeCheckMaxPidProbability, new TGLayoutHints(kLHintsLeft, 0, 2, 1, 1));
103 fNegativeCheckMaxPidProbability->Connect("Toggled(Bool_t)", "AliEveV0ListEditor", this, "DoCheckNegPid()");
105 fNegativeLevelPidProbability = new TGNumberEntry(fNegFrame, 0.5, 3, -1, TGNumberFormat::kNESRealTwo, TGNumberFormat::kNEANonNegative,TGNumberFormat::kNELLimitMinMax, 0, 1);
106 fNegativeLevelPidProbability->Resize(50,20);
107 fNegativeLevelPidProbability->Connect("ValueSet(Long_t)", "AliEveV0ListEditor", this, "DoSelectNegProb()");
108 fNegFrame->AddFrame(fNegativeLevelPidProbability, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 1, 1));
110 TGHorizontalFrame* fPosFrame = new TGHorizontalFrame(this);
111 TGLabel* labPos = new TGLabel(fPosFrame, "Pos:");
112 fPosFrame->AddFrame(labPos, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 1, 1, 1));
113 fPositiveSpecies = new TGComboBox(fPosFrame);
114 fPositiveSpecies->AddEntry("e", 11);
115 fPositiveSpecies->AddEntry("mu", 13);
116 fPositiveSpecies->AddEntry("pi", 211);
117 fPositiveSpecies->AddEntry("K", 321);
118 fPositiveSpecies->AddEntry("p", 2212);
119 TGListBox* lbPos = fPositiveSpecies->GetListBox();
120 lbPos->Resize(lbPos->GetWidth(), 2*18);
121 fPositiveSpecies->Resize(45, 20);
122 fPositiveSpecies->Connect("Selected(Int_t)", "AliEveV0ListEditor", this, "DoSelectPosPid(Int_t)");
123 fPosFrame->AddFrame(fPositiveSpecies, new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
126 fPositiveCheckMaxPidProbability = new TGCheckButton(fPosFrame, "Check");
127 fPosFrame->AddFrame(fPositiveCheckMaxPidProbability, new TGLayoutHints(kLHintsLeft, 0, 2, 1, 1));
128 fPositiveCheckMaxPidProbability->Connect("Toggled(Bool_t)", "AliEveV0ListEditor", this, "DoCheckPosPid()");
130 fPositiveLevelPidProbability = new TGNumberEntry(fPosFrame, 0.5, 3, -1, TGNumberFormat::kNESRealTwo, TGNumberFormat::kNEANonNegative,TGNumberFormat::kNELLimitMinMax, 0, 1);
131 fPositiveLevelPidProbability->Resize(50,20);
132 fPositiveLevelPidProbability->Connect("ValueSet(Long_t)", "AliEveV0ListEditor", this, "DoSelectPosProb()");
133 fPosFrame->AddFrame(fPositiveLevelPidProbability, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 1, 1));
135 fMinMaxInvariantMass = new TEveGDoubleValuator(this,"Inv. Mass:", 80, 0);
136 fMinMaxInvariantMass->SetNELength(5);
137 fMinMaxInvariantMass->SetLabelWidth(74);
138 fMinMaxInvariantMass->Build();
139 fMinMaxInvariantMass->GetSlider()->SetWidth(200);
140 fMinMaxInvariantMass->SetLimits(0, 1.2, TGNumberFormat::kNESRealThree);
141 fMinMaxInvariantMass->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxInvariantMass()");
142 AddFrame(fMinMaxInvariantMass, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
145 /******************************************************************************/
147 //______________________________________________________________________________
148 void AliEveV0ListEditor::SetModel(TObject* obj)
152 fM = dynamic_cast<AliEveV0List*>(obj);
154 // Set values of widgets
155 // fXYZZ->SetValue(fM->GetXYZZ());
157 fMinMaxRCut->SetValues(fM->fMinRCut, fM->fMaxRCut);
158 fMinMaxDaughterDCA->SetValues(fM->fMinDaughterDCA, fM->fMaxDaughterDCA);
159 fMinMaxPt->SetValues(fM->fMinPt, fM->fMaxPt);
160 fMinMaxInvariantMass->SetValues(fM->fMinInvariantMass, fM->fMaxInvariantMass);
163 /******************************************************************************/
165 // Implements callback/slot methods
167 //______________________________________________________________________________
168 // void AliEveV0ListEditor::DoXYZZ()
172 // fM->SetXYZZ(fXYZZ->GetValue());
176 void AliEveV0ListEditor::DoMinMaxRCut()
178 fM->FilterByRadius(fMinMaxRCut->GetMin(), fMinMaxRCut->GetMax());
181 void AliEveV0ListEditor::DoMinMaxDaughterDCA()
183 fM->FilterByDaughterDCA(fMinMaxDaughterDCA->GetMin(), fMinMaxDaughterDCA->GetMax());
186 void AliEveV0ListEditor::DoMinMaxPt()
188 fM->FilterByPt(fMinMaxPt->GetMin(), fMinMaxPt->GetMax());
191 void AliEveV0ListEditor::DoSelectNegPid(Int_t rNegPid)
193 fM->SetNegCheckedPid(rNegPid);
197 void AliEveV0ListEditor::DoCheckNegPid()
199 Int_t lNegPid = fM->GetNegCheckedPid();
200 Float_t lNegProb = fM->GetNegCheckedProb();
202 fM->FilterByCheckedPidMinProb(fNegativeCheckMaxPidProbability->IsOn(),0,lNegPid,lNegProb);
203 printf("Selection for negative daughter pid %d prob %.2f \n",lNegPid,lNegProb);
208 void AliEveV0ListEditor::DoSelectNegProb()
210 Float_t rMinNegProb = (Float_t)fNegativeLevelPidProbability->GetNumber();
211 fM->SetNegCheckedProb(rMinNegProb);
215 void AliEveV0ListEditor::DoSelectPosPid(Int_t rPosPid)
217 fM->SetPosCheckedPid(rPosPid);
221 void AliEveV0ListEditor::DoCheckPosPid()
223 Int_t lPosPid = fM->GetPosCheckedPid();
224 Float_t lPosProb = fM->GetPosCheckedProb();
226 fM->FilterByCheckedPidMinProb(fPositiveCheckMaxPidProbability->IsOn(),1,lPosPid,lPosProb);
227 printf("Selection for positive daughter pid %d prob %.2f \n",lPosPid,lPosProb);
232 void AliEveV0ListEditor::DoSelectPosProb()
234 Float_t rMinPosProb = (Float_t)fPositiveLevelPidProbability->GetNumber();
235 fM->SetPosCheckedProb(rMinPosProb);
239 void AliEveV0ListEditor::DoMinMaxInvariantMass()
241 Int_t lNegPid = fM->GetNegCheckedPid();
242 Int_t lPosPid = fM->GetPosCheckedPid();
243 if( lNegPid && lPosPid)
244 fM->FilterByInvariantMass(fMinMaxInvariantMass->GetMin(), fMinMaxInvariantMass->GetMax(),lNegPid,lPosPid);
246 fM->FilterByInvariantMass(fMinMaxInvariantMass->GetMin(), fMinMaxInvariantMass->GetMax(),211,-211);