Dear dev'ils, in particular the fortran/BRAG-knowledgeable of you: I have a request for an update that would make acceptance generation a lot easier: Could someone, in guxint.F, add a kine definition that finds the front planes of D1 and D5 (i.e. the front magnet volumes) and throws a flat, random distribution in this square area? This is identical to what Peters acceptance software does, but since all the geometry informaion can be input to BRAG through Flemmings generatebraggeometry program it would be very useful to do this automatically rather than having to through the database one more time. All the values are present, so it should be an easy fix for someone who knows the ins and outs of brag a bit better than I do. To be specific, what I want is to be able to simply issue the following command: kine 13 <pmin> <pmax> <spec_id> <pid> BRAG then determines the position and angle of the front plane of D1 (if spec_id==0) or D5 (if spec_id==1), and uses the max and min vertex z position defined through control/spot to find the max and min theta and phi angles that can hit this plane. The distribution should just be a flat, random dist. between these values and between PMIN and PMAX. Could someone look at this? (If noone volunteers in a day or two I'll look at it myself, but since I'm lousy at fortran this is not the most time efficient way to get it done ;-) Regards --Bjorn PS: For reference, here's the math that Peter uses in his generate code: //___________________________________________________________________________ void GetAngleRange(BrVector3D vtx1, BrVector3D vtx2, BrMagnetVolume* magnet, Float_t* theta, Float_t* phi, Bool_t isMrs) { // --- get theta and phi ranges Float_t* size = magnet->GetSize(); BrVector3D *frontRight = new BrVector3D(-size[0]/2.0, -size[1]/2.0, -size[2]/2.0); BrVector3D *frontLeft = new BrVector3D(size[0]/2.0, size[1]/2.0, -size[2]/2.0); magnet->LocalToGlobal(*frontRight, *frontRight, 0); magnet->LocalToGlobal(*frontLeft, *frontLeft, 0); *frontLeft -= vtx1; *frontRight -= vtx2; // --- theta const Float_t radtodeg = 180.0/TMath::Pi(); // --- phi if (isMrs) { theta[0] = radtodeg * frontRight->Theta(); theta[1] = radtodeg * frontLeft->Theta(); phi[0] = -radtodeg * TMath::Abs(frontRight->Phi()); phi[1] = radtodeg * TMath::Abs(frontRight->Phi()); } else { theta[0] = radtodeg * frontLeft->Theta(); theta[1] = radtodeg * frontRight->Theta(); phi[0] = radtodeg * TMath::Abs(frontRight->Phi()); phi[1] = 360-radtodeg * TMath::Abs(frontRight->Phi()); } } -- Bjorn H. Samset Phone: 22856465/92051998 PhD student, heavy ion physics Adr: Schouterrassen 6 Inst. of Physics, University of Oslo 0573 Oslo \|/ ----------------------------> -*- <----------------------------- /|\ _______________________________________________ Brahms-dev-l mailing list Brahms-dev-l@lists.bnl.gov http://lists.bnl.gov/mailman/listinfo/brahms-dev-lReceived on Wed Nov 17 09:11:31 2004
This archive was generated by hypermail 2.1.8 : Wed Nov 17 2004 - 09:11:56 EST