* See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
* full copyright notice. *
**************************************************************************/
-
-// Lines commented with //x should be reactivated when we
-// move to a newer ROOT (after 5.25.2).
-// Corresponding lines that are now replacing them should be removed.
-//
-// The problem was the TEveTrackProjected did not support projection
-// of tracks with locked points -- and we do that for tracklets.
-//
-// Maybe it would be even better to have AliEveTracklet : public TEveLine
-// and support both in AliEveTrackCounter.
-// Or have trackelt counter -- as not all histograms collected for tracks
-// are relevant for tracklets.
-
-TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3,
- Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025,
- Float_t dPhiShift05T=0.0045)
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TMath.h>
+#include <TEveManager.h>
+#include <TEveElement.h>
+#include <TEveTrack.h>
+#include <TEveTrackPropagator.h>
+
+#include <AliESDEvent.h>
+#include <AliESDVertex.h>
+#include <AliMultiplicity.h>
+#include <AliMagF.h>
+#include <AliEveEventManager.h>
+#include <AliEveTracklet.h>
+#include <AliEveTrackCounter.h>
+#endif
+
+TEveElementList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=2,
+ Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025,
+ Float_t dPhiShift05T=0.0045)
{
// radius - cylindrical radius to which the tracklets should be extrapolated
AliESDEvent *esd = AliEveEventManager::AssertESD();
- AliESDVertex *pv = esd->GetPrimaryVertexSPD();
- AliMultiplicity *mul = esd->GetMultiplicity();
+ const AliESDVertex *pv = esd->GetPrimaryVertexSPD();
+ const AliMultiplicity *mul = esd->GetMultiplicity();
AliMagF *field = AliEveEventManager::AssertMagField();
- TEveTrackList *cont = new TEveTrackList("SPD Tracklets");
- cont->SetTitle(Form("N=%d", mul->GetNumberOfTracklets()));
- cont->SetMainColor(7);
- cont->SetLineWidth(line_width);
-
- TEveTrackPropagator* prop = cont->GetPropagator();
- prop->SetMaxR(radius);
+ TEveElementList* cont = new TEveElementList("SPD Tracklets");
gEve->AddElement(cont);
+ TEveTrackList *tg = new TEveTrackList("Good");
+ tg->SetMainColor(kCyan);
+ tg->SetLineWidth(line_width);
+ cont->AddElement(tg);
+
+ TEveTrackPropagator* pg = tg->GetPropagator();
+ pg->SetMaxR(radius);
+
+ TEveTrackList *tb = new TEveTrackList("Bad");
+ tb->SetMainColor(kMagenta);
+ tb->SetLineWidth(line_width);
+ cont->AddElement(tb);
+
+ TEveTrackPropagator* pb = tb->GetPropagator();
+ pb->SetMaxR(radius);
+
const Float_t Bz = TMath::Abs(field->SolenoidField());
const Double_t dPhiShift = dPhiShift05T / 5.0 * Bz;
Float_t theta = mul->GetTheta(i);
Float_t phi = mul->GetPhi(i);
Float_t dTheta = mul->GetDeltaTheta(i);
- Float_t dPhi = mul->GetDeltaPhi(i);
+ Float_t dPhi = mul->GetDeltaPhi(i) - dPhiShift;
+ Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
- AliEveTracklet* t = new AliEveTracklet(i, pv, theta, phi, prop);
- t->SetAttLineAttMarker(cont);
+ TEveTrackList* tl = (d < 1.0f) ? tg : tb;
+
+ AliEveTracklet *t = new AliEveTracklet(i, pv, theta, phi, tl->GetPropagator());
+ t->SetAttLineAttMarker(tl);
t->SetElementName(Form("Tracklet %d", i));
t->SetElementTitle(Form("Id = %d\nEta=%.3f, Theta=%.3f, dTheta=%.3f\nPhi=%.3f dPhi=%.3f",
i, mul->GetEta(i), theta, dTheta, phi, dPhi));
- dPhi -= dPhiShift;
+ tl->AddElement(t);
+ }
+
+ tg->MakeTracks();
+ tg->SetTitle(Form("N=%d", tg->NumChildren()));
- Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
- if (d < 1.0f)
- mul->SetLabel(i, 0, 3);
- else
- mul->SetLabel(i, 0, 0);
+ tb->MakeTracks();
+ tb->SetTitle(Form("N=%d", tb->NumChildren()));
- cont->AddElement(t);
+ if (AliEveTrackCounter::IsActive())
+ {
+ AliEveTrackCounter::fgInstance->RegisterTracklets(tg, kTRUE);
+ AliEveTrackCounter::fgInstance->RegisterTracklets(tb, kFALSE);
}
+ else
+ {
+//==========================================
+ tb->SetLineStyle(1);
+ tb->SetLineWidth(2);
+//==========================================
- cont->MakeTracks();
+ }
gEve->Redraw3D();