31
31
class MAUSPrimaryGeneratorActionTest : public ::testing::Test {
33
MAUSPrimaryGeneratorActionTest() : primary(MAUSGeant4Manager::GetInstance()->GetPrimaryGenerator()) {}
33
MAUSPrimaryGeneratorActionTest()
34
: primary(MAUSGeant4Manager::GetInstance()->GetPrimaryGenerator()) {
42
part_in.energy = 200.;
34
46
virtual ~MAUSPrimaryGeneratorActionTest() {}
35
47
virtual void SetUp() {}
36
48
virtual void TearDown() {}
37
49
MAUS::MAUSPrimaryGeneratorAction* primary;
50
MAUS::MAUSPrimaryGeneratorAction::PGParticle part_in;
40
53
TEST_F(MAUSPrimaryGeneratorActionTest, PushPopTest) {
41
MAUS::MAUSPrimaryGeneratorAction::PGParticle part_in, part_out;
49
part_in.energy = 200.;
54
MAUS::MAUSPrimaryGeneratorAction::PGParticle part_out;
53
56
primary->Push(part_in);
54
57
part_out = primary->Pop();
112
111
EXPECT_EQ(part_in.seed, CLHEP::HepRandom::getTheSeed());
113
112
EXPECT_EQ(part_in.pid, event->GetPrimaryVertex()->GetPrimary()->GetPDGcode());
115
for (size_t i=0; i<5; ++i) {
116
EXPECT_THROW(primary->GeneratePrimaries(event), Squeal);
114
for (size_t i=0; i<6; ++i) {
115
EXPECT_THROW(primary->GeneratePrimaries(event), MAUS::Exception);
122
121
TEST_F(MAUSPrimaryGeneratorActionTest, PGParticleReadWriteTest) {
123
MAUSPrimaryGeneratorAction::PGParticle part_in, part_out;
131
part_in.energy = 200.;
122
MAUSPrimaryGeneratorAction::PGParticle part_out;
135
124
Json::Value val = part_in.WriteJson();
136
125
part_out.ReadJson(val);
154
152
hit.SetMomentum(CLHEP::Hep3Vector(5.,6.,7.));
155
153
hit.SetEnergy(200.);
157
MAUSPrimaryGeneratorAction::PGParticle part_in(hit);
155
MAUSPrimaryGeneratorAction::PGParticle part_virt(hit);
156
EXPECT_NEAR(part_virt.x, 1., 1e-6);
157
EXPECT_NEAR(part_virt.y, 2., 1e-6);
158
EXPECT_NEAR(part_virt.z, 3., 1e-6);
159
EXPECT_NEAR(part_virt.px, 5., 1e-6);
160
EXPECT_NEAR(part_virt.py, 6., 1e-6);
161
EXPECT_NEAR(part_virt.pz, 7., 1e-6);
162
EXPECT_NEAR(part_virt.time, 4., 1e-6);
163
EXPECT_NEAR(part_virt.energy, 200., 1e-6);
164
EXPECT_EQ(part_virt.pid, -13);
165
EXPECT_EQ(part_virt.seed, size_t(0));
169
TEST_F(MAUSPrimaryGeneratorActionTest, PGParticleMassShellConditionTest) {
170
part_in.MassShellCondition();
158
171
EXPECT_NEAR(part_in.x, 1., 1e-6);
159
172
EXPECT_NEAR(part_in.y, 2., 1e-6);
160
173
EXPECT_NEAR(part_in.z, 3., 1e-6);
161
EXPECT_NEAR(part_in.px, 5., 1e-6);
162
EXPECT_NEAR(part_in.py, 6., 1e-6);
163
EXPECT_NEAR(part_in.pz, 7., 1e-6);
164
174
EXPECT_NEAR(part_in.time, 4., 1e-6);
165
175
EXPECT_NEAR(part_in.energy, 200., 1e-6);
166
176
EXPECT_EQ(part_in.pid, -13);
167
EXPECT_EQ(part_in.seed, size_t(0));
177
EXPECT_EQ(part_in.seed, size_t(10));
178
EXPECT_NEAR(part_in.px/part_in.pz, 5./7., 1e-6);
179
EXPECT_NEAR(part_in.py/part_in.pz, 6./7., 1e-6);
180
double mass = sqrt(part_in.energy*part_in.energy-
181
part_in.px*part_in.px-
182
part_in.py*part_in.py-
183
part_in.pz*part_in.pz);
184
EXPECT_NEAR(mass, 105.658, 1e-3);
188
EXPECT_THROW(part_in.MassShellCondition(), MAUS::Exception);
190
part_in.energy = 100.;
191
EXPECT_THROW(part_in.MassShellCondition(), MAUS::Exception);
194
TEST_F(MAUSPrimaryGeneratorActionTest, PGParticlePrimaryTest) {
195
Primary prim = part_in.GetPrimary();
196
EXPECT_NEAR(part_in.x, prim.GetPosition().x(), 1e-6);
197
EXPECT_NEAR(part_in.y, prim.GetPosition().y(), 1e-6);
198
EXPECT_NEAR(part_in.z, prim.GetPosition().z(), 1e-6);
199
EXPECT_NEAR(part_in.px, prim.GetMomentum().x(), 1e-6);
200
EXPECT_NEAR(part_in.py, prim.GetMomentum().y(), 1e-6);
201
EXPECT_NEAR(part_in.pz, prim.GetMomentum().z(), 1e-6);
202
EXPECT_NEAR(part_in.time, prim.GetTime(), 1e-6);
203
EXPECT_NEAR(part_in.energy, prim.GetEnergy(), 1e-6);
204
EXPECT_EQ(part_in.pid, prim.GetParticleId());
205
EXPECT_EQ(part_in.seed, size_t(prim.GetRandomSeed()));
171
207
} //namespace end