]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_spd_tracklets.C
added extended documentation and examples (Ben)
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_spd_tracklets.C
CommitLineData
d810d0de 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 *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
cb4245bb 9
43a5f43c 10TEveElementList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=2,
c12be4d4 11 Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025,
12 Float_t dPhiShift05T=0.0045)
c46fd838 13{
57e8f8f1 14 // radius - cylindrical radius to which the tracklets should be extrapolated
c46fd838 15
57e8f8f1 16 AliESDEvent *esd = AliEveEventManager::AssertESD();
17 AliESDVertex *pv = esd->GetPrimaryVertexSPD();
18 AliMultiplicity *mul = esd->GetMultiplicity();
c46fd838 19
bccc8088 20 AliMagF *field = AliEveEventManager::AssertMagField();
21
c12be4d4 22 TEveElementList* cont = new TEveElementList("SPD Tracklets");
57e8f8f1 23 gEve->AddElement(cont);
c46fd838 24
c12be4d4 25 TEveTrackList *tg = new TEveTrackList("Good");
72ffcfba 26 tg->SetMainColor(kCyan);
c12be4d4 27 tg->SetLineWidth(line_width);
28 cont->AddElement(tg);
29
30 TEveTrackPropagator* pg = tg->GetPropagator();
31 pg->SetMaxR(radius);
32
33 TEveTrackList *tb = new TEveTrackList("Bad");
72ffcfba 34 tb->SetMainColor(kMagenta);
c12be4d4 35 tb->SetLineWidth(line_width);
36 cont->AddElement(tb);
37
38 TEveTrackPropagator* pb = tb->GetPropagator();
39 pb->SetMaxR(radius);
40
786d9102 41 const Float_t Bz = TMath::Abs(field->SolenoidField());
42
43 const Double_t dPhiShift = dPhiShift05T / 5.0 * Bz;
44 const Double_t dPhiWindow2 = dPhiWindow * dPhiWindow;
45 const Double_t dThetaWindow2 = dThetaWindow * dThetaWindow;
46
3a20f984 47 for (Int_t i = 0; i < mul->GetNumberOfTracklets(); ++i)
c46fd838 48 {
786d9102 49 Float_t theta = mul->GetTheta(i);
50 Float_t phi = mul->GetPhi(i);
51 Float_t dTheta = mul->GetDeltaTheta(i);
c12be4d4 52 Float_t dPhi = mul->GetDeltaPhi(i) - dPhiShift;
53 Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
54
55 TEveTrackList* tl = (d < 1.0f) ? tg : tb;
57e8f8f1 56
c12be4d4 57 AliEveTracklet *t = new AliEveTracklet(i, pv, theta, phi, tl->GetPropagator());
58 t->SetAttLineAttMarker(tl);
3a20f984 59 t->SetElementName(Form("Tracklet %d", i));
786d9102 60 t->SetElementTitle(Form("Id = %d\nEta=%.3f, Theta=%.3f, dTheta=%.3f\nPhi=%.3f dPhi=%.3f",
61 i, mul->GetEta(i), theta, dTheta, phi, dPhi));
62
c12be4d4 63 tl->AddElement(t);
64 }
786d9102 65
c12be4d4 66 tg->MakeTracks();
67 tg->SetTitle(Form("N=%d", tg->NumChildren()));
57e8f8f1 68
c12be4d4 69 tb->MakeTracks();
70 tb->SetTitle(Form("N=%d", tb->NumChildren()));
c46fd838 71
c12be4d4 72 if (AliEveTrackCounter::IsActive())
73 {
74 AliEveTrackCounter::fgInstance->RegisterTracklets(tg, kTRUE);
75 AliEveTrackCounter::fgInstance->RegisterTracklets(tb, kFALSE);
76 }
77 else
78 {
3aff0c2e 79//==========================================
80 tb->SetLineStyle(1);
81 tb->SetLineWidth(2);
82//==========================================
83
c12be4d4 84 }
3a20f984 85
84aff7a4 86 gEve->Redraw3D();
c46fd838 87
57e8f8f1 88 return cont;
c46fd838 89}