3 /***********************************************************************
4 * This code defines the reconstructed cascades visualized with EVE
6 * Ludovic Gaudichet (gaudichet@to.infn.it)
7 ************************************************************************/
11 #include "MCHelixLine.hi"
13 #include <TPolyLine3D.h>
14 #include <TPolyMarker3D.h>
18 #include <Reve/RGTopFrame.h>
29 /***********************************************************************
33 ************************************************************************/
35 const Float_t Cascade::fgkMassPion2 = 0.13956995*0.13956995;
36 const Float_t Cascade::fgkMassKaon2 = 0.493677*0.493677;
37 const Float_t Cascade::fgkMassProton2 = 0.93827231*0.93827231;
38 const Float_t Cascade::fgkMassLambda2 = 1.115683*1.115683;
40 ClassImp(Reve::Cascade)
68 fCasCosPointingAngle(999),
71 fPolyLinePos.SetLineColor(2); // red
72 fPolyLineNeg.SetLineColor(7); // light blue
73 fPolyLineBach.SetLineColor(4); // blue
82 Cascade::Cascade(TrackRnrStyle* rs) :
107 fCasCosPointingAngle(999),
110 fMarkerColor = fRnrStyle->GetColor();
111 fPolyLineV0.SetLineColor(fMarkerColor);
112 fPolyLinePos.SetLineColor(2); // red
113 fPolyLineNeg.SetLineColor(7); // light blue
114 fPolyLineBach.SetLineColor(4); // blue
116 fMainColorPtr = &fMarkerColor;
125 for (vpPathMark_i i=fPathMarksNeg.begin(); i!=fPathMarksNeg.end(); ++i)
127 for (vpPathMark_i i=fPathMarksPos.begin(); i!=fPathMarksPos.end(); ++i)
129 for (vpPathMark_i i=fPathMarksBach.begin(); i!=fPathMarksBach.end(); ++i)
132 void Cascade::Reset(TPolyLine3D* polyLine) {
133 //polyLine->SetPolyLine(n_points);
134 polyLine->SetPolyLine(0);
138 //______________________________________________________________________
139 void Cascade::SetDecayLength(Float_t primx, Float_t primy, Float_t primz) {
142 Float_t dx = fV_decay.x-primx;
143 Float_t dy = fV_decay.y-primy;
144 Float_t dz = fV_decay.z-primz;
146 fCasDecayLength = sqrt(dx*dx+dy*dy+dz*dz);
147 // This is probably wrong but I can only do this for now
148 Float_t distNorm = fCasDecayLength/GetMomentum();
149 fV_birth.x = fV_decay.x - distNorm*GetPx();
150 fV_birth.y = fV_decay.y - distNorm*GetPy();
151 fV_birth.z = fV_decay.z - distNorm*GetPz();
153 fV_bach.x = fV_decay.x;
154 fV_bach.y = fV_decay.y;
155 fV_bach.z = fV_decay.z;
159 //______________________________________________________________________
160 void Cascade::MakeTrack(vpPathMark_t& pathMark, Reve::Vector& vtx, Reve::Vector& p,
161 Int_t charge, Float_t beta, TPolyLine3D& polyLine) {
163 TrackRnrStyle& RS((fRnrStyle != 0) ? *fRnrStyle : TrackRnrStyle::fgDefStyle);
165 Float_t px = p.x, py = p.y, pz = p.z;
173 std::vector<MCVertex> track_points;
174 Bool_t decay = kFALSE;
176 if ((TMath::Abs(vtx.z) > RS.fMaxZ) || (vtx.x*vtx.x + vtx.y*vtx.y > RS.fMaxR*RS.fMaxR))
179 if (TMath::Abs(RS.fMagField) > 1e-5) {
181 // Charged particle in magnetic field
183 Float_t a = RS.fgkB2C * RS.fMagField * charge;
185 MCHelix helix(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points, a); //m->cm
186 helix.Init(TMath::Sqrt(px*px+py*py), pz);
188 if(!pathMark.empty()){
189 for(std::vector<Reve::PathMark*>::iterator i=pathMark.begin();
190 i!=pathMark.end(); ++i) {
192 Reve::PathMark* pm = *i;
194 if(RS.fFitDaughters && pm->type == Reve::PathMark::Daughter){
195 if(TMath::Abs(pm->V.z) > RS.fMaxZ
196 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
199 //printf("%s fit daughter \n", fName.Data());
200 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
205 if(RS.fFitDecay && pm->type == Reve::PathMark::Decay){
207 if(TMath::Abs(pm->V.z) > RS.fMaxZ
208 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
210 helix.LoopToVertex(p.x, p.y, p.z, pm->V.x, pm->V.y, pm->V.z);
218 if(!decay || RS.fFitDecay == kFALSE){
219 helix.LoopToBounds(px,py,pz);
220 // printf("%s loop to bounds \n",fName.Data() );
225 // Neutral particle or no field
227 MCLine line(fRnrStyle, &mc_v0, TMath::C()*beta, &track_points);
229 if(!pathMark.empty()) {
230 for(std::vector<Reve::PathMark*>::iterator i=pathMark.begin();
231 i!=pathMark.end(); ++i) {
232 Reve::PathMark* pm = *i;
234 if(RS.fFitDaughters && pm->type == Reve::PathMark::Daughter){
235 if(TMath::Abs(pm->V.z) > RS.fMaxZ
236 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
238 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
244 if(RS.fFitDecay && pm->type == Reve::PathMark::Decay){
245 if(TMath::Abs(pm->V.z) > RS.fMaxZ
246 || TMath::Sqrt(pm->V.x*pm->V.x + pm->V.y*pm->V.y) > RS.fMaxR )
248 line.GotoVertex(pm->V.x, pm->V.y, pm->V.z);
256 if(!decay || RS.fFitDecay == kFALSE)
257 line.GotoBounds(px,py,pz);
262 for(std::vector<MCVertex>::iterator i=track_points.begin();
263 i!=track_points.end(); ++i) {
264 polyLine.SetNextPoint(i->x,i->y, i->z);
269 //______________________________________________________________________
270 void Cascade::MakeV0path() {
273 mc_v0.x = (fV_neg.x+fV_pos.x)/2;
274 mc_v0.y = (fV_neg.y+fV_pos.y)/2;
275 mc_v0.z = (fV_neg.z+fV_pos.z)/2;
278 std::vector<MCVertex> track_points;
279 MCLine line(fRnrStyle, &mc_v0, TMath::C()*0.99, &track_points);
281 line.GotoVertex(fV_decay.x,fV_decay.y,fV_decay.z);
284 for(std::vector<MCVertex>::iterator i=track_points.begin();
285 i!=track_points.end(); ++i) {
286 fPolyLineV0.SetNextPoint(i->x,i->y, i->z);
291 //______________________________________________________________________
292 void Cascade::MakeCasPath() {
295 mc_v0.x = fV_birth.x;
296 mc_v0.y = fV_birth.y;
297 mc_v0.z = fV_birth.z;
300 std::vector<MCVertex> track_points;
301 MCLine line(fRnrStyle, &mc_v0, TMath::C()*0.99, &track_points);
303 line.GotoVertex(fV_decay.x,fV_decay.y,fV_decay.z);
305 Reset(&fPolyLineCas);
306 for(std::vector<MCVertex>::iterator i=track_points.begin();
307 i!=track_points.end(); ++i) {
308 fPolyLineCas.SetNextPoint(i->x,i->y, i->z);
313 //______________________________________________________________________
314 void Cascade::MakeCascade()
316 SetNextPoint(fV_neg.x, fV_neg.y, fV_neg.z);
317 SetNextPoint(fV_decay.x, fV_decay.y, fV_decay.z);
319 MakeTrack(fPathMarksNeg, fV_neg, fP_neg, -1, fBeta_neg, fPolyLineNeg);
320 MakeTrack(fPathMarksPos, fV_pos, fP_pos, 1, fBeta_pos, fPolyLinePos);
322 MakeTrack(fPathMarksBach, fV_bach, fP_bach, 1, fBeta_bach, fPolyLineBach);
324 MakeTrack(fPathMarksBach, fV_bach, fP_bach, -1, -fBeta_bach, fPolyLineBach);
332 //______________________________________________________________________
333 Float_t const Cascade::GetCasAlphaArmenteros() {
335 Float_t px = GetPx(), py = GetPy(), pz = GetPz();
336 Float_t posXcas, negXcas;
339 posXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.z*pz;
340 negXcas = (fP_neg.x+fP_pos.x)*px + (fP_neg.y+fP_pos.y)*py + (fP_neg.z+fP_pos.z)*pz;
342 posXcas = (fP_neg.x+fP_pos.x)*px + (fP_neg.y+fP_pos.y)*py + (fP_neg.z+fP_pos.z)*pz;
343 negXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.z*pz;
346 if (posXcas + negXcas > 1.e-39)
347 return (posXcas - negXcas)/(posXcas + negXcas);
352 //______________________________________________________________________
353 Float_t const Cascade::GetCasPtArmenteros() {
355 Float_t px = GetPx(), py = GetPy(), pz = GetPz();
356 Float_t p2 = px*px + py*py + pz*pz;
357 if (p2 < 1.e-39) return -999;
359 Float_t posXcas, posP2;
362 posXcas = fP_bach.x*px + fP_bach.y*py + fP_bach.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;
368 return sqrt( posP2 - posXcas*posXcas/p2 );
373 /***********************************************************************
377 ************************************************************************/
379 ClassImp(Reve::CascadeList)
382 //______________________________________________________________________
383 CascadeList::CascadeList(TrackRnrStyle* rs) :
384 RenderElementListBase(),
388 fRnrV0Daughters(kTRUE),
401 //______________________________________________________________________
402 CascadeList::CascadeList(const Text_t* name, TrackRnrStyle* rs) :
403 RenderElementListBase(),
407 fRnrV0Daughters(kTRUE),
421 //______________________________________________________________________
422 void CascadeList::Init()
425 if (fRnrStyle== 0) fRnrStyle = new TrackRnrStyle;
426 SetMainColorPtr(&fRnrStyle->fColor);
429 fMin[0] = 0; fMax[0] = 5; // Xi mass
430 fMin[1] = 0; fMax[1] = 5; // Omega mass
431 fMin[2] = 0; fMax[2] = 1e5; // Index
432 fMin[3] = 0.8; fMax[3] = 1; // cosPointingAngle
433 fMin[4] = 0; fMax[4] = 5; // bachV0DCA
434 fMin[5] = 0; fMax[5] = 100; // radius
435 fMin[6] = 0; fMax[6] = 10; // Pt
436 fMin[7] = -2; fMax[7] = 2; // PseudoRapidity
437 fMin[8] = 0; fMax[8] = 10; // negPt
438 fMin[9] = -2; fMax[9] = 2; // negEta
439 fMin[10] = 0; fMax[10] = 10; // posPt
440 fMin[11] = -2; fMax[11] = 2; // posEta
441 fMin[12] = 0; fMax[12] = 10; // bachPt
442 fMin[13] = -2; fMax[13] = 2; // backEta
445 fHist[0] = new TH1F(ch,ch, 100, fMin[0], fMax[0]);
447 fHist[1] = new TH1F(ch,ch, 100, fMin[1], fMax[1]);
449 fHist[2] = new TH1F(ch,ch, 100, fMin[2], fMax[2]);
451 ch = "cosPointingAngle";
452 fHist[3] = new TH1F(ch,ch, 100, fMin[3], fMax[3]);
454 fHist[4] = new TH1F(ch,ch, 100, fMin[4], fMax[4]);
456 fHist[5] = new TH1F(ch,ch, 100, fMin[5], fMax[5]);
458 fHist[6] = new TH1F(ch,ch, 100, fMin[6], fMax[6]);
459 ch = "PseudoRapidity";
460 fHist[7] = new TH1F(ch,ch, 100, fMin[7], fMax[7]);
463 fHist[8] = new TH1F(ch,ch, 100, fMin[8], fMax[8]);
465 fHist[9] = new TH1F(ch,ch, 100, fMin[9], fMax[9]);
467 fHist[10] = new TH1F(ch,ch, 100, fMin[10], fMax[10]);
469 fHist[11] = new TH1F(ch,ch, 100, fMin[11], fMax[11]);
471 fHist[12] = new TH1F(ch,ch, 100, fMin[12], fMax[12]);
473 fHist[13] = new TH1F(ch,ch, 100, fMin[13], fMax[13]);
479 ch = "ArmenterosPodolansky";
480 fHist2D[0] = new TH2F(ch,ch, 70, fMinX[0], fMaxX[0], 70,
483 for (Int_t i=0; i<fgkNcutVar; i++) {
484 fHist[i]->GetXaxis()->SetLabelSize(0.07);
485 fHist[i]->GetYaxis()->SetLabelSize(0.07);
486 fHist[i]->SetStats(0);
488 for (Int_t i=0; i<fgkNcutVar2D; i++) {
489 fHist2D[i]->GetXaxis()->SetLabelSize(0.07);
490 fHist2D[i]->GetYaxis()->SetLabelSize(0.07);
491 fHist2D[i]->SetStats(0);
496 //______________________________________________________________________
497 void CascadeList::Paint(Option_t* option) {
501 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
502 if((*i)->GetRnrElement()) {
503 ((Cascade*)(*i))->PaintBachelor(option);
508 if(fRnrV0Daughters) {
509 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
510 if((*i)->GetRnrElement()) {
511 ((Cascade*)(*i))->PaintV0Daughters(option);
517 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
518 if((*i)->GetRnrElement()) {
519 ((Cascade*)(*i))->PaintV0Path(option);
525 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
526 if((*i)->GetRnrElement()) {
527 ((Cascade*)(*i))->Paint(option);
533 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
534 if((*i)->GetRnrElement()) {
535 ((Cascade*)(*i))->PaintCasPath(option);
540 } // end if(fRnrElement)
544 //______________________________________________________________________
546 void CascadeList::AddElement(RenderElement* el)
548 static const Exc_t eH("CascadeList::AddElement ");
549 if (dynamic_cast<Cascade*>(el) == 0)
550 throw(eH + "new element not a Cascade.");
551 RenderElementListBase::AddElement(el);
556 void CascadeList::SetRnrV0vtx(Bool_t rnr)
562 void CascadeList::SetRnrV0path(Bool_t rnr)
568 void CascadeList::SetRnrV0Daughters(Bool_t rnr)
570 fRnrV0Daughters = rnr;
575 void CascadeList::SetRnrCasPath(Bool_t rnr)
581 void CascadeList::SetRnrCasVtx(Bool_t rnr)
587 void CascadeList::SetRnrBachelor(Bool_t rnr)
594 //______________________________________________________________________
596 void CascadeList::MakeCascades()
598 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
599 ((Cascade*)(*i))->MakeCascade();
604 //_________________________________________________________________________
605 void CascadeList::AdjustHist(Int_t iHist) {
607 if ((iHist<0)||(iHist>=fgkNcutVar)) return;
608 if (! fHist[iHist]) return;
610 TString name = fHist[iHist]->GetName();
611 Int_t nBin = fHist[iHist]->GetXaxis()->GetNbins();
613 fHist[iHist] = new TH1F(name.Data(), name.Data(), nBin, GetMin(iHist),
615 fHist[iHist]->GetXaxis()->SetLabelSize(0.07);
616 fHist[iHist]->GetYaxis()->SetLabelSize(0.07);
617 fHist[iHist]->SetStats(0);
621 //______________________________________________________________________
622 void CascadeList::UnFill(Cascade* cas) {
625 Int_t bin = fHist[0]->GetXaxis()->FindBin(cas->GetXiMass());
626 fHist[0]->SetBinContent( bin, fHist[0]->GetBinContent(bin)-1 );
628 bin = fHist[1]->GetXaxis()->FindBin( cas->GetOmegaMass() );
629 fHist[1]->SetBinContent( bin, fHist[1]->GetBinContent(bin)-1 );
632 bin = fHist[2]->GetXaxis()->FindBin( cas->GetESDIndex() );
633 fHist[2]->SetBinContent( bin, fHist[2]->GetBinContent(bin)-1 );
635 bin = fHist[3]->GetXaxis()->FindBin( cas->GetCasCosPointingAngle() );
636 fHist[3]->SetBinContent( bin, fHist[3]->GetBinContent(bin)-1 );
638 bin = fHist[4]->GetXaxis()->FindBin( cas->GetDCA_v0_Bach() );
639 fHist[4]->SetBinContent( bin, fHist[4]->GetBinContent(bin)-1 );
641 bin = fHist[5]->GetXaxis()->FindBin( cas->GetRadius() );
642 fHist[5]->SetBinContent( bin, fHist[5]->GetBinContent(bin)-1 );
644 bin = fHist[6]->GetXaxis()->FindBin( cas->GetPt() );
645 fHist[6]->SetBinContent( bin, fHist[6]->GetBinContent(bin)-1 );
647 bin = fHist[7]->GetXaxis()->FindBin( cas->GetPseudoRapidity() );
648 fHist[7]->SetBinContent( bin, fHist[7]->GetBinContent(bin)-1 );
651 bin = fHist[8]->GetXaxis()->FindBin( cas->GetNegPt() );
652 fHist[8]->SetBinContent( bin, fHist[8]->GetBinContent(bin)-1 );
654 bin = fHist[9]->GetXaxis()->FindBin( cas->GetNegPseudoRapidity() );
655 fHist[9]->SetBinContent( bin, fHist[9]->GetBinContent(bin)-1 );
657 bin = fHist[10]->GetXaxis()->FindBin( cas->GetPosPt() );
658 fHist[10]->SetBinContent( bin, fHist[10]->GetBinContent(bin)-1 );
660 bin = fHist[11]->GetXaxis()->FindBin( cas->GetPosPseudoRapidity() );
661 fHist[11]->SetBinContent( bin, fHist[11]->GetBinContent(bin)-1 );
663 bin = fHist[12]->GetXaxis()->FindBin( cas->GetBachPt() );
664 fHist[12]->SetBinContent( bin, fHist[12]->GetBinContent(bin)-1 );
666 bin = fHist[13]->GetXaxis()->FindBin( cas->GetBachPseudoRapidity() );
667 fHist[13]->SetBinContent( bin, fHist[13]->GetBinContent(bin)-1 );
670 bin = fHist2D[0]->GetXaxis()->FindBin( cas->GetCasAlphaArmenteros() );
671 Int_t binY = fHist2D[0]->GetYaxis()->FindBin( cas->GetCasPtArmenteros() );
672 fHist2D[0]->SetBinContent( bin, binY, fHist2D[0]->GetBinContent(bin,binY)-1 );
676 //______________________________________________________________________
677 void CascadeList::Filter(Cascade* cas) {
679 Float_t xiMass = cas->GetXiMass();
680 if ((xiMass<fMin[0])||(xiMass>fMax[0])) return;
682 Float_t omegaMass = cas->GetOmegaMass();
683 if ( (omegaMass<fMin[1])||(omegaMass>fMax[1]) ) return;
686 Float_t index = cas->GetESDIndex();
687 if ( (index<fMin[2])||(index>fMax[2]) ) return;
689 Float_t cosPointingAngle = cas->GetCasCosPointingAngle();
690 if ( (cosPointingAngle<fMin[3])||(cosPointingAngle>fMax[3]) ) return;
692 Float_t bachV0DCA = cas->GetDCA_v0_Bach();
693 if ( (bachV0DCA<fMin[4])||(bachV0DCA>fMax[4]) ) return;
695 Float_t radius = cas->GetRadius();
696 if ( (radius<fMin[5])||(radius>fMax[5]) ) return;
698 Float_t pt = cas->GetPt();
699 if ( (pt<fMin[6])||(pt>fMax[6]) ) return;
701 Float_t pseudoRapidity = cas->GetPseudoRapidity();
702 if ( (pseudoRapidity<fMin[7])||(pseudoRapidity>fMax[7]) ) return;
704 Float_t negPt = cas->GetNegPt();
705 if ( (negPt<fMin[8])||(negPt>fMax[8]) ) return;
707 Float_t negEta = cas->GetNegPseudoRapidity();
708 if ( (negEta<fMin[9])||(negEta>fMax[9]) ) return;
710 Float_t posPt = cas->GetPosPt();
711 if ( (posPt<fMin[10])||(posPt>fMax[10]) ) return;
713 Float_t posEta = cas->GetPosPseudoRapidity();
714 if ( (posEta<fMin[11])||(posEta>fMax[11]) ) return;
716 Float_t bachPt = cas->GetBachPt();
717 if ( (bachPt<fMin[12])||(bachPt>fMax[12]) ) return;
719 Float_t bachEta = cas->GetBachPseudoRapidity();
720 if ( (bachEta<fMin[13])||(bachEta>fMax[13]) ) return;
722 cas->SetRnrElement(kTRUE);
723 fHist[0]->Fill(xiMass);
724 fHist[1]->Fill(omegaMass);
725 fHist[2]->Fill(index);
726 fHist[3]->Fill(cosPointingAngle);
727 fHist[4]->Fill(bachV0DCA);
728 fHist[5]->Fill(radius);
730 fHist[7]->Fill(pseudoRapidity);
731 fHist[8]->Fill(negPt);
732 fHist[9]->Fill(negEta);
733 fHist[10]->Fill(posPt);
734 fHist[11]->Fill(posEta);
735 fHist[12]->Fill(bachPt);
736 fHist[13]->Fill(bachEta);
738 fHist2D[0]->Fill(cas->GetCasAlphaArmenteros(), cas->GetCasPtArmenteros() );
741 //______________________________________________________________________
742 void CascadeList::FilterAll() {
744 for (Int_t i=0; i<fgkNcutVar; i++)
747 for (Int_t i=0; i<fgkNcutVar2D; i++)
751 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
753 myCas = (Cascade*)(*i);
759 //______________________________________________________________________
760 void CascadeList::GetCasIndexRange(Int_t &imin, Int_t &imax) {
764 List_i i = fChildren.begin();
765 myCas = (Cascade*)(*i);
766 index = myCas->GetESDIndex();
770 for(; i!=fChildren.end(); ++i) {
772 myCas = (Cascade*)(*i);
773 index = myCas->GetESDIndex();
774 if (index<imin) imin = index;
775 if (index>imax) imax = index;
779 //______________________________________________________________________
780 void CascadeList::XiMassFilter(Float_t min, Float_t max) {
790 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
792 myCas = (Cascade*)(*i);
793 val = myCas->GetXiMass();
794 wasSelected = myCas->GetRnrElement();
795 isSelected = ( (val>=min) && (val<=max) );
800 myCas->SetRnrElement(isSelected);
803 if (isSelected) Filter(myCas);
808 //______________________________________________________________________
809 void CascadeList::OmegaMassFilter(Float_t min, Float_t max) {
819 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
821 myCas = (Cascade*)(*i);
822 val = myCas->GetOmegaMass();
823 wasSelected = myCas->GetRnrElement();
824 isSelected = ( (val>=min) && (val<=max) );
829 myCas->SetRnrElement(isSelected);
832 if (isSelected) Filter(myCas);
837 //______________________________________________________________________
838 void CascadeList::IndexFilter(Float_t min, Float_t max) {
848 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
850 myCas = (Cascade*)(*i);
851 val = myCas->GetESDIndex();
852 wasSelected = myCas->GetRnrElement();
853 isSelected = ( (val>=min) && (val<=max) );
858 myCas->SetRnrElement(isSelected);
861 if (isSelected) Filter(myCas);
866 //______________________________________________________________________
867 void CascadeList::CosPointingFilter(Float_t min, Float_t max) {
877 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
879 myCas = (Cascade*)(*i);
880 val = myCas->GetCasCosPointingAngle();
881 wasSelected = myCas->GetRnrElement();
882 isSelected = ( (val>=min) && (val<=max) );
887 myCas->SetRnrElement(isSelected);
890 if (isSelected) Filter(myCas);
896 //______________________________________________________________________
897 void CascadeList::BachV0DCAFilter(Float_t min, Float_t max) {
907 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
909 myCas = (Cascade*)(*i);
910 val = myCas->GetDCA_v0_Bach();
911 wasSelected = myCas->GetRnrElement();
912 isSelected = ( (val>=min) && (val<=max) );
917 myCas->SetRnrElement(isSelected);
920 if (isSelected) Filter(myCas);
926 //______________________________________________________________________
927 void CascadeList::RadiusFilter(Float_t min, Float_t max) {
937 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
939 myCas = (Cascade*)(*i);
940 val = myCas->GetRadius();
941 wasSelected = myCas->GetRnrElement();
942 isSelected = ( (val>=min) && (val<=max) );
947 myCas->SetRnrElement(isSelected);
950 if (isSelected) Filter(myCas);
956 //______________________________________________________________________
957 void CascadeList::PtFilter(Float_t min, Float_t max) {
967 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
969 myCas = (Cascade*)(*i);
970 val = myCas->GetPt();
971 wasSelected = myCas->GetRnrElement();
972 isSelected = ( (val>=min) && (val<=max) );
977 myCas->SetRnrElement(isSelected);
980 if (isSelected) Filter(myCas);
986 //______________________________________________________________________
987 void CascadeList::PseudoRapFilter(Float_t min, Float_t max) {
997 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
999 myCas = (Cascade*)(*i);
1000 val = myCas->GetPseudoRapidity();
1001 wasSelected = myCas->GetRnrElement();
1002 isSelected = ( (val>=min) && (val<=max) );
1007 myCas->SetRnrElement(isSelected);
1010 if (isSelected) Filter(myCas);
1016 //______________________________________________________________________
1017 void CascadeList::NegPtFilter(Float_t min, Float_t max) {
1027 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1029 myCas = (Cascade*)(*i);
1030 val = myCas->GetNegPt();
1031 wasSelected = myCas->GetRnrElement();
1032 isSelected = ( (val>=min) && (val<=max) );
1037 myCas->SetRnrElement(isSelected);
1040 if (isSelected) Filter(myCas);
1046 //______________________________________________________________________
1047 void CascadeList::NegEtaFilter(Float_t min, Float_t max) {
1057 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1059 myCas = (Cascade*)(*i);
1060 val = myCas->GetNegPseudoRapidity();
1061 wasSelected = myCas->GetRnrElement();
1062 isSelected = ( (val>=min) && (val<=max) );
1067 myCas->SetRnrElement(isSelected);
1070 if (isSelected) Filter(myCas);
1076 //______________________________________________________________________
1077 void CascadeList::PosPtFilter(Float_t min, Float_t max) {
1087 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1089 myCas = (Cascade*)(*i);
1090 val = myCas->GetPosPt();
1091 wasSelected = myCas->GetRnrElement();
1092 isSelected = ( (val>=min) && (val<=max) );
1097 myCas->SetRnrElement(isSelected);
1100 if (isSelected) Filter(myCas);
1105 //______________________________________________________________________
1106 void CascadeList::PosEtaFilter(Float_t min, Float_t max) {
1116 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1118 myCas = (Cascade*)(*i);
1119 val = myCas->GetPosPseudoRapidity();
1120 wasSelected = myCas->GetRnrElement();
1121 isSelected = ( (val>=min) && (val<=max) );
1126 myCas->SetRnrElement(isSelected);
1129 if (isSelected) Filter(myCas);
1135 //______________________________________________________________________
1136 void CascadeList::BachPtFilter(Float_t min, Float_t max) {
1146 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1148 myCas = (Cascade*)(*i);
1149 val = myCas->GetBachPt();
1150 wasSelected = myCas->GetRnrElement();
1151 isSelected = ( (val>=min) && (val<=max) );
1156 myCas->SetRnrElement(isSelected);
1159 if (isSelected) Filter(myCas);
1164 //______________________________________________________________________
1165 void CascadeList::BachEtaFilter(Float_t min, Float_t max) {
1175 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
1177 myCas = (Cascade*)(*i);
1178 val = myCas->GetBachPseudoRapidity();
1179 wasSelected = myCas->GetRnrElement();
1180 isSelected = ( (val>=min) && (val<=max) );
1185 myCas->SetRnrElement(isSelected);
1188 if (isSelected) Filter(myCas);