Temporary replacement of Form by sprintf to avoid problems on some platforms (alpahli...
[u/mrichter/AliRoot.git] / EVE / alice-macros / kine_tracks.C
1 // Import tracks from kinematics-tree / particle-stack.
2 // Preliminary/minimal solution.
3
4 Reve::TrackList* kine_tracks(Double_t min_pt=0.5, Double_t max_pt=100)
5 {
6   AliRunLoader* rl =  Alieve::Event::AssertRunLoader();
7   rl->LoadKinematics();
8   AliStack* stack = rl->Stack();
9   if (!stack) {
10     Error("kine_tracks.C", "can not get kinematics.");
11     return 0;
12   }
13
14   Reve::TrackList* cont = new Reve::TrackList("Kine Tracks"); 
15   cont->SetMainColor(Color_t(6));
16   Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
17   rnrStyle->fColor = 8;
18   // !!! Watch the '-', apparently different sign convention then for ESD.
19   rnrStyle->SetMagField( - gAlice->Field()->SolenoidField() );
20
21   gReve->AddRenderElement(cont);
22
23   Int_t count = 0;
24   Int_t     N = stack->GetNtrack();
25   for (Int_t i=0; i<N; ++i) {
26     TParticle* p = stack->Particle(i);
27     Double_t  pT = p->Pt();
28     if (pT<min_pt || pT>max_pt) continue;
29
30     ++count;
31     Reve::Track* track = new Reve::Track(p, i, rnrStyle);
32     //PH The line below is replaced waiting for a fix in Root
33     //PH which permits to use variable siza arguments in CINT
34     //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
35     //PH    track->SetName(Form("%s [%d]", p->GetName(), i));
36     char form[1000];
37     sprintf(form,"%s [%d]", p->GetName(), i);
38     track->SetName(form);
39     gReve->AddRenderElement(cont, track);
40   }
41   
42   //PH  const Text_t* tooltip = Form("pT ~ (%.2lf, %.2lf), N=%d", min_pt, max_pt, count);
43   char tooltip[1000];
44   sprintf(tooltip,"pT ~ (%.2lf, %.2lf), N=%d", min_pt, max_pt, count);
45   cont->SetTitle(tooltip); // Not broadcasted automatically ...
46   cont->UpdateItems();
47
48   cont->MakeTracks();
49   cont->MakeMarkers();
50   gReve->Redraw3D();
51
52   return cont;
53 }