12#ifndef ALICEO2_TOF_DIGITIZER_H_
13#define ALICEO2_TOF_DIGITIZER_H_
19#include "TOFSimulation/Detector.h"
39 int process(
const std::vector<HitType>* hits, std::vector<Digit>*
digits);
45 mMCTruthOutputContainer = truthcontainer;
48 std::vector<o2::dataformats::MCTruthContainer<o2::MCCompLabel>>*
getMCTruthPerTimeFrame() {
return &mMCTruthOutputContainerPerTimeFrame; }
66 Int_t
getXshift(Int_t idigit)
const {
return mXLastShift[idigit]; }
67 Int_t
getZshift(Int_t idigit)
const {
return mZLastShift[idigit]; }
72 void test(
const char* geo =
"");
73 void testFromHits(
const char* geo =
"",
const char* hits =
"AliceO2_TGeant3.tof.mc_10_event.root");
121 std::vector<o2::dataformats::MCTruthContainer<o2::MCCompLabel>> mMCTruthOutputContainerPerTimeFrame;
130 std::vector<int> mFutureIevent;
131 std::vector<int> mFutureIsource;
132 std::vector<int> mFutureItrackID;
136 CalibApi* mCalibApi =
nullptr;
138 void fillDigitsInStrip(std::vector<Strip>* strips,
o2::dataformats::MCTruthContainer<o2::tof::MCLabel>* mcTruthContainer,
int channel,
int tdc,
int tot, uint64_t nbc, UInt_t istrip, Int_t trackID, Int_t eventID, Int_t sourceID,
float geanttime = 0,
double t0 = 0.0);
140 Int_t processHit(
const HitType& hit, Double_t event_time);
142 Int_t trackID,
float geanttime = 0,
double t0 = 0.0);
144 void checkIfReuseFutureDigits();
147 float mTimeLastHit[10];
148 float mTotLastHit[10];
149 Int_t mXLastShift[10];
150 Int_t mZLastShift[10];
Class to use TOF calibration (decalibration, calibration)
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
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 Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char Directory with events to Events directory is and not inside events Show standalone event Run event generator maximum time bin of continuous for triggered for automatic continuous for automatic continuous triggered uint64_t
Definition of a container to keep Monte Carlo truth external to simulation objects.
void setResolution(float val)
Float_t getEffX(Float_t x)
void setEffCenter(float val)
void flushOutputContainer(std::vector< Digit > &digits)
Double_t getShowerTimeSmeared(Double_t time, Float_t charge)
Int_t getXshift(Int_t idigit) const
void fillOutputContainer(std::vector< Digit > &digits)
Float_t getEffZ(Float_t z)
void setEffBoundary2(float val)
void runFullTestExample(const char *geo="")
void setMCTruthContainer(o2::dataformats::MCTruthContainer< o2::MCCompLabel > *truthcontainer)
void testFromHits(const char *geo="", const char *hits="AliceO2_TGeant3.tof.mc_10_event.root")
void setEffBoundary3(float val)
void setEffBoundary1(float val)
std::vector< o2::dataformats::MCTruthContainer< o2::MCCompLabel > > * getMCTruthPerTimeFrame()
Bool_t isFired(Float_t x, Float_t z, Float_t charge)
Double_t getDigitTimeSmeared(Double_t time, Float_t x, Float_t z, Float_t charge)
uint64_t getReadoutWindow(double timeNS) const
Float_t getTotLastHit(Int_t idigit) const
Float_t getCharge(Float_t eDep)
Float_t getTimeLastHit(Int_t idigit) const
Int_t getZshift(Int_t idigit) const
void setCalibApi(CalibApi *calibApi)
void setEventID(Int_t id)
Float_t getFractionOfCharge(Float_t x, Float_t z)
static constexpr Double_t READOUTWINDOW_INV
static constexpr Double_t BC_TIME
static constexpr Int_t OVERLAP_IN_BC
static const int MAXWINDOWS
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t0
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
FIXME: do not use data model tables.
std::vector< Digit > digits