Project
Loading...
Searching...
No Matches
AODToHepMC.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
13
14#ifndef ALICEO2_EVENTGEN_AODTOHEPMC_H_
15#define ALICEO2_EVENTGEN_AODTOHEPMC_H_
19#include <HepMC3/GenEvent.h>
20#include <HepMC3/GenParticle.h>
21#include <HepMC3/GenVertex.h>
22#include <HepMC3/GenPdfInfo.h>
23#include <HepMC3/GenHeavyIon.h>
24#include <HepMC3/GenCrossSection.h>
25#include <HepMC3/WriterAscii.h>
26#include <fstream>
27#include <list>
28
29namespace o2
30{
31namespace eventgen
32{
260 struct {
263 std::string dump{""};
267 bool onlyGen{false};
269 bool useTree{false};
271 int precision{8};
273 bool recenter{false};
286 using Track = typename Tracks::iterator;
288 using XSections = o2::aod::HepMCXSections;
291 using PdfInfos = o2::aod::HepMCPdfInfos;
293 using HeavyIons = o2::aod::HepMCHeavyIons;
295 using XSection = typename XSections::iterator;
298 using PdfInfo = typename PdfInfos::iterator;
300 using HeavyIon = typename HeavyIons::iterator;
307 using FourVector = HepMC3::FourVector;
309 using ParticlePtr = HepMC3::GenParticlePtr;
311 using VertexPtr = HepMC3::GenVertexPtr;
313 using Event = HepMC3::GenEvent;
315 using HeavyIonPtr = HepMC3::GenHeavyIonPtr;
317 using CrossSectionPtr = HepMC3::GenCrossSectionPtr;
320 using PdfInfoPtr = HepMC3::GenPdfInfoPtr;
322 using ParticleMap = std::unordered_map<long, ParticlePtr>;
324 using ParticleVector = std::vector<ParticlePtr>;
326 using ParticleList = std::list<ParticlePtr>;
328 using VertexVector = std::vector<VertexPtr>;
330 using VertexList = std::list<VertexPtr>;
332 using WriterAscii = HepMC3::WriterAscii;
334 using WriterAsciiPtr = std::shared_ptr<WriterAscii>;
345 HeavyIonPtr mIon = nullptr;
347 PdfInfoPtr mPdf = nullptr;
369 int mEventNo = 0;
371 int mLastBC = -1;
373 bool mOnlyGen = false;
375 bool mUseTree = true;
377 std::ofstream* mOutput = nullptr;
379 int mPrecision = 16;
381 bool mRecenter = false;
392 virtual void init();
397 virtual void startEvent();
404 virtual void process(Header const& collision, Tracks const& tracks);
413 virtual void process(Header const& collision,
414 XSections const& xsections,
415 PdfInfos const& pdfs,
416 HeavyIons const& heavyions);
421 virtual void endEvent();
426 virtual bool postRun()
427 {
428 enableDump("");
429 return true;
430 }
432 protected:
444 virtual void makeEvent(Header const& collision,
445 Tracks const& tracks);
451 virtual void makeHeader(Header const& header);
456 virtual void makeXSection(XSections const& xsection);
461 virtual void makePdfInfo(PdfInfos const& pdf);
466 virtual void makeHeavyIon(HeavyIons const& heavyion,
467 Header const& header);
475 virtual void makeBeams(Header const& header, const VertexPtr ip) {}
484 virtual void makeParticles(Tracks const& tracks);
491 virtual ParticlePtr getParticle(Track const& ref) const;
496 virtual bool isIgnored(Track const& track) const;
524 virtual ParticlePtr makeParticleRecursive(Track const& track,
525 Tracks const& tracks,
526 bool force = false);
538 virtual ParticlePtr makeParticle(const Track& track,
539 Int_t& motherStatus,
540 bool force) const;
548 virtual VertexPtr makeVertex(const Track& track);
553 virtual void fleshOut(Tracks const& tracks);
560 virtual void fleshOutParticle(Track const& track, Tracks const& tracks);
568 virtual void recenter(Header const& collision);
575 void enableDump(const std::string& dump);
576
577};
579} // namespace eventgen
580
581namespace framework
582{
585 {
586 static AODToHepMCPostRun inst{};
587 return inst;
588 }
589
591 : ptr{ptr_}
592 {
593 }
594
596 {
597 if (ptr != nullptr) {
598 ptr->postRun();
599 }
600 }
601
603};
604} // namespace framework
605} // namespace o2
606
607#endif /* ALICEO2_EVENTGEN_GENERATOR_H_ */
608// Local Variables:
609// mode: C++
610// End:
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to process
std::vector< o2::its::TrackITS > tracks
GLint ref
Definition glcorearb.h:291
GLenum GLint GLint * precision
Definition glcorearb.h:1899
McParticles_001 McParticles
McCollisions_001 McCollisions
McCollisions::iterator McCollision
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
ParticleVector mBeams
Cache of vertices.
Definition AODToHepMC.h:358
virtual void makePdfInfo(PdfInfos const &pdf)
CrossSectionPtr mCrossSec
Definition AODToHepMC.h:343
virtual VertexPtr makeVertex(const Track &track)
HepMC3::GenPdfInfoPtr PdfInfoPtr
Definition AODToHepMC.h:320
HepMC3::GenCrossSectionPtr CrossSectionPtr
Definition AODToHepMC.h:317
std::list< VertexPtr > VertexList
Definition AODToHepMC.h:330
std::shared_ptr< WriterAscii > WriterAsciiPtr
Definition AODToHepMC.h:334
virtual void makeBeams(Header const &header, const VertexPtr ip)
Definition AODToHepMC.h:475
o2::aod::McCollisions Headers
Definition AODToHepMC.h:280
struct o2::eventgen::AODToHepMC::@486 configs
virtual void makeXSection(XSections const &xsection)
virtual void makeHeader(Header const &header)
virtual void recenter(Header const &collision)
std::list< ParticlePtr > ParticleList
Definition AODToHepMC.h:326
WriterAsciiPtr mWriter
Definition AODToHepMC.h:367
virtual ParticlePtr makeParticleRecursive(Track const &track, Tracks const &tracks, bool force=false)
virtual void makeHeavyIon(HeavyIons const &heavyion, Header const &header)
HepMC3::FourVector FourVector
Definition AODToHepMC.h:307
virtual void fleshOutParticle(Track const &track, Tracks const &tracks)
HepMC3::GenEvent Event
Definition AODToHepMC.h:313
HepMC3::GenParticlePtr ParticlePtr
Definition AODToHepMC.h:309
std::vector< VertexPtr > VertexVector
Definition AODToHepMC.h:328
std::vector< ParticlePtr > ParticleVector
Definition AODToHepMC.h:324
o2::aod::HepMCHeavyIons HeavyIons
Definition AODToHepMC.h:293
o2::aod::HepMCPdfInfos PdfInfos
Definition AODToHepMC.h:291
virtual void makeEvent(Header const &collision, Tracks const &tracks)
virtual void makeParticles(Tracks const &tracks)
typename PdfInfos::iterator PdfInfo
Definition AODToHepMC.h:298
typename HeavyIons::iterator HeavyIon
Definition AODToHepMC.h:300
virtual bool postRun()
Definition AODToHepMC.h:426
o2::aod::McParticles Tracks
Definition AODToHepMC.h:284
void enableDump(const std::string &dump)
virtual bool isIgnored(Track const &track) const
o2::aod::McCollision Header
Definition AODToHepMC.h:282
o2::aod::HepMCXSections XSections
Definition AODToHepMC.h:288
VertexList mVertices
Cache of particles.
Definition AODToHepMC.h:356
HepMC3::GenVertexPtr VertexPtr
Definition AODToHepMC.h:311
virtual void fleshOut(Tracks const &tracks)
virtual ParticlePtr makeParticle(const Track &track, Int_t &motherStatus, bool force) const
std::unordered_map< long, ParticlePtr > ParticleMap
Definition AODToHepMC.h:322
typename Tracks::iterator Track
Definition AODToHepMC.h:286
virtual void startEvent()
std::ofstream * mOutput
Definition AODToHepMC.h:377
HepMC3::WriterAscii WriterAscii
Definition AODToHepMC.h:332
virtual void endEvent()
HepMC3::GenHeavyIonPtr HeavyIonPtr
Definition AODToHepMC.h:315
typename XSections::iterator XSection
Definition AODToHepMC.h:295
ParticleList mOrphans
Cache of beam particles.
Definition AODToHepMC.h:360
virtual ParticlePtr getParticle(Track const &ref) const
static AODToHepMCPostRun & instance()
Definition AODToHepMC.h:584
AODToHepMCPostRun(eventgen::AODToHepMC *ptr_=nullptr)
Definition AODToHepMC.h:590
eventgen::AODToHepMC * ptr
Definition AODToHepMC.h:602