Message: Re: setPhi() method for G4ThreeVector Not Logged In (login)

## Re: setPhi() method for G4ThreeVector

Forum: Event and Track Management
Re: setPhi() method for G4ThreeVector
Date: 23 Mar, 2012
From: Michael H. Kelsey <Michael H. Kelsey>

 On Thu, 22 Mar 2012 20:05:02 GMT, Santos wrote: ```> Hi all, > > This is a little piece of my program > G4ThreeVector momDir(0.,0.,1.); > momDir.setPhi(60.*deg); > momDir.setTheta(45.*deg); > > G4cout<<"momDir.phi() "< G4cout<<"momDir.theta() "< G4cout<<"momDir "< > This is the output: > > momDir.phi() 0 momDir.theta() 0.785398 momDir (0.707107,0,0.707107) > > Now, momDir.phi() is 0 no matter what value I assign. This page: > http://cmd.inp.nsk.su/old/cmd2/manuals/cernlib/CLHEP/RefGuide/Vector/Hep3Vector.html > > describes the setPhi() method, and G4ThreeVector is just GEANT reusing > Hep3Vector. > > Could you, please, tell me what is wrong. By the way, I am using > geant4.9.4.p02 ``` The Phi angle is measured from the +X axis, in the XY plane. You have X=Y=0. at the time you call setPhi(), so there is no component in the XY plane, and the phi value is indeterminate, and hence stays zero. If you swap the order of operations, ``` momDir.setTheta(45.*deg); momDir.setPhi(60.*deg);``` you'll get the result you want. Alternatively, if the code above is actually what you're doing (and not a simplified test case), you could set the whole vector in one shot: ``` G4ThreeVector momDir; momDir.setRThetaPhi(1.,45.*deg,60.deg);``` -- Michael Kelsey

 to: "Re: setPhi() method for G4ThreeVector"
This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]