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
83 void setExternalVertexForNextEvent(double x, double y, double z);
84
85 // sets the vertex mode; if mode is kCCDB, a valid MeanVertexObject pointer must be given at the same time
87 // if we apply vertex smearing
88 void setApplyVertex(bool onoff) { mApplyVertex = onoff; }
89
90 // set identifier and description
91 void setGeneratorId(int id) { mGeneratorId = id; }
92 void setGeneratorDescription(std::string const& desc) { mGeneratorDescription = desc; }
93
94 protected:
96 // PrimaryGenerator(const PrimaryGenerator&) = default;
98 // PrimaryGenerator& operator=(const PrimaryGenerator&) = default;
99
101 void setInteractionDiamond(const Double_t* xyz, const Double_t* sigmaxyz);
102
105
108
109 float mExternalVertexX = 0, mExternalVertexY = 0, mExternalVertexZ = 0; // holding vertex fixed from outside
110 bool mHaveExternalVertex = false; // true of user fixed external vertex from outside for next event
111
113 TFile* mEmbedFile = nullptr;
114 TTree* mEmbedTree = nullptr;
115 Int_t mEmbedEntries = 0;
116 Int_t mEmbedIndex = 0;
118
119 bool mApplyVertex = true;
121 std::unique_ptr<o2::dataformats::MeanVertexObject> mMeanVertex;
122
123 private:
124 void setGeneratorInformation();
125 // generator identifier and description
126 int mGeneratorId = -1;
127 std::string mGeneratorDescription;
128
129 ClassDefOverride(PrimaryGenerator, 3);
130
131};
133/*****************************************************************/
134/*****************************************************************/
135
136} /* namespace eventgen */
137} /* namespace o2 */
138
139#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 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 ...