]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/esd_V0.C
Record changes.
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_V0.C
1
2
3 // #include "EVE/Alieve/EventAlieve.h"
4 // #include "Reve/RGTopFrame.h"
5 // #include "Reve/V0.h"
6
7 // #include "AliESD.h"
8 // #include "AliESDtrack.h"
9 // #include "AliESDv0.h"
10 // #include "AliESDVertex.h"
11
12 // using namespace Reve;
13 // using namespace Alieve;
14
15
16 Reve::V0* esd_make_v0(Reve::TrackRnrStyle* rnrStyle, AliESDVertex* primVtx,
17                       AliESDtrack* neg, AliESDtrack* pos, AliESDv0* v0, Int_t i)
18 {
19   if (! v0->GetOnFlyStatus())
20   { // v0 on fly do not have the momentum vector filled...
21     Reve::RecTrack  rcPos;
22     Reve::RecTrack  rcNeg;
23     Reve::RecV0 rcV0;
24
25     Double_t p[3];
26     v0->GetNPxPyPz(p[0], p[1], p[2]);
27     rcV0.P_pos.Set(p);
28     v0->GetPPxPyPz(p[0], p[1], p[2]);
29     rcV0.P_neg.Set(p);
30
31     v0->GetPxPyPz(p[0], p[1], p[2]);
32     Double_t v[3];
33     v0->GetXYZ(v[0], v[1], v[2]);
34
35
36     //   printf(" %f %f %f / %f %f %f    %i\n",p[0], p[1], p[2],
37     //   v[0], v[1], v[2], v0->GetOnFlyStatus());
38
39     rcV0.V_neg.Set(v); //original track vertices at dca not stored 
40     rcV0.V_pos.Set(v);
41     rcV0.V_ca.Set(v);
42
43     rcV0.d_label[0] = v0->GetNindex();
44     rcV0.d_label[1] = v0->GetPindex();
45
46     Double_t ep = neg->GetP(), mc = neg->GetMass();
47     rcNeg.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
48     ep = pos->GetP(); mc = pos->GetMass();
49     rcPos.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
50
51
52     Reve::V0* myV0 = new Reve::V0(&rcNeg, &rcPos, &rcV0, rnrStyle);
53     char ch[50];
54     //   sprintf(ch,"ESDv0%i",i); 
55     //   myV0->SetName(ch);
56     //   myV0->SetTitle(ch);
57     myV0->SetESDIndex(i);
58     myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
59
60     Double_t primx = primVtx->GetXv(),
61       primy = primVtx->GetYv(),
62       primz = primVtx->GetZv();
63     myV0->SetCosPointingAngle(v0->GetV0CosineOfPointingAngle(primx,primy,primz));
64
65     myV0->SetDecayLength(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
66
67     return myV0;
68   } else {
69     return 0;
70   }
71
72 }
73
74
75 Reve::V0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
76 {
77
78   AliESD* esd = Alieve::Event::AssertESD();
79   AliESDVertex* primVertex =(AliESDVertex*) esd->GetVertex();
80
81   Reve::V0List* cont = new Reve::V0List("ESD v0"); 
82   cont->SetMainColor(Color_t(3)); // green
83   Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
84   rnrStyle->SetMagField( esd->GetMagneticField() );
85
86   gReve->AddRenderElement(cont);
87
88   Int_t count = 0;
89   //for (Int_t n=0; count<3; n++) {
90   for (Int_t n=0; n<esd->GetNumberOfV0s(); n++) {
91
92     AliESDv0 *v0 = esd->GetV0(n);
93     if (v0->GetOnFlyStatus()) continue;
94
95     Int_t negInd = v0->GetNindex();
96     Int_t posInd = v0->GetPindex();
97     AliESDtrack* negTr = esd->GetTrack(negInd);
98     AliESDtrack* posTr = esd->GetTrack(posInd);
99     
100     Reve::V0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
101     if (myV0) {
102       gReve->AddRenderElement(cont, myV0);
103       count++;
104     }
105   }
106
107   cont->SetTitle("testV0List ");
108   cont->UpdateItems();
109
110   cont->MakeV0s();
111   cont->MakeMarkers();
112   gReve->Redraw3D();
113
114   return cont;
115 }
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131