herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MPIHandler.h
1// -*- C++ -*-
2//
3// MPIHandler.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_MPIHandler_H
10#define HERWIG_MPIHandler_H
11//
12// This is the declaration of the MPIHandler class.
13//
14#include "ThePEG/Interface/Interfaced.h"
15#include "ThePEG/Handlers/StandardEventHandler.h"
16#include "ThePEG/Repository/EventGenerator.h"
17#include "Herwig/PDT/StandardMatchers.h"
18#include "Herwig/Utilities/GSLBisection.h"
19//#include "Herwig/Utilities/GSLMultiRoot.h"
20#include "Herwig/Utilities/GSLIntegrator.h"
21#include "Herwig/Shower/UEBase.h"
22
23#include <cassert>
24#include "ProcessHandler.h"
25#include "MPIHandler.fh"
26
27
28namespace Herwig {
29using namespace ThePEG;
30
45class MPIHandler: public UEBase {
46
50 static const unsigned int maxScatters_ = 99;
51
55 friend struct Eikonalization;
56 friend struct TotalXSecBisection;
57 friend struct slopeAndTotalXSec;
58 friend struct slopeInt;
59 friend struct slopeBisection;
60
61public:
62
64 typedef vector<SubHdlPtr> SubHandlerList;
65
67 typedef vector<CutsPtr> CutsList;
68
70 typedef vector<ProHdlPtr> ProcessHandlerList;
71
73 typedef vector<CrossSection> XSVector;
74
76 typedef pair<unsigned int, unsigned int> MPair;
77
82 PtOfQCDProc_(-1.0*GeV), Ptmin_(-1.0*GeV),
83 hardXSec_(0*millibarn), softXSec_(0*millibarn),
84 totalXSecExp_(0*millibarn),
85 softMu2_(ZERO), beta_(100.0/GeV2),
87 colourDisrupt_(0.0), softInt_(true), twoComp_(true),
88 DLmode_(2), avgNhard_(0.0), avgNsoft_(0.0),
90 EEparamB_(37.5*GeV), refScale_(7000.*GeV),
91 pT0_(2.875*GeV), b_(0.3101), offset_(622.204*GeV) {}
92
93public:
94
97
98 /*
99 * @return true if for this beam setup MPI can be generated
100 */
101 virtual bool beamOK() const;
102
106 virtual bool softInt() const {return softInt_;}
107
113 virtual unsigned int softMultiplicity() const {return softMult_;}
114
119 virtual unsigned int multiplicity(unsigned int sel=0);
120
127 virtual tStdXCombPtr generate(unsigned int sel=0);
129
130
138
144 void persistentInput(PersistentIStream & is, int version);
146
153 static void Init();
154
159 virtual void initialize();
160
165 virtual void finalize();
166
171 virtual void clean();
172
176 void statistics() const;
177
183 int statLevel() const {return eventHandler()->statLevel();}
184
188 CrossSection hardXSec() const { return hardXSec_; }
189
193 CrossSection softXSec() const { return softXSec_; }
194
198 CrossSection inelasticXSec() const { return inelXSec_; }
199
204 CrossSection nonDiffractiveXSec() const {
205 return (1.-diffratio_)*inelXSec_;
206 }
207
214 CrossSection diffractiveXSec() const {
215 return diffratio_*inelXSec_;
216 }
217
218
221
231
235 static const MPIHandler * currentHandler() {
236 return currentHandler_;
237 }
238
242 virtual int Algorithm() const {return algorithm_;}
243
247 virtual Energy Ptmin() const {
248 if(Ptmin_ > ZERO)
249 return Ptmin_;
250 else
251 throw Exception() << "MPIHandler::Ptmin called without initialize before"
253 }
254
258 virtual InvEnergy2 beta() const {
259 if(beta_ != 100.0/GeV2)
260 return beta_;
261 else
262 throw Exception() << "MPIHandler::beta called without initialization"
264 }
265
270 virtual Energy PtForVeto() const {return PtOfQCDProc_;}
271
276 virtual unsigned int additionalHardProcs() const {return numSubProcs_-1;}
277
282 virtual double colourDisrupt() const {return colourDisrupt_;}
283
284protected:
285
292 virtual IBPtr clone() const;
293
298 virtual IBPtr fullclone() const;
300
301private:
302
307 const {return theSubProcesses;}
308
313
317 const CutsList & cuts() const {return theCuts;}
318
322 CutsList & cuts() {return theCuts;}
323
328 const {return theProcessHandlers;}
329
334
335
340 void Probs(XSVector UEXSecs);
341
346 void MultDistribution(string filename) const;
347
356 InvArea OverlapFunction(Length b, Energy2 mu2=ZERO) const;
357
362 double poisson(Length b, CrossSection sigma,
363 unsigned int N, Energy2 mu2=ZERO) const;
364
370 CrossSection totalXSecExp() const;
371
378 CrossSection totalXSecDiff(CrossSection softXSec,
379 Energy2 softMu2=ZERO) const;
380
387 InvEnergy2 slopeDiff(CrossSection softXSec,
388 Energy2 softMu2=ZERO) const;
389
395 InvEnergy2 slopeExp() const;
396
397
402
403
404private:
405
410 MPIHandler & operator=(const MPIHandler &) = delete;
411
419
424
429
434
440
446 unsigned int softMult_;
447
452
461
468
472 Energy Ptmin_;
473
477 CrossSection hardXSec_;
478
482 CrossSection softXSec_;
483
487 CrossSection inelXSec_;
488
495 CrossSection totalXSecExp_;
496
501 Energy2 softMu2_;
502
507 InvEnergy2 beta_;
513
517 Energy2 invRadius_;
518
522 unsigned int numSubProcs_;
523
531
537
543
548 unsigned int DLmode_;
549
553 double avgNhard_;
554
558 double avgNsoft_;
559
564
570
574 Energy EEparamA_;
575 Energy EEparamB_;
576 Energy refScale_;
577 Energy pT0_;
578 double b_;
579 Energy offset_;
580
584 double diffratio_=0.2;
585
586protected:
587
595 class InitError: public Exception {};
596
599};
600
601}
602
603namespace Herwig {
604
611 struct slopeAndTotalXSec : public GSLHelper<CrossSection, CrossSection> {
612
613 public:
614
618 slopeAndTotalXSec(tcMPIHPtr handler): handler_(handler) {}
619
621 typedef Energy2 ArgType2;
622
624 typedef InvEnergy2 ValType2;
625
630 CrossSection f1(ArgType softXSec, ArgType2 softMu2) const {
631 return handler_->totalXSecDiff(softXSec, softMu2);
632 }
633
638 InvEnergy2 f2(ArgType softXSec, ArgType2 softMu2) const {
639 return handler_->slopeDiff(softXSec, softMu2);
640 }
641
643 virtual ValType vUnit() const {return 1.0*millibarn;}
644
646 virtual ArgType aUnit() const {return 1.0*millibarn;}
647
649 ValType2 vUnit2() const {return 1.0/GeV2;}
650
652 ArgType2 aUnit2() const {return GeV2;}
653
654 private:
655
659 tcMPIHPtr handler_;
660
661 };
662
667 struct betaBisection : public GSLHelper<Energy2, InvEnergy2>{
668 public:
676 betaBisection(CrossSection soft, DiffXSec dsig, Energy ptmin)
677 : softXSec_(soft), dsig_(dsig), ptmin_(ptmin) {}
678
682 virtual Energy2 operator ()(InvEnergy2 beta) const
683 {
684 if( fabs(beta*GeV2) < 1.E-4 )
685 beta = (beta > ZERO) ? 1.E-4/GeV2 : -1.E-4/GeV2;
686
687 return (exp(beta*sqr(ptmin_)) - 1.0)/beta - softXSec_/dsig_;
688 }
689
691 virtual ValType vUnit() const {return 1.0*GeV2;}
692
694 virtual ArgType aUnit() const {return 1.0/GeV2;}
695
696 private:
697
699 CrossSection softXSec_;
700
702 DiffXSec dsig_;
703
705 Energy ptmin_;
706 };
707
713 struct slopeBisection : public GSLHelper<InvEnergy2, Energy2> {
714 public:
716 slopeBisection(tcMPIHPtr handler) : handler_(handler) {}
717
723 InvEnergy2 operator ()(Energy2 arg) const;
724
726 CrossSection softXSec() const {return softXSec_;}
727
728 private:
730 tcMPIHPtr handler_;
732 mutable CrossSection softXSec_;
733 };
734
740 struct TotalXSecBisection : public GSLHelper<CrossSection, CrossSection> {
741 public:
742
748 TotalXSecBisection(tcMPIHPtr handler, Energy2 softMu2=ZERO):
749 handler_(handler), softMu2_(softMu2) {}
750
755 CrossSection operator ()(CrossSection argument) const {
756 return handler_->totalXSecDiff(argument, softMu2_);
757 }
758
760 virtual ValType vUnit() const {return 1.0*millibarn;}
761
763 virtual ArgType aUnit() const {return 1.0*millibarn;}
764
765 private:
766
770 tcMPIHPtr handler_;
771
775 Energy2 softMu2_;
776
777 };
778
782 typedef decltype(mm/GeV2) LengthDiff;
783
787 struct slopeInt : public GSLHelper<LengthDiff, Length>{
788
789 public:
796 slopeInt(tcMPIHPtr handler, CrossSection hard,
797 CrossSection soft=0*millibarn, Energy2 softMu2=ZERO)
798 : handler_(handler), hardXSec_(hard),
799 softXSec_(soft), softMu2_(softMu2) {}
800
806
807 private:
808
812 tcMPIHPtr handler_;
813
817 CrossSection hardXSec_;
818
822 CrossSection softXSec_;
823
827 Energy2 softMu2_;
828
829 };
830
834 struct Eikonalization : public GSLHelper<Length, Length>{
835
850 Eikonalization(tcMPIHPtr handler, int option, CrossSection hard,
851 CrossSection soft=0*millibarn, Energy2 softMu2=ZERO)
852 : theHandler(handler), theoption(option), hardXSec_(hard),
853 softXSec_(soft), softMu2_(softMu2) {}
854
858 Length operator ()(Length argument) const;
859
860 private:
864 tcMPIHPtr theHandler;
865
871
875 CrossSection hardXSec_;
876
880 CrossSection softXSec_;
881
885 Energy2 softMu2_;
886
887 };
888}
889
890#endif /* HERWIG_MPIHandler_H */
This class is responsible for generating additional semi hard partonic interactions.
Definition: MPIHandler.h:45
CrossSection nonDiffractiveXSec() const
Return the non-diffractive cross section assumed by the model.
Definition: MPIHandler.h:204
double avgNsoft_
Variable to store the average soft multiplicity.
Definition: MPIHandler.h:558
const SubHandlerList & subProcesses() const
Access the list of sub-process handlers.
Definition: MPIHandler.h:306
InvEnergy2 beta_
slope to the non-perturbative pt spectrum: .
Definition: MPIHandler.h:507
static void Init()
The standard Init function used to initialize the interfaces.
Energy EEparamA_
Parameters for the energy extrapolation formula.
Definition: MPIHandler.h:574
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static const MPIHandler * currentHandler()
Return the current handler.
Definition: MPIHandler.h:235
MPIHandler & operator=(const MPIHandler &)=delete
The assignment operator is private and must never be called.
virtual void initialize()
Initialize this Multiple Interaction handler and all related objects needed to generate additional ev...
vector< ProHdlPtr > ProcessHandlerList
A vector of ProcessHandlers.
Definition: MPIHandler.h:70
virtual bool beamOK() const
Return true or false depending on the generator setup.
CutsList theCuts
The kinematical cuts used for this collision handler.
Definition: MPIHandler.h:428
pair< unsigned int, unsigned int > MPair
A pair of multiplicities: hard, soft.
Definition: MPIHandler.h:76
InvEnergy2 slopeExp() const
Returns the value of the elastic slope for the current CMenergy.
tEHPtr theHandler
A pointer to the EventHandler that calls us.
Definition: MPIHandler.h:418
vector< int > additionalMultiplicities_
Variable to store the multiplicity of the second hard process.
Definition: MPIHandler.h:451
virtual InvEnergy2 beta() const
Return the slope of the soft pt spectrum as calculated.
Definition: MPIHandler.h:258
Energy2 invRadius_
Inverse hadron Radius squared .
Definition: MPIHandler.h:517
SubHandlerList & subProcesses()
Access the list of sub-process handlers.
Definition: MPIHandler.h:312
ProcessHandlerList theProcessHandlers
List of ProcessHandler used to sample different processes independently.
Definition: MPIHandler.h:433
virtual bool softInt() const
Return true or false depending on whether soft interactions are enabled.
Definition: MPIHandler.h:106
void Probs(XSVector UEXSecs)
Method to calculate the individual probabilities for N scatters in the event.
virtual unsigned int multiplicity(unsigned int sel=0)
Sample from the pretabulated multiplicity distribution.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
int algorithm_
Switch to be set from outside to determine the algorithm used for UE activity.
Definition: MPIHandler.h:512
virtual Energy Ptmin() const
Return the ptmin parameter of the model.
Definition: MPIHandler.h:247
ProcessHandlerList & processHandlers()
Access the list of sub-process handlers.
Definition: MPIHandler.h:333
const ProcessHandlerList & processHandlers() const
Access the list of sub-process handlers.
Definition: MPIHandler.h:327
virtual void clean()
Clean up the XCombs from our subprocesses after each event.
CrossSection inelasticXSec() const
Return the inelastic cross section.
Definition: MPIHandler.h:198
CrossSection totalXSecExp_
Variable to store the total pp cross section (assuming rho=0!) as measured at LHC.
Definition: MPIHandler.h:495
Selector< MPair > theMultiplicities
A ThePEG::Selector where the individual Probabilities P_N are stored and the actual Multiplicities ca...
Definition: MPIHandler.h:439
CrossSection totalXSecExp() const
Returns the total cross section for the current CMenergy.
static const unsigned int maxScatters_
Maximum number of scatters.
Definition: MPIHandler.h:50
vector< CrossSection > XSVector
A vector of cross sections.
Definition: MPIHandler.h:73
virtual unsigned int softMultiplicity() const
Get the soft multiplicity from the pretabulated multiplicity distribution.
Definition: MPIHandler.h:113
int identicalToUE_
Variable to store the information, which process is identical to the UE one (QCD dijets).
Definition: MPIHandler.h:460
virtual int Algorithm() const
Return theAlgorithm.
Definition: MPIHandler.h:242
CutsList & cuts()
Access the list of cuts.
Definition: MPIHandler.h:322
unsigned int DLmode_
Switch to determine which Donnachie & Landshoff parametrization should be used.
Definition: MPIHandler.h:548
double colourDisrupt_
Variable to store the relative number of colour disrupted connections to additional subprocesses.
Definition: MPIHandler.h:530
double avgNhard_
Variable to store the average hard multiplicity.
Definition: MPIHandler.h:553
virtual tStdXCombPtr generate(unsigned int sel=0)
Select a StandardXComb according to it's weight.
InvEnergy2 slopeDiff(CrossSection softXSec, Energy2 softMu2=ZERO) const
Difference of the calculated elastic slope and the experimental one from slopeExp.
unsigned int softMult_
Variable to store the soft multiplicity generated for a event.
Definition: MPIHandler.h:446
CrossSection totalXSecDiff(CrossSection softXSec, Energy2 softMu2=ZERO) const
Difference of the calculated total cross section and the experimental one from totalXSecExp.
virtual IBPtr clone() const
Make a simple clone of this object.
CrossSection inelXSec_
Variable to store the inelastic cross section.
Definition: MPIHandler.h:487
Energy Ptmin_
Variable to store the parameter ptmin.
Definition: MPIHandler.h:472
Energy2 softMu2_
Variable to store the soft radius, that is calculated during initialization for the two-component mod...
Definition: MPIHandler.h:501
unsigned int numSubProcs_
Member variable to store the actual number of separate SubProcesses.
Definition: MPIHandler.h:522
void statistics() const
Write out accumulated statistics about integrated cross sections.
CrossSection hardXSec_
Variable to store the hard cross section above ptmin.
Definition: MPIHandler.h:477
vector< CutsPtr > CutsList
A vector of Cuts.
Definition: MPIHandler.h:67
tEHPtr eventHandler() const
Return the ThePEG::EventHandler assigned to this handler.
Definition: MPIHandler.h:230
SubHandlerList theSubProcesses
The list of SubProcessHandlers.
Definition: MPIHandler.h:423
CrossSection diffractiveXSec() const
Return the diffractive cross section assumed by the model.
Definition: MPIHandler.h:214
unsigned int energyExtrapolation_
Flag to store whether to calculate the minimal UE pt according to an extrapolation formula or whether...
Definition: MPIHandler.h:569
CrossSection softXSec_
Variable to store the final soft cross section below ptmin.
Definition: MPIHandler.h:482
Energy PtOfQCDProc_
Variable to store the minimal pt of the process that is identical to the UE one.
Definition: MPIHandler.h:467
void MultDistribution(string filename) const
Debug method to check the individual probabilities.
virtual unsigned int additionalHardProcs() const
Return the number of additional "hard" processes ( = multiple parton scattering)
Definition: MPIHandler.h:276
CrossSection softXSec() const
Return the soft cross section below ptmin.
Definition: MPIHandler.h:193
double poisson(Length b, CrossSection sigma, unsigned int N, Energy2 mu2=ZERO) const
Method to calculate the poisson probability for expectation value , and multiplicity N.
InvArea OverlapFunction(Length b, Energy2 mu2=ZERO) const
Return the value of the Overlap function A(b) for a given impact parameter b.
virtual Energy PtForVeto() const
Return the pt Cutoff of the Interaction that is identical to the UE one.
Definition: MPIHandler.h:270
double diffratio_
Parameters to set the fraction of diffractive cross section in the inelastic cross section.
Definition: MPIHandler.h:584
vector< SubHdlPtr > SubHandlerList
A vector of SubProcessHandlers.
Definition: MPIHandler.h:64
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
bool softInt_
Flag to store whether soft interactions, i.e.
Definition: MPIHandler.h:536
void overrideUECuts()
Calculate the minimal transverse momentum from the extrapolation.
static MPIHandler * currentHandler_
The current handler.
Definition: MPIHandler.h:563
int statLevel() const
The level of statistics.
Definition: MPIHandler.h:183
virtual void finalize()
Finalize this Multiple Interaction handler and all related objects needed to generate additional even...
MPIHandler()
The default constructor.
Definition: MPIHandler.h:81
CrossSection hardXSec() const
Return the hard cross section above ptmin.
Definition: MPIHandler.h:188
const CutsList & cuts() const
Access the list of cuts.
Definition: MPIHandler.h:317
virtual double colourDisrupt() const
Return the fraction of colour disrupted connections to the suprocesses.
Definition: MPIHandler.h:282
bool twoComp_
Flag to steer wheather the soft part has a different radius, that will be dynamically fixed.
Definition: MPIHandler.h:542
Abstract base class used to minimize the dependence between MPIHandler and all Shower classes.
Definition: UEBase.h:25
-*- C++ -*-
decltype(mm/GeV2) LengthDiff
Typedef for derivative of the length.
Definition: MPIHandler.h:782
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO
ThePEG::Ptr< EventHandler >::transient_pointer tEHPtr
constexpr auto sqr(const T &x) -> decltype(x *x)
A struct for the eikonalization of the inclusive cross section.
Definition: MPIHandler.h:834
Energy2 softMu2_
The inv radius^2 of the soft interactions.
Definition: MPIHandler.h:885
Eikonalization(tcMPIHPtr handler, int option, CrossSection hard, CrossSection soft=0 *millibarn, Energy2 softMu2=ZERO)
The constructor.
Definition: MPIHandler.h:850
CrossSection hardXSec_
The hard cross section to be eikonalized.
Definition: MPIHandler.h:875
int theoption
A flag to switch between the calculation of total and inelastic cross section or calculations for the...
Definition: MPIHandler.h:870
CrossSection softXSec_
The soft cross section to be eikonalized.
Definition: MPIHandler.h:880
Length operator()(Length argument) const
Get the function value.
tcMPIHPtr theHandler
Pointer to the Handler that calls this integrand.
Definition: MPIHandler.h:864
from, which can then be used by the GSL algorithms that need a pointer to a function and don't know a...
Definition: GSLHelper.h:32
CrossSection ArgType
Typedef for Agrument type.
Definition: GSLHelper.h:49
CrossSection ValType
Typedef for Value type.
Definition: GSLHelper.h:54
A struct for the root finding that is necessary to determine the soft cross section that is needed to...
Definition: MPIHandler.h:740
tcMPIHPtr handler_
The handler.
Definition: MPIHandler.h:770
virtual ValType vUnit() const
provide the actual units of use
Definition: MPIHandler.h:760
TotalXSecBisection(tcMPIHPtr handler, Energy2 softMu2=ZERO)
Constructor.
Definition: MPIHandler.h:748
virtual ArgType aUnit() const
otherwise rounding errors may get significant
Definition: MPIHandler.h:763
CrossSection operator()(CrossSection argument) const
operator to return the cross section
Definition: MPIHandler.h:755
A struct for the root finding that is necessary to determine the slope of the soft pt spectrum to mat...
Definition: MPIHandler.h:667
Energy ptmin_
pt cutoff
Definition: MPIHandler.h:705
virtual Energy2 operator()(InvEnergy2 beta) const
Operator that is used inside the GSLBisection class.
Definition: MPIHandler.h:682
CrossSection softXSec_
soft cross section
Definition: MPIHandler.h:699
virtual ValType vUnit() const
provide the actual units of use
Definition: MPIHandler.h:691
virtual ArgType aUnit() const
provide the actual units of use
Definition: MPIHandler.h:694
betaBisection(CrossSection soft, DiffXSec dsig, Energy ptmin)
Constructor.
Definition: MPIHandler.h:676
DiffXSec dsig_
dsigma/dp_T^2 at ptmin
Definition: MPIHandler.h:702
A struct for the 2D root finding that is necessary to determine the soft cross section and the soft r...
Definition: MPIHandler.h:611
tcMPIHPtr handler_
Pointer to the handler.
Definition: MPIHandler.h:659
virtual ArgType aUnit() const
otherwise rounding errors may get significant
Definition: MPIHandler.h:646
ValType2 vUnit2() const
provide the actual units of use
Definition: MPIHandler.h:649
virtual ValType vUnit() const
provide the actual units of use
Definition: MPIHandler.h:643
slopeAndTotalXSec(tcMPIHPtr handler)
Constructor.
Definition: MPIHandler.h:618
InvEnergy2 ValType2
second value type
Definition: MPIHandler.h:624
InvEnergy2 f2(ArgType softXSec, ArgType2 softMu2) const
second element of the vector like function to find root for
Definition: MPIHandler.h:638
CrossSection f1(ArgType softXSec, ArgType2 softMu2) const
first element of the vector like function to find root for
Definition: MPIHandler.h:630
Energy2 ArgType2
second argument type
Definition: MPIHandler.h:621
ArgType2 aUnit2() const
otherwise rounding errors may get significant
Definition: MPIHandler.h:652
A struct for the root finding that is necessary to determine the soft cross section and soft mu2 that...
Definition: MPIHandler.h:713
CrossSection softXSec() const
Return the soft cross section that has been calculated.
Definition: MPIHandler.h:726
InvEnergy2 operator()(Energy2 arg) const
Return the difference of the calculated elastic slope to the experimental one for a given value of th...
slopeBisection(tcMPIHPtr handler)
Constructor.
Definition: MPIHandler.h:716
tcMPIHPtr handler_
const pointer to the MPIHandler to give access to member functions.
Definition: MPIHandler.h:730
CrossSection softXSec_
soft cross section that is determined on the fly.
Definition: MPIHandler.h:732
A struct for the integrand for the slope.
Definition: MPIHandler.h:787
tcMPIHPtr handler_
Pointer to the Handler that calls this integrand.
Definition: MPIHandler.h:812
slopeInt(tcMPIHPtr handler, CrossSection hard, CrossSection soft=0 *millibarn, Energy2 softMu2=ZERO)
Constructor.
Definition: MPIHandler.h:796
CrossSection softXSec_
The soft cross section to be eikonalized.
Definition: MPIHandler.h:822
ValType operator()(ArgType arg) const
Operator to return the answer.
CrossSection hardXSec_
The hard cross section to be eikonalized.
Definition: MPIHandler.h:817
Energy2 softMu2_
The inv radius^2 of the soft interactions.
Definition: MPIHandler.h:827