]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA8/pythia8170/include/PartonSystems.h
Update to pythi8.170
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8170 / include / PartonSystems.h
CommitLineData
63ba5337 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