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 **************************************************************************/
27 /***********************************************************************
28 * This code defines the reconstructed cascades visualized with EVE
30 * Ludovic Gaudichet (gaudichet@to.infn.it)
31 ************************************************************************/
33 #include "AliEveCascade.h"
35 #include <TEveTrack.h>
36 #include <MCHelixLine.hi>
38 #include <TPolyLine3D.h>
39 #include <TPolyMarker3D.h>
43 #include <TEveManager.h>
52 /***********************************************************************
56 ************************************************************************/
58 const Float_t AliEveCascade::fgkMassPion2 = 0.13956995*0.13956995;
59 const Float_t AliEveCascade::fgkMassKaon2 = 0.493677*0.493677;
60 const Float_t AliEveCascade::fgkMassProton2 = 0.93827231*0.93827231;
61 const Float_t AliEveCascade::fgkMassLambda2 = 1.115683*1.115683;
63 ClassImp(AliEveCascade)
66 AliEveCascade::AliEveCascade() :
91 fCasCosPointingAngle(999),
94 fPolyLinePos.SetLineColor(2); // red
95 fPolyLineNeg.SetLineColor(7); // light blue
96 fPolyLineBach.SetLineColor(4); // blue
105 AliEveCascade::AliEveCascade(TEveTrackPropagator* rs) :
130 fCasCosPointingAngle(999),
133 fMarkerColor = fRnrStyle->fFVAtt.GetMarkerColor();
134 fPolyLineV0.SetLineColor(fMarkerColor);
135 fPolyLinePos.SetLineColor(2); // red
136 fPolyLineNeg.SetLineColor(7); // light blue
137 fPolyLineBach.SetLineColor(4); // blue
139 fMainColorPtr = &fMarkerColor;
146 AliEveCascade::~AliEveCascade()
148 for (vpPathMark_i i=fPathMarksNeg.begin(); i!=fPathMarksNeg.end(); ++i)
150 for (vpPathMark_i i=fPathMarksPos.begin(); i!=fPathMarksPos.end(); ++i)
152 for (vpPathMark_i i=fPathMarksBach.begin(); i!=fPathMarksBach.end(); ++i)
155 void AliEveCascade::Reset(TPolyLine3D* polyLine) {
156 //polyLine->SetPolyLine(n_points);
157 polyLine->SetPolyLine(0);
161 //______________________________________________________________________________
162 void AliEveCascade::SetDecayLength(Float_t primx, Float_t primy, Float_t primz) {
165 Float_t dx = fV_decay.x-primx;
166 Float_t dy = fV_decay.y-primy;
167 Float_t dz = fV_decay.z-primz;
169 fCasDecayLength = sqrt(dx*dx+dy*dy+dz*dz);
170 // This is probably wrong but I can only do this for now
171 Float_t distNorm = fCasDecayLength/GetMomentum();
172 fV_birth.x = fV_decay.x - distNorm*GetPx();
173 fV_birth.y = fV_decay.y - distNorm*GetPy();
174 fV_birth.z = fV_decay.z - distNorm*GetPz();
176 fV_bach.x = fV_decay.x;
177 fV_bach.y = fV_decay.y;
178 fV_bach.z = fV_decay.z;
182 //______________________________________________________________________________
183 void AliEveCascade::MakeTrack(vpPathMark_t& pathMark, TEveVector& vtx, TEveVector& p,
184 Int_t charge, Float_t beta, TPolyLine3D& polyLine) {
186 TEveTrackPropagator& RS((fRnrStyle != 0) ? *fRnrStyle : TEveTrackPropagator::fgDefStyle);
188 Float_t px = p.x, py = p.y, pz = p.z;
196 std::vector<MCVertex> track_points;
197 Bool_t decay = kFALSE;
199 if ((TMath::Abs(vtx.z) > RS.fMaxZ) || (vtx.x*vtx.x + vtx.y*vtx.y > RS.fMaxR*RS.fMaxR))
202 if (TMath::Abs(RS.fMagField) > 1e-5) {
204 // Charged particle in magnetic field
206 Float_t a = RS.fgkB2C * RS.fMagField * charge;
208 MCHelix helix(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points, a); //m->cm
209 helix.Init(TMath::Sqrt(px*px+py*py), pz);
211 if(!pathMark.empty()){
212 for(std::vector<TEvePathMark*>::iterator i=pathMark.begin();
213 i!=pathMark.end(); ++i) {
215 TEvePathMark* pm = *i;
217 if(RS.fFitDaughters && pm->type == TEvePathMark::Daughter){
218 if(TMath::Abs(pm->V.z) > RS.fMaxZ
219 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
222 //printf("%s fit daughter \n", fName.Data());
223 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
228 if(RS.fFitDecay && pm->type == TEvePathMark::Decay){
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 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
241 if(!decay || RS.fFitDecay == kFALSE){
242 helix.LoopToBounds(px,py,pz);
243 // printf("%s loop to bounds \n",fName.Data() );
248 // Neutral particle or no field
250 MCLine line(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points);
252 if(!pathMark.empty()) {
253 for(std::vector<TEvePathMark*>::iterator i=pathMark.begin();
254 i!=pathMark.end(); ++i) {
255 TEvePathMark* pm = *i;
257 if(RS.fFitDaughters && pm->type == TEvePathMark::Daughter){
258 if(TMath::Abs(pm->V.z) > RS.fMaxZ
259 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
261 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
267 if(RS.fFitDecay && pm->type == TEvePathMark::Decay){
268 if(TMath::Abs(pm->V.z) > RS.fMaxZ
269 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
271 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
279 if(!decay || RS.fFitDecay == kFALSE)
280 line.GotoBounds(px,py,pz);
285 for(std::vector<MCVertex>::iterator i=track_points.begin();
286 i!=track_points.end(); ++i) {
287 polyLine.SetNextPoint(i->x,i->y, i->z);
292 //______________________________________________________________________________
293 void AliEveCascade::MakeV0path() {
296 mc_v0.x = (fV_neg.x+fV_pos.x)/2;
297 mc_v0.y = (fV_neg.y+fV_pos.y)/2;
298 mc_v0.z = (fV_neg.z+fV_pos.z)/2;
301 std::vector<MCVertex> track_points;
302 MCLine line(fRnrStyle, &mc_v0, TMath::C()*0.99, &track_points);
304 line.GotoVertex(fV_decay.x,fV_decay.y,fV_decay.z);
307 for(std::vector<MCVertex>::iterator i=track_points.begin();
308 i!=track_points.end(); ++i) {
309 fPolyLineV0.SetNextPoint(i->x,i->y, i->z);
314 //______________________________________________________________________________
315 void AliEveCascade::MakeCasPath() {
318 mc_v0.x = fV_birth.x;
319 mc_v0.y = fV_birth.y;
320 mc_v0.z = fV_birth.z;
323 std::vector<MCVertex> track_points;
324 MCLine line(fRnrStyle, &mc_v0, TMath::C()*0.99, &track_points);
326 line.GotoVertex(fV_decay.x,fV_decay.y,fV_decay.z);
328 Reset(&fPolyLineCas);
329 for(std::vector<MCVertex>::iterator i=track_points.begin();
330 i!=track_points.end(); ++i) {
331 fPolyLineCas.SetNextPoint(i->x,i->y, i->z);
336 //______________________________________________________________________________
337 void AliEveCascade::MakeCascade()
339 SetNextPoint(fV_neg.x, fV_neg.y, fV_neg.z);
340 SetNextPoint(fV_decay.x, fV_decay.y, fV_decay.z);
342 MakeTrack(fPathMarksNeg, fV_neg, fP_neg, -1, fBeta_neg, fPolyLineNeg);
343 MakeTrack(fPathMarksPos, fV_pos, fP_pos, 1, fBeta_pos, fPolyLinePos);
345 MakeTrack(fPathMarksBach, fV_bach, fP_bach, 1, fBeta_bach, fPolyLineBach);
347 MakeTrack(fPathMarksBach, fV_bach, fP_bach, -1, -fBeta_bach, fPolyLineBach);
355 //______________________________________________________________________________
356 Float_t AliEveCascade::GetCasAlphaArmenteros() const
358 Float_t px = GetPx(), py = GetPy(), pz = GetPz();
359 Float_t posXcas, negXcas;
362 posXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.z*pz;
363 negXcas = (fP_neg.x+fP_pos.x)*px + (fP_neg.y+fP_pos.y)*py + (fP_neg.z+fP_pos.z)*pz;
365 posXcas = (fP_neg.x+fP_pos.x)*px + (fP_neg.y+fP_pos.y)*py + (fP_neg.z+fP_pos.z)*pz;
366 negXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.z*pz;
369 if (posXcas + negXcas > 1.e-39)
370 return (posXcas - negXcas)/(posXcas + negXcas);
375 //______________________________________________________________________________
376 Float_t AliEveCascade::GetCasPtArmenteros() const
378 Float_t px = GetPx(), py = GetPy(), pz = GetPz();
379 Float_t p2 = px*px + py*py + pz*pz;
380 if (p2 < 1.e-39) return -999;
382 Float_t posXcas, posP2;
385 posXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.z*pz;
388 posXcas = (fP_neg.x+fP_pos.x)*px + (fP_neg.y+fP_pos.y)*py + (fP_neg.z+fP_pos.z)*pz;
391 return sqrt( posP2 - posXcas*posXcas/p2 );
396 /***********************************************************************
400 ************************************************************************/
402 ClassImp(CascadeList)
405 //______________________________________________________________________________
406 CascadeList::CascadeList(TEveTrackPropagator* rs) :
411 fRnrV0Daughters(kTRUE),
420 fChildClass = AliEveCascade::Class(); // override member from base TEveElementList
426 //______________________________________________________________________________
427 CascadeList::CascadeList(const Text_t* name, TEveTrackPropagator* rs) :
432 fRnrV0Daughters(kTRUE),
441 fChildClass = AliEveCascade::Class(); // override member from base TEveElementList
448 //______________________________________________________________________________
449 void CascadeList::Init()
451 if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
453 fMin[0] = 0; fMax[0] = 5; // Xi mass
454 fMin[1] = 0; fMax[1] = 5; // Omega mass
455 fMin[2] = 0; fMax[2] = 1e5; // Index
456 fMin[3] = 0.8; fMax[3] = 1; // cosPointingAngle
457 fMin[4] = 0; fMax[4] = 5; // bachV0DCA
458 fMin[5] = 0; fMax[5] = 100; // radius
459 fMin[6] = 0; fMax[6] = 10; // Pt
460 fMin[7] = -2; fMax[7] = 2; // PseudoRapidity
461 fMin[8] = 0; fMax[8] = 10; // negPt
462 fMin[9] = -2; fMax[9] = 2; // negEta
463 fMin[10] = 0; fMax[10] = 10; // posPt
464 fMin[11] = -2; fMax[11] = 2; // posEta
465 fMin[12] = 0; fMax[12] = 10; // bachPt
466 fMin[13] = -2; fMax[13] = 2; // backEta
469 fHist[0] = new TH1F(ch,ch, 100, fMin[0], fMax[0]);
471 fHist[1] = new TH1F(ch,ch, 100, fMin[1], fMax[1]);
473 fHist[2] = new TH1F(ch,ch, 100, fMin[2], fMax[2]);
475 ch = "cosPointingAngle";
476 fHist[3] = new TH1F(ch,ch, 100, fMin[3], fMax[3]);
478 fHist[4] = new TH1F(ch,ch, 100, fMin[4], fMax[4]);
480 fHist[5] = new TH1F(ch,ch, 100, fMin[5], fMax[5]);
482 fHist[6] = new TH1F(ch,ch, 100, fMin[6], fMax[6]);
483 ch = "PseudoRapidity";
484 fHist[7] = new TH1F(ch,ch, 100, fMin[7], fMax[7]);
487 fHist[8] = new TH1F(ch,ch, 100, fMin[8], fMax[8]);
489 fHist[9] = new TH1F(ch,ch, 100, fMin[9], fMax[9]);
491 fHist[10] = new TH1F(ch,ch, 100, fMin[10], fMax[10]);
493 fHist[11] = new TH1F(ch,ch, 100, fMin[11], fMax[11]);
495 fHist[12] = new TH1F(ch,ch, 100, fMin[12], fMax[12]);
497 fHist[13] = new TH1F(ch,ch, 100, fMin[13], fMax[13]);
503 ch = "ArmenterosPodolansky";
504 fHist2D[0] = new TH2F(ch,ch, 70, fMinX[0], fMaxX[0], 70,
507 for (Int_t i=0; i<fgkNcutVar; i++) {
508 fHist[i]->GetXaxis()->SetLabelSize(0.07);
509 fHist[i]->GetYaxis()->SetLabelSize(0.07);
510 fHist[i]->SetStats(0);
512 for (Int_t i=0; i<fgkNcutVar2D; i++) {
513 fHist2D[i]->GetXaxis()->SetLabelSize(0.07);
514 fHist2D[i]->GetYaxis()->SetLabelSize(0.07);
515 fHist2D[i]->SetStats(0);
520 //______________________________________________________________________________
521 void CascadeList::Paint(Option_t* option) {
525 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
526 if((*i)->GetRnrSelf()) {
527 ((AliEveCascade*)(*i))->PaintBachelor(option);
532 if(fRnrV0Daughters) {
533 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
534 if((*i)->GetRnrSelf()) {
535 ((AliEveCascade*)(*i))->PaintV0Daughters(option);
541 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
542 if((*i)->GetRnrSelf()) {
543 ((AliEveCascade*)(*i))->PaintV0Path(option);
549 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
550 if((*i)->GetRnrSelf()) {
551 ((AliEveCascade*)(*i))->Paint(option);
557 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
558 if((*i)->GetRnrSelf()) {
559 ((AliEveCascade*)(*i))->PaintCasPath(option);
564 } // end if(fRnrSelf)
568 //______________________________________________________________________________
569 void CascadeList::SetRnrV0vtx(Bool_t rnr)
575 void CascadeList::SetRnrV0path(Bool_t rnr)
581 void CascadeList::SetRnrV0Daughters(Bool_t rnr)
583 fRnrV0Daughters = rnr;
588 void CascadeList::SetRnrCasPath(Bool_t rnr)
594 void CascadeList::SetRnrCasVtx(Bool_t rnr)
600 void CascadeList::SetRnrBachelor(Bool_t rnr)
607 //______________________________________________________________________________
609 void CascadeList::MakeCascades()
611 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
612 ((AliEveCascade*)(*i))->MakeCascade();
617 //______________________________________________________________________________
618 void CascadeList::AdjustHist(Int_t iHist) {
620 if ((iHist<0)||(iHist>=fgkNcutVar)) return;
621 if (! fHist[iHist]) return;
623 TString name = fHist[iHist]->GetName();
624 Int_t nBin = fHist[iHist]->GetXaxis()->GetNbins();
626 fHist[iHist] = new TH1F(name.Data(), name.Data(), nBin, GetMin(iHist),
628 fHist[iHist]->GetXaxis()->SetLabelSize(0.07);
629 fHist[iHist]->GetYaxis()->SetLabelSize(0.07);
630 fHist[iHist]->SetStats(0);
634 //______________________________________________________________________________
635 void CascadeList::UnFill(AliEveCascade* cas) {
638 Int_t bin = fHist[0]->GetXaxis()->FindBin(cas->GetXiMass());
639 fHist[0]->SetBinContent( bin, fHist[0]->GetBinContent(bin)-1 );
641 bin = fHist[1]->GetXaxis()->FindBin( cas->GetOmegaMass() );
642 fHist[1]->SetBinContent( bin, fHist[1]->GetBinContent(bin)-1 );
645 bin = fHist[2]->GetXaxis()->FindBin( cas->GetESDIndex() );
646 fHist[2]->SetBinContent( bin, fHist[2]->GetBinContent(bin)-1 );
648 bin = fHist[3]->GetXaxis()->FindBin( cas->GetCasCosPointingAngle() );
649 fHist[3]->SetBinContent( bin, fHist[3]->GetBinContent(bin)-1 );
651 bin = fHist[4]->GetXaxis()->FindBin( cas->GetDCA_v0_Bach() );
652 fHist[4]->SetBinContent( bin, fHist[4]->GetBinContent(bin)-1 );
654 bin = fHist[5]->GetXaxis()->FindBin( cas->GetRadius() );
655 fHist[5]->SetBinContent( bin, fHist[5]->GetBinContent(bin)-1 );
657 bin = fHist[6]->GetXaxis()->FindBin( cas->GetPt() );
658 fHist[6]->SetBinContent( bin, fHist[6]->GetBinContent(bin)-1 );
660 bin = fHist[7]->GetXaxis()->FindBin( cas->GetPseudoRapidity() );
661 fHist[7]->SetBinContent( bin, fHist[7]->GetBinContent(bin)-1 );
664 bin = fHist[8]->GetXaxis()->FindBin( cas->GetNegPt() );
665 fHist[8]->SetBinContent( bin, fHist[8]->GetBinContent(bin)-1 );
667 bin = fHist[9]->GetXaxis()->FindBin( cas->GetNegPseudoRapidity() );
668 fHist[9]->SetBinContent( bin, fHist[9]->GetBinContent(bin)-1 );
670 bin = fHist[10]->GetXaxis()->FindBin( cas->GetPosPt() );
671 fHist[10]->SetBinContent( bin, fHist[10]->GetBinContent(bin)-1 );
673 bin = fHist[11]->GetXaxis()->FindBin( cas->GetPosPseudoRapidity() );
674 fHist[11]->SetBinContent( bin, fHist[11]->GetBinContent(bin)-1 );
676 bin = fHist[12]->GetXaxis()->FindBin( cas->GetBachPt() );
677 fHist[12]->SetBinContent( bin, fHist[12]->GetBinContent(bin)-1 );
679 bin = fHist[13]->GetXaxis()->FindBin( cas->GetBachPseudoRapidity() );
680 fHist[13]->SetBinContent( bin, fHist[13]->GetBinContent(bin)-1 );
683 bin = fHist2D[0]->GetXaxis()->FindBin( cas->GetCasAlphaArmenteros() );
684 Int_t binY = fHist2D[0]->GetYaxis()->FindBin( cas->GetCasPtArmenteros() );
685 fHist2D[0]->SetBinContent( bin, binY, fHist2D[0]->GetBinContent(bin,binY)-1 );
689 //______________________________________________________________________________
690 void CascadeList::Filter(AliEveCascade* cas) {
692 Float_t xiMass = cas->GetXiMass();
693 if ((xiMass<fMin[0])||(xiMass>fMax[0])) return;
695 Float_t omegaMass = cas->GetOmegaMass();
696 if ( (omegaMass<fMin[1])||(omegaMass>fMax[1]) ) return;
699 Float_t index = cas->GetESDIndex();
700 if ( (index<fMin[2])||(index>fMax[2]) ) return;
702 Float_t cosPointingAngle = cas->GetCasCosPointingAngle();
703 if ( (cosPointingAngle<fMin[3])||(cosPointingAngle>fMax[3]) ) return;
705 Float_t bachV0DCA = cas->GetDCA_v0_Bach();
706 if ( (bachV0DCA<fMin[4])||(bachV0DCA>fMax[4]) ) return;
708 Float_t radius = cas->GetRadius();
709 if ( (radius<fMin[5])||(radius>fMax[5]) ) return;
711 Float_t pt = cas->GetPt();
712 if ( (pt<fMin[6])||(pt>fMax[6]) ) return;
714 Float_t pseudoRapidity = cas->GetPseudoRapidity();
715 if ( (pseudoRapidity<fMin[7])||(pseudoRapidity>fMax[7]) ) return;
717 Float_t negPt = cas->GetNegPt();
718 if ( (negPt<fMin[8])||(negPt>fMax[8]) ) return;
720 Float_t negEta = cas->GetNegPseudoRapidity();
721 if ( (negEta<fMin[9])||(negEta>fMax[9]) ) return;
723 Float_t posPt = cas->GetPosPt();
724 if ( (posPt<fMin[10])||(posPt>fMax[10]) ) return;
726 Float_t posEta = cas->GetPosPseudoRapidity();
727 if ( (posEta<fMin[11])||(posEta>fMax[11]) ) return;
729 Float_t bachPt = cas->GetBachPt();
730 if ( (bachPt<fMin[12])||(bachPt>fMax[12]) ) return;
732 Float_t bachEta = cas->GetBachPseudoRapidity();
733 if ( (bachEta<fMin[13])||(bachEta>fMax[13]) ) return;
735 cas->SetRnrSelf(kTRUE);
736 fHist[0]->Fill(xiMass);
737 fHist[1]->Fill(omegaMass);
738 fHist[2]->Fill(index);
739 fHist[3]->Fill(cosPointingAngle);
740 fHist[4]->Fill(bachV0DCA);
741 fHist[5]->Fill(radius);
743 fHist[7]->Fill(pseudoRapidity);
744 fHist[8]->Fill(negPt);
745 fHist[9]->Fill(negEta);
746 fHist[10]->Fill(posPt);
747 fHist[11]->Fill(posEta);
748 fHist[12]->Fill(bachPt);
749 fHist[13]->Fill(bachEta);
751 fHist2D[0]->Fill(cas->GetCasAlphaArmenteros(), cas->GetCasPtArmenteros() );
754 //______________________________________________________________________________
755 void CascadeList::FilterAll() {
757 for (Int_t i=0; i<fgkNcutVar; i++)
760 for (Int_t i=0; i<fgkNcutVar2D; i++)
763 AliEveCascade* myCas;
764 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
766 myCas = (AliEveCascade*)(*i);
772 //______________________________________________________________________________
773 void CascadeList::GetCasIndexRange(Int_t &imin, Int_t &imax) {
776 AliEveCascade* myCas;
777 List_i i = fChildren.begin();
778 myCas = (AliEveCascade*)(*i);
779 index = myCas->GetESDIndex();
783 for(; i!=fChildren.end(); ++i) {
785 myCas = (AliEveCascade*)(*i);
786 index = myCas->GetESDIndex();
787 if (index<imin) imin = index;
788 if (index>imax) imax = index;
792 //______________________________________________________________________________
793 void CascadeList::XiMassFilter(Float_t min, Float_t max) {
801 AliEveCascade* myCas;
803 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
805 myCas = (AliEveCascade*)(*i);
806 val = myCas->GetXiMass();
807 wasSelected = myCas->GetRnrSelf();
808 isSelected = ( (val>=min) && (val<=max) );
813 myCas->SetRnrSelf(isSelected);
816 if (isSelected) Filter(myCas);
821 //______________________________________________________________________________
822 void CascadeList::OmegaMassFilter(Float_t min, Float_t max) {
830 AliEveCascade* myCas;
832 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
834 myCas = (AliEveCascade*)(*i);
835 val = myCas->GetOmegaMass();
836 wasSelected = myCas->GetRnrSelf();
837 isSelected = ( (val>=min) && (val<=max) );
842 myCas->SetRnrSelf(isSelected);
845 if (isSelected) Filter(myCas);
850 //______________________________________________________________________________
851 void CascadeList::IndexFilter(Float_t min, Float_t max) {
859 AliEveCascade* myCas;
861 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
863 myCas = (AliEveCascade*)(*i);
864 val = myCas->GetESDIndex();
865 wasSelected = myCas->GetRnrSelf();
866 isSelected = ( (val>=min) && (val<=max) );
871 myCas->SetRnrSelf(isSelected);
874 if (isSelected) Filter(myCas);
879 //______________________________________________________________________________
880 void CascadeList::CosPointingFilter(Float_t min, Float_t max) {
888 AliEveCascade* myCas;
890 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
892 myCas = (AliEveCascade*)(*i);
893 val = myCas->GetCasCosPointingAngle();
894 wasSelected = myCas->GetRnrSelf();
895 isSelected = ( (val>=min) && (val<=max) );
900 myCas->SetRnrSelf(isSelected);
903 if (isSelected) Filter(myCas);
909 //______________________________________________________________________________
910 void CascadeList::BachV0DCAFilter(Float_t min, Float_t max) {
918 AliEveCascade* myCas;
920 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
922 myCas = (AliEveCascade*)(*i);
923 val = myCas->GetDCA_v0_Bach();
924 wasSelected = myCas->GetRnrSelf();
925 isSelected = ( (val>=min) && (val<=max) );
930 myCas->SetRnrSelf(isSelected);
933 if (isSelected) Filter(myCas);
939 //______________________________________________________________________________
940 void CascadeList::RadiusFilter(Float_t min, Float_t max) {
948 AliEveCascade* myCas;
950 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
952 myCas = (AliEveCascade*)(*i);
953 val = myCas->GetRadius();
954 wasSelected = myCas->GetRnrSelf();
955 isSelected = ( (val>=min) && (val<=max) );
960 myCas->SetRnrSelf(isSelected);
963 if (isSelected) Filter(myCas);
969 //______________________________________________________________________________
970 void CascadeList::PtFilter(Float_t min, Float_t max) {
978 AliEveCascade* myCas;
980 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
982 myCas = (AliEveCascade*)(*i);
983 val = myCas->GetPt();
984 wasSelected = myCas->GetRnrSelf();
985 isSelected = ( (val>=min) && (val<=max) );
990 myCas->SetRnrSelf(isSelected);
993 if (isSelected) Filter(myCas);
999 //______________________________________________________________________________
1000 void CascadeList::PseudoRapFilter(Float_t min, Float_t max) {
1008 AliEveCascade* myCas;
1010 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1012 myCas = (AliEveCascade*)(*i);
1013 val = myCas->GetPseudoRapidity();
1014 wasSelected = myCas->GetRnrSelf();
1015 isSelected = ( (val>=min) && (val<=max) );
1020 myCas->SetRnrSelf(isSelected);
1023 if (isSelected) Filter(myCas);
1029 //______________________________________________________________________________
1030 void CascadeList::NegPtFilter(Float_t min, Float_t max) {
1038 AliEveCascade* myCas;
1040 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1042 myCas = (AliEveCascade*)(*i);
1043 val = myCas->GetNegPt();
1044 wasSelected = myCas->GetRnrSelf();
1045 isSelected = ( (val>=min) && (val<=max) );
1050 myCas->SetRnrSelf(isSelected);
1053 if (isSelected) Filter(myCas);
1059 //______________________________________________________________________________
1060 void CascadeList::NegEtaFilter(Float_t min, Float_t max) {
1068 AliEveCascade* myCas;
1070 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1072 myCas = (AliEveCascade*)(*i);
1073 val = myCas->GetNegPseudoRapidity();
1074 wasSelected = myCas->GetRnrSelf();
1075 isSelected = ( (val>=min) && (val<=max) );
1080 myCas->SetRnrSelf(isSelected);
1083 if (isSelected) Filter(myCas);
1089 //______________________________________________________________________________
1090 void CascadeList::PosPtFilter(Float_t min, Float_t max) {
1098 AliEveCascade* myCas;
1100 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1102 myCas = (AliEveCascade*)(*i);
1103 val = myCas->GetPosPt();
1104 wasSelected = myCas->GetRnrSelf();
1105 isSelected = ( (val>=min) && (val<=max) );
1110 myCas->SetRnrSelf(isSelected);
1113 if (isSelected) Filter(myCas);
1118 //______________________________________________________________________________
1119 void CascadeList::PosEtaFilter(Float_t min, Float_t max) {
1127 AliEveCascade* myCas;
1129 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1131 myCas = (AliEveCascade*)(*i);
1132 val = myCas->GetPosPseudoRapidity();
1133 wasSelected = myCas->GetRnrSelf();
1134 isSelected = ( (val>=min) && (val<=max) );
1139 myCas->SetRnrSelf(isSelected);
1142 if (isSelected) Filter(myCas);
1148 //______________________________________________________________________________
1149 void CascadeList::BachPtFilter(Float_t min, Float_t max) {
1157 AliEveCascade* myCas;
1159 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1161 myCas = (AliEveCascade*)(*i);
1162 val = myCas->GetBachPt();
1163 wasSelected = myCas->GetRnrSelf();
1164 isSelected = ( (val>=min) && (val<=max) );
1169 myCas->SetRnrSelf(isSelected);
1172 if (isSelected) Filter(myCas);
1177 //______________________________________________________________________________
1178 void CascadeList::BachEtaFilter(Float_t min, Float_t max) {
1186 AliEveCascade* myCas;
1188 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1190 myCas = (AliEveCascade*)(*i);
1191 val = myCas->GetBachPseudoRapidity();
1192 wasSelected = myCas->GetRnrSelf();
1193 isSelected = ( (val>=min) && (val<=max) );
1198 myCas->SetRnrSelf(isSelected);
1201 if (isSelected) Filter(myCas);