]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/aod_HF.C
From Pawel Debski.
[u/mrichter/AliRoot.git] / EVE / alice-macros / aod_HF.C
CommitLineData
20dae051 1// $Id$
fa3634bd 2// Main author: Davide Caffarri 2009
bd38690a 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
f8d5a389 10class AliAODRecoDecayHF;
fa3634bd 11
12void aod_hf_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
bd38690a 13{
14 Double_t pbuf[3], vbuf[3];
bd38690a 15 rt.fSign = tp->GetSign();
16 tp->GetXYZ(vbuf); rt.fV.Set(vbuf);
17 tp->GetPxPyPz(pbuf); rt.fP.Set(pbuf);
18 // Double_t ep = at->GetP(), mc = at->GetMass();
19 rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
20}
21
fa3634bd 22
23AliEveHF* aod_make_HF(TEveTrackPropagator* rnrStyle, AliAODVertex* primAODVtx,
bd38690a 24 AliESDtrack* neg, AliESDtrack* pos, AliAODRecoDecayHF* rd, Int_t i)
f8d5a389 25{
bd38690a 26 TEveRecTrack rcPos;
27 TEveRecTrack rcNeg;
fa3634bd 28 //TEveRecV0 rcV0;
bd38690a 29
f8d5a389 30 /*
31 Double_t p[3];
32 p[0]=rd->PxProng(0); p[1]=rd->PyProng(0); p[2]=rd->PzProng(0);
33 rcV0.fPPos.Set(p);
34 p[0]=rd->PxProng(1); p[1]=rd->PyProng(1); p[2]=rd->PzProng(1);
35 rcV0.fPNeg.Set(p);
bd38690a 36
f8d5a389 37 p[0]=rd->Px(); p[1]=rd->Py(); p[2]=rd->Pz();
fa3634bd 38 */
f8d5a389 39
40 Double_t primVtx[3]={primAODVtx->GetX(), primAODVtx->GetY(), primAODVtx->GetZ()};
41
bd38690a 42
fa3634bd 43 Double_t v[3] = {rd->Xv(),rd->Yv(),rd->Zv()};
bd38690a 44 printf("vertex %f %f %f\n",v[0],v[1],v[2]);
f8d5a389 45
fa3634bd 46 aod_hf_init_rectrack(rcNeg, neg);
bd38690a 47 //rcNeg.fIndex = v0->GetNindex();
fa3634bd 48 aod_hf_init_rectrack(rcPos, pos);
bd38690a 49 //rcPos.fIndex = v0->GetPindex();
50
12cc265f 51 AliEveHF* myHF = new AliEveHF(&rcNeg, &rcPos, primVtx ,rd, rnrStyle);
fa3634bd 52 myHF->SetElementName(Form("D0->Kpi %d", i));
f8d5a389 53 myHF->SetElementTitle(Form("CosPointingAngle %f", rd->CosPointingAngle()));
fa3634bd 54 myHF->SetAODIndex(i);
55 return myHF;
bd38690a 56}
57
58
fa3634bd 59AliEveHFList* aod_HF()
f8d5a389 60{
61 Bool_t useParFiles=kFALSE;
fa3634bd 62 gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/LoadLibraries.C");
63 LoadLibraries(useParFiles);
f8d5a389 64
bd38690a 65 AliAODEvent* aod = AliEveEventManager::AssertAOD();
66 AliESDEvent* esd = AliEveEventManager::AssertESD();
67
f8d5a389 68 /*
69 gSystem->Load("libANALYSIS");
70 gSystem->Load("libANALYSISalice");
71 gSystem->Load("libCORRFW");
72 gSystem->Load("libPWG3base");
73 gSystem->Load("libPWG3vertexingHF");
fa3634bd 74 */
75
76 // load MC particles
f8d5a389 77 TClonesArray *mcArray =
78 (TClonesArray*) aod->FindListObject(AliAODMCParticle::StdBranchName());
79 if (!mcArray) {
fa3634bd 80 printf("MC particles branch not found!\n");
81 return;
82 }
83
fa3634bd 84 AliAODVertex* primVtx_aod = (AliAODVertex*) aod->GetPrimaryVertex();
85 // AliESDVertex *primVtx_esd = (AliESDVertex*) esd->GetPrimaryVertex();
bd38690a 86
fa3634bd 87 AliEveHFList* cont = new AliEveHFList("AOD HF vertices");
bd38690a 88 cont->SetMainColor(2);
89 TEveTrackPropagator* rnrStyle = cont->GetPropagator();
90 rnrStyle->SetMagField( 0.1*aod->GetMagneticField() );
91
92 gEve->AddElement(cont);
93
bd38690a 94 TEvePointSet* pointsD0toKpi = new TEvePointSet("D0->Kpi vertex locations");
95
96 // load D0->Kpi candidates
f8d5a389 97 TClonesArray *arrayD0toKpi = (TClonesArray*) aod->FindListObject("D0toKpi");
98
bd38690a 99 // load 3prong candidates
f8d5a389 100 // TClonesArray *array3Prong =
101 // (TClonesArray*)aod->GetList()->FindObject("Charm3Prong");
bd38690a 102
103 Int_t countD0 = 0;
f8d5a389 104 for (Int_t iD0toKpi=0; iD0toKpi<arrayD0toKpi->GetEntriesFast(); iD0toKpi++)
105 {
bd38690a 106 AliAODRecoDecayHF2Prong *rd = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
107 Bool_t unsetvtx=kFALSE;
f8d5a389 108 if (!rd->GetOwnPrimaryVtx()) {
fa3634bd 109 rd->SetOwnPrimaryVtx(primVtx_aod);
bd38690a 110 unsetvtx=kTRUE;
f8d5a389 111 }
fa3634bd 112 // REAL D0 particle. If you want to draw only real D0 un-comment these lines
113 //Int_t labD0 = rd->MatchToMC(421,mcArray);
114 //if(labD0<0) continue;
115
f8d5a389 116 AliAODTrack *negAODTr = rd->GetDaughter(0);
117 AliAODTrack *posAODTr = rd->GetDaughter(1);
118
119 AliVVertex *secv = rd->GetSecondaryVtx();
bd38690a 120
fa3634bd 121 AliESDtrack *negTr = new AliESDtrack(negAODTr);
122 AliESDtrack *posTr = new AliESDtrack(posAODTr);
bd38690a 123
fa3634bd 124 negTr->PropagateToDCA((AliAODVertex*)secv,aod->GetMagneticField(),100.);
125 posTr->PropagateToDCA((AliAODVertex*)secv,aod->GetMagneticField(),100.);
bd38690a 126
fa3634bd 127 AliEveHF* myD0 = aod_make_HF(rnrStyle,primVtx_aod,negTr,posTr,rd,iD0toKpi);
bd38690a 128 if (myD0) {
129 gEve->AddElement(myD0,cont);
130 countD0++;
131 }
132
133 pointsD0toKpi->SetNextPoint(rd->Xv(),rd->Yv(),rd->Zv());
134 pointsD0toKpi->SetPointId(rd);
135
fa3634bd 136 if(unsetvtx) {
137 rd->UnsetOwnPrimaryVtx();
f8d5a389 138 }
bd38690a 139 }
140
fa3634bd 141 //cont->SetTitle("test");
bd38690a 142
fa3634bd 143 cont->MakeHFs();
bd38690a 144 gEve->Redraw3D();
145
f8d5a389 146 pointsD0toKpi->SetTitle(Form("N=%d", pointsD0toKpi->Size()));
bd38690a 147 pointsD0toKpi->SetMarkerStyle(4);
148 pointsD0toKpi->SetMarkerSize(1.5);
149 pointsD0toKpi->SetMarkerColor(kViolet);
150
151 gEve->AddElement(pointsD0toKpi);
152 gEve->Redraw3D();
153
154 return cont;
155}