herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
PairRapidityCut.h
1// -*- C++ -*-
2//
3// PairRapidityCut.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-2019 The Herwig Collaboration
5//
6// Herwig is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef Herwig_PairRapidityCut_H
10#define Herwig_PairRapidityCut_H
11//
12// This is the declaration of the PairRapidityCut class.
13//
14
15#include "ThePEG/Cuts/TwoCutBase.h"
16#include "ThePEG/PDT/MatcherBase.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
32
33public:
34
39
40public:
41
50 virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
51 LorentzMomentum pi, LorentzMomentum pj,
52 bool inci = false, bool incj = false) const;
53
58 virtual Energy2 minSij(tcPDPtr , tcPDPtr ) const { return ZERO; }
59
65 virtual Energy2 minTij(tcPDPtr , tcPDPtr ) const { return ZERO; }
66
72 virtual double minDeltaR(tcPDPtr , tcPDPtr ) const { return ZERO; }
73
84 virtual Energy minKTClus(tcPDPtr , tcPDPtr ) const { return ZERO; }
85
92 virtual double minDurham(tcPDPtr , tcPDPtr ) const { return ZERO; }
93
95
99 virtual void describe() const;
100
101public:
102
103// /**
104// * Return the minimal allowed rapidity
105// */
106// double minRapidity() const { return theMinRapidity; }
107//
108// /**
109// * Return the maximal allowed rapidity
110// */
111// double maxRapidity() const { return theMaxRapidity; }
112
116 const vector<pair<double,double> >& yRanges() const { return theYRanges; }
117
121 bool sameFlavourOnly() const { return theSameFlavourOnly; }
122
126 bool oppositeSignOnly() const { return theOppositeSignOnly; }
127
132 Ptr<MatcherBase>::tptr firstMatcher() const { return theFirstMatcher; }
133 Ptr<MatcherBase>::tptr secondMatcher() const { return theSecondMatcher; }
134
135protected:
136
140 int family(long id) const;
141
142public:
143
151
157 void persistentInput(PersistentIStream & is, int version);
159
166 static void Init();
167
168protected:
169
176 virtual IBPtr clone() const;
177
182 virtual IBPtr fullclone() const;
184
185private:
186
190 string doYRange(string);
191
195 vector<pair<double,double> > theYRanges;
196
201
207
213
218 Ptr<MatcherBase>::ptr theFirstMatcher;
219 Ptr<MatcherBase>::ptr theSecondMatcher;
220
221private:
222
228
229};
230
231}
232
233#endif /* Herwig_PairRapidityCut_H */
234
This class implements a cut on the rapidity of a pair of particles.
bool oppositeSignOnly() const
Return whether cut acts on opposite-sign fermions only.
virtual double minDeltaR(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of of two outgoing partons of type pi and pj.
bool sameFlavourOnly() const
Return whether cut acts on same-flavour fermions only.
int family(long id) const
Return the family of the given PDG id number.
virtual Energy minKTClus(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the longitudinally invariant -algorithms distance measure.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
bool theSameFlavourOnly
Whether the cut is active on same-flavour fermions only (ignored for pairs not consisting of two ferm...
virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype, LorentzMomentum pi, LorentzMomentum pj, bool inci=false, bool incj=false) const
Return true if a pair of particles with type pitype and pjtype and momenta pi and pj respectively pas...
const vector< pair< double, double > > & yRanges() const
Return the rapidity ranges.
virtual Energy2 minSij(tcPDPtr, tcPDPtr) const
Return the minimum allowed squared invariant mass of two outgoing partons of type pi and pj.
virtual IBPtr clone() const
Make a simple clone of this object.
Ptr< MatcherBase >::ptr theFirstMatcher
Matchers for a pair of particles to cut on.
string doYRange(string)
Command to insert a rapidity range.
bool theOppositeSignOnly
Whether the cut is active on opposite-sign fermions only (ignored for pairs not consisting of two fer...
bool thePseudo
Whether to use pseudo rapidity instead of rapidity.
static void Init()
The standard Init function used to initialize the interfaces.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
PairRapidityCut & operator=(const PairRapidityCut &)=delete
The assignment operator is private and must never be called.
virtual double minDurham(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the Durham -algorithms distance measure.
Ptr< MatcherBase >::tptr firstMatcher() const
Return the matchers for a pair of particles to cut on.
virtual Energy2 minTij(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the negative of the squared invariant mass of an incoming parton ...
virtual void describe() const
Describe the currently active cuts in the log file.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< pair< double, double > > theYRanges
The rapidity ranges.
PairRapidityCut()
The default constructor.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr