fNegColor(0),
fPosColor(0),
fMinRCut(0),
- fMaxRCut(250)
+ fMaxRCut(250),
+ fMinDaughterDCA(0),
+ fMaxDaughterDCA(1),
+ fMinPt(0),
+ fMaxPt(20)
{
// Default constructor.
fNegColor(0),
fPosColor(0),
fMinRCut(0),
- fMaxRCut(250)
+ fMaxRCut(250),
+ fMinDaughterDCA(0),
+ fMaxDaughterDCA(1),
+ fMinPt(0),
+ fMaxPt(20)
{
// Constructor with given track-propagator..
fNegColor(0),
fPosColor(0),
fMinRCut(0),
- fMaxRCut(100)
+ fMaxRCut(100),
+ fMinDaughterDCA(0),
+ fMaxDaughterDCA(1),
+ fMinPt(0),
+ fMaxPt(20)
{
// Standard constructor.
ElementChanged();
gEve->Redraw3D();
}
+
+/******************************************************************************/
+
+//______________________________________________________________________________
+void AliEveV0List::FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA)
+{
+ // Select visibility of elements based on the DCA between daughters.
+
+ fMinDaughterDCA = minDaughterDCA;
+ fMaxDaughterDCA = maxDaughterDCA;
+
+ for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
+ {
+ AliEveV0* v0 = (AliEveV0*) *i;
+ Float_t dca = v0->GetDaughterDCA();
+ Bool_t show = dca >= fMinDaughterDCA && dca <= fMaxDaughterDCA;
+ v0->SetRnrState(show);
+ }
+ ElementChanged();
+ gEve->Redraw3D();
+}
+
+/******************************************************************************/
+
+//______________________________________________________________________________
+void AliEveV0List::FilterByPt(Float_t minPt, Float_t maxPt)
+{
+ // Select visibility of elements based on the V0 pt.
+
+ fMinPt = minPt;
+ fMaxPt = maxPt;
+
+ for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
+ {
+ AliEveV0* v0 = (AliEveV0*) *i;
+ Float_t pt = v0->GetPt();
+ Bool_t show = pt >= fMinPt && pt <= fMaxPt;
+ v0->SetRnrState(show);
+ }
+ ElementChanged();
+ gEve->Redraw3D();
+}
void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; }
Float_t GetRadius() const { return fRecDecayV.Perp(); }
+ Float_t GetPt() const { return fRecDecayP.Perp(); }
Bool_t GetOnFlyStatus() const { return fOnFlyStatus; }
void SetOnFlyStatus(Bool_t fs) { fOnFlyStatus = fs; }
void MakeV0s();
void FilterByRadius(Float_t minR, Float_t maxR);
+ void FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA);
+ void FilterByPt(Float_t minPt, Float_t maxPt);
protected:
TString fTitle;
Float_t fMinRCut;
Float_t fMaxRCut;
+ Float_t fMinDaughterDCA;
+ Float_t fMaxDaughterDCA;
+
+ Float_t fMinPt;
+ Float_t fMaxPt;
+
private:
void Init();
UInt_t options, Pixel_t back) :
TGedFrame(p, width, height, options | kVerticalFrame, back),
fM(0),
- fMinMaxRCut(0)
+ fMinMaxRCut(0),
+ fMinMaxDaughterDCA(0),
+ fMinMaxPt(0)
{
// Constructor.
fMinMaxRCut->SetLimits(0, 100, TGNumberFormat::kNESRealOne);
fMinMaxRCut->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxRCut()");
AddFrame(fMinMaxRCut, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
+
+ fMinMaxDaughterDCA = new TEveGDoubleValuator(this,"DCA:", 130, 0);
+ fMinMaxDaughterDCA->SetNELength(5);
+ fMinMaxDaughterDCA->SetLabelWidth(74);
+ fMinMaxDaughterDCA->Build();
+ fMinMaxDaughterDCA->GetSlider()->SetWidth(200);
+ fMinMaxDaughterDCA->SetLimits(0, 1, TGNumberFormat::kNESRealTwo);
+ fMinMaxDaughterDCA->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxDaughterDCA()");
+ AddFrame(fMinMaxDaughterDCA, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
+
+ fMinMaxPt = new TEveGDoubleValuator(this,"pT:", 130, 0);
+ fMinMaxPt->SetNELength(5);
+ fMinMaxPt->SetLabelWidth(74);
+ fMinMaxPt->Build();
+ fMinMaxPt->GetSlider()->SetWidth(200);
+ fMinMaxPt->SetLimits(0, 20, TGNumberFormat::kNESRealOne);
+ fMinMaxPt->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxPt()");
+ AddFrame(fMinMaxPt, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
}
/******************************************************************************/
// fXYZZ->SetValue(fM->GetXYZZ());
fMinMaxRCut->SetValues(fM->fMinRCut, fM->fMaxRCut);
+ fMinMaxDaughterDCA->SetValues(fM->fMinDaughterDCA, fM->fMaxDaughterDCA);
+ fMinMaxPt->SetValues(fM->fMinPt, fM->fMaxPt);
}
/******************************************************************************/
{
fM->FilterByRadius(fMinMaxRCut->GetMin(), fMinMaxRCut->GetMax());
}
+
+void AliEveV0ListEditor::DoMinMaxDaughterDCA()
+{
+ fM->FilterByDaughterDCA(fMinMaxDaughterDCA->GetMin(), fMinMaxDaughterDCA->GetMax());
+}
+
+void AliEveV0ListEditor::DoMinMaxPt()
+{
+ fM->FilterByPt(fMinMaxPt->GetMin(), fMinMaxPt->GetMax());
+}