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

          Line data    Source code
       1             : // HiddenValleyFragmentation.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 the classes for Hidden-Valley fragmentation.
       7             : 
       8             : #ifndef Pythia8_HiddenValleyFragmentation_H
       9             : #define Pythia8_HiddenValleyFragmentation_H
      10             : 
      11             : #include "Pythia8/Basics.h"
      12             : #include "Pythia8/Event.h"
      13             : #include "Pythia8/FragmentationFlavZpT.h"
      14             : #include "Pythia8/FragmentationSystems.h"
      15             : #include "Pythia8/Info.h"
      16             : #include "Pythia8/MiniStringFragmentation.h"
      17             : #include "Pythia8/ParticleData.h"
      18             : #include "Pythia8/PythiaStdlib.h"
      19             : #include "Pythia8/Settings.h"
      20             : #include "Pythia8/StringFragmentation.h"
      21             : 
      22             : namespace Pythia8 {
      23             : 
      24             : //==========================================================================
      25             : 
      26             : // The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
      27             : 
      28             : class HVStringFlav : public StringFlav {
      29             : 
      30             : public:
      31             : 
      32             :   // Constructor.
      33           0 :   HVStringFlav() {}
      34             : 
      35             :   // Destructor.
      36           0 :   ~HVStringFlav() {}
      37             : 
      38             :   // Initialize data members.
      39             :   void init(Settings& settings, Rndm* rndmPtrIn);
      40             : 
      41             :   // Pick a new flavour (including diquarks) given an incoming one.
      42             :   FlavContainer pick(FlavContainer& flavOld);
      43             : 
      44             :   // Combine two flavours (including diquarks) to produce a hadron.
      45             :   int combine(FlavContainer& flav1, FlavContainer& flav2);
      46             : 
      47             : private:
      48             : 
      49             :   // Initialization data, to be read from Settings.
      50             :   int    nFlav;
      51             :   double probVector;
      52             : 
      53             : };
      54             : 
      55             : //==========================================================================
      56             : 
      57             : // The HVStringPT class is used to select select HV transverse momenta.
      58             : 
      59             : class HVStringPT : public StringPT {
      60             : 
      61             : public:
      62             : 
      63             :   // Constructor.
      64           0 :   HVStringPT() {}
      65             : 
      66             :   // Destructor.
      67           0 :   ~HVStringPT() {}
      68             : 
      69             :   // Initialize data members.
      70             :   void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
      71             : 
      72             : };
      73             : 
      74             : //==========================================================================
      75             : 
      76             : // The HVStringZ class is used to sample the HV fragmentation function f(z).
      77             : 
      78             : class HVStringZ : public StringZ {
      79             : 
      80             : public:
      81             : 
      82             :   // Constructor.
      83           0 :   HVStringZ() {}
      84             : 
      85             :   // Destructor.
      86           0 :   ~HVStringZ() {}
      87             : 
      88             :   // Initialize data members.
      89             :   void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
      90             : 
      91             :   // Fragmentation function: top-level to determine parameters.
      92             :   double zFrag( int idOld, int idNew = 0, double mT2 = 1.);
      93             : 
      94             :   // Parameters for stopping in the middle; for now hardcoded.
      95           0 :   virtual double stopMass()    {return 1.5 * mhvMeson;}
      96           0 :   virtual double stopNewFlav() {return 2.0;}
      97           0 :   virtual double stopSmear()   {return 0.2;}
      98             : 
      99             : private:
     100             : 
     101             :   // Initialization data, to be read from Settings and ParticleData.
     102             :   double mqv2, bmqv2, rFactqv, mhvMeson;
     103             : 
     104             : };
     105             : 
     106             : //==========================================================================
     107             : 
     108             : // The HiddenValleyFragmentation class contains the routines
     109             : // to fragment a Hidden Valley partonic system.
     110             : 
     111             : class HiddenValleyFragmentation {
     112             : 
     113             : public:
     114             : 
     115             :   // Constructor.
     116           0 :   HiddenValleyFragmentation() : doHVfrag(false), hvFlavSelPtr(NULL),
     117           0 :     hvPTSelPtr(NULL), hvZSelPtr(NULL) {}
     118             : 
     119             :   // Destructor.
     120           0 :   ~HiddenValleyFragmentation() { if (doHVfrag) {
     121           0 :     if (hvZSelPtr) delete hvZSelPtr; if (hvPTSelPtr) delete hvPTSelPtr;
     122           0 :     if (hvFlavSelPtr) delete hvFlavSelPtr;} }
     123             : 
     124             :   // Initialize and save pointers.
     125             :   bool init(Info* infoPtrIn, Settings& settings,
     126             :     ParticleData* particleDataPtrIn, Rndm* rndmPtrIn);
     127             : 
     128             :   // Do the fragmentation: driver routine.
     129             :   bool fragment(Event& event);
     130             : 
     131             : private:
     132             : 
     133             :   // Pointer to various information on the generation.
     134             :   Info*         infoPtr;
     135             : 
     136             :   // Pointer to the particle data table.
     137             :   ParticleData* particleDataPtr;
     138             : 
     139             :   // Pointer to the random number generator.
     140             :   Rndm*         rndmPtr;
     141             : 
     142             :   // Data mambers.
     143             :   bool          doHVfrag;
     144             :   int           nFlav, hvOldSize, hvNewSize;
     145             :   double        mhvMeson, mSys;
     146             :   vector<int>   ihvParton;
     147             : 
     148             :   // Configuration of colour-singlet systems.
     149             :   ColConfig     hvColConfig;
     150             : 
     151             :   // Temporary event record for the Hidden Valley system.
     152             :   Event         hvEvent;
     153             : 
     154             :   // The generator class for Hidden Valley string fragmentation.
     155             :   StringFragmentation hvStringFrag;
     156             : 
     157             :   // The generator class for special low-mass HV string fragmentation.
     158             :   MiniStringFragmentation hvMinistringFrag;
     159             : 
     160             :   // Pointers to classes for flavour, pT and z generation in HV sector.
     161             :   StringFlav*   hvFlavSelPtr;
     162             :   StringPT*     hvPTSelPtr;
     163             :   StringZ*      hvZSelPtr;
     164             : 
     165             :   // Extract HV-particles from event to hvEvent. Assign HV-colours.
     166             :   bool extractHVevent(Event& event);
     167             : 
     168             :   // Collapse of low-mass system to one HV-meson.
     169             :   bool collapseToMeson();
     170             : 
     171             :   // Insert HV particles from hvEvent to event.
     172             :   bool insertHVevent(Event& event);
     173             : 
     174             : };
     175             : 
     176             : //==========================================================================
     177             : 
     178             : } // end namespace Pythia8
     179             : 
     180             : #endif // Pythia8_HiddenValleyFragmentation_H

Generated by: LCOV version 1.11