go-hep.org/x/hep@v0.38.1/lhef/writer_test.go (about)

     1  // Copyright ©2017 The go-hep Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package lhef_test
     6  
     7  import (
     8  	"fmt"
     9  	"os"
    10  	"testing"
    11  
    12  	"go-hep.org/x/hep/lhef"
    13  )
    14  
    15  const w_debug = false
    16  
    17  func TestLhefWriting(t *testing.T) {
    18  	f, err := os.CreateTemp("", "lhef-write-")
    19  	if err != nil {
    20  		t.Error(err)
    21  	}
    22  	defer func() {
    23  		f.Close()
    24  		os.Remove(f.Name())
    25  	}()
    26  
    27  	enc, err := lhef.NewEncoder(f)
    28  	if err != nil {
    29  		t.Error(err)
    30  	}
    31  	defer enc.Close()
    32  
    33  	enc.Run = lhef.HEPRUP{
    34  		IDBMUP: [2]int64{2212, -2212},
    35  		EBMUP:  [2]float64{9.800000e+02, 9.800000e+02},
    36  		PDFGUP: [2]int32{0, 0},
    37  		PDFSUP: [2]int32{7, 7},
    38  		IDWTUP: 3,
    39  		NPRUP:  2,
    40  		XSECUP: []float64{5.220106e+00, 2.602564e-01},
    41  		XERRUP: []float64{5.384128e-01, 1.062492e-01},
    42  		XMAXUP: []float64{1, 1},
    43  		LPRUP:  []int32{81, 82},
    44  	}
    45  
    46  	evts := []lhef.HEPEUP{
    47  		{
    48  			NUP:    12,
    49  			IDPRUP: 81,
    50  			XWGTUP: 1.000000e+00,
    51  			XPDWUP: [2]float64{0., 0.},
    52  			SCALUP: 1.733125e+02,
    53  			AQEDUP: 7.819848e-03,
    54  			AQCDUP: 1.156692e-01,
    55  			IDUP:   []int64{2, -2, 6, -6, 24, 5, -24, -5, -1, 2, 13, -14},
    56  			ISTUP:  []int32{-1, -1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1},
    57  			MOTHUP: [][2]int32{
    58  				{0, 0}, {0, 0}, {1, 2}, {1, 2},
    59  				{3, 0}, {3, 0}, {4, 0}, {4, 0},
    60  				{5, 0}, {5, 0}, {7, 0}, {7, 0},
    61  			},
    62  			ICOLUP: [][2]int32{
    63  				{101, 0}, {0, 102}, {101, 0}, {0, 102},
    64  				{0, 0}, {101, 0}, {0, 0}, {0, 102},
    65  				{0, 103}, {103, 0}, {0, 0}, {0, 0},
    66  			},
    67  			PUP: [][5]float64{
    68  				{0.0000000000e+00, 0.0000000000e+00, 1.0838163607e+02, 1.0838163607e+02, 0.0000000000e+00},
    69  				{0.0000000000e+00, 0.0000000000e+00, -2.7976111253e+02, 2.7976111253e+02, 0.0000000000e+00},
    70  				{3.3629095553e+01, 8.9115695965e+00, -1.1059648961e+02, 2.1241781824e+02, 1.7798711709e+02},
    71  				{-3.3629095553e+01, -8.9115695965e+00, -6.0782986840e+01, 1.7572493036e+02, 1.6116559038e+02},
    72  				{-3.0884654830e+01, -1.2140252163e+01, -4.7852784957e+00, 8.6623320800e+01, 7.9871479200e+01},
    73  				{6.4513750383e+01, 2.1051821759e+01, -1.0581121112e+02, 1.2579449744e+02, 4.8000000000e+00},
    74  				{-5.0940382043e+01, 3.4880802250e+01, -7.5291578188e+01, 1.2621743906e+02, 8.0314552164e+01},
    75  				{1.7311286490e+01, -4.3792371846e+01, 1.4508591348e+01, 4.9507491299e+01, 4.8000000000e+00},
    76  				{1.8584463332e+01, 9.1657242037e+00, 1.8652036768e+01, 2.7881896512e+01, 3.3000000000e-01},
    77  				{-4.9469118162e+01, -2.1305976366e+01, -2.3437315264e+01, 5.8741424288e+01, 3.3000000000e-01},
    78  				{9.6912588119e+00, 3.9074488577e+01, -2.5560060185e+01, 4.7687147069e+01, 1.0566000000e-01},
    79  				{-6.0631640855e+01, -4.1936863270e+00, -4.9731518002e+01, 7.8530291993e+01, 0.0000000000e+00},
    80  			},
    81  			VTIMUP: []float64{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.},
    82  			SPINUP: []float64{9., 9., 9., 9., 9., 9., 9., 9., 9., 9., 9., 9.},
    83  		},
    84  		{
    85  			NUP:    12,
    86  			IDPRUP: 81,
    87  			XWGTUP: 1.000000e+00,
    88  			XPDWUP: [2]float64{0., 0.},
    89  			SCALUP: 2.453729e+02,
    90  			AQEDUP: 7.850576e-03,
    91  			AQCDUP: 1.102586e-01,
    92  			IDUP:   []int64{2, -2, 6, -6, 24, 5, -24, -5, -3, 4, 15, -16},
    93  			ISTUP:  []int32{-1, -1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1},
    94  			MOTHUP: [][2]int32{
    95  				{0, 0}, {0, 0}, {1, 2}, {1, 2},
    96  				{3, 0}, {3, 0}, {4, 0}, {4, 0},
    97  				{5, 0}, {5, 0}, {7, 0}, {7, 0},
    98  			},
    99  			ICOLUP: [][2]int32{
   100  				{101, 0}, {0, 102}, {101, 0}, {0, 102},
   101  				{0, 0}, {101, 0}, {0, 0}, {0, 102},
   102  				{0, 103}, {103, 0}, {0, 0}, {0, 0},
   103  			},
   104  			PUP: [][5]float64{
   105  				{0.0000000000e+00, 0.0000000000e+00, 1.4168500180e+02, 1.4168500180e+02, 0.0000000000e+00},
   106  				{0.0000000000e+00, 0.0000000000e+00, -5.1193431229e+02, 5.1193431229e+02, 0.0000000000e+00},
   107  				{1.4483021237e+02, -9.1836222700e+01, -3.2020944169e+02, 4.0376632938e+02, 1.7630507646e+02},
   108  				{-1.4483021237e+02, 9.1836222700e+01, -5.0039868808e+01, 2.4985298471e+02, 1.7467925831e+02},
   109  				{6.6573250937e+01, -1.0557760324e+02, -2.7628620725e+02, 3.1285280962e+02, 7.7228130408e+01},
   110  				{7.8256961429e+01, 1.3741380542e+01, -4.3923234434e+01, 9.0913519757e+01, 4.8000000000e+00},
   111  				{-5.2331928485e+01, 1.3655957736e+01, 3.5832022017e+01, 1.0130969814e+02, 7.7811343743e+01},
   112  				{-9.2498283882e+01, 7.8180264964e+01, -8.5871890826e+01, 1.4854328657e+02, 4.8000000000e+00},
   113  				{1.3698476364e+01, -8.8968981168e+01, -1.5010039084e+02, 1.7502429887e+02, 5.0000000000e-01},
   114  				{5.2874774574e+01, -1.6608622073e+01, -1.2618581641e+02, 1.3782851075e+02, 1.5000000000e+00},
   115  				{-5.3810426731e+01, -1.6793177176e+00, -8.3584775043e+00, 5.4510586203e+01, 1.7770000000e+00},
   116  				{1.4784982465e+00, 1.5335275454e+01, 4.4190499522e+01, 4.6799111939e+01, 0.0000000000e+00},
   117  			},
   118  			VTIMUP: []float64{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.},
   119  			SPINUP: []float64{9., 9., 9., 9., 9., 9., 9., 9., 9., 9., 9., 9.},
   120  		},
   121  	}
   122  	for i, evt := range evts {
   123  		err = enc.Encode(&evt)
   124  		if err != nil {
   125  			t.Error(err)
   126  		}
   127  		if w_debug {
   128  			fmt.Printf("===[%d]===\nevt: %v\n", i, evt)
   129  		}
   130  	}
   131  
   132  	if w_debug {
   133  		defer func() {
   134  			enc.Close()
   135  			ww, _ := os.ReadFile(f.Name())
   136  			fmt.Printf("===>\n%v<===\n", string(ww))
   137  		}()
   138  	}
   139  }