File indexing completed on 2025-08-06 08:17:54
0001 #ifndef MVTX_MVTXCOMBINEDRAWDATADECODER_H
0002 #define MVTX_MVTXCOMBINEDRAWDATADECODER_H
0003
0004
0005
0006
0007
0008
0009
0010 #include <fun4all/SubsysReco.h>
0011
0012 #include <trackbase/TrkrDefs.h>
0013
0014 #include <map>
0015 #include <memory>
0016 #include <string>
0017 #include <vector>
0018
0019 #include "MvtxPixelMask.h"
0020
0021 class MvtxEventInfo;
0022 class MvtxRawEvtHeader;
0023 class MvtxRawHitContainer;
0024 class MvtxRawHit;
0025 class PHCompositeNode;
0026 class TrkrHitSetContainer;
0027 class TrkrHitSetContMvtxHelper;
0028
0029
0030 class MvtxCombinedRawDataDecoder : public SubsysReco
0031 {
0032 public:
0033
0034 explicit MvtxCombinedRawDataDecoder(const std::string& name = "MvtxCombinedRawDataDecoder");
0035
0036
0037 int Init(PHCompositeNode* ) override;
0038
0039
0040 int InitRun(PHCompositeNode* ) override;
0041
0042
0043 int process_event(PHCompositeNode* ) override;
0044
0045
0046 int End(PHCompositeNode* ) override;
0047
0048 void useRawHitNodeName(const std::string& name) { m_MvtxRawHitNodeName = name; }
0049
0050 void useRawEvtHeaderNodeName(const std::string& name) { m_MvtxRawEvtHeaderNodeName = name; }
0051
0052 void doOfflineMasking(bool do_masking) { m_doOfflineMasking = do_masking; }
0053
0054 void runMvtxTriggered(bool b = true) { m_mvtx_is_triggered = b; }
0055
0056 void SetReadStrWidthFromDB(const bool val) { m_readStrWidthFromDB = val; }
0057 bool GetReadStrWidthFromDB() const { return m_readStrWidthFromDB; }
0058 void SetStrobeWidth(const float val) { m_strobeWidth = val; }
0059 float GetStrobeWidth() const { return m_strobeWidth; }
0060
0061 private:
0062
0063 void CreateNodes(PHCompositeNode*);
0064 void GetNodes(PHCompositeNode*);
0065
0066 uint64_t gl1rawhitbco = 0;
0067
0068 TrkrHitSetContainer* hit_set_container = nullptr;
0069 TrkrHitSetContMvtxHelper* mvtx_hit_set_helper = nullptr;
0070 MvtxEventInfo* mvtx_event_header = nullptr;
0071 MvtxRawEvtHeader* mvtx_raw_event_header = nullptr;
0072 MvtxRawHitContainer* mvtx_raw_hit_container = nullptr;
0073 MvtxRawHit* mvtx_rawhit = nullptr;
0074
0075 std::string m_MvtxRawHitNodeName = "MVTXRAWHIT";
0076 std::string m_MvtxRawEvtHeaderNodeName = "MVTXRAWEVTHEADER";
0077
0078 bool m_readStrWidthFromDB = true;
0079 float m_strobeWidth = 89.;
0080
0081
0082 bool m_doOfflineMasking{false};
0083 MvtxPixelMask* m_hot_pixel_mask{nullptr};
0084
0085 bool m_mvtx_is_triggered{false};
0086 };
0087
0088 #endif