cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
N/A
Central exclusive processes event generator
Toggle main menu visibility
Main Page
Related Pages
Packages
Package List
Package Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
x
y
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
x
y
Variables
Typedefs
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Enumerations
Enumerator
b
c
d
e
g
h
i
l
m
n
p
r
t
u
w
x
y
z
Related Symbols
d
g
h
o
u
v
Files
File List
File Members
All
_
a
b
c
d
e
h
o
p
r
s
Functions
Variables
Macros
_
b
c
d
e
p
r
s
▼
CepGen
Reference manual
Bibliography
►
Packages
►
Classes
▼
Files
▼
File List
▼
include
▼
CepGen
►
Cards
►
Core
►
Event
►
EventFilter
►
FormFactors
►
Integration
►
Modules
►
PartonFluxes
►
Physics
►
Process
►
StructureFunctions
▼
Utils
►
AbortHandler.h
►
Algebra.h
►
ArgumentsParser.h
►
Caller.h
►
Collections.h
►
Derivator.h
►
DocumentationGenerator.h
►
Drawable.h
►
Drawer.h
►
Environment.h
►
EventUtils.h
►
Filesystem.h
►
Functional.h
►
FunctionWrapper.h
►
Graph.h
►
GridDrawer.h
►
GridHandler.h
►
GSLFunctionWrapper.h
►
GSLMonteFunctionWrapper.h
►
Hasher.h
►
Histogram.h
►
Limits.h
►
Logger.h
►
Math.h
►
Message.h
►
Piper.h
►
ProcessVariablesAnalyser.h
►
ProgressBar.h
►
RandomGenerator.h
►
StreamCollector.h
►
String.h
►
Test.h
►
TimeKeeper.h
►
Timer.h
►
Value.h
►
Generator.h
►
Version.h
►
CepGenBoost
►
CepGenHepMC2
►
CepGenHepMC3
►
CepGenHerwig6
►
CepGenMadGraph
►
CepGenPythia6
►
CepGenPythia8
►
CepGenPython
►
CepGenRoot
►
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
Piper.h
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2022-2024 Laurent Forthomme
4
*
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#ifndef CepGen_Utils_Piper_h
20
#define CepGen_Utils_Piper_h
21
22
#include <memory>
23
#include <string>
24
#include <vector>
25
26
namespace
cepgen::utils
{
28
class
Piper
{
29
public
:
32
explicit
Piper
(
const
std::string& command) : file_(popen(command.c_str(),
"w"
)) {}
33
35
struct
Commands
: std::vector<std::string> {
36
using
std::vector<std::string>::vector;
38
inline
Commands
&
operator+=
(
const
std::vector<std::string>& oth) {
39
std::copy(oth.begin(), oth.end(), std::back_inserter(*
this
));
40
return
*
this
;
41
}
38
inline
Commands
&
operator+=
(
const
std::vector<std::string>& oth) {
…
}
43
inline
Commands
&
operator+=
(
const
std::string& str) {
44
emplace_back(str);
45
return
*
this
;
46
}
43
inline
Commands
&
operator+=
(
const
std::string& str) {
…
}
48
inline
friend
std::ostream&
operator<<
(std::ostream& os,
const
Commands
& cmds) {
49
std::string sep;
50
os <<
"{"
;
51
for
(
const
auto
& cmd : cmds)
52
os << sep << cmd, sep =
"\n"
;
53
return
os <<
"}"
;
54
}
48
inline
friend
std::ostream&
operator<<
(std::ostream& os,
const
Commands
& cmds) {
…
};
55
};
35
struct
Commands
: std::vector<std::string> {
…
};
57
inline
const
Piper
&
execute
(
const
Commands
& cmds)
const
{
58
for
(
const
auto
& cmd : cmds)
59
fputs((cmd +
"\n"
).c_str(), file_.get());
60
return
*
this
;
61
}
57
inline
const
Piper
&
execute
(
const
Commands
& cmds)
const
{
…
}
62
63
private
:
64
struct
FILEDeleter {
65
void
operator()(FILE* file)
const
noexcept
{ pclose(file); }
66
};
67
const
std::unique_ptr<FILE, FILEDeleter> file_;
68
};
28
class
Piper
{
…
};
69
}
// namespace cepgen::utils
70
71
#endif
cepgen::utils::Piper
External command piping utility.
Definition
Piper.h:28
cepgen::utils::Piper::execute
const Piper & execute(const Commands &cmds) const
Execute a chain of commands.
Definition
Piper.h:57
cepgen::utils::Piper::Piper
Piper(const std::string &command)
Start a piped command.
Definition
Piper.h:32
cepgen::utils
Collection of utilities.
Definition
RunParameters.h:33
cepgen::utils::Piper::Commands
A collection of commands to pipe to the session.
Definition
Piper.h:35
cepgen::utils::Piper::Commands::operator+=
Commands & operator+=(const std::string &str)
Append a command at the end of the commands block.
Definition
Piper.h:43
cepgen::utils::Piper::Commands::operator+=
Commands & operator+=(const std::vector< std::string > &oth)
Append a set of commands to the end of the commands block.
Definition
Piper.h:38
cepgen::utils::Piper::Commands::operator<<
friend std::ostream & operator<<(std::ostream &os, const Commands &cmds)
Commands printout utility.
Definition
Piper.h:48
include
CepGen
Utils
Piper.h
Generated on Tue Apr 22 2025 for CepGen by
1.10.0