00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef G4TRAJECTORYDRAWBYCHARGE_HH
00036 #define G4TRAJECTORYDRAWBYCHARGE_HH
00037
00038 #include "G4Colour.hh"
00039 #include "G4ModelColourMap.hh"
00040 #include "G4VTrajectoryModel.hh"
00041 #include <map>
00042
00043 class G4TrajectoryDrawByCharge : public G4VTrajectoryModel {
00044
00045 public:
00046
00047 enum Charge {Negative=-1, Neutral=0, Positive=1};
00048
00049 G4TrajectoryDrawByCharge(const G4String& name = "Unspecified", G4VisTrajContext* context=0);
00050
00051 G4TrajectoryDrawByCharge(const G4String& name,
00052 const G4Colour& positive,
00053 const G4Colour& negative,
00054 const G4Colour& neutral);
00055
00056 virtual ~G4TrajectoryDrawByCharge();
00057
00058
00059 virtual void Draw(const G4VTrajectory& trajectory, const G4int& i_mode = 0,
00060 const G4bool& visible = true) const;
00061 virtual void Draw(const G4VTrajectory& trajectory,
00062 const G4bool& visible = true) const;
00063
00064
00065 virtual void Print(std::ostream& ostr) const;
00066
00067 void Set(const Charge& charge, const G4Colour& colour);
00068 void Set(const Charge& charge, const G4String& colour);
00069
00070 void Set(const G4String& charge, const G4Colour& colour);
00071 void Set(const G4String& charge, const G4String& colour);
00072
00073
00074 private:
00075
00076 G4bool ConvertToCharge(const G4String&, Charge&);
00077
00078
00079 G4ModelColourMap<Charge> fMap;
00080
00081 };
00082
00083 #endif