Project
Loading...
Searching...
No Matches
PrimaryGenerator.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_PRIMARYGENERATOR_H_
15#define ALICEO2_EVENTGEN_PRIMARYGENERATOR_H_
16
17#include "FairPrimaryGenerator.h"
19#include "SimConfig/SimConfig.h"
20
21class TFile;
22class TTree;
23class TString;
24
25namespace o2
26{
27namespace dataformats
28{
29class MCEventHeader;
30}
31} // namespace o2
32
33namespace o2
34{
35namespace eventgen
36{
37
44{
45
46 public:
48 PrimaryGenerator() = default;
50 ~PrimaryGenerator() override;
51
59 Bool_t GenerateEvent(FairGenericStack* pStack) override;
60
62 void AddTrack(Int_t pdgid, Double_t px, Double_t py, Double_t pz,
63 Double_t vx, Double_t vy, Double_t vz,
64 Int_t mother1 = -1, Int_t mother2 = -1,
65 Int_t daughter1 = -1, Int_t daughter2 = -1,
66 Bool_t wanttracking = true,
67 Double_t e = -9e9, Double_t tof = 0.,
68 Double_t weight = 0., TMCProcess proc = kPPrimary, Int_t generatorStatus = 0);
69
71 void AddTrack(Int_t pdgid, Double_t px, Double_t py, Double_t pz,
72 Double_t vx, Double_t vy, Double_t vz,
73 Int_t parent = -1, Bool_t wanttracking = true,
74 Double_t e = -9e9, Double_t tof = 0.,
75 Double_t weight = 0., TMCProcess proc = kPPrimary) override;
76
78 Bool_t Init() override;
79
81 Bool_t embedInto(TString fname);
82
84 void setEmbedIndex(int idx) { mEmbedIndex = idx; }
85
86 void setExternalVertexForNextEvent(double x, double y, double z);
87
88 // sets the vertex mode; if mode is kCCDB, a valid MeanVertexObject pointer must be given at the same time
90 // if we apply vertex smearing
91 void setApplyVertex(bool onoff) { mApplyVertex = onoff; }
92
93 // set identifier and description
94 void setGeneratorId(int id) { mGeneratorId = id; }
95 void setGeneratorDescription(std::string const& desc) { mGeneratorDescription = desc; }
96
97 protected:
99 // PrimaryGenerator(const PrimaryGenerator&) = default;
101 // PrimaryGenerator& operator=(const PrimaryGenerator&) = default;
102
104 void setInteractionDiamond(const Double_t* xyz, const Double_t* sigmaxyz);
105
108
111
112 float mExternalVertexX = 0, mExternalVertexY = 0, mExternalVertexZ = 0; // holding vertex fixed from outside
113 bool mHaveExternalVertex = false; // true of user fixed external vertex from outside for next event
114
116 TFile* mEmbedFile = nullptr;
117 TTree* mEmbedTree = nullptr;
118 Int_t mEmbedEntries = 0;
119 Int_t mEmbedIndex = 0;
121
122 bool mApplyVertex = true;
124 std::unique_ptr<o2::dataformats::MeanVertexObject> mMeanVertex;
125
126 private:
127 void setGeneratorInformation();
128 // generator identifier and description
129 int mGeneratorId = -1;
130 std::string mGeneratorDescription;
131
132 ClassDefOverride(PrimaryGenerator, 3);
133
134};
136/*****************************************************************/
137/*****************************************************************/
138
139} /* namespace eventgen */
140} /* namespace o2 */
141
142#endif /* ALICEO2_EVENTGEN_PRIMARYGENERATOR_H_ */
void setGeneratorDescription(std::string const &desc)
Bool_t GenerateEvent(FairGenericStack *pStack) override
void setVertexMode(o2::conf::VertexMode const &mode, o2::dataformats::MeanVertexObject const *obj=nullptr)
void setInteractionVertex(const o2::dataformats::MCEventHeader *event)
void setEmbedIndex(int idx)
sets the embedding index
void AddTrack(Int_t pdgid, Double_t px, Double_t py, Double_t pz, Double_t vx, Double_t vy, Double_t vz, Int_t mother1=-1, Int_t mother2=-1, Int_t daughter1=-1, Int_t daughter2=-1, Bool_t wanttracking=true, Double_t e=-9e9, Double_t tof=0., Double_t weight=0., TMCProcess proc=kPPrimary, Int_t generatorStatus=0)
void setInteractionDiamond(const Double_t *xyz, const Double_t *sigmaxyz)
void setExternalVertexForNextEvent(double x, double y, double z)
o2::dataformats::MCEventHeader * mEmbedEvent
std::unique_ptr< o2::dataformats::MeanVertexObject > mMeanVertex
struct _cl_event * event
Definition glcorearb.h:2982
GLint GLenum GLint x
Definition glcorearb.h:403
GLenum mode
Definition glcorearb.h:266
GLuint GLuint GLfloat weight
Definition glcorearb.h:5477
GLuint id
Definition glcorearb.h:650
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...