merge heads
This commit is contained in:
commit
8dd7870220
@ -6,25 +6,26 @@
|
||||
|
||||
package inr.numass.scripts
|
||||
|
||||
import hep.dataforge.maths.integration.GaussRuleIntegrator;
|
||||
import hep.dataforge.maths.integration.UnivariateIntegrator;
|
||||
import inr.numass.models.LossCalculator;
|
||||
import hep.dataforge.maths.integration.GaussRuleIntegrator
|
||||
import hep.dataforge.maths.integration.UnivariateIntegrator
|
||||
import inr.numass.models.LossCalculator
|
||||
import org.apache.commons.math3.analysis.UnivariateFunction
|
||||
|
||||
UnivariateIntegrator integrator = new GaussRuleIntegrator(400);
|
||||
def exPos = 12.878;
|
||||
def ionPos = 13.86;
|
||||
def exW = 1.32;
|
||||
def ionW = 12.47;
|
||||
def exIonRatio = 3.96;
|
||||
|
||||
def cutoff = 25d
|
||||
def exPos = 12.587;
|
||||
def ionPos = 11.11;
|
||||
def exW = 1.20;
|
||||
def ionW = 11.02;
|
||||
def exIonRatio = 2.43;
|
||||
|
||||
def cutoff = 20d
|
||||
|
||||
UnivariateFunction loss = LossCalculator.getSingleScatterFunction(exPos, ionPos, exW, ionW, exIonRatio);
|
||||
|
||||
|
||||
println integrator.integrate(loss,0,600);
|
||||
println integrator.integrate(loss,0,cutoff);
|
||||
println integrator.integrate(loss,0, cutoff);
|
||||
println integrator.integrate(loss,cutoff,600d);
|
||||
|
||||
println (integrator.integrate(loss,0,cutoff) + integrator.integrate(loss,cutoff,3000d));
|
||||
|
@ -8,9 +8,9 @@ package inr.numass.scripts
|
||||
|
||||
import inr.numass.models.LossCalculator
|
||||
|
||||
LossCalculator loss = new LossCalculator();
|
||||
LossCalculator loss = LossCalculator.instance()
|
||||
|
||||
def X = 0.6
|
||||
def X = 0.34
|
||||
|
||||
def lossProbs = loss.getGunLossProbabilities(X);
|
||||
|
||||
@ -21,26 +21,40 @@ printf("%8s\t%8s\t%8s\t%8s\t%n",
|
||||
"p3"
|
||||
)
|
||||
|
||||
def singleScatter = loss.getSingleScatterFunction();
|
||||
/*
|
||||
'exPos' = 12.587 ± 0.049
|
||||
'ionPos' = 11.11 ± 0.50
|
||||
'exW' = 1.20 ± 0.12
|
||||
'ionW' = 11.02 ± 0.68
|
||||
'exIonRatio' = 2.43 ± 0.42
|
||||
*/
|
||||
|
||||
for(double d = 0; d < 30; d += 0.3){
|
||||
def singleScatter = loss.getSingleScatterFunction(
|
||||
12.587,
|
||||
11.11,
|
||||
1.20,
|
||||
11.02,
|
||||
2.43
|
||||
);
|
||||
|
||||
for (double d = 0; d < 30; d += 0.3) {
|
||||
double ei = 18500;
|
||||
double ef = ei-d;
|
||||
double ef = ei - d;
|
||||
printf("%8f\t%8f\t%8f\t%8f\t%n",
|
||||
d,
|
||||
lossProbs[1]*loss.getLossValue(1,ei,ef),
|
||||
lossProbs[2]*loss.getLossValue(2,ei,ef),
|
||||
lossProbs[3]*loss.getLossValue(3,ei,ef)
|
||||
lossProbs[1] * singleScatter.value(ei - ef),
|
||||
lossProbs[2] * loss.getLossValue(2, ei, ef),
|
||||
lossProbs[3] * loss.getLossValue(3, ei, ef)
|
||||
)
|
||||
}
|
||||
|
||||
for(double d = 30; d < 100; d += 1){
|
||||
for (double d = 30; d < 100; d += 1) {
|
||||
double ei = 18500;
|
||||
double ef = ei-d;
|
||||
double ef = ei - d;
|
||||
printf("%8f\t%8f\t%8f\t%8f\t%n",
|
||||
d,
|
||||
lossProbs[1]*loss.getLossValue(1,ei,ef),
|
||||
lossProbs[2]*loss.getLossValue(2,ei,ef),
|
||||
lossProbs[3]*loss.getLossValue(3,ei,ef)
|
||||
lossProbs[1] * singleScatter.value(ei - ef),
|
||||
lossProbs[2] * loss.getLossValue(2, ei, ef),
|
||||
lossProbs[3] * loss.getLossValue(3, ei, ef)
|
||||
)
|
||||
}
|
||||
|
@ -178,12 +178,12 @@ public class LossCalculator {
|
||||
final LossCalculator loss = LossCalculator.instance;
|
||||
final List<Double> probs = loss.getGunLossProbabilities(set.getDouble("X"));
|
||||
UnivariateFunction single = (double e) -> probs.get(1) * scatterFunction.value(e);
|
||||
frame.add(PlottableXYFunction.plotFunction("Single scattering", x -> single.value(x), 0, 100, 1000));
|
||||
frame.add(PlottableXYFunction.plotFunction("Single scattering", single::value, 0, 100, 1000));
|
||||
|
||||
for (int i = 2; i < probs.size(); i++) {
|
||||
final int j = i;
|
||||
UnivariateFunction scatter = (double e) -> probs.get(j) * loss.getLossValue(j, e, 0d);
|
||||
frame.add(PlottableXYFunction.plotFunction(j + " scattering", x -> scatter.value(x), 0, 100, 1000));
|
||||
frame.add(PlottableXYFunction.plotFunction(j + " scattering", scatter::value, 0, 100, 1000));
|
||||
}
|
||||
|
||||
UnivariateFunction total = (eps) -> {
|
||||
@ -197,11 +197,11 @@ public class LossCalculator {
|
||||
return sum;
|
||||
};
|
||||
|
||||
frame.add(PlottableXYFunction.plotFunction("Total loss", x -> total.value(x), 0, 100, 1000));
|
||||
frame.add(PlottableXYFunction.plotFunction("Total loss", total::value, 0, 100, 1000));
|
||||
|
||||
} else {
|
||||
|
||||
frame.add(PlottableXYFunction.plotFunction("Differential crosssection", x -> scatterFunction.value(x), 0, 100, 2000));
|
||||
frame.add(PlottableXYFunction.plotFunction("Differential crosssection", scatterFunction::value, 0, 100, 2000));
|
||||
}
|
||||
|
||||
}
|
||||
@ -261,9 +261,7 @@ public class LossCalculator {
|
||||
|
||||
public BivariateFunction getLossFunction(int order) {
|
||||
assert order > 0;
|
||||
return (double Ei, double Ef) -> {
|
||||
return getLossValue(order, Ei, Ef);
|
||||
};
|
||||
return (double Ei, double Ef) -> getLossValue(order, Ei, Ef);
|
||||
}
|
||||
|
||||
public List<Double> getLossProbDerivs(double X) {
|
||||
|
Loading…
Reference in New Issue
Block a user