File indexing completed on 2025-08-05 08:15:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef TPCDATASTREAMEMULATOR_H_
0012 #define TPCDATASTREAMEMULATOR_H_
0013
0014 #include <fun4all/SubsysReco.h>
0015
0016 #include <vector>
0017
0018 class PHCompositeNode;
0019 class Fun4AllHistoManager;
0020 class SvtxEvalStack;
0021 class TH1;
0022 class TH2;
0023 namespace H5
0024 {
0025 class H5File;
0026 }
0027
0028
0029
0030
0031 class TPCMLDataInterface : public SubsysReco
0032 {
0033 public:
0034 TPCMLDataInterface(
0035 unsigned int minLayer,
0036 unsigned int m_maxLayer,
0037 const std::string &outputfilenamebase = "TPCMLDataInterface");
0038 virtual ~TPCMLDataInterface();
0039
0040 int Init(PHCompositeNode *topNode);
0041 int InitRun(PHCompositeNode *topNode);
0042 int process_event(PHCompositeNode *topNode);
0043 int End(PHCompositeNode *topNode);
0044
0045 void maxLayer(int maxLayer)
0046 {
0047 m_maxLayer = maxLayer;
0048 }
0049
0050 void minLayer(int minLayer)
0051 {
0052 m_minLayer = minLayer;
0053 }
0054
0055 void outputFileNameBase(const std::string &outputFileNameBase)
0056 {
0057 m_outputFileNameBase = outputFileNameBase;
0058 }
0059
0060 void saveDataStreamFile(bool saveDataStreamFile)
0061 {
0062 m_saveDataStreamFile = saveDataStreamFile;
0063 }
0064
0065 double getEtaAcceptanceCut() const
0066 {
0067 return m_etaAcceptanceCut;
0068 }
0069
0070 void setEtaAcceptanceCut(double etaAcceptanceCut)
0071 {
0072 m_etaAcceptanceCut = etaAcceptanceCut;
0073 }
0074
0075 double getVertexZAcceptanceCut() const
0076 {
0077 return m_vertexZAcceptanceCut;
0078 }
0079
0080 void setVertexZAcceptanceCut(double vertexZAcceptanceCut)
0081 {
0082 m_vertexZAcceptanceCut = vertexZAcceptanceCut;
0083 }
0084
0085
0086 private:
0087 #ifndef __CINT__
0088
0089 Fun4AllHistoManager *getHistoManager();
0090 int writeWavelet(int layer, int side, int phibin, int hittime, const std::vector<unsigned int> &wavelet);
0091
0092 SvtxEvalStack *m_svtxevalstack;
0093
0094 bool m_strict;
0095 bool m_saveDataStreamFile;
0096
0097 std::string m_outputFileNameBase;
0098 H5::H5File *m_h5File;
0099
0100 int m_minLayer;
0101 int m_maxLayer;
0102
0103 int m_evtCounter;
0104
0105 double m_vertexZAcceptanceCut;
0106 double m_etaAcceptanceCut;
0107 double m_momentumCut;
0108 bool m_use_initial_vertex = true;
0109 bool m_use_genfit_vertex = false;
0110
0111
0112
0113 TH1 *m_hDataSize;
0114 TH1 *m_hWavelet;
0115 TH1 *m_hNChEta;
0116 TH2 *m_hLayerWaveletSize;
0117 TH2 *m_hLayerHit;
0118 TH2 *m_hLayerZBinHit;
0119 TH2 *m_hLayerZBinADC;
0120 TH2 *m_hLayerDataSize;
0121 TH2 *m_hLayerSumHit;
0122 TH2 *m_hLayerSumDataSize;
0123
0124 #endif
0125 };
0126
0127 #endif