LCOV - code coverage report
Current view: top level - PYTHIA8/pythia8210dev/include/Pythia8 - FragmentationSystems.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 26 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 42 0.0 %

          Line data    Source code
       1             : // FragmentationSystems.h 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             : // This file contains auxiliary classes in the fragmentation process.
       7             : // ColSinglet contains info on an individual singlet.
       8             : // ColConfig describes the colour configuration of the whole event.
       9             : // StringRegion keeps track on string momenta and directions.
      10             : // StringSystem contains all the StringRegions of the colour singlet.
      11             : 
      12             : #ifndef Pythia8_FragmentationSystems_H
      13             : #define Pythia8_FragmentationSystems_H
      14             : 
      15             : #include "Pythia8/Basics.h"
      16             : #include "Pythia8/Event.h"
      17             : #include "Pythia8/FragmentationFlavZpT.h"
      18             : #include "Pythia8/Info.h"
      19             : #include "Pythia8/ParticleData.h"
      20             : #include "Pythia8/PythiaStdlib.h"
      21             : #include "Pythia8/Settings.h"
      22             : 
      23             : namespace Pythia8 {
      24             : 
      25             : //==========================================================================
      26             : 
      27             : // The ColSinglet class contains info on an individual singlet.
      28             : // Only to be used inside ColConfig, so no private members.
      29             : 
      30           0 : class ColSinglet {
      31             : 
      32             : public:
      33             : 
      34             :   // Constructors.
      35           0 :   ColSinglet() : pSum(0., 0., 0., 0.), mass(0.), massExcess(0.),
      36           0 :     hasJunction(false), isClosed(false), isCollected(false) {}
      37             :   ColSinglet(vector<int>& iPartonIn, Vec4 pSumIn, double massIn,
      38             :     double massExcessIn, bool hasJunctionIn = false,
      39             :     bool isClosedIn = false, bool isCollectedIn = false)
      40           0 :     : iParton(iPartonIn), pSum(pSumIn), mass(massIn),
      41           0 :     massExcess(massExcessIn), hasJunction(hasJunctionIn),
      42           0 :     isClosed(isClosedIn), isCollected(isCollectedIn) {}
      43             : 
      44             :   // Size of iParton array.
      45           0 :   int size() const { return iParton.size();}
      46             : 
      47             :   // Stored quantities.
      48             :   vector<int> iParton;
      49             :   Vec4   pSum;
      50             :   double mass, massExcess;
      51             :   bool   hasJunction, isClosed, isCollected;
      52             : 
      53             : };
      54             : 
      55             : //==========================================================================
      56             : 
      57             : // The ColConfig class describes the colour configuration of the whole event.
      58             : 
      59           0 : class ColConfig {
      60             : 
      61             : public:
      62             : 
      63             :   // Constructor.
      64           0 :   ColConfig() {singlets.resize(0);}
      65             : 
      66             :   // Initialize and save pointers.
      67             :   void init(Info* infoPtrIn, Settings& settings, StringFlav* flavSelPtrIn);
      68             : 
      69             :   // Number of colour singlets.
      70           0 :   int size() const {return singlets.size();}
      71             : 
      72             :   // Overload index operator to access separate colour singlets.
      73           0 :   ColSinglet& operator[](int iSub) {return singlets[iSub];}
      74             : 
      75             :   // Clear contents.
      76           0 :   void clear() {singlets.resize(0);}
      77             : 
      78             :   // Insert a new colour singlet system in ascending mass order.
      79             :   // Calculate its properties. Join nearby partons.
      80             :   bool insert( vector<int>& iPartonIn, Event& event);
      81             : 
      82             :   // Erase a colour singlet system. (Rare operation.)
      83           0 :   void erase(int iSub) {singlets.erase(singlets.begin() + iSub);}
      84             : 
      85             :   // Collect all partons of singlet to be consecutively ordered.
      86             :   void collect(int iSub, Event& event, bool skipTrivial = true);
      87             : 
      88             :   // Find to which singlet system a particle belongs.
      89             :   int findSinglet(int i);
      90             : 
      91             :   // List all currently identified singlets.
      92             :   void list(ostream& os = cout) const;
      93             : 
      94             : private:
      95             : 
      96             :   // Constants: could only be changed in the code itself.
      97             :   static const double CONSTITUENTMASS;
      98             : 
      99             :   // Pointer to various information on the generation.
     100             :   Info*       infoPtr;
     101             : 
     102             :   // Pointer to class for flavour generation.
     103             :   StringFlav* flavSelPtr;
     104             : 
     105             :   // Initialization data, to be read from Settings.
     106             :   double mJoin, mJoinJunction, mStringMin;
     107             : 
     108             :   // List of all separate colour singlets.
     109             :   vector<ColSinglet> singlets;
     110             : 
     111             :   // Join two legs of junction to a diquark for small invariant masses.
     112             :   bool joinJunction( vector<int>& iPartonIn, Event& event,
     113             :     double massExcessIn);
     114             : 
     115             : };
     116             : 
     117             : //==========================================================================
     118             : 
     119             : // The StringRegion class contains the information related to
     120             : // one string section in the evolution of a multiparton system.
     121             : // Only to be used inside StringFragmentation and MiniStringFragmentation,
     122             : // so no private members.
     123             : 
     124           0 : class StringRegion {
     125             : 
     126             : public:
     127             : 
     128             :   // Constructor.
     129           0 :   StringRegion() : isSetUp(false), isEmpty(true) {}
     130             : 
     131             :   // Constants: could only be changed in the code itself.
     132             :   static const double MJOIN, TINY;
     133             : 
     134             :   // Data members.
     135             :   bool   isSetUp, isEmpty;
     136             :   Vec4   pPos, pNeg, eX, eY;
     137             :   double w2, xPosProj, xNegProj, pxProj, pyProj;
     138             : 
     139             :   // Set up four-vectors for longitudinal and transverse directions.
     140             :   void setUp(Vec4 p1, Vec4 p2, bool isMassless = false);
     141             : 
     142             :   // Construct a four-momentum from (x+, x-, px, py).
     143             :   Vec4 pHad( double xPosIn, double xNegIn, double pxIn, double pyIn)
     144           0 :     { return xPosIn * pPos + xNegIn * pNeg + pxIn * eX + pyIn * eY; }
     145             : 
     146             :   // Project a four-momentum onto (x+, x-, px, py). Read out projection.
     147             :   void project(Vec4 pIn);
     148             :   void project( double pxIn, double pyIn, double pzIn, double eIn)
     149             :     { project( Vec4( pxIn, pyIn, pzIn, eIn) ); }
     150           0 :   double xPos() const {return xPosProj;}
     151           0 :   double xNeg() const {return xNegProj;}
     152           0 :   double px() const {return pxProj;}
     153           0 :   double py() const {return pyProj;}
     154             : 
     155             : };
     156             : 
     157             : //==========================================================================
     158             : 
     159             : // The StringSystem class contains the complete set of all string regions.
     160             : // Only to be used inside StringFragmentation, so no private members.
     161             : 
     162           0 : class StringSystem {
     163             : 
     164             : public:
     165             : 
     166             :   // Constructor.
     167           0 :   StringSystem() {}
     168             : 
     169             :   // Set up system from parton list.
     170             :   void setUp(vector<int>& iSys, Event& event);
     171             : 
     172             :   // Calculate string region from (iPos, iNeg) pair.
     173             :   int iReg( int iPos, int iNeg) const
     174           0 :     {return (iPos * (indxReg - iPos)) / 2 + iNeg;}
     175             : 
     176             :   // Reference to string region specified by (iPos, iNeg) pair.
     177           0 :   StringRegion& region(int iPos, int iNeg) {return system[iReg(iPos, iNeg)];}
     178             : 
     179             :   // Reference to low string region specified either by iPos or iNeg.
     180             :   StringRegion& regionLowPos(int iPos) {
     181           0 :     return system[iReg(iPos, iMax - iPos)]; }
     182             :   StringRegion& regionLowNeg(int iNeg) {
     183           0 :     return system[iReg(iMax - iNeg, iNeg)]; }
     184             : 
     185             :   // Main content: a vector with all the string regions of the system.
     186             :   vector<StringRegion> system;
     187             : 
     188             :   // Other data members.
     189             :   int    sizePartons, sizeStrings, sizeRegions, indxReg, iMax;
     190             :   double mJoin, m2Join;
     191             : 
     192             : };
     193             : 
     194             : //==========================================================================
     195             : 
     196             : } // end namespace Pythia8
     197             : 
     198             : #endif // Pythia8_FragmentationSystems_H

Generated by: LCOV version 1.11