1 // $Id: esd_V0.C 26897 2008-06-25 23:58:36Z mtadel $
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 void esd_v0_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
12 Double_t pbuf[3], vbuf[3];
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);
21 AliEveV0* aod_make_HF(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
22 AliESDtrack* neg, AliESDtrack* pos, AliAODRecoDecayHF* rd, Int_t i)
29 p[0]=rd->PxProng(0); p[1]=rd->PyProng(0); p[2]=rd->PzProng(0);
31 p[0]=rd->PxProng(1); p[1]=rd->PyProng(1); p[2]=rd->PzProng(1);
34 p[0]=rd->Px(); p[1]=rd->Py(); p[2]=rd->Pz();
36 Double_t v[3] = {rd->Xv(),rd->Yv(),rd->Zv()}
37 printf("vertex %f %f %f\n",v[0],v[1],v[2]);
40 neg->GetXYZ(v); rcV0.fVNeg.Set(v);
41 pos->GetXYZ(v); rcV0.fVPos.Set(v);
43 rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
45 // Simulation data not directly available in AliESDv0
46 //rcV0.fDLabel[0] = v0->GetNindex();
47 //rcV0.fDLabel[1] = v0->GetPindex();
49 esd_v0_init_rectrack(rcNeg, neg);
50 //rcNeg.fIndex = v0->GetNindex();
51 esd_v0_init_rectrack(rcPos, pos);
52 //rcPos.fIndex = v0->GetPindex();
54 AliEveV0* myD0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
55 myD0->SetElementName(Form("D0->Kpi %d", i));
56 myD0->SetElementTitle(Form("CosPointingAngle %f",
57 rd->CosPointingAngle()));
58 //myV0->SetESDIndex(i);
59 //myV0->SetOnFlyStatus(v0->GetOnFlyStatus());
60 //myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
66 AliEveV0List* aod_HF()
68 AliAODEvent* aod = AliEveEventManager::AssertAOD();
69 AliESDEvent* esd = AliEveEventManager::AssertESD();
71 AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
73 AliEveV0List* cont = new AliEveV0List("AOD HF vertices");
74 cont->SetMainColor(2);
75 TEveTrackPropagator* rnrStyle = cont->GetPropagator();
76 rnrStyle->SetMagField( 0.1*aod->GetMagneticField() );
78 gEve->AddElement(cont);
81 TEvePointSet* pointsD0toKpi = new TEvePointSet("D0->Kpi vertex locations");
83 // load D0->Kpi candidates
84 TClonesArray *arrayD0toKpi =
85 (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
87 // load 3prong candidates
88 TClonesArray *array3Prong =
89 (TClonesArray*)aod->GetList()->FindObject("Charm3Prong");
93 for (Int_t iD0toKpi=0; iD0toKpi<arrayD0toKpi->GetEntriesFast(); iD0toKpi++) {
94 AliAODRecoDecayHF2Prong *rd = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
95 Bool_t unsetvtx=kFALSE;
96 if(!rd->GetOwnPrimaryVtx()) {
97 rd->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
101 AliESDtrack* negTr = esd->GetTrack(rd->GetProngID(0));
102 AliESDtrack* posTr = esd->GetTrack(rd->GetProngID(1));
104 AliVVertex *secv = rd->GetSecondaryVtx();
105 negTr->PropagateToDCA((AliESDVertex*)secv,aod->GetMagneticField(),100.);
106 posTr->PropagateToDCA((AliESDVertex*)secv,aod->GetMagneticField(),100.);
108 AliEveV0* myD0 = aod_make_HF(rnrStyle,primVertex,negTr,posTr,rd,iD0toKpi);
110 gEve->AddElement(myD0,cont);
114 pointsD0toKpi->SetNextPoint(rd->Xv(),rd->Yv(),rd->Zv());
115 pointsD0toKpi->SetPointId(rd);
117 if(unsetvtx) rd->UnsetOwnPrimaryVtx();
120 cont->SetTitle("test");
125 pointsD0toKpi->SetTitle(Form("N=%d",pointsD0toKpi->Size()));
126 pointsD0toKpi->SetMarkerStyle(4);
127 pointsD0toKpi->SetMarkerSize(1.5);
128 pointsD0toKpi->SetMarkerColor(kViolet);
130 gEve->AddElement(pointsD0toKpi);