]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_cascade.C
update
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_cascade.C
CommitLineData
d810d0de 1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
cb4245bb 9
73ce6137 10void esd_cascade_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
11{
12 Double_t pbuf[3], vbuf[3];
13
14 rt.fSign = tp->GetSign();
15 tp->GetXYZ(vbuf); rt.fV.Set(vbuf);
16 tp->GetPxPyPz(pbuf); rt.fP.Set(pbuf);
17 // Double_t ep = at->GetP(), mc = at->GetMass();
18 rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
19}
75b17362 20
73ce6137 21AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
22 AliESDtrack* bac, AliESDcascade* cascade, Int_t i)
75b17362 23{
73ce6137 24 TEveRecTrack rcPos;
25 TEveRecTrack rcNeg;
26 TEveRecV0 rcV0;
27
28 TEveRecTrack rcBac;
29 TEveRecCascade rcCascade;
30
31 Double_t pNeg[3], pPos[3], pV0[3];
32 cascade->GetNPxPyPz(pNeg[0], pNeg[1], pNeg[2]);
dc07d021 33 rcV0.fPPos.Set(pPos);
73ce6137 34 cascade->GetPPxPyPz(pPos[0], pPos[1], pPos[2]);
dc07d021 35 rcV0.fPNeg.Set(pNeg);
73ce6137 36
37 Double_t v[3];
38 cascade->GetXYZ(v[0], v[1], v[2]);
39 rcV0.fVCa.Set(v);
40
41 cascade->GetParamN()->GetXYZ(v); rcV0.fVNeg.Set(v);
42 cascade->GetParamP()->GetXYZ(v); rcV0.fVPos.Set(v);
43
44 rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
45
dc07d021 46 Double_t pBac[3], pCascade[3], cv[21]={0.};
73ce6137 47 cascade->GetBPxPyPz(pBac[0], pBac[1], pBac[2]);
48 rcCascade.fPBac.Set(pBac);
49 cascade->GetPxPyPz(pCascade[0], pCascade[1], pCascade[2]);
50
51 cascade->GetXYZcascade(v[0], v[1], v[2]);
52 rcCascade.fCascadeVCa.Set(v);
53
54 rcCascade.fCascadeBirth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
55
56 // Simulation data not directly available in AliESDcascade
57 // rcCascade.fDLabel = cascade->GetBindex();
58
59 // Problem: two following lines are not possible: no GetParamB !!
dc07d021 60 // cascade->GetParamB()->GetXYZ(v); rcCascade.fVBac.Set(v);
73ce6137 61 // esd_cascade_init_rectrack(rcBac, cascade->GetParamB());
62 // Solution: create an AliExternalTrackParam with null cv...
63 AliExternalTrackParam *bParam = new AliExternalTrackParam(v,pBac,cv,cascade->Charge());
64 esd_cascade_init_rectrack(rcBac,bParam);
65 rcBac.fIndex = cascade->GetBindex();
66
67 AliEveCascade* myCascade = new AliEveCascade(&rcBac, &rcV0, &rcCascade, rnrStyle);
68 myCascade->SetElementName(Form("ESDcascade %d", i));
69 myCascade->SetElementTitle(Form("DCA %f",
70 cascade->GetDcaXiDaughters()));
71 myCascade->SetESDIndex(i);
72 myCascade->SetDaughterDCA(cascade->GetDcaXiDaughters());
73
74 return myCascade;
31989443 75}
76
77
73ce6137 78AliEveCascadeList* esd_cascade()
31989443 79{
d810d0de 80 AliESDEvent* esd = AliEveEventManager::AssertESD();
31989443 81
73ce6137 82 AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
83
84 AliEveCascadeList* cont = new AliEveCascadeList("ESD cascade");
fbc350a3 85 cont->SetMainColor(3); // green
84aff7a4 86 TEveTrackPropagator* rnrStyle = cont->GetPropagator();
daaa6c4d 87 rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
31989443 88
84aff7a4 89 gEve->AddElement(cont);
31989443 90
91 Int_t count = 0;
73ce6137 92 for (Int_t n=0; n<esd->GetNumberOfCascades(); ++n)
93 {
94 AliESDcascade *cascade = esd->GetCascade(n);
95
96 Int_t bacInd = cascade->GetBindex();
97 AliESDtrack* bacTr = esd->GetTrack(bacInd);
98
99 AliEveCascade* myCascade = esd_make_cascade(rnrStyle, primVertex, bacTr, cascade, n);
100 if (myCascade)
101 {
102 gEve->AddElement(myCascade, cont);
103 ++count;
31989443 104 }
105 }
106
73ce6137 107 cont->SetTitle("test");
31989443 108
109 cont->MakeCascades();
84aff7a4 110 gEve->Redraw3D();
31989443 111
112 return cont;
113}