// anton.empl@cern.ch aug'02 < // ------------------------------------------------------------------------------------------------------- < // this is fred, the Fluka Root Event Display < // version: .902 (beta) < // automatically generated by: flex4 < // makes use of a first Fluka Event class < // include a map from Geant-3 detector sets onto FLUKA regions, just uncomment < // < // for now: 2 root core classes were tailored (TRootCancas, TApplication) < // please contect for help on running root < // dec'02 < // ---------------- batch mode ------------------ #ifndef __CINT__ #include #include #include #include #include #include #include #include #include #include #include #include "FEvent.h" #include "gusets.h" int main(int argc, char **argv) { TApplication theApp("FLEUR", &argc, argv); // ------------------------ Int_t trk=1,segments,originatingTrk,initialVertex,finalVertex,particleID, creation,destruction, s,region,points,p, i=0,yes=1,ctr=0,n, geant,*element, evt,nrBeamParticles,beamParticle, doPoints; Double_t mass,creationTime, dE,exitTime,path, x,y,z,dEdx,cosX,cosY,cosZ,Ekin, beamMass,beamEkin; Char_t str[9],anun,YesDoPoints; TCanvas *c1= new TCanvas("c1","FRED - Fluka Root Event Display",700,0,600,400); Event *event= new Event(); Track *track = new Track(); GSegment *segment = new GSegment(); // -ae- // -ae- gROOT->Reset(); // ---------------------------------------------- #else // ---------------- root mode ------------------ void transit() { //gROOT->Reset(); gSystem->Load("libGeom"); #endif // --------------------------------------------- //TGeoManager *gGeoManager= new TGeoManager("Odyssey","The 2001 Odyssey Spacecraft Geometry"); TGeoRotation* rota_0 = new TGeoRotation("rota_0",90.000000,0.000000,90.000000, 90.000000,0.000000,0.000000); TGeoRotation* rota_1 = new TGeoRotation("rota_1",45.000000,0.000000,90.000000, 90.000000,45.000000,180.000000); TGeoRotation* rota_2 = new TGeoRotation("rota_2",90.000000,0.000000,0.000000, 0.000000,90.000000,90.000000); TGeoRotation* rota_3 = new TGeoRotation("rota_3",90.000000,90.000000,90.000000, 180.000000,0.000000,0.000000); TGeoRotation* rota_4 = new TGeoRotation("rota_4",90.000000,-45.000000,90.000000, 45.000000,0.000000,0.000000); TGeoRotation* rota_5 = new TGeoRotation("rota_5",90.000000,-25.000000,90.000000, 65.000000,0.000000,0.000000); TGeoMaterial *mate_1 = new TGeoMaterial("HYDROGEN",1.010000,1,0.071000); mate_1->SetUniqueID(1); TGeoMaterial *mate_2 = new TGeoMaterial("DEUTERIUM",2.010000,1,0.162000); mate_2->SetUniqueID(2); TGeoMaterial *mate_3 = new TGeoMaterial("HELIUM",4.000000,2,0.125000); mate_3->SetUniqueID(3); TGeoMaterial *mate_4 = new TGeoMaterial("LITHIUM",6.940000,3,0.534000); mate_4->SetUniqueID(4); TGeoMaterial *mate_5 = new TGeoMaterial("BERILLIUM",9.010000,4,1.848000); mate_5->SetUniqueID(5); TGeoMaterial *mate_6 = new TGeoMaterial("CARBON",12.010000,6,2.265000); mate_6->SetUniqueID(6); TGeoMaterial *mate_7 = new TGeoMaterial("NITROGEN",14.010000,7,0.808000); mate_7->SetUniqueID(7); TGeoMaterial *mate_8 = new TGeoMaterial("NEON",20.180000,10,1.207000); mate_8->SetUniqueID(8); TGeoMaterial *mate_9 = new TGeoMaterial("ALUMINIUM",26.980000,13,2.700000); mate_9->SetUniqueID(9); TGeoMaterial *mate_10 = new TGeoMaterial("IRON",55.850000,26,7.870000); mate_10->SetUniqueID(10); TGeoMaterial *mate_11 = new TGeoMaterial("COPPER",63.540000,29,8.960000); mate_11->SetUniqueID(11); TGeoMaterial *mate_12 = new TGeoMaterial("TUNGSTEN",183.850000,74,19.300000); mate_12->SetUniqueID(12); TGeoMaterial *mate_13 = new TGeoMaterial("LEAD",207.190000,82,11.350000); mate_13->SetUniqueID(13); TGeoMaterial *mate_14 = new TGeoMaterial("URANIUM",238.030000,92,18.950000); mate_14->SetUniqueID(14); TGeoMaterial *mate_15 = new TGeoMaterial("AIR",14.610000,7,0.001000); mate_15->SetUniqueID(15); TGeoMaterial *mate_16 = new TGeoMaterial("VACUUM",14.610000,7,0.001000); mate_16->SetUniqueID(16); //TGeoMedium *media_20 = new TGeoMedium("Silicon",20,17,0,0,0,10,-1,-1,0.1000000E-02,-1); //TGeoMedium *media_21 = new TGeoMedium("Al_honeycomb",21,18,0,0,0,10,-1,-1,0.1000000E-02,-1); //TGeoMedium *media_22 = new TGeoMedium("Brass",22,19,0,0,0,10,-1,-1,0.1000000E-02,-1); //TGeoMedium *media_23 = new TGeoMedium("Glass",23,20,0,0,0,10,-1,-1,0.1000000E-02,-1); //TGeoMedium *media_24 = new TGeoMedium("Mylar",24,21,0,0,0,10,-1,-1,0.1000000E-02,-1); //TGeoMedium *media_19 = new TGeoMedium("mother",19,15,0,0,0,10,-1,-1,0.1000000E-02,-1); TGeoMedium *media_9 = new TGeoMedium("mothers",9,9,0,0,0,10,-1,-1,0.1000000E-02,-1); TGeoVolume *N_MOTH = gGeoManager->MakeBox("MOTH",media_9,300.000000,300.000000,300.000000); TGeoVolume *N_EDEC = gGeoManager->MakeBox("EDEC",media_9,72.390000,76.200000,1.270000); TGeoVolume *N_SDEC = gGeoManager->MakeBox("SDEC",media_9,38.100000,76.200000,1.270000); TGeoVolume *N_PDEC = gGeoManager->MakeBox("PDEC",media_9,130.048000,87.630000,1.270000); TGeoVolume *N_HOLE = gGeoManager->MakeTube("HOLE",media_9,0.000000,35.560000,1.270000); TGeoVolume *N_TCYL = gGeoManager->MakeTube("TCYL",media_9,35.560000,38.100000,12.700000); TGeoVolume *N_BCYL = gGeoManager->MakeTube("BCYL",media_9,35.560000,38.100000,12.700000); TGeoVolume *N_MYLF = gGeoManager->MakeBox("MYLF",media_9,72.390000,0.006350,60.000000); N_MYLF->SetLineColor(3); TGeoVolume *N_MARI = gGeoManager->MakeBox("MARI",media_9,14.605000,10.160000,5.080000); TGeoVolume *N_MXWA = gGeoManager->MakeBox("MXWA",media_9,0.095250,9.969500,4.889500); TGeoVolume *N_MYWA = gGeoManager->MakeBox("MYWA",media_9,14.605000,0.095250,4.889500); TGeoVolume *N_MZWA = gGeoManager->MakeBox("MZWA",media_9,14.605000,10.160000,0.095250); TGeoVolume *N_A1 = gGeoManager->MakeBox("A1",media_9,1.500000,0.050000,1.500000); TGeoVolume *N_A2 = gGeoManager->MakeBox("A2",media_9,1.500000,0.050000,1.500000); TGeoVolume *N_ABRS = gGeoManager->MakeBox("ABRS",media_9,2.540000,0.006350,2.540000); N_ABRS->SetLineColor(5); TGeoVolume *N_AALU = gGeoManager->MakeBox("AALU",media_9,2.540000,0.006350,2.540000); N_AALU->SetLineColor(4); TGeoVolume *N_PSD1 = gGeoManager->MakeBox("PSD1",media_9,1.200000,0.015750,1.200000); TGeoVolume *N_PSD2 = gGeoManager->MakeBox("PSD2",media_9,1.200000,0.015750,1.200000); TGeoVolume *N_B1 = gGeoManager->MakeTube("B1",media_9,0.000000,2.920000,0.250000); TGeoVolume *N_B2 = gGeoManager->MakeTube("B2",media_9,0.000000,2.920000,0.250000); TGeoVolume *N_B3 = gGeoManager->MakeTube("B3",media_9,0.000000,2.920000,0.250000); TGeoVolume *N_B4 = gGeoManager->MakeTube("B4",media_9,0.000000,2.920000,0.250000); TGeoVolume *N_GLAS = gGeoManager->MakeTube("GLAS",media_9,0.000000,2.250000,0.250000); N_GLAS->SetLineColor(4); TGeoVolume *N_SSOS = gGeoManager->MakeBox("SSOS",media_9,3.810000,3.175000,3.810000); TGeoVolume *N_RBOX = gGeoManager->MakeBox("RBOX",media_9,5.080000,6.350000,3.810000); TGeoVolume *N_CADH = gGeoManager->MakeBox("CADH",media_9,13.335000,8.890000,5.080000); TGeoVolume *N_SDST = gGeoManager->MakeBox("SDST",media_9,13.970000,11.430000,5.080000); TGeoVolume *N_UHFT = gGeoManager->MakeBox("UHFT",media_9,8.890000,6.350000,5.080000); TGeoVolume *N_UHFD = gGeoManager->MakeBox("UHFD",media_9,6.350000,5.080000,5.080000); TGeoVolume *N_PDDU = gGeoManager->MakeBox("PDDU",media_9,12.700000,12.700000,5.080000); gGeoManager->SetTopVolume(N_MOTH); N_MOTH->AddNode(N_EDEC,1,new TGeoCombiTrans(0.000000,0.000000,105.410000,rota_0)); N_MOTH->AddNode(N_SDEC,1,new TGeoCombiTrans(0.000000,0.000000,166.370000,rota_0)); N_MOTH->AddNode(N_PDEC,1,new TGeoCombiTrans(0.000000,0.000000,31.750000,rota_0)); N_MOTH->AddNode(N_TCYL,1,new TGeoCombiTrans(0.000000,0.000000,119.380000,rota_0)); N_MOTH->AddNode(N_BCYL,1,new TGeoCombiTrans(0.000000,0.000000,17.780000,rota_0)); N_MOTH->AddNode(N_MYLF,1,new TGeoCombiTrans(0.000000,-77.000000,103.632000,rota_0)); N_MOTH->AddNode(N_MARI,1,new TGeoCombiTrans(-10.160000,-60.960000,111.760000,rota_0)); N_MOTH->AddNode(N_SSOS,1,new TGeoCombiTrans(-54.610000,-41.275000,110.490000,rota_0)); N_MOTH->AddNode(N_SSOS,2,new TGeoCombiTrans(-54.610000,-31.115000,110.490000,rota_0)); N_MOTH->AddNode(N_RBOX,1,new TGeoCombiTrans(-43.180000,49.530000,110.490000,rota_0)); N_MOTH->AddNode(N_CADH,1,new TGeoCombiTrans(23.495000,49.530000,111.760000,rota_0)); N_MOTH->AddNode(N_SDST,1,new TGeoCombiTrans(-11.430000,50.546000,111.760000,rota_0)); N_MOTH->AddNode(N_UHFT,1,new TGeoCombiTrans(31.750000,-48.260000,111.760000,rota_0)); N_MOTH->AddNode(N_UHFT,2,new TGeoCombiTrans(50.055800,-36.213400,111.760000,rota_0)); N_MOTH->AddNode(N_UHFD,1,new TGeoCombiTrans(-49.904700,-53.831000,111.760000,rota_4)); N_MOTH->AddNode(N_UHFD,2,new TGeoCombiTrans(-39.130000,-64.578200,111.760000,rota_4)); N_MOTH->AddNode(N_PDDU,1,new TGeoCombiTrans(-49.560900,18.343900,111.760000,rota_5)); N_PDEC->AddNode(N_HOLE,1,new TGeoCombiTrans(0.000000,0.000000,0.000000,rota_0)); N_EDEC->AddNode(N_HOLE,2,new TGeoCombiTrans(0.000000,0.000000,0.000000,rota_0)); N_MARI->AddNode(N_MXWA,1,new TGeoCombiTrans(-14.604900,0.000000,0.000000,rota_0)); N_MARI->AddNode(N_MXWA,2,new TGeoCombiTrans(14.604900,0.000000,0.000000,rota_0)); N_MARI->AddNode(N_MYWA,1,new TGeoCombiTrans(0.000000,-10.159900,0.000000,rota_0)); N_MARI->AddNode(N_MYWA,2,new TGeoCombiTrans(0.000000,-10.159900,0.000000,rota_0)); N_MARI->AddNode(N_MZWA,1,new TGeoCombiTrans(0.000000,0.000000,-5.079900,rota_0)); N_MARI->AddNode(N_MZWA,2,new TGeoCombiTrans(0.000000,0.000000,5.079900,rota_0)); N_MARI->AddNode(N_A1,1,new TGeoCombiTrans(9.525000,-8.811000,0.000000,rota_1)); N_MARI->AddNode(N_A2,1,new TGeoCombiTrans(9.525000,-4.366000,0.000000,rota_1)); N_MARI->AddNode(N_ABRS,1,new TGeoCombiTrans(9.525000,-8.868350,0.000000,rota_0)); N_MARI->AddNode(N_ABRS,2,new TGeoCombiTrans(9.525000,-8.753650,0.000000,rota_0)); N_MARI->AddNode(N_ABRS,3,new TGeoCombiTrans(9.525000,-4.423350,0.000000,rota_0)); N_MARI->AddNode(N_ABRS,4,new TGeoCombiTrans(9.525000,-4.308650,0.000000,rota_0)); N_MARI->AddNode(N_AALU,1,new TGeoCombiTrans(9.525000,-8.875700,0.000000,rota_0)); N_MARI->AddNode(N_AALU,2,new TGeoCombiTrans(9.525000,-8.746300,0.000000,rota_0)); N_MARI->AddNode(N_AALU,3,new TGeoCombiTrans(9.525000,-4.430700,0.000000,rota_0)); N_MARI->AddNode(N_AALU,4,new TGeoCombiTrans(9.525000,-4.301300,0.000000,rota_0)); N_MARI->AddNode(N_PSD1,1,new TGeoCombiTrans(9.525000,-7.541000,0.000000,rota_1)); N_MARI->AddNode(N_PSD2,1,new TGeoCombiTrans(9.525000,-5.636000,0.000000,rota_1)); N_MARI->AddNode(N_B1,1,new TGeoCombiTrans(9.525000,-3.241000,0.000000,rota_2)); N_MARI->AddNode(N_B2,1,new TGeoCombiTrans(9.525000,-2.583000,0.000000,rota_2)); N_MARI->AddNode(N_B3,1,new TGeoCombiTrans(9.525000,-1.186000,0.000000,rota_2)); N_MARI->AddNode(N_B4,1,new TGeoCombiTrans(9.525000,-0.559000,0.000000,rota_2)); N_MARI->AddNode(N_GLAS,1,new TGeoCombiTrans(9.525000,0.068000,0.000000,rota_2)); gGeoManager->CloseGeometry(); gGeoManager->SetVisLevel(4); // ---------------- batch mode ----------------- #ifndef __CINT__ fprintf(stderr,"\n >\n"); fprintf(stderr," ===> this is FRED the Fluka Root Event Display (version .902, December 2002)\n"); fprintf(stderr," > beta r+- development\n"); fprintf(stderr," > possibly FLUKA initialisation, please be patient\n"); fprintf(stderr," >\n"); // -ae- while(yes>0) { fprintf(stderr," ---> reading one event from stdin %5i \n",ctr++); n= scanf(" %i %i %c ",&evt,&nrBeamParticles,&YesDoPoints); for (i=0;i0) { n= scanf("%s %i %i %i %i %i %i %i %i %lf %lf %lf %lf %lf %lf", &anun,&trk,&segments,&initialVertex,&finalVertex,&originatingTrk, &particleID,&creation,&destruction,&mass,&creationTime,&cosX,&cosY,&cosZ,&Ekin); if (n<2) break; if (trk>0) { track= event->AddTrack(trk,initialVertex,finalVertex,originatingTrk, particleID,creation,destruction,mass,creationTime,cosX,cosY,cosZ,Ekin); for (s=0;sAddSegment(points,region,dE,exitTime,path,element); for (p=0;p<((doPoints)?points:2);p++) { scanf("%lf %lf %lf %lf %lf",&x,&y,&z,&Ekin,&dEdx); segment->AddPoint(x,y,z,dEdx); } } } else { scanf("%s",&str[0]); n= scanf(" %i %i %c ",&evt,&nrBeamParticles,&YesDoPoints); if (n<2) { yes= 0; break; } for (i=0;iDraw(); // ---------------- batch mode ----------------- #ifndef __CINT__ event->Draw(); c1->Update(); theApp.Run(kTRUE); fprintf(stderr," ===> next event requested\n"); delete event; event= new Event(); trk= 1; } // -ae- // ---------------------------------------------- #else // ---------------- root mode ------------------ //if (gPad) gPad->x3d(); #endif // --------------------------------------------- }