Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:06

0001 int
0002 create_pythia_dummy()
0003 {
0004   /* Open output for dummy file */
0005   ofstream ofs("pythia_dummy_new.dat");
0006 
0007   /* Number of particles per event in dummy file */
0008   unsigned npart = 100;
0009 
0010   /* Number of events */
0011   unsigned nevents = 10000;
0012 
0013   /* first record after header and scattered electron */
0014   unsigned I0 = 14;
0015 
0016   /* Add Pythia style header */
0017   ofs << "  PYTHIA EVENT FILE " << endl;
0018   ofs << " ============================================"  << endl;
0019   ofs << "    I, ievent, genevent, subprocess, nucleon, targetparton, xtargparton, beamparton, xbeamparton, thetabeamprtn, truey, trueQ2, truex, trueW2, trueNu, leptonphi, s_hat, t_hat, u_hat, pt2_hat, Q2_hat, F2, F1, R, sigma_rad, SigRadCor, EBrems, photonflux, t-diff, nrTracks" << endl;
0020   ofs << " ============================================" << endl;
0021   ofs << "    I  K(I,1)  K(I,2)  K(I,3)  K(I,4)  K(I,5)  P(I,1)  P(I,2)  P(I,3)  P(I,4)  P(I,5)  V(I,1)  V(I,2)  V(I,3)" << endl;
0022   ofs << " ============================================" << endl;
0023 
0024 
0025   /* Loop over events */
0026   for ( unsigned event = 0; event < nevents; event++ )
0027     {
0028       ofs << "   0          " << event << "    1   28 2212          2  0.626588           21     0.021799     0.000606      0.11143372116        1.29649562992        0.00058761008     2205.97153388399     1175.77442684038        0.45626715567       30.13077585993          -6.512950687         -23.617825173           5.105136735           5.105136735           0.000000000           0.000000000           0.000000000           0.000000000     0.000000000           0.000000000           0.093679142          -6.512950687            " << npart << endl;
0029       ofs << " ============================================" << endl;
0030       ofs << "     1     21         11        0        3        4        0.000000        0.000000      -18.000000       18.000000        0.000510        0.000000        0.000000        0.000000" << endl;
0031       ofs << "     2     21       2212        0        5        0       -0.000000        0.000000      275.000000      275.001601        0.938270        0.000000        0.000000        0.000000" << endl;
0032       ofs << "     3     21         11        1        0        0       -0.963526        0.472906      -15.976186       16.012200        0.000510        0.000000        0.000000        0.000000" << endl;
0033       ofs << "     4     21         22        1        0        0        0.963526       -0.472906       -2.023814        1.987800       -1.138638        0.000000        0.000000        0.000000" << endl;
0034       ofs << "     5     21       2212        2        0        0       -0.000000       -0.000000      275.000000      275.001601        0.938270        0.000000        0.000000        0.000000" << endl;
0035       ofs << "     6     21         -2        4        0        0        0.575223       -0.495057       -1.333090        1.533980       -0.000000        0.000000        0.000000        0.000000" << endl;
0036       ofs << "     7     21          2        5        0        0        0.104280       -0.005342      172.232299      172.232331       -0.000000        0.000000        0.000000        0.000000" << endl;
0037       ofs << "     8     21         21        6        0        0       -0.493961       -0.724549        3.813575        3.913096        0.000000        0.000000        0.000000        0.000000" << endl;
0038       ofs << "     9     21          2        7        0        0        0.091399       -0.004682      150.957731      150.957759        0.000000        0.000000        0.000000        0.000000" << endl;
0039       ofs << "    10     21         21        0        0        0        1.874941       -0.450971       23.470606       23.549694        0.000000        0.000000        0.000000        0.000000" << endl;
0040       ofs << "    11     21          2        0        0        0       -2.277502       -0.278261      131.300700      131.321161        0.330000        0.000000        0.000000        0.000000" << endl;
0041       ofs << "    12     11        213        4       25       26        0.233938       -0.337111       -0.113230        0.880819        0.771135        0.000000        0.000000        0.000000" << endl;
0042       ofs << "    13      1         11        3        0        0       -0.963526        0.472906      -15.976186       16.012200        0.000510        0.000000        0.000000        0.000000" << endl;
0043 
0044       /* Add additional particles */
0045       for ( unsigned I = I0; I <= npart; I++ )
0046     {
0047       /* Create random particle */
0048       double mass = 0.000510;
0049       double ptotal = (rand() % 4000 + 1) / 100.; // random from 1 to 40
0050       double eta = (rand() % 900) / 100. - 4.5;
0051       double phi = (rand() % 100) / 100. * 2 * TMath::Pi();
0052 
0053       //      cout << eta << " " << ptotal << endl;
0054 
0055       double pt = ptotal / cosh(eta);
0056 
0057       /* Create Lorentz vector */
0058       TLorentzVector v1;
0059       v1.SetPtEtaPhiE(pt, eta, phi, ptotal);
0060 
0061       /* Pythia line format:
0062        * I  K(I,1)  K(I,2)  K(I,3)  K(I,4)  K(I,5)  P(I,1)  P(I,2)  P(I,3)  P(I,4)  P(I,5)  V(I,1)  V(I,2)  V(I,3)
0063        *
0064        * Scattered electron line example:
0065        *     13      1         11        3        0        0       -0.963526        0.472906      -15.976186       16.012200        0.000510        0.000000        0.000000        0.000000
0066        */
0067 
0068       /* New particle parameters for output */
0069       unsigned status = 1;
0070       int pid = 11;
0071       unsigned parentI = 0;
0072       unsigned daughterfirstI = 0;
0073       unsigned daughterlastI = 0;
0074       double px = v1.Px();
0075       double py = v1.Py();
0076       double pz = v1.Pz();
0077       double E  = v1.E();
0078       double m  = mass;
0079       double vx = 0.0;
0080       double vy = 0.0;
0081       double vz = 0.0;
0082 
0083       ofs << "\t" << I
0084           << "\t" << status << "\t" << pid << "\t" << parentI << "\t" << daughterfirstI << "\t" << daughterlastI << "\t"
0085           << px << "\t" << py << "\t" << pz << "\t" << E << "\t" << m
0086           << "\t" << vx << "\t" << vy << "\t" << vz << endl;
0087     }
0088 
0089       /* Add Pythia style end-of-event record (footer) */
0090       ofs << " =============== Event finished ===============" << endl;
0091 
0092     } // end event loop
0093 
0094   /* Close file */
0095   ofs.close();
0096   return 0;
0097 }