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