PandaRoot
BSEmcWaveformGenerationProcess.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 //----------------------------------------------------------------------
14 // Author List:
15 // Phil Strother Original author
16 // Dima Melnichuk - adaption for PANDA
17 // Philipp Mahlberg - integration in timebased simulation concept
18 //----------------------------------------------------------------------
19 #ifndef BSEMCWAVEFORMGENERATIONPROCESS_HH
20 #define BSEMCWAVEFORMGENERATIONPROCESS_HH
21 
22 #include <string>
23 
24 #include "Rtypes.h"
25 #include "RtypesCore.h"
26 #include "TString.h"
27 
28 #include "PndProcess.h"
29 
30 #include "BSEmcDigiPar.h"
31 
35 class BSEmcDigiPar;
36 class BSEmcMCDeposit;
37 class TBuffer;
38 class TClass;
39 class TMemberInspector;
40 template <class T>
41 class PndContainerI;
42 
58  public:
59  // Constructors
60  BSEmcWaveformGenerationProcess(BSEmcAbsWaveformSimulator *t_simulator = nullptr, Bool_t t_storewaves = kTRUE, Bool_t t_storeData = kTRUE, Bool_t t_timebased = kFALSE);
61  // Destructor
63  virtual void RequestDataContainer(PndContainerRegister *t_register) /*override*/;
64  virtual void GetDataContainer(PndContainerRegister *t_register) /*override*/;
65  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
66  virtual void SetupParameters(const PndParameterRegister *t_parameterRegister) /*override*/;
67  virtual void Process() /*override*/;
68  void AddDepositData(const BSEmcMCDeposit *t_deposit, const Int_t t_depositIndex);
69 
70  void RunTimebased(Bool_t t_timebased = kTRUE) { fActivateBuffering = t_timebased; };
71  void SetStorageOfData(Bool_t t_storeWaves = kTRUE) { fStoreWaves = (t_storeWaves); };
72  void StoreDataClass(Bool_t t_storeData = kTRUE) { fStoreDataClass = t_storeData; };
73 
74  void SetMCDepositBranchName(const TString &t_branchName) { fMCDepositBranchname = t_branchName; }
75  void SetWaveformBranchName(const TString &t_branchName) { fWaveformBranchName = t_branchName; }
76  void SetWaveformDataBranchName(const TString &t_branchName) { fWaveformDataBranchName = t_branchName; }
77  void SetPhotonStatisticParName(const std::string &t_photonStatParName) { fPhotonStatisticParName = t_photonStatParName; }
78 
79  protected:
80  void SetSimulator(BSEmcAbsWaveformSimulator *t_simulator) { fSimulator = t_simulator; }
81  TString fMCDepositBranchname{""};
82  TString fWaveformBranchName{""};
88 
89  Bool_t fStoreWaves{kFALSE};
90  Bool_t fStoreDataClass{kFALSE};
91  Bool_t fActivateBuffering{kFALSE};
92  std::string fPhotonStatisticParName{""};
94  Bool_t fUse_photon_statistic{kFALSE};
96  Double_t fExcessNoiseFactor{0};
97  Double_t fOverlapTime{0};
98 
100 };
101 
102 #endif /*BSEMCWAVEFORMGENERATIONPROCESS_HH*/
void AddDepositData(const BSEmcMCDeposit *t_deposit, const Int_t t_depositIndex)
Base Process class.
Definition: PndProcess.h:36
Base class Process to create waveforms out of BSEmcMCDeposits.
represents the deposited energy of one emc crystal from simulation
void RunTimebased(Bool_t t_timebased=kTRUE)
virtual void GetDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and set the processes container requirements.
virtual void RequestDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and get the processes container requirements.
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.
PndContainerI< BSEmcMCDeposit > * fMCDepositArray
void SetPhotonStatisticParName(const std::string &t_photonStatParName)
void SetStorageOfData(Bool_t t_storeWaves=kTRUE)
Abstract base class for waveform simulator.
virtual void SetDetectorName(const std::string &t_detectorName)
Set the Detector name. Important, as most EmcParameter need to know for which detector they need to b...
buffer for waveforms, used by BSEmcFwEndcapTimebasedWaveforms
virtual void SetupParameters(const PndParameterRegister *t_parameterRegister)
Fetch all parameters from the PndParameterRegister.
void SetMCDepositBranchName(const TString &t_branchName)
void SetWaveformBranchName(const TString &t_branchName)
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
BSEmcWaveformGenerationProcess(BSEmcAbsWaveformSimulator *t_simulator=nullptr, Bool_t t_storewaves=kTRUE, Bool_t t_storeData=kTRUE, Bool_t t_timebased=kFALSE)
void SetWaveformDataBranchName(const TString &t_branchName)
void SetSimulator(BSEmcAbsWaveformSimulator *t_simulator)
Container for runtime parameters that are required for the transformation from BSEmcMCDeposits to BSE...
Definition: BSEmcDigiPar.h:36
ClassDef(BSEmcWaveformGenerationProcess, 2)
void StoreDataClass(Bool_t t_storeData=kTRUE)