e4926963991bdcfb0d903037b54edd945dfce84c
[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   {
27     if(stack->IsPhysicalPrimary(i)) 
28     {
29       TParticle* p = stack->Particle(i);
30       Double_t  pT = p->Pt();
31       if (pT<min_pt || pT>max_pt) continue;
32
33       ++count;
34       Reve::Track* track = new Reve::Track(p, i, rnrStyle);
35   
36       //PH The line below is replaced waiting for a fix in Root
37       //PH which permits to use variable siza arguments in CINT
38       //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
39       //PH    track->SetName(Form("%s [%d]", p->GetName(), i));
40       char form[1000];
41       sprintf(form,"%s [%d]", p->GetName(), i);
42       track->SetName(form);
43       track->SetRnrStyle(rnrStyle);
44       gReve->AddRenderElement(cont, track);
45     }
46   }
47   
48   // set path marks
49   Alieve::KineTools kt; 
50   rl->LoadTrackRefs();
51   kt.SetPathMarks(cont,stack, rl->TreeTR());
52   cont->SetEditPathMarks(kTRUE);
53
54
55   //PH  const Text_t* tooltip = Form("pT ~ (%.2lf, %.2lf), N=%d", min_pt, max_pt, count);
56   char tooltip[1000];
57   sprintf(tooltip,"pT ~ (%.2lf, %.2lf), N=%d", min_pt, max_pt, count);
58   cont->SetTitle(tooltip); // Not broadcasted automatically ...
59   cont->UpdateItems();
60
61   cont->MakeTracks();
62   cont->MakeMarkers();
63   gReve->Redraw3D();
64
65   return cont;
66 }