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 TEveElementList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=2,
11 Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025,
12 Float_t dPhiShift05T=0.0045)
14 // radius - cylindrical radius to which the tracklets should be extrapolated
16 AliESDEvent *esd = AliEveEventManager::AssertESD();
17 AliESDVertex *pv = esd->GetPrimaryVertexSPD();
18 AliMultiplicity *mul = esd->GetMultiplicity();
20 AliMagF *field = AliEveEventManager::AssertMagField();
22 TEveElementList* cont = new TEveElementList("SPD Tracklets");
23 gEve->AddElement(cont);
25 TEveTrackList *tg = new TEveTrackList("Good");
26 tg->SetMainColor(kCyan);
27 tg->SetLineWidth(line_width);
30 TEveTrackPropagator* pg = tg->GetPropagator();
33 TEveTrackList *tb = new TEveTrackList("Bad");
34 tb->SetMainColor(kMagenta);
35 tb->SetLineWidth(line_width);
38 TEveTrackPropagator* pb = tb->GetPropagator();
41 const Float_t Bz = TMath::Abs(field->SolenoidField());
43 const Double_t dPhiShift = dPhiShift05T / 5.0 * Bz;
44 const Double_t dPhiWindow2 = dPhiWindow * dPhiWindow;
45 const Double_t dThetaWindow2 = dThetaWindow * dThetaWindow;
47 for (Int_t i = 0; i < mul->GetNumberOfTracklets(); ++i)
49 Float_t theta = mul->GetTheta(i);
50 Float_t phi = mul->GetPhi(i);
51 Float_t dTheta = mul->GetDeltaTheta(i);
52 Float_t dPhi = mul->GetDeltaPhi(i) - dPhiShift;
53 Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
55 TEveTrackList* tl = (d < 1.0f) ? tg : tb;
57 AliEveTracklet *t = new AliEveTracklet(i, pv, theta, phi, tl->GetPropagator());
58 t->SetAttLineAttMarker(tl);
59 t->SetElementName(Form("Tracklet %d", i));
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));
67 tg->SetTitle(Form("N=%d", tg->NumChildren()));
70 tb->SetTitle(Form("N=%d", tb->NumChildren()));
72 if (AliEveTrackCounter::IsActive())
74 AliEveTrackCounter::fgInstance->RegisterTracklets(tg, kTRUE);
75 AliEveTrackCounter::fgInstance->RegisterTracklets(tb, kFALSE);
79 //==========================================
82 //==========================================