ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
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
28
#include "
G4TrajectoryDrawByCharge.hh
"
29
#include "
G4TrajectoryDrawerUtils.hh
"
30
#include "
G4VisTrajContext.hh
"
31
#include "
G4VTrajectory.hh
"
32
#include <sstream>
33
34
G4TrajectoryDrawByCharge::G4TrajectoryDrawByCharge
(
const
G4String
&
name
,
G4VisTrajContext
*
context
)
35
:
G4VTrajectoryModel
(name, context)
36
{
37
// Default configuration
38
fMap
[
Positive
] =
G4Colour::Blue
();
39
fMap
[
Negative
] =
G4Colour::Red
();
40
fMap
[
Neutral
] =
G4Colour::Green
();
41
}
42
43
G4TrajectoryDrawByCharge::G4TrajectoryDrawByCharge
(
const
G4String
&
name
,
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
54
G4TrajectoryDrawByCharge::~G4TrajectoryDrawByCharge
() {}
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
78
G4TrajectoryDrawerUtils::DrawLineAndPoints
(traj, myContext);
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
;
87
GetContext
().
Print
(
G4cout
);
88
}
89
90
void
91
G4TrajectoryDrawByCharge::Set
(
const
Charge
&
charge
,
const
G4String
& colour)
92
{
93
fMap
.
Set
(charge, colour);
94
}
95
96
void
97
G4TrajectoryDrawByCharge::Set
(
const
Charge
&
charge
,
const
G4Colour
& colour)
98
{
99
fMap
[
charge
] = colour;
100
}
101
102
void
103
G4TrajectoryDrawByCharge::Set
(
const
G4String
&
charge
,
const
G4String
& colour)
104
{
105
Charge
myCharge;
106
107
if
(!
ConvertToCharge
(charge, myCharge)) {
108
G4ExceptionDescription
ed;
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
119
G4TrajectoryDrawByCharge::Set
(
const
G4String
&
charge
,
const
G4Colour
& colour)
120
{
121
Charge
myCharge;
122
123
if
(!
ConvertToCharge
(charge, myCharge)) {
124
G4ExceptionDescription
ed;
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
134
G4TrajectoryDrawByCharge::ConvertToCharge
(
const
G4String
&
string
,
Charge
& myCharge)
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:
144
myCharge =
G4TrajectoryDrawByCharge::Positive
;
145
break
;
146
case
0:
147
myCharge =
G4TrajectoryDrawByCharge::Neutral
;
148
break
;
149
case
-1:
150
myCharge =
G4TrajectoryDrawByCharge::Negative
;
151
break
;
152
default
:
153
result =
false
;
154
}
155
156
return
result;
157
}
geant4
tree
geant4-10.6-release
source
visualization
modeling
src
G4TrajectoryDrawByCharge.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:56
using
1.8.2 with
ECCE GitHub integration