6 #ifndef HEPMC3_WRITERCOMPRESSEDASCII_H 7 #define HEPMC3_WRITERCOMPRESSEDASCII_H 8 #include "Rivet/Tools/RivetHepMC.hh" 18 #include "HepMC3/Writer.h" 19 #include "HepMC3/GenEvent.h" 20 #include "HepMC3/GenRunInfo.h" 26 class WriterCompressedAscii :
public HepMC3::Writer {
30 typedef HepMC3::GenRunInfo GenRunInfo;
31 typedef HepMC3::FourVector FourVector;
32 typedef HepMC3::ConstGenVertexPtr ConstGenVertexPtr;
33 typedef HepMC3::ConstGenParticlePtr ConstGenParticlePtr;
37 WriterCompressedAscii(
const std::string& filename,
38 shared_ptr<GenRunInfo> run = shared_ptr<GenRunInfo>());
41 WriterCompressedAscii(std::ostream& stream,
42 shared_ptr<GenRunInfo> run = shared_ptr<GenRunInfo>());
45 ~WriterCompressedAscii();
50 void write_event(
const GenEvent& evt);
53 void write_run_info();
56 bool failed() {
return (
bool)m_file.rdstate(); }
66 m_use_integers =
false;
74 m_use_integers =
true;
81 void add_stripid(
long pdgid) {
82 m_stripid.insert(pdgid);
89 void strip(GenEvent & e);
94 void set_precision(
int prec) {
102 void set_precision_phi(
double prec) {
103 m_precision_phi = prec;
110 void set_precision_eta(
double prec) {
111 m_precision_eta = prec;
118 void set_precision_e(
double prec) {
119 m_precision_e = prec;
126 void set_precision_m(
double prec) {
127 m_precision_m = prec;
131 int precision()
const {
136 double precision_phi()
const {
137 return m_precision_phi;
141 double precision_eta()
const {
142 return m_precision_eta;
146 double precision_e()
const {
147 return m_precision_e;
151 double precision_m()
const {
152 return m_precision_m;
156 double psrap(
const FourVector & p)
const;
161 std::string escape(
const std::string& s)
const;
170 void write_position(FourVector pos);
173 void write_momentum(FourVector p);
176 void write_mass(ConstGenParticlePtr p);
181 void write_vertex(ConstGenVertexPtr v);
186 void write_particle(ConstGenParticlePtr p);
189 ConstGenVertexPtr rootvertex() {
190 vector<ConstGenParticlePtr>
beams = m_current->beams();
191 if ( beams.empty() )
return ConstGenVertexPtr();
192 return beams[0]->production_vertex();
201 std::ofstream m_file;
202 std::ostream* m_stream;
204 double m_precision_phi;
205 double m_precision_eta;
206 double m_precision_e;
207 double m_precision_m;
210 map<long,long> m_masses;
212 const GenEvent * m_current;
213 std::ostringstream os;
Definition: MC_Cent_pPb.hh:10
ParticlePair beams(const Event &e)
Get beam particles from an event.