Project
Loading...
Searching...
No Matches
GeneratorHepMC.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
13
14#ifndef ALICEO2_EVENTGEN_GENERATORHEPMC_H_
15#define ALICEO2_EVENTGEN_GENERATORHEPMC_H_
16
21#include <iosfwd>
22#include <memory>
23#include <string>
24#include <vector>
25
26#ifdef GENERATORS_WITH_HEPMC3_DEPRECATED
27namespace HepMC
28{
29class Reader;
30class GenEvent;
31class FourVector;
32} // namespace HepMC
33#else
34namespace HepMC3
35{
36class Reader;
37class GenEvent;
38class FourVector;
39class GenParticle;
40} // namespace HepMC3
41#endif
42
43namespace o2
44{
45namespace conf
46{
47class SimConfig;
48}
49namespace eventgen
50{
51
52/*****************************************************************/
53/*****************************************************************/
54
56{
57
58 public:
62 GeneratorHepMC(const Char_t* name,
63 const Char_t* title = "ALICEo2 HepMC Generator");
65 ~GeneratorHepMC() override;
66
68 Bool_t Init() override;
69
74 void setup(const GeneratorFileOrCmdParam& param0,
75 const HepMCGenConfig& param,
76 const conf::SimConfig& config);
77 // Generator configuration from external local parameters
78 void setup(const FileOrCmdGenConfig& param0,
79 const HepMCGenConfig& param,
80 const conf::SimConfig& config);
85 Bool_t generateEvent() override;
91 Bool_t importParticles() override;
92
94 void stop() override;
95
97 void setEventsToSkip(uint64_t val) { mEventsToSkip = val; };
98 void setVersion(const int& ver) { mVersion = ver; };
99
100 protected:
105
107#ifdef GENERATORS_WITH_HEPMC3_DEPRECATED
108 const HepMC::FourVector getBoostedVector(const HepMC::FourVector& vector, Double_t boost);
109#else
110 const HepMC3::FourVector getBoostedVector(const HepMC3::FourVector& vector, Double_t boost);
111#endif
112
114 void updateHeader(o2::dataformats::MCEventHeader* eventHeader) override;
116 void setupHepMC(const HepMCGenConfig& param);
118 bool makeReader();
120 void establishEventOrder();
123 bool buildIndex(const std::string& filename);
125 bool readEntry(int entry);
127 Bool_t generateEventOrdered();
128
131 typedef bool (*Select)(std::shared_ptr<const HepMC3::GenParticle>);
135
137 uint64_t mEventsToSkip = 0;
139 int mVersion = 0;
140 std::shared_ptr<HepMC3::Reader> mReader;
142 HepMC3::GenEvent* mEvent = nullptr;
144 bool mPrune;
146 std::string mCurrentFileName;
148 std::vector<int> mEventOrder;
156 int mLastEntryRead = -1;
158 bool mRandomize = false;
160 bool mRoundRobin = false;
162 bool mReshuffleOnRepeat = true;
164 unsigned int mRngSeed = 0;
166 bool mIndexedHepMC2 = false;
168 std::shared_ptr<std::istream> mIndexedStream;
170 std::vector<std::streamoff> mEventOffsets;
171
173
174};
176/*****************************************************************/
177/*****************************************************************/
178
179} // namespace eventgen
180} // namespace o2
181
182#endif /* ALICEO2_EVENTGEN_GENERATORHEPMC_H_ */
bool(* Select)(std::shared_ptr< const HepMC3::GenParticle >)
void updateHeader(o2::dataformats::MCEventHeader *eventHeader) override
void setEventsToSkip(uint64_t val)
void setVersion(const int &ver)
std::vector< int > mEventOrder
std::vector< std::streamoff > mEventOffsets
void setupHepMC(const HepMCGenConfig &param)
const HepMC3::FourVector getBoostedVector(const HepMC3::FourVector &vector, Double_t boost)
std::shared_ptr< std::istream > mIndexedStream
GeneratorHepMC & operator=(const GeneratorHepMC &)
GeneratorHepMC(const GeneratorHepMC &)
void setup(const GeneratorFileOrCmdParam &param0, const HepMCGenConfig &param, const conf::SimConfig &config)
std::shared_ptr< HepMC3::Reader > mReader
bool buildIndex(const std::string &filename)
ClassDefOverride(GeneratorHepMC, 2)
GLuint entry
Definition glcorearb.h:5735
GLuint const GLchar * name
Definition glcorearb.h:781
GLuint GLfloat * val
Definition glcorearb.h:1582
GLenum GLfloat param
Definition glcorearb.h:271
o2::framework::RootTreeReader Reader
std::vector< InputSpec > select(char const *matcher="")
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::string filename()