10 const char* esd_geom_file_name =
11 "http://root.cern.ch/files/alice_ESDgeometry.root";
13 TEveVector GetTEveVector(Float_t eta, Float_t phi);
18 TEveManager::Create();
20 using namespace TMath;
28 Float_t coneRadius = 0.4;
29 Float_t length = 300.;
32 auto pal =
new TEveRGBAPalette(0, 500);
39 auto axis =
new TEveStraightLineSet(
"Cone Axis");
40 axis->SetLineColor(kGreen);
41 axis->SetLineWidth(2);
43 auto tracksXYZ =
new TEveStraightLineSet(
"StraightLinesXYZ");
44 tracksXYZ->SetLineColor(kRed);
45 tracksXYZ->SetLineWidth(2);
47 auto tracksEtaPhi =
new TEveStraightLineSet(
"StraightLinesEtaPhi");
48 tracksEtaPhi->SetLineColor(kYellow);
49 tracksEtaPhi->SetLineWidth(2);
51 auto tracksSeedEtaPhi =
new TEveStraightLineSet(
"StraightLinesEtaPhiSeed");
52 tracksSeedEtaPhi->SetLineColor(kBlue);
53 tracksSeedEtaPhi->SetLineWidth(2);
59 for ( Int_t track=0; track < nTracks ; track++ ) {
61 Float_t trackX = r.Uniform(-250.0, 250.0);
62 Float_t trackY = r.Uniform(-250.0, 250.0);
63 Float_t trackZ = r.Uniform(-250.0, 250.0);
64 Float_t trackR = Sqrt(trackX*trackX + trackY*trackY + trackZ*trackZ);
66 TEveVector trackDir(trackX/trackR, trackY/trackR ,trackZ/trackR);
67 TEveVector trackEnd = trackDir * length;
68 tracksXYZ->AddLine(0., 0., 0., trackEnd.fX, trackEnd.fY, trackEnd.fZ );
75 for ( Int_t track=0; track < nTracks ; track++ ) {
77 Float_t trackEta = r.Uniform(-0.9, 0.9);
78 Float_t trackPhi = r.Uniform(0.0, TwoPi());
80 TEveVector trackDir( GetTEveVector(trackEta, trackPhi) );
81 TEveVector trackEnd = trackDir * length;
83 if ( trackEta > coneRadius || trackEta < -coneRadius )
84 tracksEtaPhi->AddLine(0., 0., 0.,
85 trackEnd.fX, trackEnd.fY, trackEnd.fZ);
87 tracksSeedEtaPhi->AddLine(0., 0., 0.,
88 trackEnd.fX, trackEnd.fY, trackEnd.fZ);
95 for ( Int_t iter = 0; iter < nCones; ++iter ) {
98 Float_t coneEta = r.Uniform(-0.9, 0.9);
99 Float_t conePhi = r.Uniform(0.0, TwoPi() );
102 TEveVector coneOrigin(0.0,0.0,0.0);
105 TEveVector coneAxis ( GetTEveVector( coneEta, conePhi) );
106 coneAxis *= length * 1.1;
108 axis->AddLine( 0., 0., 0., coneAxis.fX, coneAxis.fY, coneAxis.fZ );
111 auto jetCone =
new TEveJetCone(
"JetCone");
112 jetCone->SetPickable(kTRUE);
113 jetCone->SetCylinder( 250., 250. );
114 if ( (jetCone->AddCone( coneEta, conePhi, coneRadius ) ) != -1)
115 gEve->AddElement( jetCone );
121 gEve->AddElement(axis);
125 gEve->AddElement(tracksSeedEtaPhi);
126 gEve->AddElement(tracksEtaPhi);
131 gEve->Redraw3D(kTRUE);
137 TEveVector GetTEveVector(Float_t eta, Float_t phi)
139 using namespace TMath;
141 TEveVector vec( (Float_t) Cos ( (Double_t) phi)/ CosH( (Double_t) eta ),
142 (Float_t) Sin ( (Double_t) phi)/ CosH( (Double_t) eta ),
143 (Float_t) TanH( (Double_t) eta ) );
151 TFile::SetCacheFileDir(
".");
152 TFile* geom = TFile::Open(esd_geom_file_name,
"CACHEREAD");
156 TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get(
"Gentle");
157 TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse, 0);
161 gEve->AddGlobalElement(gsre);
163 TEveElement* elTRD = gsre->FindChild(
"TRD+TOF");
164 elTRD->SetRnrState(kFALSE);
166 TEveElement* elPHOS = gsre->FindChild(
"PHOS");
167 elPHOS->SetRnrState(kFALSE);
169 TEveElement* elHMPID = gsre->FindChild(
"HMPID");
170 elHMPID->SetRnrState(kFALSE);