source: HiSusy/trunk/Pythia8/pythia8170/include/PartonSystems.h @ 1

Last change on this file since 1 was 1, checked in by zerwas, 11 years ago

first import of structure, PYTHIA8 and DELPHES

File size: 3.3 KB
Line 
1// PartonSystems.h is a part of the PYTHIA event generator.
2// Copyright (C) 2012 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 for the parton-level processes.
7// PartonSystem contains info on a single partonic subcollision.
8// PartonSystems describes the set of subcollisions in the whole event.
9
10#ifndef Pythia8_PartonSystems_H
11#define Pythia8_PartonSystems_H
12
13#include "PythiaStdlib.h"
14
15namespace Pythia8 {
16 
17//==========================================================================
18
19// The PartonSystem class contains info on an individual singlet.
20// Only to be used inside PartonSystems, so no private members.
21
22class PartonSystem {
23 
24public:
25
26  // Constructors.
27  PartonSystem() : iInA(0), iInB(0), sHat(0.) {iOut.reserve(10);}
28
29  // Stored quantities.
30  int         iInA, iInB; 
31  vector<int> iOut;
32  double      sHat, pTHat;
33 
34};
35 
36//==========================================================================
37
38// The PartonSystems class describes the whole set of subcollisions.
39
40class PartonSystems {
41
42public:
43
44  // Constructor.
45  PartonSystems() {systems.resize(0);}
46
47  // Reset system list to empty.
48  void clear() {systems.resize(0);}
49
50  // Add new subsystem to list; return its index. Number of subsystems.
51  int addSys() {systems.push_back(PartonSystem()); 
52    return systems.size() - 1;} 
53  int sizeSys() const {return systems.size();}
54
55  // Set, add or replace info to one system.
56  void setInA(int iSys, int iPos) {systems[iSys].iInA = iPos;} 
57  void setInB(int iSys, int iPos) {systems[iSys].iInB = iPos;} 
58  void addOut(int iSys, int iPos) {systems[iSys].iOut.push_back(iPos);} 
59  void setOut(int iSys, int iMem, int iPos) {systems[iSys].iOut[iMem] = iPos;} 
60  void replace(int iSys, int iPosOld, int iPosNew);
61  void setSHat(int iSys, double sHatIn) {systems[iSys].sHat = sHatIn;}
62  void setPTHat(int iSys, double pTHatIn) {systems[iSys].pTHat = pTHatIn;}
63
64  // Get info on one system.
65  bool hasInAB(int iSys)         const {return ( (systems[iSys].iInA > 0)   
66                                        || (systems[iSys].iInB > 0) ) ;}
67  int getInA(int iSys)           const {return systems[iSys].iInA;}
68  int getInB(int iSys)           const {return systems[iSys].iInB;}
69  int sizeOut(int iSys)          const {return systems[iSys].iOut.size();}
70  int getOut(int iSys, int iMem) const {return systems[iSys].iOut[iMem];} 
71  int sizeAll(int iSys)          const {return (hasInAB(iSys)) 
72    ? systems[iSys].iOut.size() + 2 : systems[iSys].iOut.size();}
73  int getAll(int iSys, int iMem) const; 
74  double getSHat(int iSys)       const {return systems[iSys].sHat;} 
75  double getPTHat(int iSys)      const {return systems[iSys].pTHat;} 
76
77  // Find system of given outgoing parton, optionally also incoming one.
78  int getSystemOf(int iPos, bool alsoIn = false) const; 
79
80  // Find iOut index of given system and event record index
81  int getIndexOfOut(int iSys, int iPos) const; 
82
83  // List all current systems.
84  void list(ostream& os = cout) const;
85
86private:
87 
88  // List of all separate partonic subsystems.
89  vector<PartonSystem> systems;
90
91};
92 
93//==========================================================================
94
95} // end namespace Pythia8
96
97#endif // Pythia8_PartonSystems_H
Note: See TracBrowser for help on using the repository browser.