ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4TrajectoryDrawByCharge.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4TrajectoryDrawByCharge.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // Jane Tinslay, John Allison, Joseph Perl November 2005
30 #include "G4VisTrajContext.hh"
31 #include "G4VTrajectory.hh"
32 #include <sstream>
33 
35  :G4VTrajectoryModel(name, context)
36 {
37  // Default configuration
41 }
42 
44  const G4Colour& positive,
45  const G4Colour& negative,
46  const G4Colour& neutral)
47  :G4VTrajectoryModel(name)
48 {
49  fMap[Positive] = positive;
50  fMap[Negative] = negative;
51  fMap[Neutral] = neutral;
52 }
53 
55 
56 void
57 G4TrajectoryDrawByCharge::Draw(const G4VTrajectory& traj, const G4bool& /*visible*/) const
58 {
59  G4Colour colour;
60 
61  const G4double charge = traj.GetCharge();
62 
63  if(charge>0.) fMap.GetColour(Positive, colour);
64  else if(charge<0.) fMap.GetColour(Negative, colour);
65  else fMap.GetColour(Neutral, colour);
66 
67  G4VisTrajContext myContext(GetContext());
68 
69  myContext.SetLineColour(colour);
70 
71  if (GetVerbose()) {
72  G4cout<<"G4TrajectoryDrawByCharge drawer named "<<Name();
73  G4cout<<", drawing trajectory with charge, "<<charge<<G4endl;
74  G4cout<<", with configuration:"<<G4endl;
75  myContext.Print(G4cout);
76  }
77 
79 }
80 
81 void
82 G4TrajectoryDrawByCharge::Print(std::ostream& ostr) const
83 {
84  ostr<<"G4TrajectoryDrawByCharge model "<< Name() <<" colour scheme: "<<std::endl;
85  fMap.Print(ostr);
86  ostr<<"Default configuration:"<<G4endl;
88 }
89 
90 void
92 {
93  fMap.Set(charge, colour);
94 }
95 
96 void
98 {
99  fMap[charge] = colour;
100 }
101 
102 void
104 {
105  Charge myCharge;
106 
107  if (!ConvertToCharge(charge, myCharge)) {
109  ed << "Invalid charge "<<charge;
110  G4Exception
111  ("G4TrajectoryDrawByCharge::Set(const G4int& charge, const G4String& colour)", "modeling0121", JustWarning, ed);
112  return;
113  }
114 
115  return Set(myCharge, colour);
116 }
117 
118 void
120 {
121  Charge myCharge;
122 
123  if (!ConvertToCharge(charge, myCharge)) {
125  ed << "Invalid charge "<<charge;
126  G4Exception
127  ("G4TrajectoryDrawByCharge::Set(const G4int& charge, const G4Colour& colour)", "modeling0122", JustWarning, ed);
128  }
129 
130  return Set(myCharge, colour);
131 }
132 
133 G4bool
135 {
136  bool result(true);
137 
138  G4int charge;
139  std::istringstream is(string.c_str());
140  is >> charge;
141 
142  switch (charge) {
143  case 1:
145  break;
146  case 0:
148  break;
149  case -1:
151  break;
152  default:
153  result = false;
154  }
155 
156  return result;
157 }