]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_kink.C
Increase transparency
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_kink.C
CommitLineData
4711ad43 1// $Id$
2// Main authors: Paraskevi Ganoti: 2009
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 *
7 * full copyright notice. *
8 **************************************************************************/
9
10void esd_kink_init_rectrackMother(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
18 rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
19}
20
21void esd_kink_init_rectrackDaughter(TEveRecTrack& rt, AliExternalTrackParam* tp, TEveVector* svt,TEveVector* spt)
22{
23 rt.fSign = tp->GetSign();
24 rt.fV.Set(*svt);
25 rt.fP.Set(*spt);
26
27 rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
28}
29
30AliEveKink* esd_make_kink(TEveTrackPropagator* rnrStyleMoth,TEveTrackPropagator* rnrStyleDaugh, AliESDtrack* moth, AliESDtrack* daug, AliESDkink* kink, Int_t i)
31{
32 TEveRecTrack rcMoth;
33 TEveRecTrack rcDaug;
34 TEveRecKink rcKink;
35
36 const TVector3 p1(kink->GetMotherP());
37 rcKink.fPMother.Set(p1);
38 const TVector3 p2(kink->GetDaughterP());
39 rcKink.fPDaughter.Set(p2);
40
41 const TVector3 r1(kink->GetPosition());
42 rcKink.fVKink.Set(r1);
43
44 for (Int_t j=0; j<3; ++j) rckink.fKinkAngle[j]=kink->GetAngle(j);
45
46 Double_t r[3], r2[3];
47
48 moth->GetTPCInnerParam()->GetXYZ(r2); rcKink.fVMother.Set(r2);
49 daug->GetOuterParam()->GetXYZ(r); rcKink.fVDaughter.Set(r);
50
51 esd_kink_init_rectrackMother(rcMoth, (moth->GetTPCInnerParam()));
52 rcMoth.fIndex = moth->GetID();
53
54 esd_kink_init_rectrackDaughter(rcDaug, daug->GetOuterParam(), &rcKink.fVKink, &rcKink.fPDaughter);
55 rcDaug.fIndex = daug->GetID();
56
57 AliEveKink* myKink = new AliEveKink(&rcMoth, &rcDaug, &rcKink, rnrStyleMoth,rnrStyleDaugh);
58
59 myKink->SetElementName(Form("ESDkink %d \n", i));
60 myKink->SetESDKinkIndex(i);
61
62 for (Int_t j=0; j<3; ++j) myKink->SetKinkAngle(j, kink->GetAngle(j));
63 Double_t daugProbability[10];
64 Double_t daugP = 0.0;
65 daug->GetESDpid(daugProbability);
66 daugP = daug->P();
67
68 // ****** Tentative particle type "concentrations"
69 Double_t c[5]={0.01, 0.01, 0.85, 0.10, 0.05};
70 AliPID::SetPriors(c);
71
72 AliPID daugPid(daugProbability);
73
74 Int_t daugMostProbPdg = 0;
75
76 switch (daugPid.GetMostProbable()){
77 case 0:
78 daugMostProbPdg = 11; break;
79 case 1:
80 daugMostProbPdg = 13; break;
81 case 2:
82 daugMostProbPdg = 211; break;
83 default :
84 daugMostProbPdg = 13; break;
85 }
86
87 Float_t daugMaxProbPid = daugPid.GetProbability(daugPid.GetMostProbable());
88
89 myKink->SetMaxProbPdgPid(daugMostProbPdg,daugMaxProbPid);//????????????
90
91 return myKink;
92}
93
94
95AliEveKinkList* esd_kink()
96{
97 AliESDEvent* esd = AliEveEventManager::AssertESD();
98 AliEveKinkList* cont = new AliEveKinkList("ESD kink");
99 cont->SetMainColor(3); // green
100 TEveTrackPropagator* rnrStyleMoth = cont->GetPropagatorMoth();
101 rnrStyleMoth->SetMagField( 0.1*esd->GetMagneticField() );
102 TEveTrackPropagator* rnrStyleDaugh = cont->GetPropagatorDaugh();
103 rnrStyleDaugh->SetMagField( 0.1*esd->GetMagneticField() );
104 rnrStyleDaugh->SetMaxR(520);
105 gEve->AddElement(cont);
106
107 Int_t count = 0;
108// for (Int_t n=0; n<esd->GetNumberOfKinks(); ++n)
109// {
110// AliESDkink *kink = esd->GetKink(n); //???????????
111// printf("kink number = %d, label of mother = %d , label of daug = %d --", n, kink->GetLabel(0), kink->GetLabel(1));
112// } To be investigated...
113 for (Int_t n=0; n<esd->GetNumberOfTracks(); ++n)
114 {
115 AliESDtrack* mtrack = esd->GetTrack(n);
116 if(mtrack->GetKinkIndex(0)<0){
117
118 AliESDkink *kink = new AliESDkink;
119
120 kink=esd->GetKink(TMath::Abs(mtrack->GetKinkIndex(0))-1);
121
122 for (Int_t m=0; m<esd->GetNumberOfTracks(); ++m)
123 {
124 AliESDtrack * dtrack = esd->GetTrack(m);
125
126 if((dtrack->GetKinkIndex(0)>0)&&(dtrack->GetKinkIndex(0)==TMath::Abs(mtrack->GetKinkIndex(0)))) {
127 AliESDtrack* mothTr = esd->GetTrack(n);
128 AliESDtrack* daugTr = esd->GetTrack(m);
129
130 AliEveKink* myKink = esd_make_kink(rnrStyleMoth, rnrStyleDaugh, mothTr, daugTr, kink, (TMath::Abs(mtrack->GetKinkIndex(0))-1));
131 if (myKink)
132 {
133 gEve->AddElement(myKink, cont);
134 ++count;
135 }
136 }
137 } // inner track loop
138
139
140 } //mother kink index <0
141 } // Outer track loop
142
143 cont->SetTitle("test");
144
145 cont->MakeKinks();
146 gEve->Redraw3D();
147
148 return cont;
149}