2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 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 **************************************************************************/
9 /**************************************************************************
10 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
12 * Author: The ALICE Off-line Project. *
13 * Contributors are mentioned in the code where appropriate. *
15 * Permission to use, copy, modify and distribute this software and its *
16 * documentation strictly for non-commercial purposes is hereby granted *
17 * without fee, provided that the above copyright notice appears in all *
18 * copies and that both the copyright notice and this permission notice *
19 * appear in the supporting documentation. The authors make no claims *
20 * about the suitability of this software for any purpose. It is *
21 * provided "as is" without express or implied warranty. *
22 **************************************************************************/
25 /***********************************************************************
26 * This code defines the reconstructed v0 visualized with EVE
28 * Ludovic Gaudichet (gaudichet@to.infn.it)
29 ************************************************************************/
33 #include <TEveTrack.h>
34 #include <MCHelixLine.hi>
36 #include <TPolyLine3D.h>
37 #include <TPolyMarker3D.h>
40 #include <TEveManager.h>
49 /***********************************************************************
53 ************************************************************************/
55 const Float_t AliEveV0::fgkMassPion2 = 0.13956995*0.13956995;
56 const Float_t AliEveV0::fgkMassProton2 = 0.93827231*0.93827231;
60 AliEveV0::AliEveV0() :
81 fCosPointingAngle(999),
86 AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
87 TEveRecV0* v0, TEveTrackPropagator* rs) :
95 fV0_birth(v0->V0_birth),
96 fBeta_neg(tNeg->beta),
97 fBeta_pos(tPos->beta),
98 fLabel_neg(v0->d_label[0]),
99 fLabel_pos(v0->d_label[1]),
108 fCosPointingAngle(999),
111 fPolyLineV0.SetLineColor(fMarkerColor);
112 fPolyLinePos.SetLineColor(2); // red
113 fPolyLineNeg.SetLineColor(7); // light blue
115 fMainColorPtr = &fMarkerColor;
122 AliEveV0::~AliEveV0()
124 for (vpPathMark_i i=fPathMarksNeg.begin(); i!=fPathMarksNeg.end(); ++i)
126 for (vpPathMark_i i=fPathMarksPos.begin(); i!=fPathMarksPos.end(); ++i)
131 void AliEveV0::Reset(TPolyLine3D* polyLine) {
132 //polyLine->SetPolyLine(n_points);
133 polyLine->SetPolyLine(0);
136 //______________________________________________________________________
137 void AliEveV0::SetDecayLength(Float_t primx, Float_t primy, Float_t primz) {
139 Float_t dx = fV_v0.x-primx;
140 Float_t dy = fV_v0.y-primy;
141 Float_t dz = fV_v0.z-primz;
143 fDecayLength = sqrt(dx*dx+dy*dy+dz*dz);
145 // This is probably wrong but I can only do this for now
146 Float_t distNorm = fDecayLength/GetMomentum();
147 fV0_birth.x = fV_v0.x - distNorm*GetPx();
148 fV0_birth.y = fV_v0.y - distNorm*GetPy();
149 fV0_birth.z = fV_v0.z - distNorm*GetPz();
154 //______________________________________________________________________
155 void AliEveV0::MakeTrack(vpPathMark_t& pathMark, TEveVector& vtx, TEveVector& p,
156 Int_t charge, Float_t beta, TPolyLine3D& polyLine) {
158 TEveTrackPropagator& RS((fRnrStyle != 0) ? *fRnrStyle : TEveTrackPropagator::fgDefStyle);
160 Float_t px = p.x, py = p.y, pz = p.z;
168 std::vector<MCVertex> track_points;
169 Bool_t decay = kFALSE;
171 if ((TMath::Abs(vtx.z) > RS.fMaxZ) || (vtx.x*vtx.x + vtx.y*vtx.y > RS.fMaxR*RS.fMaxR))
174 if (TMath::Abs(RS.fMagField) > 1e-5) {
176 // Charged particle in magnetic field
178 Float_t a = RS.fgkB2C * RS.fMagField * charge;
180 MCHelix helix(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points, a); //m->cm
181 helix.Init(TMath::Sqrt(px*px+py*py), pz);
183 if(!pathMark.empty()){
184 for(std::vector<TEvePathMark*>::iterator i=pathMark.begin();
185 i!=pathMark.end(); ++i) {
187 TEvePathMark* pm = *i;
189 if(RS.fFitDaughters && pm->type == TEvePathMark::Daughter){
190 if(TMath::Abs(pm->V.z) > RS.fMaxZ
191 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
194 //printf("%s fit daughter \n", fName.Data());
195 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
200 if(RS.fFitDecay && pm->type == TEvePathMark::Decay){
202 if(TMath::Abs(pm->V.z) > RS.fMaxZ
203 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
205 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
213 if(!decay || RS.fFitDecay == kFALSE){
214 helix.LoopToBounds(px,py,pz);
215 // printf("%s loop to bounds \n",fName.Data() );
220 // Neutral particle or no field
222 MCLine line(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points);
224 if(!pathMark.empty()) {
225 for(std::vector<TEvePathMark*>::iterator i=pathMark.begin();
226 i!=pathMark.end(); ++i) {
227 TEvePathMark* pm = *i;
229 if(RS.fFitDaughters && pm->type == TEvePathMark::Daughter){
230 if(TMath::Abs(pm->V.z) > RS.fMaxZ
231 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
233 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
239 if(RS.fFitDecay && pm->type == TEvePathMark::Decay){
240 if(TMath::Abs(pm->V.z) > RS.fMaxZ
241 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
243 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
251 if(!decay || RS.fFitDecay == kFALSE)
252 line.GotoBounds(px,py,pz);
257 for(std::vector<MCVertex>::iterator i=track_points.begin();
258 i!=track_points.end(); ++i) {
259 polyLine.SetNextPoint(i->x,i->y, i->z);
265 //______________________________________________________________________
266 void AliEveV0::MakeV0path() {
274 std::vector<MCVertex> track_points;
275 MCLine line(fRnrStyle, &mc_v0, TMath::C()*0.99, &track_points);
277 line.GotoVertex(fV0_birth.x,fV0_birth.y,fV0_birth.z);
280 for(std::vector<MCVertex>::iterator i=track_points.begin();
281 i!=track_points.end(); ++i) {
282 fPolyLineV0.SetNextPoint(i->x,i->y, i->z);
287 //______________________________________________________________________
288 void AliEveV0::MakeV0()
290 SetNextPoint(fV_v0.x, fV_v0.y, fV_v0.z);
291 MakeTrack(fPathMarksNeg, fV_neg, fP_neg, -1, fBeta_neg, fPolyLineNeg);
292 MakeTrack(fPathMarksPos, fV_pos, fP_pos, 1, fBeta_pos, fPolyLinePos);
294 //fN = fPolyLineNeg.GetN();
298 //______________________________________________________________________
299 Float_t AliEveV0::GetAlphaArmenteros() const
301 Float_t posXv0 = fP_pos.x*GetPx() + fP_pos.y*GetPy() + fP_pos.z*GetPz();
302 Float_t negXv0 = fP_neg.x*GetPx() + fP_neg.y*GetPy() + fP_neg.z*GetPz();
304 if (posXv0+negXv0 > 1.e-39)
305 return (posXv0-negXv0)/(posXv0+negXv0);
309 //______________________________________________________________________
310 Float_t AliEveV0::GetPtArmenteros() const
312 Float_t posXv0 = fP_pos.x*GetPx() + fP_pos.y*GetPy() + fP_pos.z*GetPz();
313 Float_t v0mom2 = GetP2();
316 return TMath::Sqrt( GetPosP2() - posXv0*posXv0/v0mom2 ) ;
322 /***********************************************************************
326 ************************************************************************/
330 //______________________________________________________________________
335 fRnrDaughters(kTRUE),
341 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
343 for (Int_t i=0; i<fgkNcutVar; i++)
345 for (Int_t i=0; i<fgkNcutVar2D; i++)
349 //______________________________________________________________________
350 V0List::V0List(TEveTrackPropagator* rs) :
354 fRnrDaughters(kTRUE),
360 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
365 //______________________________________________________________________
366 V0List::V0List(const Text_t* name, TEveTrackPropagator* rs) :
370 fRnrDaughters(kTRUE),
376 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
382 //______________________________________________________________________
385 if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
387 fMin[0] = 0; fMax[0] = 10; // pt
388 fMin[1] = 0; fMax[1] = 10; // K0s mass
389 fMin[2] = 0; fMax[2] = 10; // lambda mass
390 fMin[3] = 0; fMax[3] = 10; // anti-lambda mass
391 fMin[4] = 0; fMax[4] = 10; // daughter DCA
392 fMin[5] = 0.8; fMax[5] = 1; // cos of pointing angle
394 fMin[6] = 0; fMax[6] = 200; // radius
395 fMin[7] = -2; fMax[7] = 2; // PseudoRapidity
396 fMin[8] = 0; fMax[8] = 10; // NegPt
397 fMin[9] = -2; fMax[9] = 2; // NegPseudoRapidity
398 fMin[10] = 0; fMax[10] = 10; // PosPt
399 fMin[11] = -2; fMax[11] = 2; // PosPseudoRapidity
400 fMin[12] = 0; fMax[12] = 1e5; // index, would be good to be able to adjust it
403 fHist[0] = new TH1F(ch,ch, 100, fMin[0], fMax[0]);
405 fHist[1] = new TH1F(ch,ch, 100, fMin[1], fMax[1]);
407 fHist[2] = new TH1F(ch,ch, 100, fMin[2], fMax[2]);
408 ch = "AntiLambdaMass";
409 fHist[3] = new TH1F(ch,ch, 100, fMin[3], fMax[3]);
411 fHist[4] = new TH1F(ch,ch, 100, fMin[4], fMax[4]);
412 ch = "cosPointingAngle";
413 fHist[5] = new TH1F(ch,ch, 100, fMin[5], fMax[5]);
415 fHist[6] = new TH1F(ch,ch, 100, fMin[6], fMax[6]);
416 ch = "PseudoRapidity";
417 fHist[7] = new TH1F(ch,ch, 100, fMin[7], fMax[7]);
420 fHist[8] = new TH1F(ch,ch, 100, fMin[8], fMax[8]);
421 ch = "NegPseudoRapidity";
422 fHist[9] = new TH1F(ch,ch, 100, fMin[9], fMax[9]);
424 fHist[10] = new TH1F(ch,ch, 100, fMin[10], fMax[10]);
425 ch = "PosPseudoRapidity";
426 fHist[11] = new TH1F(ch,ch, 100, fMin[11], fMax[11]);
428 fHist[12] = new TH1F(ch,ch, 100, fMin[12], fMax[12]);
435 ch = "ArmenterosPodolansky";
436 fHist2D[0] = new TH2F(ch,ch, 70, fMinX[0], fMaxX[0], 70,
439 for (Int_t i=0; i<fgkNcutVar; i++) {
440 fHist[i]->GetXaxis()->SetLabelSize(0.07);
441 fHist[i]->GetYaxis()->SetLabelSize(0.07);
442 fHist[i]->SetStats(0);
444 for (Int_t i=0; i<fgkNcutVar2D; i++) {
445 fHist2D[i]->GetXaxis()->SetLabelSize(0.07);
446 fHist2D[i]->GetYaxis()->SetLabelSize(0.07);
447 fHist2D[i]->SetStats(0);
451 //______________________________________________________________________
454 for (Int_t i=0; i<fgkNcutVar; i++)
455 if (fHist[i]) delete fHist[i];
456 for (Int_t i=0; i<fgkNcutVar2D; i++)
457 if (fHist2D[i]) delete fHist2D[i];
461 //______________________________________________________________________
462 void V0List::Paint(Option_t* option) {
466 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
467 if((*i)->GetRnrSelf()) {
468 ((AliEveV0*)(*i))->Paint(option);
474 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
475 if((*i)->GetRnrSelf()) {
476 ((AliEveV0*)(*i))->PaintDaughters(option);
482 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
483 if((*i)->GetRnrSelf()) {
484 ((AliEveV0*)(*i))->PaintPath(option);
492 //______________________________________________________________________
494 void V0List::SetRnrV0vtx(Bool_t rnr) {
499 void V0List::SetRnrV0path(Bool_t rnr) {
504 void V0List::SetRnrDaughters(Bool_t rnr) {
510 //______________________________________________________________________
512 void V0List::MakeV0s() {
513 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
514 ((AliEveV0*)(*i))->MakeV0();
520 void V0List::MakeMarkers() {
525 //_________________________________________________________________________
526 void V0List::AdjustHist(Int_t iHist) {
528 if ((iHist<0)||(iHist>=fgkNcutVar)) return;
529 if (! fHist[iHist]) return;
531 TString name = fHist[iHist]->GetName();
532 Int_t nBin = fHist[iHist]->GetXaxis()->GetNbins();
534 fHist[iHist] = new TH1F(name.Data(), name.Data(), nBin, GetMin(iHist),
536 fHist[iHist]->GetXaxis()->SetLabelSize(0.07);
537 fHist[iHist]->GetYaxis()->SetLabelSize(0.07);
538 fHist[iHist]->SetStats(0);
543 //______________________________________________________________________
544 void V0List::UnFill(AliEveV0* v0) {
546 Int_t bin = fHist[0]->GetXaxis()->FindBin(v0->GetPt());
547 fHist[0]->SetBinContent( bin, fHist[0]->GetBinContent(bin)-1 );
549 bin = fHist[1]->GetXaxis()->FindBin( v0->GetK0mass() );
550 fHist[1]->SetBinContent( bin, fHist[1]->GetBinContent(bin)-1 );
552 bin = fHist[2]->GetXaxis()->FindBin( v0->GetLamMass() );
553 fHist[2]->SetBinContent( bin, fHist[2]->GetBinContent(bin)-1 );
555 bin = fHist[3]->GetXaxis()->FindBin( v0->GetAntiLamMass() );
556 fHist[3]->SetBinContent( bin, fHist[3]->GetBinContent(bin)-1 );
558 bin = fHist[4]->GetXaxis()->FindBin( v0->GetDaughterDCA() );
559 fHist[4]->SetBinContent( bin, fHist[4]->GetBinContent(bin)-1 );
561 bin = fHist[5]->GetXaxis()->FindBin( v0->GetCosPointingAngle() );
562 fHist[5]->SetBinContent( bin, fHist[5]->GetBinContent(bin)-1 );
565 bin = fHist[6]->GetXaxis()->FindBin( v0->GetRadius() );// radius
566 fHist[6]->SetBinContent( bin, fHist[6]->GetBinContent(bin)-1 );
568 bin = fHist[7]->GetXaxis()->FindBin( v0->GetPseudoRapidity() ); // PseudoRapidity
569 fHist[7]->SetBinContent( bin, fHist[7]->GetBinContent(bin)-1 );
571 bin = fHist[8]->GetXaxis()->FindBin( v0->GetNegPt() );// NegPt
572 fHist[8]->SetBinContent( bin, fHist[8]->GetBinContent(bin)-1 );
574 bin = fHist[9]->GetXaxis()->FindBin( v0->GetNegPseudoRapidity() );// NegPseudoRapidity
575 fHist[9]->SetBinContent( bin, fHist[9]->GetBinContent(bin)-1 );
577 bin = fHist[10]->GetXaxis()->FindBin( v0->GetPosPt() ); // PosPt
578 fHist[10]->SetBinContent( bin, fHist[10]->GetBinContent(bin)-1 );
580 bin = fHist[11]->GetXaxis()->FindBin( v0->GetPosPseudoRapidity() ); // PosPseudoRapidity
581 fHist[11]->SetBinContent( bin, fHist[11]->GetBinContent(bin)-1 );
583 bin = fHist[12]->GetXaxis()->FindBin( v0->GetESDIndex() ); // ESD index
584 fHist[12]->SetBinContent( bin, fHist[12]->GetBinContent(bin)-1 );
587 bin = fHist2D[0]->GetXaxis()->FindBin( v0->GetAlphaArmenteros() );
588 Int_t binY = fHist2D[0]->GetYaxis()->FindBin( v0->GetPtArmenteros() );
589 fHist2D[0]->SetBinContent( bin, binY, fHist2D[0]->GetBinContent(bin,binY)-1 );
593 //______________________________________________________________________
594 void V0List::Filter(AliEveV0* v0) {
596 Float_t pt = v0->GetPt();
597 if ((pt<fMin[0])||(pt>fMax[0])) return;
599 Float_t k0sMass = v0->GetK0mass();
600 if ( (k0sMass<fMin[1])||(k0sMass>fMax[1]) ) return;
602 Float_t lamMass = v0->GetLamMass();
603 if ( (lamMass<fMin[2])||(lamMass>fMax[2]) ) return;
605 Float_t alamMass = v0->GetAntiLamMass();
606 if ( (alamMass<fMin[3])||(alamMass>fMax[3]) ) return;
608 Float_t daughtDCA = v0->GetDaughterDCA();
609 if ( (daughtDCA<fMin[4])||(daughtDCA>fMax[4]) ) return;
611 Float_t cosPointing = v0->GetCosPointingAngle();
612 if ( (cosPointing<fMin[5])||(cosPointing>fMax[5]) ) return;
615 Float_t radius = v0->GetRadius();
616 if ( (radius<fMin[6])||(radius>fMax[6]) ) return;
618 Float_t pseudoRapidity = v0->GetPseudoRapidity();
619 if ( (pseudoRapidity<fMin[7])||(pseudoRapidity>fMax[7]) ) return;
621 Float_t negPt = v0->GetNegPt();
622 if ( (negPt<fMin[8])||(negPt>fMax[8]) ) return;
624 Float_t negPseudoRapidity = v0->GetNegPseudoRapidity();
625 if ( (negPseudoRapidity<fMin[9])||(negPseudoRapidity>fMax[9]) ) return;
627 Float_t posPt = v0->GetPosPt();
628 if ( (posPt<fMin[10])||(posPt>fMax[10]) ) return;
630 Float_t posPseudoRapidity = v0->GetPosPseudoRapidity();
631 if ( (posPseudoRapidity<fMin[11])||(posPseudoRapidity>fMax[11]) ) return;
633 Float_t esdIndex = v0->GetESDIndex();
634 if ( (esdIndex<fMin[12])||(esdIndex>fMax[12]) ) return;
636 Float_t alphaArm = v0->GetAlphaArmenteros();
637 // if ( (alphaArm<fMinX[0])||(alphaArm>fMaxX[0]) ) return;
639 Float_t ptArm = v0->GetPtArmenteros();
640 // if ( (ptArm<fMinY[0])||(ptArm>fMaxY[0]) ) return;
642 v0->SetRnrSelf(kTRUE);
644 fHist[1]->Fill(k0sMass);
645 fHist[2]->Fill(lamMass);
646 fHist[3]->Fill(alamMass);
647 fHist[4]->Fill(daughtDCA);
648 fHist[5]->Fill(cosPointing);
649 fHist[6]->Fill(radius);
650 fHist[7]->Fill(pseudoRapidity);
651 fHist[8]->Fill(negPt);
652 fHist[9]->Fill(negPseudoRapidity);
653 fHist[10]->Fill(posPt);
654 fHist[11]->Fill(posPseudoRapidity);
655 fHist[12]->Fill(esdIndex);
656 fHist2D[0]->Fill(alphaArm, ptArm);
659 //______________________________________________________________________
660 void V0List::FilterAll() {
662 for (Int_t i=0; i<fgkNcutVar; i++)
665 for (Int_t i=0; i<fgkNcutVar2D; i++)
669 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
671 myV0 = (AliEveV0*)(*i);
677 //______________________________________________________________________
678 void V0List::GetV0IndexRange(Int_t &imin, Int_t &imax) {
682 List_i i=fChildren.begin();
683 myV0 = (AliEveV0*)(*i);
684 index = myV0->GetESDIndex();
688 for(; i!=fChildren.end(); ++i) {
690 myV0 = (AliEveV0*)(*i);
691 index = myV0->GetESDIndex();
692 if (index<imin) imin = index;
693 if (index>imax) imax = index;
698 //______________________________________________________________________
699 void V0List::PtFilter(Float_t min, Float_t max) {
709 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
711 myV0 = (AliEveV0*)(*i);
713 wasSelected = myV0->GetRnrSelf();
714 isSelected = ( (val>=min) && (val<=max) );
719 myV0->SetRnrSelf(isSelected);
722 if (isSelected) Filter(myV0);
728 //______________________________________________________________________
729 void V0List::K0sMFilter(Float_t min, Float_t max) {
739 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
741 myV0 = (AliEveV0*)(*i);
742 val = myV0->GetK0mass();
743 wasSelected = myV0->GetRnrSelf();
744 isSelected = ( (val>=min) && (val<=max) );
749 myV0->SetRnrSelf(isSelected);
752 if (isSelected) Filter(myV0);
757 //______________________________________________________________________
758 void V0List::LamMFilter(Float_t min, Float_t max) {
768 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
770 myV0 = (AliEveV0*)(*i);
771 val = myV0->GetLamMass();
772 wasSelected = myV0->GetRnrSelf();
773 isSelected = ( (val>=min) && (val<=max) );
778 myV0->SetRnrSelf(isSelected);
781 if (isSelected) Filter(myV0);
788 //______________________________________________________________________
789 void V0List::ALamMFilter(Float_t min, Float_t max) {
799 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
801 myV0 = (AliEveV0*)(*i);
802 val = myV0->GetAntiLamMass();
803 wasSelected = myV0->GetRnrSelf();
804 isSelected = ( (val>=min) && (val<=max) );
809 myV0->SetRnrSelf(isSelected);
812 if (isSelected) Filter(myV0);
817 //______________________________________________________________________
818 void V0List::CosPointingFilter(Float_t min, Float_t max) {
828 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
830 myV0 = (AliEveV0*)(*i);
831 val = myV0->GetCosPointingAngle();
832 wasSelected = myV0->GetRnrSelf();
833 isSelected = ( (val>=min) && (val<=max) );
838 myV0->SetRnrSelf(isSelected);
841 if (isSelected) Filter(myV0);
846 //______________________________________________________________________
847 void V0List::DaughterDCAFilter(Float_t min, Float_t max) {
857 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
859 myV0 = (AliEveV0*)(*i);
860 val = myV0->GetDaughterDCA();
861 wasSelected = myV0->GetRnrSelf();
862 isSelected = ( (val>=min) && (val<=max) );
867 myV0->SetRnrSelf(isSelected);
870 if (isSelected) Filter(myV0);
875 //______________________________________________________________________
876 void V0List::RadiusFilter(Float_t min, Float_t max) {
886 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
888 myV0 = (AliEveV0*)(*i);
889 val = myV0->GetRadius();
890 wasSelected = myV0->GetRnrSelf();
891 isSelected = ( (val>=min) && (val<=max) );
896 myV0->SetRnrSelf(isSelected);
899 if (isSelected) Filter(myV0);
904 //______________________________________________________________________
905 void V0List::EtaFilter(Float_t min, Float_t max) {
915 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
917 myV0 = (AliEveV0*)(*i);
918 val = myV0->GetPseudoRapidity();
919 wasSelected = myV0->GetRnrSelf();
920 isSelected = ( (val>=min) && (val<=max) );
925 myV0->SetRnrSelf(isSelected);
928 if (isSelected) Filter(myV0);
933 //______________________________________________________________________
934 void V0List::NegPtFilter(Float_t min, Float_t max) {
944 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
946 myV0 = (AliEveV0*)(*i);
947 val = myV0->GetNegPt();
948 wasSelected = myV0->GetRnrSelf();
949 isSelected = ( (val>=min) && (val<=max) );
954 myV0->SetRnrSelf(isSelected);
957 if (isSelected) Filter(myV0);
962 //______________________________________________________________________
963 void V0List::NegEtaFilter(Float_t min, Float_t max) {
973 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
975 myV0 = (AliEveV0*)(*i);
976 val = myV0->GetNegPseudoRapidity();
977 wasSelected = myV0->GetRnrSelf();
978 isSelected = ( (val>=min) && (val<=max) );
983 myV0->SetRnrSelf(isSelected);
986 if (isSelected) Filter(myV0);
991 //______________________________________________________________________
992 void V0List::PosPtFilter(Float_t min, Float_t max) {
1002 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1004 myV0 = (AliEveV0*)(*i);
1005 val = myV0->GetPosPt();
1006 wasSelected = myV0->GetRnrSelf();
1007 isSelected = ( (val>=min) && (val<=max) );
1012 myV0->SetRnrSelf(isSelected);
1015 if (isSelected) Filter(myV0);
1020 //______________________________________________________________________
1021 void V0List::PosEtaFilter(Float_t min, Float_t max) {
1031 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1033 myV0 = (AliEveV0*)(*i);
1034 val = myV0->GetPosPseudoRapidity();
1035 wasSelected = myV0->GetRnrSelf();
1036 isSelected = ( (val>=min) && (val<=max) );
1041 myV0->SetRnrSelf(isSelected);
1044 if (isSelected) Filter(myV0);
1049 //______________________________________________________________________
1050 void V0List::IndexFilter(Float_t min, Float_t max) {
1060 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1062 myV0 = (AliEveV0*)(*i);
1063 val = myV0->GetESDIndex();
1064 wasSelected = myV0->GetRnrSelf();
1065 isSelected = ( (val>=min) && (val<=max) );
1070 myV0->SetRnrSelf(isSelected);
1073 if (isSelected) Filter(myV0);