@@ -11,7 +11,7 @@ using namespace nuTens::testing;
1111
1212TEST (TwoFlavourBargerPropTest, zeroThetaNoOscTest) {
1313
14- constexpr float baseline = 500.0 * units::km ;
14+ constexpr float baseline = 5.0e12 ;
1515
1616 TwoFlavourBarger bargerProp{};
1717
@@ -36,7 +36,7 @@ TEST(TwoFlavourBargerPropTest, zeroThetaNoOscTest) {
3636
3737TEST (TwoFlavourBargerPropTest, zeroDmsqNoOscTest) {
3838
39- constexpr float baseline = 500.0 * units::km ;
39+ constexpr float baseline = 5.0e12 ;
4040
4141 TwoFlavourBarger bargerProp{};
4242
@@ -65,54 +65,59 @@ TEST(TwoFlavourBargerPropTest, fixedValuesTest) {
6565
6666 // now check for fixed parameters values against externally calculated values
6767
68- // theta = pi/8, m1 = 1, m2 = 2, E = 3, L = 4
69- // => prob_(alpha != beta) = sin^2(Pi/4) * sin^2(1) = 0.35403670913
70- // prob_(alpha == beta) = 1 - 0.35403670913 = 0.64596329086
68+ // theta = pi/8, dm^2 = 0.01 eV E = 1 GeV L = 100 km
69+ // => prob_(alpha != beta) = sin^2(2 theta) * sin^2( 1.27 * dm^2 * L / E [ eV^2 km / GeV] )
70+ //
71+ // = sin^2(Pi/4) * sin^2( 1.27 * 0.01 * 100 / 1 ) = 0.4561088222
72+ //
73+ // prob_(alpha == beta) = 1 - 0.4561088222 = 0.5438911778
7174
72- bargerProp.setParams (/* m1=*/ 1 .0 , /* m2=*/ 2.0 , /* theta=*/ M_PI / 8.0 ,
73- /* baseline=*/ 4.0 );
75+ bargerProp.setParams (/* m1=*/ 0 .0 , /* m2=*/ 0.1 , /* theta=*/ M_PI / 8.0 ,
76+ /* baseline=*/ 100.0 * units::km );
7477
75- ASSERT_NEAR (bargerProp.calculateProb (3.0 , 0 , 0 ), 0.64596329086 , 1e-5 );
78+ ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 0 , 0 ), 0.5438911778 , 1e-3 );
7679
77- ASSERT_NEAR (bargerProp.calculateProb (3.0 , 1 , 1 ), 0.64596329086 , 1e-5 );
80+ ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 1 , 1 ), 0.5438911778 , 1e-3 );
7881
79- ASSERT_NEAR (bargerProp.calculateProb (3.0 , 0 , 1 ), 0.35403670913 , 1e-5 );
82+ ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 0 , 1 ), 0.4561088222 , 1e-3 );
8083
81- ASSERT_NEAR (bargerProp.calculateProb (3.0 , 1 , 0 ), 0.35403670913 , 1e-5 );
84+ ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 1 , 0 ), 0.4561088222 , 1e-3 );
8285
8386
8487 // ##############################################################
8588 // ## Now test matter propagations for some fixed param values ##
8689 // ##############################################################
8790
88- // theta = 0.24, m1 = 0.04eV, m2 = 0.001eV, E = 1GeV, L = 500km , density = 2
91+ // theta = 0.24, m1 = 0.04eV, m2 = 0.001eV, E = 1GeV, L = 250 km , density = 2
8992 // lv = 4pi * E / dm^2 = 7.8588934e+12
90- // lm = 2pi / ( sqrt(2) * G * density ) = 2.0588727e +13
93+ // lm = 2pi / ( sqrt(2) * G * density ) = 4.1177454e +13
9194 // gamma = atan( sin( 2theta ) / (cos( 2theta ) - lv / lm) ) / 2.0
92- // = atan(0.91389598537 ) / 2 = 0.370219805 rad
95+ // = atan(0.663342 ) / 2 = 0.292848614 rad
9396 // dM2 = dm^2 * sqrt( 1 - 2 * (lv / lm) * cos(2theta) + (lv / lm)^2)
94- // = 0.00109453
97+ // = 0.001599 * sqrt ( 1 - 2 * 0.19085428 * 0.8869949 + 0.19085428 ^2)
98+ // = 0.001335765
9599 //
96- // => prob_(alpha != beta) = sin^2(2*gamma) * sin^2((L / E) * dM2/4 )
97- // = 0.186410
98- // prob_(alpha == beta) = 1 - 0.186410 = 0.81359
100+ // => prob_(alpha != beta) = sin^2(2*gamma) * sin^2( 1.27 (L / E) * dM2 )
101+ // = sin^2( 2 * 0.292848614 ) * sin^2( 1.27 * 250 / 1 * 0.001599)
102+ // = 0.0517436
103+ // prob_(alpha == beta) = 1 - 0.0517436 = 0.9482564
99104
100105 bargerProp.setParams (/* m1=*/ 0.04 , /* m2=*/ 0.001 , /* theta=*/ 0.24 ,
101- /* baseline=*/ 500.0 * units::km, /* density=*/ 2.0 );
106+ /* baseline=*/ 250 * units::km, /* density=*/ 2.0 );
102107
103- ASSERT_NEAR (bargerProp.lv (1.0 * units::GeV ), 7.8588934e+12 , 1e6 ) << " vacuum osc length" ;
108+ ASSERT_NEAR (bargerProp.lv (1.0e9 ), 7.8588934e+12 , 1e6 ) << " vacuum osc length" ;
104109
105- ASSERT_NEAR (bargerProp.lm (), 2.0588727e +13 , 1e6 ) << " matter osc length" ;
110+ ASSERT_NEAR (bargerProp.lm (), 4.1177454e +13 , 1e6 ) << " matter osc length" ;
106111
107- ASSERT_NEAR (bargerProp.calculateEffectiveAngle (1.0 * units::GeV ), 0.370219805 , 0.00001 ) << " effective mixing angle" ;
112+ ASSERT_NEAR (bargerProp.calculateEffectiveAngle (1.0e9 ), 0.292848614 , 0.00001 ) << " effective mixing angle" ;
108113
109- ASSERT_NEAR (bargerProp.calculateEffectiveDm2 (1.0 * units::GeV ), 0.00109453 , 0.00001 ) << " effective m^2 diff" ;
114+ ASSERT_NEAR (bargerProp.calculateEffectiveDm2 (1.0e9 ), 0.001335765 , 0.00001 ) << " effective m^2 diff" ;
110115
111- ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 0 , 0 ), 0.81359 , 0.00001 ) << " probability for alpha == beta == 0" ;
116+ ASSERT_NEAR (bargerProp.calculateProb (1.0e9 , 0 , 0 ), 0.9482564 , 1e-3 ) << " probability for alpha == beta == 0" ;
112117
113- ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 1 , 1 ), 0.81359 , 0.00001 ) << " probability for alpha == beta == 1" ;
118+ ASSERT_NEAR (bargerProp.calculateProb (1.0e9 , 1 , 1 ), 0.9482564 , 1e-3 ) << " probability for alpha == beta == 1" ;
114119
115- ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 0 , 1 ), 0.186410 , 0.00001 ) << " probability for alpha == 0, beta == 1" ;
120+ ASSERT_NEAR (bargerProp.calculateProb (1.0e9 , 0 , 1 ), 0.0517436 , 1e-3 ) << " probability for alpha == 0, beta == 1" ;
116121
117- ASSERT_NEAR (bargerProp.calculateProb (1.0 * units::GeV , 1 , 0 ), 0.186410 , 0.00001 ) << " probability for alpha == 1, beta == 0" ;
122+ ASSERT_NEAR (bargerProp.calculateProb (1.0e9 , 1 , 0 ), 0.0517436 , 1e-3 ) << " probability for alpha == 1, beta == 0" ;
118123}
0 commit comments