1 // #include "EVE/Alieve/EventAlieve.h"
2 // #include "Reve/RGTopFrame.h"
3 // #include "Reve/Cascade.h"
6 // #include "AliESDtrack.h"
7 // #include "AliESDcascade.h"
8 // #include "AliESDVertex.h"
10 // using namespace Reve;
11 // using namespace Alieve;
15 Reve::Cascade* esd_make_cas(Reve::TrackRnrStyle* rnrStyle, AliESDVertex* primVtx,
16 AliESDcascade* cas, AliESDtrack* neg, AliESDtrack* pos,
17 AliESDtrack* bach,Int_t i) {
19 Reve::Cascade* myCas = new Reve::Cascade(rnrStyle);
20 myCas->SetESDIndex(i);
22 static Double_t vx,vy,vz, px,py,pz;
23 cas->GetBPxPyPz(px,py,pz);
24 myCas->SetBachP(px,py,pz);
25 cas->GetNPxPyPz(px,py,pz);
26 myCas->SetNegP(px,py,pz);
27 cas->GetPPxPyPz(px,py,pz);
28 myCas->SetPosP(px,py,pz);
30 cas->GetXYZ(vx,vy,vz); // v0 decay vertex
31 myCas->SetV0vtx(vx,vy,vz);
32 cas->GetXYZcascade(vx,vy,vz); // cascade decay vertex
33 myCas->SetCascadeVtx(vx,vy,vz);
35 Double_t primx = primVtx->GetXv(),
36 primy = primVtx->GetYv(),
37 primz = primVtx->GetZv();
39 myCas->SetCasCosPointingAngle( cas->GetCascadeCosineOfPointingAngle(primx,primy,primz) );
40 myCas->SetDecayLength(primx, primy, primz);
41 myCas->SetDCA_v0_Bach(cas->GetDcaXiDaughters());
43 Float_t p = neg->GetP(), mc = neg->GetMass();
44 Float_t betaNeg = p/TMath::Sqrt(p*p + mc*mc);
45 p = pos->GetP(); mc = pos->GetMass();
46 Float_t betaPos = p/TMath::Sqrt(p*p + mc*mc);
47 p = bach->GetP(); mc = bach->GetMass();
48 Float_t betaBach = p/TMath::Sqrt(p*p + mc*mc);
49 if (bach->GetSign()<0) betaBach = -betaBach; // sign is stored is this parameter
51 myCas->SetBeta(betaNeg, betaPos, betaBach);
59 Reve::CascadeList* esd_Cascade(Double_t min_pt=0.1, Double_t max_pt=100)
62 AliESD* esd = Alieve::Event::AssertESD();
63 AliESDVertex* primVertex =(AliESDVertex*) esd->GetVertex();
65 Reve::CascadeList* cont = new Reve::CascadeList("ESD cascade");
66 cont->SetMainColor(Color_t(3)); // green
67 Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
68 rnrStyle->SetMagField( esd->GetMagneticField() );
70 gReve->AddRenderElement(cont);
73 //for (Int_t n=0; count<3; n++) {
74 for (Int_t n=0; n<esd->GetNumberOfCascades(); n++) {
76 AliESDcascade *cas = esd->GetCascade(n);
77 Int_t negInd = cas->GetNindex();
78 Int_t posInd = cas->GetPindex();
79 Int_t bachInd = cas->GetBindex();
80 AliESDtrack* negTr = esd->GetTrack(negInd);
81 AliESDtrack* posTr = esd->GetTrack(posInd);
82 AliESDtrack* bachTr = esd->GetTrack(bachInd);
85 Reve::Cascade* myCas = esd_make_cas(rnrStyle, primVertex, cas,
86 negTr, posTr, bachTr, n);
88 gReve->AddRenderElement(cont, myCas);
94 cont->SetTitle("CascadeList");