From c57cbc39c4702bc849562804d6d1e7e1f3a58950 Mon Sep 17 00:00:00 2001 From: Darksnake Date: Wed, 10 Jul 2013 15:07:58 +0400 Subject: [PATCH] [no commit message] --- .hgignore | 5 + nbactions.xml | 37 +++ pom.xml | 57 ++++ .../hep/dataforge/trapping/DoubleValue.java | 33 +++ .../trapping/ElectronTrappingSimulator.java | 244 ++++++++++++++++++ .../java/hep/dataforge/trapping/Scatter.java | 100 +++++++ .../java/hep/dataforge/trapping/Trapping.java | 93 +++++++ .../trapping/TrappingRandomGenerator.java | 43 +++ src/main/resources/win32-amd64/libScatter.dll | Bin 0 -> 94356 bytes src/main/resources/win32-x86/libScatter.dll | Bin 0 -> 42756 bytes .../java/hep/dataforge/trapping/AppTest.java | 38 +++ 11 files changed, 650 insertions(+) create mode 100644 .hgignore create mode 100644 nbactions.xml create mode 100644 pom.xml create mode 100644 src/main/java/hep/dataforge/trapping/DoubleValue.java create mode 100644 src/main/java/hep/dataforge/trapping/ElectronTrappingSimulator.java create mode 100644 src/main/java/hep/dataforge/trapping/Scatter.java create mode 100644 src/main/java/hep/dataforge/trapping/Trapping.java create mode 100644 src/main/java/hep/dataforge/trapping/TrappingRandomGenerator.java create mode 100644 src/main/resources/win32-amd64/libScatter.dll create mode 100644 src/main/resources/win32-x86/libScatter.dll create mode 100644 src/test/java/hep/dataforge/trapping/AppTest.java diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..2f945c3 --- /dev/null +++ b/.hgignore @@ -0,0 +1,5 @@ +\.orig$ +\.orig\..*$ +\.chg\..*$ +\.rej$ +\.conflict\~$ diff --git a/nbactions.xml b/nbactions.xml new file mode 100644 index 0000000..d44d98c --- /dev/null +++ b/nbactions.xml @@ -0,0 +1,37 @@ + + + + run + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -ea -classpath %classpath hep.dataforge.trapping.Trapping D:\\PlayGround\\Trapping.res + java + + + + debug + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -ea -classpath %classpath ${packageClassName} D:\\PlayGround\\Trapping.res + java + true + + + + profile + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + ${profiler.args} -ea -classpath %classpath ${packageClassName} D:\\PlayGround\\Trapping.res + ${profiler.java} + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8ce882d --- /dev/null +++ b/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + + hep.DataForge + Trapping + 1.0-SNAPSHOT + jar + + Trapping + http://maven.apache.org + + + UTF-8 + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + true + + + + + + + + junit + junit + 3.8.1 + test + + + org.apache.commons + commons-math3 + 3.2 + + + net.java.dev.jna + jna + 3.5.2 + + + diff --git a/src/main/java/hep/dataforge/trapping/DoubleValue.java b/src/main/java/hep/dataforge/trapping/DoubleValue.java new file mode 100644 index 0000000..a0938ba --- /dev/null +++ b/src/main/java/hep/dataforge/trapping/DoubleValue.java @@ -0,0 +1,33 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package hep.dataforge.trapping; + +/** + * Класс нужен исключительно чтобы сделать простой доступ к Сишным экспортам + * @author Darksnake + */ +public class DoubleValue { + private double value; + + public DoubleValue(double value) { + this.value = value; + } + + + + /** + * @return the value + */ + public double getValue() { + return value; + } + + /** + * @param value the value to set + */ + public void setValue(double value) { + this.value = value; + } +} diff --git a/src/main/java/hep/dataforge/trapping/ElectronTrappingSimulator.java b/src/main/java/hep/dataforge/trapping/ElectronTrappingSimulator.java new file mode 100644 index 0000000..c4645f1 --- /dev/null +++ b/src/main/java/hep/dataforge/trapping/ElectronTrappingSimulator.java @@ -0,0 +1,244 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package hep.dataforge.trapping; + +import java.util.ArrayList; +import org.apache.commons.math3.geometry.euclidean.threed.Rotation; +import org.apache.commons.math3.geometry.euclidean.threed.SphericalCoordinates; +import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; +import org.apache.commons.math3.util.Precision; + +/** + * + * @author Darksnake + */ +public class ElectronTrappingSimulator { + + private TrappingRandomGenerator generator = new TrappingRandomGenerator(); + double Elow = 14000d; + double thetaTransport = 24.107064 / 180 * Math.PI; + double thetaPinch = 19.481097 / 180 * Math.PI; + + public ElectronTrappingSimulator() { + } + + public static enum EndState { + + ACCEPTED,//трэппинговый электрон попал в аксептанс + REJECTED,//трэппинговый электрон вылетел через заднюю пробку + LOWENERGY,//потерял слишком много энергии + PASS,//электрон никогда не запирался и прошел напрямую, нужно для нормировки + NONE + } + + public void setFields(double Bsource, double Btransport, double Bpinch) { + this.thetaTransport = Math.asin(Math.sqrt(Bsource / Btransport)); + this.thetaPinch = Math.asin(Math.sqrt(Bsource / Bpinch)); + } + + /** + * Симулируем один пробег электрона от начального значения и до вылетания из + * иточника или до того момента, как энергия становится меньше Elow. + * Считаем, что за один проход источника происходит в среднем существенно + * меньше одного столкновения, поэтому выход вперед или назад совершенно + * симментричны. + * + */ + public SimulaionResult simulateOne(double initEnergy, double initTheta) { + assert initEnergy > 0; + assert initTheta > 0 && initTheta < Math.PI / 2; + + if (initTheta < this.thetaPinch) { + if (generator.heads()) { + return new SimulaionResult(EndState.PASS, initEnergy, initTheta, 0); + } else { + return new SimulaionResult(EndState.REJECTED, initEnergy, initTheta, 0); + } + } else if(initTheta sigmaEl) { + if (alpha > sigmaEl + sigmaexc) { + //ionization case + Scatter.randomion(E, dE, dTheta); + } else { + //excitation case + Scatter.randomexc(E, dE, dTheta); + } + } else { + // elastic + Scatter.randomel(E, dE, dTheta); + } + +// if (alpha < sigmaEl) { +// Scatter.randomel(E, dE, dTheta); +// } else if (alpha < sigmaexc) { +// Scatter.randomexc(E, dE, dTheta); +// } else { +// Scatter.randomion(E, dE, dTheta); +// } + + + + + //Обновляем значени угла и энергии независимо ни от чего + E -= dE.getValue(); + //Изменение угла + theta = addTheta(theta, dTheta.getValue() / 180 * Math.PI); + //следим чтобы угол был от 0 до 90, если он перекинется через границу, считаем что электрон остается в потоке + theta = normalizeTheta(theta); + + if (theta < thetaPinch) { + stopflag = true; + if (generator.heads()) { + //Учитываем тот факт, что электрон мог вылететь в правильный угол, но назад + state = EndState.ACCEPTED; + } else { + state = EndState.REJECTED; + } + } + + if (theta >= thetaPinch && theta <= thetaTransport) { + //Вылет через заднюю пробку эквивалентен отражению от передней. + //это верно при низких концентрациях + stopflag = true; + state = EndState.REJECTED; + } + + if (E < Elow) { + //Если энергия стала слишком маленькой + stopflag = true; + state = EndState.LOWENERGY; + } + } + return new SimulaionResult(state, E, theta, colNum); + + } + + /** + * Сложение вектора с учетом случайно распределения по фи + * + * @param theta + * @param dTheta + * @return + */ + double addTheta(double theta, double dTheta) { + //Генерируем случайный фи + double phi = generator.next() * 2 * Math.PI; + //Создаем начальный вектор в сферических координатах + SphericalCoordinates init = new SphericalCoordinates(1, 0, theta+dTheta); + // Задаем вращение относительно оси, перпендикулярной исходному вектору + SphericalCoordinates rotate = new SphericalCoordinates(1, 0, theta); + // поворачиваем исходный вектора на dTheta + Rotation rot = new Rotation(rotate.getCartesian(), phi); + + Vector3D result = rot.applyTo(init.getCartesian()); + + // assert Vector3D.angle(result, rotate.getCartesian()) == dTheta; + return Math.acos(result.getZ()); + + } + + /** + * Симулируем пролет num электронов. + * + * @param E + * @param num + * @return + */ + public ArrayList simulateAll(double E, int num) { + ArrayList res = new ArrayList(); + double theta; + + System.out.printf("%nStarting sumulation with initial energy %g and %d electrons.%n%n", E, num); + for (int i = 0; i < num; i++) { +// System.out.printf("Running electron number %d", i); + theta = this.getRandomTheta(); + res.add(this.simulateOne(E, theta)); + } + return res; + } + + private double normalizeTheta(double theta) { + double res = theta; + if (theta < 0) { + res = -theta; + } + if (res >= 0 && res <= Math.PI / 2) { + return res; + } else if (res > Math.PI / 2 && res <= Math.PI) { + return Math.PI - res; + } else if (res > Math.PI && res <= Math.PI * 3 / 2) { + return res - Math.PI; + } else { + throw new IllegalStateException(); + } + } + + public double getRandomTheta() { + double x = generator.next(); + return Math.acos(x); + } + +// /** +// * Генерируем случайный угол таким образом, чтобы электрон заведомо был +// * траппинговый +// * +// * @return +// */ +// public double getRandomTrappedTheta() { +// double res = 0; +// while (res < this.thetaTransport) { +// res = this.getRandomTheta(); +// +// } +// return res; +// } + public class SimulaionResult { + + public SimulaionResult(EndState state, double E, double theta, int collisionNumber) { + this.state = state; + this.E = E; + this.theta = theta; + this.collisionNumber = collisionNumber; + } + public EndState state; + public double E; + public double theta; + public int collisionNumber; + } +} diff --git a/src/main/java/hep/dataforge/trapping/Scatter.java b/src/main/java/hep/dataforge/trapping/Scatter.java new file mode 100644 index 0000000..1f77bb1 --- /dev/null +++ b/src/main/java/hep/dataforge/trapping/Scatter.java @@ -0,0 +1,100 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package hep.dataforge.trapping; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.ptr.DoubleByReference; + +/** + * + * @author Darksnake + */ +public class Scatter { + + public interface LibScatter extends Library { + + public void randomel(double E, DoubleByReference Eloss, DoubleByReference theta); + + public void randomexc(double E, DoubleByReference Eloss, DoubleByReference theta); + + public void randomion(double E, DoubleByReference Eloss, DoubleByReference theta); + + public double sigmael(double E); + + public double sigmaexc(double E); + + public double sigmaion(double E); + } + + /** + * PENDING переделать, чтобы возвращались нормальные значения + * @param E + * @param Eloss + * @param theta + */ + static void randomel(double E, DoubleValue Eloss, DoubleValue theta) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + + DoubleByReference ElossPointer = new DoubleByReference(Eloss.getValue()); + DoubleByReference thetaPointer = new DoubleByReference(theta.getValue()); + lib.randomel(E, ElossPointer, thetaPointer); + Eloss.setValue(ElossPointer.getValue()); + theta.setValue(thetaPointer.getValue()); + + } + + static void randomexc(double E, DoubleValue Eloss, DoubleValue theta) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + + DoubleByReference ElossPointer = new DoubleByReference(Eloss.getValue()); + DoubleByReference thetaPointer = new DoubleByReference(theta.getValue()); + lib.randomexc(E, ElossPointer, thetaPointer); + Eloss.setValue(ElossPointer.getValue()); + theta.setValue(thetaPointer.getValue()); + + } + + static void randomion(double E, DoubleValue Eloss, DoubleValue theta) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + + DoubleByReference ElossPointer = new DoubleByReference(Eloss.getValue()); + DoubleByReference thetaPointer = new DoubleByReference(theta.getValue()); + lib.randomion(E, ElossPointer, thetaPointer); + Eloss.setValue(ElossPointer.getValue()); + theta.setValue(thetaPointer.getValue()); + + } + + /** + * Все сечения в м^2 + * @param E + * @return + */ + public static double sigmael(double E) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + return lib.sigmael(E); + } + + public static double sigmaexc(double E) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + return lib.sigmaexc(E); + } + + public static double sigmaion(double E) { + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + return lib.sigmaion(E); + } + + /** + * Полное сечение с учетом квазиупругих столкновений + * @param E + * @return + */ + public static double sigmaTotal(double E){ + LibScatter lib = (LibScatter) Native.loadLibrary("libScatter", LibScatter.class); + return lib.sigmael(E)+lib.sigmaexc(E)+lib.sigmaion(E); + } +} diff --git a/src/main/java/hep/dataforge/trapping/Trapping.java b/src/main/java/hep/dataforge/trapping/Trapping.java new file mode 100644 index 0000000..56ce7eb --- /dev/null +++ b/src/main/java/hep/dataforge/trapping/Trapping.java @@ -0,0 +1,93 @@ +package hep.dataforge.trapping; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Iterator; + +/** + * Hello world! + * + */ +public class Trapping { + + public static void main(String[] args) throws FileNotFoundException { + PrintWriter out = null; + if ((args != null) && (args[0] != null)) { + File file = new File(args[0]); + out = new PrintWriter(file); + } + + double E = 18000d; + System.out.println(); +// System.setProperty("jna.library.path", "d:\\projects\\Trapping\\target\\classes\\win32-amd64\\libScatter.dll"); + ElectronTrappingSimulator simulator = new ElectronTrappingSimulator(); + simulator.setFields(0.6, 3.6, 7.2); +// ElectronTrappingSimulator.SimulaionResult result; + + int accepted = 0; + int pass = 0; + int rejected = 0; + int lowE = 0; + + ArrayList results = simulator.simulateAll(E, 100000); + + for (Iterator it = results.iterator(); it.hasNext();) { + ElectronTrappingSimulator.SimulaionResult res = it.next(); + + if (out != null) { + out.printf("%g\t%g\t%d\t%s%n", res.E, res.theta * 180 / Math.PI, res.collisionNumber, res.state.toString()); + } + switch (res.state) { + + case ACCEPTED: + System.out.printf("%g\t%g\t%d\t%s%n", res.E, res.theta * 180 / Math.PI, res.collisionNumber, res.state.toString()); + accepted++; + break; + case LOWENERGY: + lowE++; + break; + case PASS: + pass++; + break; + case REJECTED: + rejected++; + break; + case NONE: + throw new IllegalStateException(); + } + } + + System.out.printf("%nThe total number of events is %d.%n%n", results.size()); + + System.out.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI); + System.out.printf("The transport mirroring angle is %g.%n", simulator.thetaTransport * 180 / Math.PI); + System.out.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI); + System.out.printf("The starting energy is %g.%n", E); + System.out.printf("The lower energy boundary is %g.%n%n", simulator.Elow); + + System.out.printf("The total number of ACCEPTED events is %d.%n", accepted); + System.out.printf("The total number of PASS events is %d.%n", pass); + System.out.printf("The total number of REJECTED events is %d.%n", rejected); + System.out.printf("The total number of LOWENERGY events is %d.%n%n", lowE); + + if (out != null) { + out.printf("The total number of events is %d.%n%n", results.size()); + + out.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI); + out.printf("The transport mirroring angle is %g.%n", simulator.thetaTransport * 180 / Math.PI); + out.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI); + out.printf("The starting energy is %g.%n", E); + out.printf("The lower energy boundary is %g.%n%n", simulator.Elow); + + out.printf("The total number of ACCEPTED events is %d.%n", accepted); + out.printf("The total number of PASS events is %d.%n", pass); + out.printf("The total number of REJECTED events is %d.%n", rejected); + out.printf("The total number of LOWENERGY events is %d.%n%n", lowE); + out.close(); + } + + + } +} diff --git a/src/main/java/hep/dataforge/trapping/TrappingRandomGenerator.java b/src/main/java/hep/dataforge/trapping/TrappingRandomGenerator.java new file mode 100644 index 0000000..761a1dc --- /dev/null +++ b/src/main/java/hep/dataforge/trapping/TrappingRandomGenerator.java @@ -0,0 +1,43 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package hep.dataforge.trapping; + +import org.apache.commons.math3.random.JDKRandomGenerator; +import org.apache.commons.math3.random.RandomGenerator; + +/** + * + * @author Darksnake + */ +public class TrappingRandomGenerator { + RandomGenerator generator; + + public TrappingRandomGenerator() { + this.generator = new JDKRandomGenerator(); + } + + public TrappingRandomGenerator(RandomGenerator generator) { + this.generator = generator; + } + + /** + * heads-tails random. + * @return + */ + public boolean heads(){ + return generator.nextBoolean(); + } + + /** + * next uniform in [0;1] + * @return + */ + public double next(){ + return generator.nextDouble(); + } + + + +} diff --git a/src/main/resources/win32-amd64/libScatter.dll b/src/main/resources/win32-amd64/libScatter.dll new file mode 100644 index 0000000000000000000000000000000000000000..6d41d2765ef798b0a3e685ce8c5a3b1250ae2ec9 GIT binary patch literal 94356 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/win32-x86/libScatter.dll b/src/main/resources/win32-x86/libScatter.dll new file mode 100644 index 0000000000000000000000000000000000000000..be996e02eaa98826568a98612787642c928d9511 GIT binary patch literal 42756 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 EfA99Y1^@s6 literal 0 HcmV?d00001 diff --git a/src/test/java/hep/dataforge/trapping/AppTest.java b/src/test/java/hep/dataforge/trapping/AppTest.java new file mode 100644 index 0000000..60af9b7 --- /dev/null +++ b/src/test/java/hep/dataforge/trapping/AppTest.java @@ -0,0 +1,38 @@ +package hep.dataforge.trapping; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +}