Project
Loading...
Searching...
No Matches
AODMcProducerHelpers.h
Go to the documentation of this file.
1// Copyright 2023-2099 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
15
16#ifndef O2_AODMCPRODUCER_HELPERS
17#define O2_AODMCPRODUCER_HELPERS
23#include <string>
24#include <vector>
25#include <unordered_map>
26
72{
73//==================================================================
77template <typename Table>
79 using type = decltype(framework::FFL(std::declval<framework::TableBuilder>()
80 .cursor<Table>()));
81};
82//==================================================================
93//==================================================================
101
102//==================================================================
116bool hasKeys(o2::dataformats::MCEventHeader const& header,
117 const std::vector<std::string>& keys,
118 bool anyNotall = true);
119//--------------------------------------------------------------------
130template <typename T>
132 std::string const& key,
133 T const& def)
134{
135 if (not header.hasInfo(key))
136 return def;
137
138 bool isValid = false;
139 const T& val = header.getInfo<T>(key, isValid);
140 if (not isValid)
141 return def;
142
143 return val;
144}
145//====================================================================
160short updateMCCollisions(const CollisionCursor& cursor,
161 int bcId,
162 float time,
163 o2::dataformats::MCEventHeader const& header,
164 short generatorId = 0,
165 int sourceId = 0,
166 unsigned int mask = 0xFFFFFFF0);
167//--------------------------------------------------------------------
181bool updateHepMCXSection(const XSectionCursor& cursor,
182 int collisionID,
183 short generatorID,
184 o2::dataformats::MCEventHeader const& header,
186//--------------------------------------------------------------------
201bool updateHepMCPdfInfo(const PdfInfoCursor& cursor,
202 int collisionID,
203 short generatorID,
204 o2::dataformats::MCEventHeader const& header,
206//--------------------------------------------------------------------
220bool updateHepMCHeavyIon(const HeavyIonCursor& cursor,
221 int collisionID,
222 short generatorID,
223 o2::dataformats::MCEventHeader const& header,
225//--------------------------------------------------------------------
229using TrackToIndex = std::unordered_map<int, int>;
230//--------------------------------------------------------------------
244void updateParticle(const ParticleCursor& cursor,
245 const TrackToIndex& toStore,
246 int collisionID,
247 o2::MCTrack const& track,
248 std::vector<MCTrack> const& tracks,
249 uint8_t flags = 0,
250 uint32_t weightMask = 0xFFFFFFF0,
251 uint32_t momentumMask = 0xFFFFFFF0,
252 uint32_t positionMask = 0xFFFFFFF0);
253//--------------------------------------------------------------------
309uint32_t updateParticles(const ParticleCursor& cursor,
310 int collisionID,
311 std::vector<MCTrack> const& tracks,
312 TrackToIndex& preselect,
313 uint32_t offset = 0,
314 bool filter = false,
315 bool background = false,
316 uint32_t weightMask = 0xFFFFFFF0,
317 uint32_t momentumMask = 0xFFFFFFF0,
318 uint32_t positionMask = 0xFFFFFFF0);
319} // namespace o2::aodmchelpers
320
321#endif /* O2_AODMCPRODUCER_HELPERS */
322// Local Variables:
323// mode: C++
324// End:
int16_t time
Definition RawEventData.h:4
Definition of the MCTrack class.
StringRef key
bool hasInfo(std::string const &key) const
const T & getInfo(std::string const &key, bool &isvalid) const
GLintptr offset
Definition glcorearb.h:660
GLuint GLfloat * val
Definition glcorearb.h:1582
GLbitfield flags
Definition glcorearb.h:1570
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition glcorearb.h:1308
GLint GLuint mask
Definition glcorearb.h:291
TableCursor< aod::HepMCPdfInfos >::type PdfInfoCursor
bool updateHepMCHeavyIon(const HeavyIonCursor &cursor, int collisionID, short generatorID, o2::dataformats::MCEventHeader const &header, HepMCUpdate when=HepMCUpdate::anyKey)
bool hasKeys(o2::dataformats::MCEventHeader const &header, const std::vector< std::string > &keys, bool anyNotall=true)
TableCursor< aod::StoredMcParticles_001 >::type ParticleCursor
std::unordered_map< int, int > TrackToIndex
short updateMCCollisions(const CollisionCursor &cursor, int bcId, float time, o2::dataformats::MCEventHeader const &header, short generatorId=0, int sourceId=0, unsigned int mask=0xFFFFFFF0)
bool updateHepMCPdfInfo(const PdfInfoCursor &cursor, int collisionID, short generatorID, o2::dataformats::MCEventHeader const &header, HepMCUpdate when=HepMCUpdate::anyKey)
TableCursor< aod::HepMCHeavyIons >::type HeavyIonCursor
TableCursor< aod::HepMCXSections >::type XSectionCursor
uint32_t updateParticles(const ParticleCursor &cursor, int collisionID, std::vector< MCTrack > const &tracks, TrackToIndex &preselect, uint32_t offset=0, bool filter=false, bool background=false, uint32_t weightMask=0xFFFFFFF0, uint32_t momentumMask=0xFFFFFFF0, uint32_t positionMask=0xFFFFFFF0)
TableCursor< aod::McCollisions >::type CollisionCursor
bool updateHepMCXSection(const XSectionCursor &cursor, int collisionID, short generatorID, o2::dataformats::MCEventHeader const &header, HepMCUpdate when=HepMCUpdate::anyKey)
void updateParticle(const ParticleCursor &cursor, const TrackToIndex &toStore, int collisionID, o2::MCTrack const &track, std::vector< MCTrack > const &tracks, uint8_t flags=0, uint32_t weightMask=0xFFFFFFF0, uint32_t momentumMask=0xFFFFFFF0, uint32_t positionMask=0xFFFFFFF0)
const T getEventInfo(o2::dataformats::MCEventHeader const &header, std::string const &key, T const &def)
memfun_type< decltype(&F::operator())>::type FFL(F const &func)
decltype(framework::FFL(std::declval< framework::TableBuilder >() .cursor< Table >())) type