LCOV - code coverage report
Current view: top level - PYTHIA8/pythia8210dev/src - BeamShape.cc (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 88 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 2 0.0 %

          Line data    Source code
       1             : // BeamShape.cc is a part of the PYTHIA event generator.
       2             : // Copyright (C) 2015 Torbjorn Sjostrand.
       3             : // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
       4             : // Please respect the MCnet Guidelines, see GUIDELINES for details.
       5             : 
       6             : // Function definitions (not found in the header) for the BeamShape class.
       7             : 
       8             : #include "Pythia8/BeamShape.h"
       9             : 
      10             : namespace Pythia8 {
      11             : 
      12             : //==========================================================================
      13             : 
      14             : // The BeamShape class.
      15             : 
      16             : //--------------------------------------------------------------------------
      17             : 
      18             : // Initialize beam parameters.
      19             : 
      20             :   void BeamShape::init( Settings& settings, Rndm* rndmPtrIn) {
      21             : 
      22             :   // Save pointer.
      23           0 :   rndmPtr             = rndmPtrIn;
      24             : 
      25             :   // Main flags.
      26           0 :   allowMomentumSpread = settings.flag("Beams:allowMomentumSpread");
      27           0 :   allowVertexSpread   = settings.flag("Beams:allowVertexSpread");
      28             : 
      29             :   // Parameters for beam A momentum spread.
      30           0 :   sigmaPxA            = settings.parm("Beams:sigmaPxA");
      31           0 :   sigmaPyA            = settings.parm("Beams:sigmaPyA");
      32           0 :   sigmaPzA            = settings.parm("Beams:sigmaPzA");
      33           0 :   maxDevA             = settings.parm("Beams:maxDevA");
      34             : 
      35             :   // Parameters for beam B momentum spread.
      36           0 :   sigmaPxB            = settings.parm("Beams:sigmaPxB");
      37           0 :   sigmaPyB            = settings.parm("Beams:sigmaPyB");
      38           0 :   sigmaPzB            = settings.parm("Beams:sigmaPzB");
      39           0 :   maxDevB             = settings.parm("Beams:maxDevB");
      40             : 
      41             :   // Parameters for beam vertex spread.
      42           0 :   sigmaVertexX        = settings.parm("Beams:sigmaVertexX");
      43           0 :   sigmaVertexY        = settings.parm("Beams:sigmaVertexY");
      44           0 :   sigmaVertexZ        = settings.parm("Beams:sigmaVertexZ");
      45           0 :   maxDevVertex        = settings.parm("Beams:maxDevVertex");
      46           0 :   sigmaTime           = settings.parm("Beams:sigmaTime");
      47           0 :   maxDevTime          = settings.parm("Beams:maxDevTime");
      48             : 
      49             :   // Parameters for beam vertex offset.
      50           0 :   offsetX             = settings.parm("Beams:offsetVertexX");
      51           0 :   offsetY             = settings.parm("Beams:offsetVertexY");
      52           0 :   offsetZ             = settings.parm("Beams:offsetVertexZ");
      53           0 :   offsetT             = settings.parm("Beams:offsetTime");
      54             : 
      55           0 : }
      56             : 
      57             : //--------------------------------------------------------------------------
      58             : 
      59             : // Set the two beam momentum deviations and the beam vertex.
      60             : 
      61             : void BeamShape::pick() {
      62             : 
      63             :   // Reset all values.
      64           0 :   deltaPxA = deltaPyA = deltaPzA = deltaPxB = deltaPyB = deltaPzB
      65           0 :     = vertexX = vertexY = vertexZ = vertexT = 0.;
      66             : 
      67             :   // Set beam A momentum deviation by a three-dimensional Gaussian.
      68           0 :   if (allowMomentumSpread) {
      69             :     double totalDev, gauss;
      70           0 :     do {
      71             :       totalDev = 0.;
      72           0 :       if (sigmaPxA > 0.) {
      73           0 :         gauss     = rndmPtr->gauss();
      74           0 :         deltaPxA  = sigmaPxA * gauss;
      75           0 :         totalDev += gauss * gauss;
      76           0 :       }
      77           0 :       if (sigmaPyA > 0.) {
      78           0 :         gauss     = rndmPtr->gauss();
      79           0 :         deltaPyA  = sigmaPyA * gauss;
      80           0 :         totalDev += gauss * gauss;
      81           0 :       }
      82           0 :       if (sigmaPzA > 0.) {
      83           0 :         gauss     = rndmPtr->gauss();
      84           0 :         deltaPzA  = sigmaPzA * gauss;
      85           0 :         totalDev += gauss * gauss;
      86           0 :       }
      87           0 :     } while (totalDev > maxDevA * maxDevA);
      88             : 
      89             :     // Set beam B momentum deviation by a three-dimensional Gaussian.
      90             :     do {
      91             :       totalDev = 0.;
      92           0 :       if (sigmaPxB > 0.) {
      93           0 :         gauss     = rndmPtr->gauss();
      94           0 :         deltaPxB  = sigmaPxB * gauss;
      95           0 :         totalDev += gauss * gauss;
      96           0 :       }
      97           0 :       if (sigmaPyB > 0.) {
      98           0 :         gauss     = rndmPtr->gauss();
      99           0 :         deltaPyB  = sigmaPyB * gauss;
     100           0 :         totalDev += gauss * gauss;
     101           0 :       }
     102           0 :       if (sigmaPzB > 0.) {
     103           0 :         gauss     = rndmPtr->gauss();
     104           0 :         deltaPzB  = sigmaPzB * gauss;
     105           0 :         totalDev += gauss * gauss;
     106           0 :       }
     107           0 :     } while (totalDev > maxDevB * maxDevB);
     108           0 :   }
     109             : 
     110             :   // Set beam vertex location by a three-dimensional Gaussian.
     111           0 :   if (allowVertexSpread) {
     112             :     double totalDev, gauss;
     113           0 :     do {
     114             :       totalDev = 0.;
     115           0 :       if (sigmaVertexX > 0.) {
     116           0 :         gauss     = rndmPtr->gauss();
     117           0 :         vertexX   = sigmaVertexX * gauss;
     118           0 :         totalDev += gauss * gauss;
     119           0 :       }
     120           0 :       if (sigmaVertexY > 0.) {
     121           0 :         gauss     = rndmPtr->gauss();
     122           0 :         vertexY   = sigmaVertexY * gauss;
     123           0 :         totalDev += gauss * gauss;
     124           0 :       }
     125           0 :       if (sigmaVertexZ > 0.) {
     126           0 :         gauss     = rndmPtr->gauss();
     127           0 :         vertexZ   = sigmaVertexZ * gauss;
     128           0 :         totalDev += gauss * gauss;
     129           0 :       }
     130           0 :     } while (totalDev > maxDevVertex * maxDevVertex);
     131             : 
     132             :     // Set beam collision time by a Gaussian.
     133           0 :     if (sigmaTime > 0.) {
     134           0 :       do gauss    = rndmPtr->gauss();
     135           0 :       while (abs(gauss) > maxDevTime);
     136           0 :       vertexT     = sigmaTime * gauss;
     137           0 :     }
     138             : 
     139             :     // Add offset to beam vertex.
     140           0 :     vertexX      += offsetX;
     141           0 :     vertexY      += offsetY;
     142           0 :     vertexZ      += offsetZ;
     143           0 :     vertexT      += offsetT;
     144           0 :   }
     145             : 
     146           0 : }
     147             : 
     148             : //==========================================================================
     149             : 
     150             : } // end namespace Pythia8

Generated by: LCOV version 1.11