00001
00002
00003
00004 const char* esd_geom_file_name =
00005 "http://root.cern.ch/files/alice_ESDgeometry.root";
00006
00007 void jetcone()
00008 {
00009 TEveManager::Create();
00010
00011 using namespace TMath;
00012
00013 TRandom r(0);
00014
00015
00016 Int_t nCones = 10;
00017 Int_t nTracks = 200;
00018
00019 Float_t coneRadius = 0.4;
00020 Float_t length = 300.;
00021
00022
00023 gStyle->SetPalette(1, 0);
00024 TEveRGBAPalette* pal = new TEveRGBAPalette(0, 500);
00025
00026
00027
00028
00029
00030
00031 TEveStraightLineSet* axis = new TEveStraightLineSet("Cone Axis");
00032 axis->SetLineColor(kGreen);
00033 axis->SetLineWidth(2);
00034
00035 TEveStraightLineSet* tracksXYZ = new TEveStraightLineSet("StraightLinesXYZ");
00036 tracksXYZ->SetLineColor(kRed);
00037 tracksXYZ->SetLineWidth(2);
00038
00039 TEveStraightLineSet* tracksEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhi");
00040 tracksEtaPhi->SetLineColor(kYellow);
00041 tracksEtaPhi->SetLineWidth(2);
00042
00043 TEveStraightLineSet* tracksSeedEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhiSeed");
00044 tracksSeedEtaPhi->SetLineColor(kBlue);
00045 tracksSeedEtaPhi->SetLineWidth(2);
00046
00047
00048
00049
00050
00051 for ( Int_t track=0; track < nTracks ; track++ ) {
00052
00053 Float_t trackX = r.Uniform(-250.0, 250.0);
00054 Float_t trackY = r.Uniform(-250.0, 250.0);
00055 Float_t trackZ = r.Uniform(-250.0, 250.0);
00056 Float_t trackR = Sqrt(trackX*trackX + trackY*trackY + trackZ*trackZ);
00057
00058 TEveVector trackDir(trackX/trackR, trackY/trackR ,trackZ/trackR);
00059 TEveVector trackEnd = trackDir * length;
00060 tracksXYZ->AddLine(0., 0., 0., trackEnd.fX, trackEnd.fY, trackEnd.fZ );
00061 }
00062
00063
00064
00065
00066
00067 for ( Int_t track=0; track < nTracks ; track++ ) {
00068
00069 Float_t trackEta = r.Uniform(-0.9, 0.9);
00070 Float_t trackPhi = r.Uniform(0.0, TwoPi());
00071
00072 TEveVector trackDir( GetTEveVector(trackEta, trackPhi) );
00073 TEveVector trackEnd = trackDir * length;
00074
00075 if ( trackEta > coneRadius || trackEta < -coneRadius )
00076 tracksEtaPhi->AddLine(0., 0., 0.,
00077 trackEnd.fX, trackEnd.fY, trackEnd.fZ);
00078 else
00079 tracksSeedEtaPhi->AddLine(0., 0., 0.,
00080 trackEnd.fX, trackEnd.fY, trackEnd.fZ);
00081 }
00082
00083
00084
00085
00086
00087 for ( Int_t iter = 0; iter < nCones; ++iter ) {
00088
00089
00090 Float_t coneEta = r.Uniform(-0.9, 0.9);
00091 Float_t conePhi = r.Uniform(0.0, TwoPi() );
00092
00093
00094 TEveVector coneOrigin(0.0,0.0,0.0);
00095
00096
00097 TEveVector coneAxis ( GetTEveVector( coneEta, conePhi) );
00098 coneAxis *= length * 1.1;
00099
00100 axis->AddLine( 0., 0., 0., coneAxis.fX, coneAxis.fY, coneAxis.fZ );
00101
00102
00103 TEveJetCone* jetCone = new TEveJetCone("JetCone");
00104 jetCone->SetPickable(kTRUE);
00105 jetCone->SetCylinder( 250., 250. );
00106 if ( (jetCone->AddCone( coneEta, conePhi, coneRadius ) ) != -1)
00107 gEve->AddElement( jetCone );
00108 }
00109
00110
00111
00112
00113 gEve->AddElement(axis);
00114
00115
00116
00117 gEve->AddElement(tracksSeedEtaPhi);
00118 gEve->AddElement(tracksEtaPhi);
00119
00120
00121 geomGentleTPC();
00122
00123 gEve->Redraw3D(kTRUE);
00124
00125 return;
00126 }
00127
00128
00129 TEveVector GetTEveVector( Float_t& eta, Float_t& phi )
00130 {
00131 TEveVector vec( (Float_t) Cos ( (Double_t) phi)/ CosH( (Double_t) eta ),
00132 (Float_t) Sin ( (Double_t) phi)/ CosH( (Double_t) eta ),
00133 (Float_t) TanH( (Double_t) eta ) );
00134 return vec;
00135 }
00136
00137
00138 void geomGentleTPC()
00139 {
00140
00141 TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD");
00142 if (!geom)
00143 return;
00144
00145 TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle");
00146 TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse, 0);
00147 geom->Close();
00148 delete geom;
00149
00150 gEve->AddGlobalElement(gsre);
00151
00152 TEveElement* elTRD = gsre->FindChild("TRD+TOF");
00153 elTRD->SetRnrState(kFALSE);
00154
00155 TEveElement* elPHOS = gsre->FindChild("PHOS");
00156 elPHOS->SetRnrState(kFALSE);
00157
00158 TEveElement* elHMPID = gsre->FindChild("HMPID");
00159 elHMPID->SetRnrState(kFALSE);
00160 }