12 january 2011 geant4 advanced visualization j. perl 1 dawn opengl how to control the drawing style...

48
12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories, plus a few other topics Geant4 Advanced Visualization Joseph Perl, SLAC HepRep/HepRApp Geant4 v9.4

Post on 20-Dec-2015

218 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 Geant4 Advanced Visualization J. Perl 1

DAWN

OpenGL

How to Control the Drawing Style and Filtering of Detector

Geometryand Trajectories,

plus a few other topics

Geant4 Advanced Visualization

Joseph Perl, SLACHepRep/HepRApp

Geant4 v9.4

Page 2: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 2Geant4 Advanced Visualization J. Perl

ContentsContents

Visualization AttributesVisualization Attributes to control color, line style, etc.to control color, line style, etc. to represent particle type, charge, etc.to represent particle type, charge, etc.

Trajectory ModelingTrajectory Modeling

Advanced Trajectory ModelingAdvanced Trajectory Modeling

Trajectory and Hit FilteringTrajectory and Hit Filtering

Additional TopicsAdditional Topics Controlling level of detail in geometryControlling level of detail in geometry Section planesSection planes Reviewing kept eventsReviewing kept events Standalone visualizationStandalone visualization

Page 3: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 3Geant4 Advanced Visualization J. Perl

How this Document Fits withHow this Document Fits withOther Tutorial MaterialsOther Tutorial Materials

This presentation can be used on its own, but gives the most comprehensive This presentation can be used on its own, but gives the most comprehensive introduction to Geant4 visualization when used as part of the following full set of introduction to Geant4 visualization when used as part of the following full set of documents: documents:

Introduction to Geant4 VisualizationIntroduction to Geant4 Visualization Geant4 Installation GuidesGeant4 Installation Guides Geant4 Visualization Tutorial using the HepRApp HepRep BrowserGeant4 Visualization Tutorial using the HepRApp HepRep Browser Geant4 Visualization Tutorial using the DAWN Event DisplayGeant4 Visualization Tutorial using the DAWN Event Display Geant4 Visualization Tutorial using the OpenGL Event DisplayGeant4 Visualization Tutorial using the OpenGL Event Display Geant4 Visualization CommandsGeant4 Visualization Commands Geant4 Advanced VisualizationGeant4 Advanced Visualization See the URLS at the end of this presentationSee the URLS at the end of this presentation

Page 4: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 4Geant4 Advanced Visualization J. Perl

Visualization AttributesVisualization Attributes

Page 5: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 5Geant4 Advanced Visualization J. Perl

Two Kinds of Visualization AttributesTwo Kinds of Visualization Attributes G4VisAttributes - carry standard drawing information:G4VisAttributes - carry standard drawing information:

ColorColor Visible/InvisibleVisible/Invisible Wireframe/Solid, etc.Wireframe/Solid, etc.

HepRep-Style Attributes - carry arbitrary, user-defined HepRep-Style Attributes - carry arbitrary, user-defined information:information: for trajectories:for trajectories:

momentummomentum particle type, etc.particle type, etc.

for hits:for hits: energyenergy electronics channel number, etc.electronics channel number, etc.

for geometry volumes:for geometry volumes: logical volume namelogical volume name material, etc.material, etc.

Page 6: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 6Geant4 Advanced Visualization J. Perl

G4VisAttributesG4VisAttributes

G4VisAttributes - carry standard drawing information:G4VisAttributes - carry standard drawing information: ColorColor Visible/InvisibleVisible/Invisible Wireframe/SolidWireframe/Solid etc.etc.

For the first half of Geant4’s life,For the first half of Geant4’s life,these were the only kind of Visualization Attributesthese were the only kind of Visualization Attributes

Page 7: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 7Geant4 Advanced Visualization J. Perl

LineStyle: WireFrame or SolidLineStyle: WireFrame or Solid

WireFrameWireFrame

SolidSolid

Page 8: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 8Geant4 Advanced Visualization J. Perl

Setting Geometry Vis Attributes from C++Setting Geometry Vis Attributes from C++

Create G4VisAttributes object and assign it to a volume:Create G4VisAttributes object and assign it to a volume: experimentalHall_logical -> SetVisAttributes experimentalHall_logical -> SetVisAttributes

(G4VisAttributes::Invisible)(G4VisAttributes::Invisible)

Page 9: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 9Geant4 Advanced Visualization J. Perl

Setting Geometry Vis Attributes from Setting Geometry Vis Attributes from CommandsCommands

You can control the color, linewidth and other attributes You can control the color, linewidth and other attributes of detailed geometry drawing using /vis/geometry of detailed geometry drawing using /vis/geometry commands such as:commands such as: /vis/geometry/set/colour <myvolume> blue/vis/geometry/set/colour <myvolume> blue For the full set of options, see the built-in command guidance.For the full set of options, see the built-in command guidance.

A few more examples:A few more examples: Change the line style of a particular volume to dashedChange the line style of a particular volume to dashed

/vis/geometry/set/lineStyle <myvolume> dashed/vis/geometry/set/lineStyle <myvolume> dashed Change the line width of all volumes to 3Change the line width of all volumes to 3

/vis/geometry/set/lineWidth all 3/vis/geometry/set/lineWidth all 3 Change the number of line segments used to approximate a Change the number of line segments used to approximate a

circle for all volumes to 100circle for all volumes to 100 /vis/geometry/set/forceLineSegmentsPerCircle all 0 100/vis/geometry/set/forceLineSegmentsPerCircle all 0 100

Page 10: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 10Geant4 Advanced Visualization J. Perl

Setting Overall Vis Attributes from CommandsSetting Overall Vis Attributes from Commands

While the previously shown /vis/geometry commands allow the most detailed control over geometry drawing,the /vis/viewer commands allow you to control a few overall settings /vis/viewer/set/style wireframe /vis/viewer/set/globalLineWidthScale etc. see online command guidance for details

Watch out for fact that interactive commands do not override C++ or /vis/geometry commands that have the “force” prefix, such as: experimentalHallVisAtt->SetForceWireframe(true) or /vis/geometry/set/forceSolid experimentalHall

Page 11: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 11Geant4 Advanced Visualization J. Perl

HepRep-Style AttributesHepRep-Style Attributes HepRep-Style Attributes - carry arbitrary, user-defined information:HepRep-Style Attributes - carry arbitrary, user-defined information:

for trajectories:for trajectories: momentummomentum particle type, etc.particle type, etc.

for hits:for hits: energyenergy electronics channel number, etc.electronics channel number, etc.

for geometry volumes:for geometry volumes: logical volume namelogical volume name material, etc.material, etc.

These attributes were added to Geant4 over the last few years to support These attributes were added to Geant4 over the last few years to support advanced features in the HepRep browsers (HepRApp, Wired4 and advanced features in the HepRep browsers (HepRApp, Wired4 and FRED).FRED). display the attributes when you click on the graphics objectdisplay the attributes when you click on the graphics object perform cuts on these valuesperform cuts on these values label objects by these valueslabel objects by these values

Page 12: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 12Geant4 Advanced Visualization J. Perl

HepRApp: Pick to Show Physics AttributesHepRApp: Pick to Show Physics Attributes

Picked on thisvolume to show•Material•Density•Radlen•etc

Picked on this trajectory to show•Particle ID•Charge•Momentum•etc.

Page 13: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 Geant4 Advanced Visualization J. Perl 13

HepRApp: Labeling by Any Attribute

Page 14: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 Geant4 Advanced Visualization J. Perl 14

HepRApp: Cut by Any Attribute

Page 15: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 15Geant4 Advanced Visualization J. Perl

HepRep Attributes beyond the HepRep BrowsersHepRep Attributes beyond the HepRep Browsers

Other visualization drivers can also use the HepRep-style attributes: Open Inventor will show the attributes when you click on the relevant object OpenGL also does this, with attributes shown in standard output window

Advanced visualization features described later in this presentation also use HepRep attributes and work for all Geant4 visualization drivers:

Trajectory Modeling Trajectory and Hit Filtering

Page 16: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 16Geant4 Advanced Visualization J. Perl

Defining Your Own HepRep AttributesDefining Your Own HepRep Attributes While a useful set of attributes is already defined by default in the standard While a useful set of attributes is already defined by default in the standard

Geant4 trajectory, you are also free to define your own attributes:Geant4 trajectory, you are also free to define your own attributes: std::map<G4String,G4AttDef>* store = std::map<G4String,G4AttDef>* store =

G4AttDefStore::GetInstance("G4Trajectory",isNew);G4AttDefStore::GetInstance("G4Trajectory",isNew); G4String PN("PN");G4String PN("PN"); (*store)[PN] = G4AttDef(PN,"Particle Name","Physics","","G4String");(*store)[PN] = G4AttDef(PN,"Particle Name","Physics","","G4String"); G4String IMom("IMom");G4String IMom("IMom"); (*store)[IMom] = G4AttDef(IMom, "Momentum of track at start of trajectory", (*store)[IMom] = G4AttDef(IMom, "Momentum of track at start of trajectory",

"Physics","","G4ThreeVector");"Physics","","G4ThreeVector"); Then fill the attributes with lines such as:Then fill the attributes with lines such as:

std::vector<G4AttValue>* values = new std::vector<G4AttValue>;std::vector<G4AttValue>* values = new std::vector<G4AttValue>; values->push_back(G4AttValue("PN",ParticleName,""));values->push_back(G4AttValue("PN",ParticleName,"")); s.seekp(std::ios::beg);s.seekp(std::ios::beg); s << G4BestUnit(initialMomentum,"Energy") << std::ends;s << G4BestUnit(initialMomentum,"Energy") << std::ends; values->push_back(G4AttValue("IMom",c,""));values->push_back(G4AttValue("IMom",c,""));

See geant4/source/tracking/src/G4Trajectory.cc for a good example.See geant4/source/tracking/src/G4Trajectory.cc for a good example.

Page 17: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 17Geant4 Advanced Visualization J. Perl

Trajectory ModelingTrajectory Modeling

Page 18: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 18Geant4 Advanced Visualization J. Perl

Enhanced Trajectory DrawingEnhanced Trajectory Drawing Ability to change trajectory drawing model through interactive Ability to change trajectory drawing model through interactive

commandscommands

Lets you, for example,Lets you, for example, declare that trajectories should be color-coded by charge,declare that trajectories should be color-coded by charge, then change to have them color-coded by particle typethen change to have them color-coded by particle type

Eliminates the most common reason users had to code their own Eliminates the most common reason users had to code their own trajectory classestrajectory classes

Most examples include a vis.mac that demonstrates some of these Most examples include a vis.mac that demonstrates some of these featuresfeatures

Page 19: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

19Geant4 Advanced Visualization J. Perl12 January 2011

Creator Process

— muIoni

— Decay

— annihil

— eIoni

— brem

Momentum (MeV) — 0-1

— 1-10

— 10-20

— 20-30

— 30-50

— 50+

Charge

— +1

— 0

— -1

Example A01, five events, drawBy various models

Page 20: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 20Geant4 Advanced Visualization J. Perl

Standard Models Supplied with Geant4Standard Models Supplied with Geant4

drawByChargedrawByCharge Default modelDefault model Colors trajectories according to chargeColors trajectories according to charge

drawByParticleIDdrawByParticleID Colors trajectories according to particle typeColors trajectories according to particle type All trajectories are colored grey by defaultAll trajectories are colored grey by default Configure to highlight chosen particle types with chosen colorsConfigure to highlight chosen particle types with chosen colors No limit on the number of particle types that can be highlightedNo limit on the number of particle types that can be highlighted

drawByOriginVolumedrawByOriginVolume Colors trajectories according to volume in which they originatedColors trajectories according to volume in which they originated for example, to highlight all particles that backscattered from a particular collimatorfor example, to highlight all particles that backscattered from a particular collimator

genericgeneric Draws all trajectories the sameDraws all trajectories the same

control over more than just color, including:control over more than just color, including: Whether to show trajectory as line, step points or bothWhether to show trajectory as line, step points or both width of trajectory lines, type of marker to use for points, point size, etc.width of trajectory lines, type of marker to use for points, point size, etc.

+1+1 BlueBlue

-1-1 RedRed

00 GreenGreen

Page 21: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 21Geant4 Advanced Visualization J. Perl

Model ConfigurationModel Configuration You can create and configure multiple models through eitherYou can create and configure multiple models through either

Interactive commandsInteractive commands Compiled codeCompiled code

Interactive commandsInteractive commands Located inLocated in /vis/modeling/trajectories /vis/modeling/trajectories directorydirectory Possible to have multiple instances of given model typePossible to have multiple instances of given model type

e.g., toggle between two different ways of coloring by chargee.g., toggle between two different ways of coloring by charge List and select instantiated models with commands:List and select instantiated models with commands:

/vis/modeling/trajectories/list/vis/modeling/trajectories/list /vis/modeling/trajectories/select <model-instance-name>/vis/modeling/trajectories/select <model-instance-name>

Note that detailed help for a given model is not shown in the help system until Note that detailed help for a given model is not shown in the help system until you have created an instance of that modelyou have created an instance of that model e.g., only after you do your first:e.g., only after you do your first:

/vis/modeling/trajectories/create/drawByCharge/vis/modeling/trajectories/create/drawByCharge will the help system will include details on drawByChargewill the help system will include details on drawByCharge

Page 22: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 22Geant4 Advanced Visualization J. Perl

Trajectory Modeling ExamplesTrajectory Modeling ExamplesExample macro#Standard setup/vis/scene/create/vis/open OGLIX/vis/scene/add/volume/vis/scene/add/trajectories/vis/scene/add/hits/vis/viewer/set/lightsThetaPhi 90. 0./vis/viewer/set/viewpointThetaPhi 150. 90./vis/viewer/set/style surface/vis/viewer/set/hiddenEdge true#Create drawByParticleID model, highlighting photons/vis/modeling/trajectories/create/drawByParticleID/vis/modeling/trajectories/drawByParticleID-0/set gamma red/run/beamOn 1

#Create drawByCharge model, coloring neutrals white/vis/modeling/trajectories/create/drawByCharge/vis/modeling/trajectories/drawByCharge-0/set 1 blue/vis/modeling/trajectories/drawByCharge-0/set -1 red/vis/modeling/trajectories/drawByCharge-0/set 0 white/run/beamOn 1a

Page 23: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 23Geant4 Advanced Visualization J. Perl

More Sample Commands: drawByParticleID modelMore Sample Commands: drawByParticleID model

# Create a drawByParticleID model named drawByParticleID-0# Create a drawByParticleID model named drawByParticleID-0/vis/modeling/trajectories/create/drawByParticleID/vis/modeling/trajectories/create/drawByParticleID

# Configure drawByParticleID-0 model# Configure drawByParticleID-0 model/vis/modeling/trajectories/drawByParticleID-0/set gamma red/vis/modeling/trajectories/drawByParticleID-0/set gamma red/vis/modeling/trajectories/drawByParticleID-0/set proton yellow/vis/modeling/trajectories/drawByParticleID-0/set proton yellow/vis/modeling/trajectories/drawByParticleID-0/setRGBA e+ 1 0 1 1/vis/modeling/trajectories/drawByParticleID-0/setRGBA e+ 1 0 1 1

Note that if you just select drawByParticleID but don’t do any commands to set colors,Note that if you just select drawByParticleID but don’t do any commands to set colors,all particles will be grey.all particles will be grey.In future releases (starting with 9.4Beta1), default will be better:In future releases (starting with 9.4Beta1), default will be better:/vis/modeling/trajectories/drawByParticleID-0/set e- red/vis/modeling/trajectories/drawByParticleID-0/set e- red/vis/modeling/trajectories/drawByParticleID-0/set e+ blue/vis/modeling/trajectories/drawByParticleID-0/set e+ blue/vis/modeling/trajectories/drawByParticleID-0/set proton cyan/vis/modeling/trajectories/drawByParticleID-0/set proton cyan/vis/modeling/trajectories/drawByParticleID-0/set gamma green/vis/modeling/trajectories/drawByParticleID-0/set gamma green/vis/modeling/trajectories/drawByParticleID-0/set neutron yellow/vis/modeling/trajectories/drawByParticleID-0/set neutron yellow/vis/modeling/trajectories/drawByParticleID-0/set pi+ magenta/vis/modeling/trajectories/drawByParticleID-0/set pi+ magenta/vis/modeling/trajectories/drawByParticleID-0/set pi- magenta/vis/modeling/trajectories/drawByParticleID-0/set pi- magenta/vis/modeling/trajectories/drawByParticleID-0/set pi0 magenta/vis/modeling/trajectories/drawByParticleID-0/set pi0 magenta

Page 24: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 24Geant4 Advanced Visualization J. Perl

More Sample Commands: drawByCharge ModelMore Sample Commands: drawByCharge Modeland Toggling Between Two Modelsand Toggling Between Two Models

# Create a drawByCharge model (will get default name of drawCharge-0)# Create a drawByCharge model (will get default name of drawCharge-0)/vis/modeling/trajectories/create/drawByCharge/vis/modeling/trajectories/create/drawByCharge

# Create another drawByCharge model with an explicit name of testChargeModel# Create another drawByCharge model with an explicit name of testChargeModel/vis/modeling/trajectories/create/drawByCharge testChargeModel/vis/modeling/trajectories/create/drawByCharge testChargeModel

# Configure these two drawByCharge models and visualize using either one of them# Configure these two drawByCharge models and visualize using either one of them

# Configure drawByCharge-0 model # Configure drawByCharge-0 model /vis/modeling/trajectories/drawByCharge-0/set 1 red/vis/modeling/trajectories/drawByCharge-0/set 1 red/vis/modeling/trajectories/drawByCharge-0/set -1 red/vis/modeling/trajectories/drawByCharge-0/set -1 red/vis/modeling/trajectories/drawByCharge-0/set 0 white/vis/modeling/trajectories/drawByCharge-0/set 0 white

# Configure testCharge model (showing different way of setting colors)# Configure testCharge model (showing different way of setting colors)/vis/modeling/trajectories/testChargeModel/setRGBA 1 0 1 1 1/vis/modeling/trajectories/testChargeModel/setRGBA 1 0 1 1 1/vis/modeling/trajectories/testChargeModel/setRGBA -1 0.5 0.5 0.5 1/vis/modeling/trajectories/testChargeModel/setRGBA -1 0.5 0.5 0.5 1/vis/modeling/trajectories/testChargeModel/setRGBA 0 1 1 0 1/vis/modeling/trajectories/testChargeModel/setRGBA 0 1 1 0 1

# List available models# List available models/vis/modeling/trajectories/list/vis/modeling/trajectories/list

# select drawByCharge-0 to be current# select drawByCharge-0 to be current/vis/modeling/trajectories/select drawByCharge-0/vis/modeling/trajectories/select drawByCharge-0

Page 25: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 25Geant4 Advanced Visualization J. Perl

Trajectory Modeling by HepRep-Style AttributesTrajectory Modeling by HepRep-Style Attributes

/vis/modeling/trajectories/create/drawByAttribute/vis/modeling/trajectories/create/drawByAttribute

/vis/modeling/trajectories/drawByCharge-0/verbose true/vis/modeling/trajectories/drawByCharge-0/verbose true

/vis/modeling/trajectories/drawByCharge-0/setAttribute CPN/vis/modeling/trajectories/drawByCharge-0/setAttribute CPN

/vis/modeling/trajectories/drawByAttribute-0/addValue brem_key eBrem/vis/modeling/trajectories/drawByAttribute-0/addValue brem_key eBrem

/vis/modeling/trajectories/drawByAttribute-0/addValue annihil_key annihil/vis/modeling/trajectories/drawByAttribute-0/addValue annihil_key annihil

/vis/modeling/trajectories/drawByAttribute-0/addValue decay_key Decay/vis/modeling/trajectories/drawByAttribute-0/addValue decay_key Decay

/vis/modeling/trajectories/drawByAttribute-0/addValue muIon_key muIoni/vis/modeling/trajectories/drawByAttribute-0/addValue muIon_key muIoni

/vis/modeling/trajectories/drawByAttribute-0/addValue eIon_key eIoni/vis/modeling/trajectories/drawByAttribute-0/addValue eIon_key eIoni

/vis/modeling/trajectories/drawByAttribute-0/brem_key/setLineColour red/vis/modeling/trajectories/drawByAttribute-0/brem_key/setLineColour red

/vis/modeling/trajectories/drawByAttribute-0/annihil_key/setLineColour green/vis/modeling/trajectories/drawByAttribute-0/annihil_key/setLineColour green

/vis/modeling/trajectories/drawByAttribute-0/decay_key/setLineColour cyan/vis/modeling/trajectories/drawByAttribute-0/decay_key/setLineColour cyan

/vis/modeling/trajectories/drawByAttribute-0/eIon_key/setLineColour yellow/vis/modeling/trajectories/drawByAttribute-0/eIon_key/setLineColour yellow

/vis/modeling/trajectories/drawByAttribute-0/muIon_key/setLineColour magenta/vis/modeling/trajectories/drawByAttribute-0/muIon_key/setLineColour magenta

Draw by the attribute called CPN

Configure visualisation parameters

Select relevant attribute values

For even greater flexibility, you can model the trajectory based on any ofFor even greater flexibility, you can model the trajectory based on any ofthe HepRep-style attributes, whether it is one of the default ones or anthe HepRep-style attributes, whether it is one of the default ones or anattribute that you have defined for yourself.attribute that you have defined for yourself.

E.g., set color based the value of the attribute CPN (for “creator process name”)E.g., set color based the value of the attribute CPN (for “creator process name”)

Page 26: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

26Geant4 Advanced Visualization J. Perl12 January 2011

Creator Process

— muIoni

— Decay

— annihil

— eIoni

— brem

Momentum (MeV) — 0-1

— 1-10

— 10-20

— 20-30

— 30-50

— 50+

Example A01, five events, drawByAttribute models

Page 27: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 27Geant4 Advanced Visualization J. Perl

Trajectory Lines, Step Points, Regular and SmoothTrajectory Lines, Step Points, Regular and Smooth

Yellow are the actual step points used by Geant4

Magenta are auxiliary points added just for purposes of visualization

Page 28: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 28Geant4 Advanced Visualization J. Perl

Modeling Trajectory as Line, Step Points or BothModeling Trajectory as Line, Step Points or Both In the discussion of models up to now, we’ve only shown you how to set the

color, but a model can include many more options including whether to show the trajectory as a line, a set of step points or both:

setDrawLine * Set draw line commandsetDrawLine * Set draw line command setLineVisible * Set line visibility commandsetLineVisible * Set line visibility command setLineColour * Set colour through a stringsetLineColour * Set colour through a string setLineColourRGBA * Set colour through red, green, blue and alpha componentssetLineColourRGBA * Set colour through red, green, blue and alpha components setDrawStepPts * Set draw step points commandsetDrawStepPts * Set draw step points command setStepPtsVisible * Set step points colour commandsetStepPtsVisible * Set step points colour command setStepPtsColour * Set colour through a stringsetStepPtsColour * Set colour through a string setStepPtsColourRGBA * Set colour through red, green, blue and alpha componentssetStepPtsColourRGBA * Set colour through red, green, blue and alpha components setStepPtsSize * Set step points colour commandsetStepPtsSize * Set step points colour command setStepPtsType * Set step points type.setStepPtsType * Set step points type. setStepPtsFillStyle * Set step fill style type.setStepPtsFillStyle * Set step fill style type. (the following items relate to special kind of points discussed later under “smooth trajectory”)(the following items relate to special kind of points discussed later under “smooth trajectory”) setDrawAuxPts * Set draw auxiliary points commandsetDrawAuxPts * Set draw auxiliary points command setAuxPtsVisible * Set auxiliary points visibility commandsetAuxPtsVisible * Set auxiliary points visibility command setAuxPtsColour * Set colour through a stringsetAuxPtsColour * Set colour through a string setAuxPtsColourRGBA * Set colour through red, green, blue and alpha componentssetAuxPtsColourRGBA * Set colour through red, green, blue and alpha components setAuxPtsSize * Set auxiliary points size commandsetAuxPtsSize * Set auxiliary points size command setAuxPtsType * Set auxiliary points type.setAuxPtsType * Set auxiliary points type. setAuxPtsFillStyle * Set auxiliary fill style.setAuxPtsFillStyle * Set auxiliary fill style.

Page 29: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 29Geant4 Advanced Visualization J. Perl

Sample Commands: generic trajectory modelSample Commands: generic trajectory model# Create a generic model (will get default name of generic-0)# Create a generic model (will get default name of generic-0)# From here we can set overall defaults for things like line color,# From here we can set overall defaults for things like line color,# whether to show step points or just the trajectory line, etc.# whether to show step points or just the trajectory line, etc./vis/modeling/trajectories/create/generic/vis/modeling/trajectories/create/generic

# Configure the generic model to colour all trajectories cyan and to show step points# Configure the generic model to colour all trajectories cyan and to show step points/vis/modeling/trajectories/generic-0/default/setDrawStepPts true/vis/modeling/trajectories/generic-0/default/setDrawStepPts true/vis/modeling/trajectories/generic-0/default/setStepPtsSize 16/vis/modeling/trajectories/generic-0/default/setStepPtsSize 16/vis/modeling/trajectories/generic-0/default/setLineColour cyan/vis/modeling/trajectories/generic-0/default/setLineColour cyan/vis/modeling/trajectories/generic-0/default/setStepPtsColour red/vis/modeling/trajectories/generic-0/default/setStepPtsColour red

Page 30: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 30Geant4 Advanced Visualization J. Perl

Advanced Trajectory ModelingAdvanced Trajectory Modeling

Page 31: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 31Geant4 Advanced Visualization J. Perl

Controlling Model from Compiled CodeControlling Model from Compiled Code

Instantiate modelInstantiate model Configure modelConfigure model Register with visualization Register with visualization

managermanager

main.cc

// Create and initialise visualization manager

G4VisManager* visManager = new G4VisExecutive;

visManager->Initialize();

// Create new drawByParticleID model

G4TrajectoryDrawByParticleID* model =

new G4TrajectoryDrawByParticleID;

// Configure model

model->SetDefault("cyan");

model->Set("gamma", "green");

model->Set("e+", "magenta");

model->Set("e-", G4Color(0.3, 0.3, 0.3));

//Register model with visualization manager

visManager->RegisterModel(model);

Page 32: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 32Geant4 Advanced Visualization J. Perl

Defining Your Own ModelDefining Your Own Model

New trajectory models must inherit from G4VTrajectoryModel and New trajectory models must inherit from G4VTrajectoryModel and implement these pure virtual methods:implement these pure virtual methods:

virtual void Draw(const G4VTrajectory&, G4int i_mode = 0) const = 0;virtual void Draw(const G4VTrajectory&, G4int i_mode = 0) const = 0;

virtual void Print(std::ostream& ostr) const = 0;virtual void Print(std::ostream& ostr) const = 0;

New models can be used directly in compiled codeNew models can be used directly in compiled code Need to be registered with visualization managerNeed to be registered with visualization manager

main.cc// Create custom model

MyCustomTrajectoryModel* myModel = new MyCustomTrajectoryModel("custom");

// Configure it if necessary and then register with G4VisManager

...

visManager->RegisterModel(myModel)

Page 33: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 33Geant4 Advanced Visualization J. Perl

To Make User Defined Model Available from To Make User Defined Model Available from Interactive CommandsInteractive Commands

You will need to write Messenger classesYou will need to write Messenger classes Messengers to configure the model should inherit from G4VModelCommand. Messengers to configure the model should inherit from G4VModelCommand.

The concrete trajectory model type should be used for the template The concrete trajectory model type should be used for the template parameterparameter

and a Factory classand a Factory class A factory class responsible for the model and associated messenger creation A factory class responsible for the model and associated messenger creation

must also be written. The factory should inherit from G4VModelFactory.must also be written. The factory should inherit from G4VModelFactory.The abstract model type should be used for the template parameter, e.g.:The abstract model type should be used for the template parameter, e.g.:

G4ModelCommandDrawByParticleIDSet.ccclass G4ModelCommandDrawByParticleIDSet : public

: G4VModelCommand<G4TrajectoryDrawByParticleID> { ... };

G4TrajectoryDrawByChargeFactory.ccclass G4TrajectoryDrawByChargeFactory : public G4VModelFactory<G4VTrajectoryModel> { ... };

Page 34: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 34Geant4 Advanced Visualization J. Perl

Construct the Model and Associated MessengersConstruct the Model and Associated Messengers

G4TrajectoryDrawByParticleIDFactory.cc

ModelAndMessengersG4TrajectoryDrawByParticleIDFactory::Create(const G4String& placement, const G4String& name) { // Create model with given name G4TrajectoryDrawByParticleID* model = new G4TrajectoryDrawByParticleID(name);

// Create associated messengers with commands in ``placement'’ command directory. Messengers messengers; messengers.push_back(new G4ModelCommandDrawByParticleIDSet(model, placement)); ... return ModelAndMessengers(model, messengers);}

G4VisExecutive.cc

G4VisExecutive::RegisterModelFactories() {... RegisterModelFactory(new G4TrajectoryDrawByParticleIDFactory());}

Page 35: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 35Geant4 Advanced Visualization J. Perl

Trajectory and Hit FilteringTrajectory and Hit Filtering

Page 36: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 36Geant4 Advanced Visualization J. Perl

Trajectory and Hit FilteringTrajectory and Hit Filtering Display user-defined subset of trajectoriesDisplay user-defined subset of trajectories

Solves problems with overly busy graphics or excessively large graphics filesSolves problems with overly busy graphics or excessively large graphics files

Similar structure to enhanced trajectory drawingSimilar structure to enhanced trajectory drawing Set of simple filter modelsSet of simple filter models Similar Interactive creation/configuration structureSimilar Interactive creation/configuration structure

chargeFilterchargeFilter Filters trajectories according to chargeFilters trajectories according to charge

particleFilterparticleFilter Filters trajectories according to particle typeFilters trajectories according to particle type

originVolumeFilteroriginVolumeFilter Filters trajectories according to volume in which they originatedFilters trajectories according to volume in which they originated

Project Lead: Jane TinslayProject Lead: Jane Tinslay

Page 37: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

37Geant4 Advanced Visualization J. Perl12 January 2011

Momentum (MeV) — 0-2.5

— 2.5-5

— 5-7.5

— 7.5-10

— 10-10.25

— 12.5+

HandsOn5, McGill tutorial, 1000 events, Attribute Filter

IMag > 2.5 MeV

IMag > 2.5 MeV,particle = gamma

Page 38: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 38Geant4 Advanced Visualization J. Perl

Trajectory FilteringTrajectory Filtering Simplest example:Simplest example:

/vis/filtering/trajectories/create/particleFilter /vis/filtering/trajectories/particleFilter-0/add e- will cause everything except electrons to be filtered out

You can chain multiple filtersYou can chain multiple filters e.g., filter out gammase.g., filter out gammas and filter out particles with momentum less than 100 MeVand filter out particles with momentum less than 100 MeV

Two modes of filtering: Two modes of filtering: Important issue when working with those visualization drivers that allow you to Important issue when working with those visualization drivers that allow you to

turn visibility on and off from the vis application (HepRApp or OpenInventor)turn visibility on and off from the vis application (HepRApp or OpenInventor) One mode has rejected trajectories marked invisible but still sent to vis appOne mode has rejected trajectories marked invisible but still sent to vis app

user can toggle them back to visible from within the vis appuser can toggle them back to visible from within the vis app but if there is a very large number of these invisible trajectories,but if there is a very large number of these invisible trajectories,

application may be slowed down and files may be very largeapplication may be slowed down and files may be very large Other mode has rejected trajectories entirely omittedOther mode has rejected trajectories entirely omitted

user cannot toggle them back to visible from within the vis appuser cannot toggle them back to visible from within the vis app but application stays fast and files stay smallbut application stays fast and files stay small

Page 39: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 39Geant4 Advanced Visualization J. Perl

Filtering ExampleFiltering Example

/vis/modeling/trajectories/drawByAttribute-0/setAttribute IMag/vis/modeling/trajectories/drawByAttribute-0/setAttribute IMag

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval1 0.0 keV 2.5MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval1 0.0 keV 2.5MeV

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval2 2.5 MeV 5 MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval2 2.5 MeV 5 MeV

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval3 5 MeV 7.5 MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval3 5 MeV 7.5 MeV

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval4 7.5 MeV 10 MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval4 7.5 MeV 10 MeV

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval5 10 MeV 12.5 MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval5 10 MeV 12.5 MeV

/vis/modeling/trajectories/drawByAttribute-0/addInterval interval6 12.5 MeV 10000 MeV/vis/modeling/trajectories/drawByAttribute-0/addInterval interval6 12.5 MeV 10000 MeV

/vis/modeling/trajectories/drawByAttribute-0/interval1/setLineColourRGBA 0.8 0 0.8 1/vis/modeling/trajectories/drawByAttribute-0/interval1/setLineColourRGBA 0.8 0 0.8 1

/vis/modeling/trajectories/drawByAttribute-0/interval2/setLineColourRGBA 0.23 0.41 1 1/vis/modeling/trajectories/drawByAttribute-0/interval2/setLineColourRGBA 0.23 0.41 1 1

/vis/modeling/trajectories/drawByAttribute-0/interval3/setLineColourRGBA 0 1 0 1/vis/modeling/trajectories/drawByAttribute-0/interval3/setLineColourRGBA 0 1 0 1

/vis/modeling/trajectories/drawByAttribute-0/interval4/setLineColourRGBA 1 1 0 1/vis/modeling/trajectories/drawByAttribute-0/interval4/setLineColourRGBA 1 1 0 1

/vis/modeling/trajectories/drawByAttribute-0/interval5/setLineColourRGBA 1 0.3 0 1/vis/modeling/trajectories/drawByAttribute-0/interval5/setLineColourRGBA 1 0.3 0 1

/vis/modeling/trajectories/drawByAttribute-0/interval6/setLineColourRGBA 1 0 0 1/vis/modeling/trajectories/drawByAttribute-0/interval6/setLineColourRGBA 1 0 0 1

/vis/filtering/trajectories/create/attributeFilter/vis/filtering/trajectories/create/attributeFilter

/vis/filtering/trajectories/attributeFilter-0/setAttribute IMag/vis/filtering/trajectories/attributeFilter-0/setAttribute IMag

/vis/filtering/trajectories/attributeFilter-0/addInterval 2.5 MeV 1000 MeV/vis/filtering/trajectories/attributeFilter-0/addInterval 2.5 MeV 1000 MeV

/vis/filtering/trajectories/create/particleFilter/vis/filtering/trajectories/create/particleFilter

/vis/filtering/trajectories/particleFilter-0/add gamma/vis/filtering/trajectories/particleFilter-0/add gamma

Momentum interval based colour scale

Momentum filter

Gamma filter

Configure visualisation properties

Momentum filter

Page 40: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 40Geant4 Advanced Visualization J. Perl

Hit FilteringHit Filtering The Attribute-Based filtering discussed above for Trajectories was The Attribute-Based filtering discussed above for Trajectories was

implemented generically so that it can aimplemented generically so that it can apply to any class which implements pply to any class which implements the Geant4 generic attributes method:the Geant4 generic attributes method:

Whatever your Hit class, you can basically get interactive hit filtering for freeWhatever your Hit class, you can basically get interactive hit filtering for free

To activate, add a filter call to G4VVisManager in Draw method of hit classTo activate, add a filter call to G4VVisManager in Draw method of hit class

const std::map<G4String,G4AttDef>* GetAttDefs() const;

std::vector<G4AttValue>* CreateAttValues() const;

const std::map<G4String,G4AttDef>* GetAttDefs() const;

std::vector<G4AttValue>* CreateAttValues() const;

void MyHit::Draw() { … if (! pVVisManager->FilterHit(*this)) return; …

void MyHit::Draw() { … if (! pVVisManager->FilterHit(*this)) return; …

Page 41: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 41Geant4 Advanced Visualization J. Perl

Additional TopicsAdditional Topics

Page 42: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 42Geant4 Advanced Visualization J. Perl

Controlling Detail Level of Detector Controlling Detail Level of Detector GeometryGeometry

By default, /vis/drawVolume will draw the entire detector geometry.By default, /vis/drawVolume will draw the entire detector geometry.This is equivalent to the commands:This is equivalent to the commands: /vis/scene/create/vis/scene/create /vis/scene/add/volume world/vis/scene/add/volume world

You can specify additional arguments to limit the amount of You can specify additional arguments to limit the amount of geometry detail shown:geometry detail shown: /vis/scene/add/volume [<physical-volume-name>] [<copy-no>] [<depth-/vis/scene/add/volume [<physical-volume-name>] [<copy-no>] [<depth-

of-descending>]of-descending>] 1st parameter: volume name1st parameter: volume name

(default "world").(default "world"). 2nd parameter: copy number2nd parameter: copy number

(default -1 meaning first occurrence of physical-volume-name is selected.(default -1 meaning first occurrence of physical-volume-name is selected. 3rd parameter: depth of descending geometry hierarchy3rd parameter: depth of descending geometry hierarchy

(default G4Scene::UNLIMITED (-1)).(default G4Scene::UNLIMITED (-1)).

Still more arguments can be given to specify a clipping volume.Still more arguments can be given to specify a clipping volume. vis/scene/add/volume world -1 -1 box km 0 1 0 1 0 1vis/scene/add/volume world -1 -1 box km 0 1 0 1 0 1

will draw the world with the positive octant cut away.will draw the world with the positive octant cut away.

Page 43: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 43Geant4 Advanced Visualization J. Perl

Even more Control over Level of Detail in Even more Control over Level of Detail in Detector GeometryDetector Geometry

Additional commands allow finer control including whether or not to Additional commands allow finer control including whether or not to draw Boolean components, voxels and readout geometries:draw Boolean components, voxels and readout geometries: /vis/specify <logical-volume-name> [depth-of-descent] [<booleans-flag>] /vis/specify <logical-volume-name> [depth-of-descent] [<booleans-flag>]

[<voxels-flag>] [<readout-flag>][<voxels-flag>] [<readout-flag>] /vis/scene/add/logicalVolume <logical-volume-name> [<depth-of-/vis/scene/add/logicalVolume <logical-volume-name> [<depth-of-

descending>] [<voxels-flag>] [<readout-flag>] descending>] [<voxels-flag>] [<readout-flag>]

Culling allows you to specify that covered daughters or low density Culling allows you to specify that covered daughters or low density volumes are omitted:volumes are omitted: /vis/viewer/set/culling global|coveredDaughters|invisible|density [true|/vis/viewer/set/culling global|coveredDaughters|invisible|density [true|

false] [density] [unit]false] [density] [unit] HepRepFile will still include these culled objects, but just make them HepRepFile will still include these culled objects, but just make them

initially invisible.initially invisible. Idea is that you might later decide you want to see these.Idea is that you might later decide you want to see these. To really omit them from the HepRepFile, as you may wish to do to make the To really omit them from the HepRepFile, as you may wish to do to make the

file smaller:file smaller: /vis/heprep/setCullInvisibles true/vis/heprep/setCullInvisibles true

Page 44: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 44Geant4 Advanced Visualization J. Perl

Section Planes / CutawaysSection Planes / Cutaways

Some drivers allow you to section the view, that is, cut it Some drivers allow you to section the view, that is, cut it away along a specified plane (but this generally works away along a specified plane (but this generally works only for simple geometries)only for simple geometries) /vis/viewer/set/sectionPlane [on|off]/vis/viewer/set/sectionPlane [on|off]

<3 vector of point> [unit of point] <3 vector of plane normal> <3 vector of point> [unit of point] <3 vector of plane normal> e.g., for a y-z plane at x = 1 cm:e.g., for a y-z plane at x = 1 cm:

/vis/viewer/set/sectionPlane on 1 0 0 cm 1 0 0/vis/viewer/set/sectionPlane on 1 0 0 cm 1 0 0

Page 45: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 45Geant4 Advanced Visualization J. Perl

Reviewing Kept EventsReviewing Kept Events If you have accumulated several events in your visualization,If you have accumulated several events in your visualization,

you can still go back afterwards and view the events individually.you can still go back afterwards and view the events individually.For each event, you can execute various vis commands to rotate, zoom, output For each event, you can execute various vis commands to rotate, zoom, output to a different vis driver, etc.to a different vis driver, etc.

/vis/reviewKeptEvents/vis/reviewKeptEvents Each time you type “continue”, you will get to the next kept event.Each time you type “continue”, you will get to the next kept event.

To quit reviewing events:To quit reviewing events: /vis/abortReviewKeptEvents/vis/abortReviewKeptEvents and then again type “continue”and then again type “continue”

You can also use a command or c++ calls to force keeping of specific events You can also use a command or c++ calls to force keeping of specific events regardless of how visualization is accumulating them.regardless of how visualization is accumulating them.

e.g., keep events based on a particular hit or trigger patterne.g., keep events based on a particular hit or trigger pattern From the command line:From the command line:

/event/keepCurrentEvent/event/keepCurrentEvent From C++From C++

G4EventManager->KeepTheCurrentEvent()G4EventManager->KeepTheCurrentEvent() This feature makes it easy to do a large run and then recall for visualization This feature makes it easy to do a large run and then recall for visualization

only those events that are of interestonly those events that are of interest

Page 46: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 46Geant4 Advanced Visualization J. Perl

Reviewing Kept Events flagged from C++Reviewing Kept Events flagged from C++

If you’re using C++ to flag which events to keep, so that you can do If you’re using C++ to flag which events to keep, so that you can do a large run but only visualize a few special events, mix event a large run but only visualize a few special events, mix event keeping with the vis disable/enable commands, as follows:keeping with the vis disable/enable commands, as follows: /vis/open HepRepFile/vis/open HepRepFile /vis/drawVolume/vis/drawVolume /vis/scene/add/trajectories/vis/scene/add/trajectories /vis/disable/vis/disable /run/beamOn 1000/run/beamOn 1000 /vis/enable/vis/enable /vis/reviewKeptEvents/vis/reviewKeptEvents

In this way, the visualization is disabled when you first run through In this way, the visualization is disabled when you first run through the 1000 events, and is enabled only when you are reviewing the the 1000 events, and is enabled only when you are reviewing the small number of special events that you flagged from your C++ call:small number of special events that you flagged from your C++ call: G4EventManager->KeepTheCurrentEvent()G4EventManager->KeepTheCurrentEvent()

Page 47: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 47Geant4 Advanced Visualization J. Perl

Geant4 Visualization in Standalone ModeGeant4 Visualization in Standalone Mode The Geant4 Visualization system can be used on its own -The Geant4 Visualization system can be used on its own -

without the rest of Geant4.without the rest of Geant4. Build something “by hand” from the Geant4 geometry primitives and Build something “by hand” from the Geant4 geometry primitives and

placement apparatus, but without any of the main parts of Geant4placement apparatus, but without any of the main parts of Geant4such as detector construction, run manager or physics list.such as detector construction, run manager or physics list.

Still preserves all of the interactive apparatus of the visualization system.Still preserves all of the interactive apparatus of the visualization system. See the example: /examples/extended/visualization/standaloneSee the example: /examples/extended/visualization/standalone

// Simple box...// Simple box...pVisManager->Draw(pVisManager->Draw( G4Box("box",2*m,2*m,2*m), G4Box("box",2*m,2*m,2*m),

G4VisAttributes(G4Colour(1,1,0)));G4VisAttributes(G4Colour(1,1,0)));

// Boolean solid...// Boolean solid...G4Box boxA("boxA",3*m,3*m,3*m);G4Box boxA("boxA",3*m,3*m,3*m);G4Box boxB("boxB",1*m,1*m,1*m);G4Box boxB("boxB",1*m,1*m,1*m);G4SubtractionSolid subtracted(G4SubtractionSolid subtracted("subtracted_boxes",&boxA,&boxB, "subtracted_boxes",&boxA,&boxB,

G4Translate3D(3*m,3*m,3*m));G4Translate3D(3*m,3*m,3*m));pVisManager->Draw(pVisManager->Draw( subtracted,subtracted,

G4VisAttributes(G4Colour(0,1,1)), G4VisAttributes(G4Colour(0,1,1)), G4Translate3D(-6*m,-6*m,-G4Translate3D(-6*m,-6*m,-6*m));6*m));

Page 48: 12 January 2011 Geant4 Advanced Visualization J. Perl 1 DAWN OpenGL How to Control the Drawing Style and Filtering of Detector Geometry and Trajectories,

12 January 2011 48Geant4 Advanced Visualization J. Perl

Geant4 Visualization ResourcesGeant4 Visualization ResourcesGeant4 Installation Guideshttp://geant4.slac.stanford.edu/installationHands on HepRApp Tutorialhttp://geant4.slac.stanford.edu/Presentations/vis/G4HepRAppTutorial/G4HepRAppTutorial.html

Hands on DAWN Tutorialhttp://geant4.slac.stanford.edu/Presentations/vis/G4DAWNTutorial/G4DAWNTutorial.htmlHands on OpenGL Tutorialhttp://geant4.slac.stanford.edu/Presentations/vis/G4OpenGLTutorial/G4OpenGLTutorial.html

Geant4 Visualization Commandshttp://geant4.slac.stanford.edu/Presentations/vis/G4VisCommands.ppt (and .pdf)

Geant4 Advanced Visualizationhttp://geant4.slac.stanford.edu/Presentations/vis/G4VisAdvanced.ppt (and .pdf)

How to Make a Moviehttp://geant4.slac.stanford.edu/Presentations/vis/HowToMakeAMovie.ppt (and .pdf)

Visualization Chapter of the Geant4 User’s Guide for Application Developershttp://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/

List of Visualization Commands:http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/AllResources/Control/UIcommands/_vis_.html

For Questions or Comments: Geant4 Visualization Online Forum:http://geant4-hn.slac.stanford.edu:5090/HyperNews/public/get/visualization.html