From ff474cad02f3f4c3eb61c5dda24e72dfffc92bbd Mon Sep 17 00:00:00 2001 From: Lorenzo Zana Date: Tue, 15 Dec 2015 17:10:31 +0000 Subject: [PATCH] Modified vertex creation in R, how it is flat over the circle of radius R over the target Now it is created flat over the circle of radius R if the generated particle is outside the target --- src/A2PrimaryGeneratorAction.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/A2PrimaryGeneratorAction.cc b/src/A2PrimaryGeneratorAction.cc index 6e775cd..e68bf7f 100644 --- a/src/A2PrimaryGeneratorAction.cc +++ b/src/A2PrimaryGeneratorAction.cc @@ -97,6 +97,7 @@ void A2PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) //This function is called at the begining of event Float_t Mass; Float_t P; + Float_t r_v,x_v,y_v,test_v; G4ThreeVector pvec; switch(fMode){ case EPGA_g4: @@ -134,7 +135,15 @@ void A2PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) G4cout<<"I have taken the liberty of choosing a new one inside!! see void A2PrimaryGeneratorAction::GeneratePrimaries"<GetTarget()->GetCenter().z()+fDetCon->GetTarget()->GetLength()/2*(2*G4UniformRand()-1)); - fThreeVector.setPerp(fDetCon->GetTarget()->GetRadius()*G4UniformRand()); + r_v=0.0; + while(r_v == 0.0 ) { + x_v = fDetCon->GetTarget()->GetRadius()*(2*G4UniformRand()-1); + y_v = fDetCon->GetTarget()->GetRadius()*(2*G4UniformRand()-1); + test_v = pow(x_v,2)+pow(y_v,2); + if (test_vGetTarget()->GetRadius(),2)) r_v = test_v; + } + fThreeVector.setX(x_v); + fThreeVector.setY(y_v); if(fTargetWarning==0){G4cout<