Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:09

0001 // $Id: $
0002 
0003 /*!
0004  * \file TPCMLDataInterface.h
0005  * \brief 
0006  * \author Jin Huang <jhuang@bnl.gov>
0007  * \version $Revision:   $
0008  * \date $Date: $
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  * \brief TPCMLDataInterface
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   // histograms
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  // #ifndef __CINT__
0125 };
0126 
0127 #endif /* TPCDATASTREAMEMULATOR_H_ */