File indexing completed on 2025-12-17 09:20:20
0001 #ifndef MBD_MBDRECO_H
0002 #define MBD_MBDRECO_H
0003
0004 #include <fun4all/SubsysReco.h>
0005
0006 #include <array>
0007 #include <memory>
0008 #include <string>
0009
0010 class PHCompositeNode;
0011 class MbdEvent;
0012 class MbdPmtContainer;
0013 class MbdRawContainer;
0014 class MbdVertexMap;
0015 class MbdOut;
0016 class MbdGeom;
0017 class Event;
0018 class CaloPacket;
0019 class CaloPacketContainer;
0020 class Gl1Packet;
0021 class EventHeader;
0022 class TF1;
0023 class TH1;
0024
0025 class MbdReco : public SubsysReco
0026 {
0027 public:
0028 MbdReco(const std::string &name = "MbdReco");
0029
0030 ~MbdReco() override = default;
0031
0032 int Init(PHCompositeNode * ) override;
0033 int InitRun(PHCompositeNode *topNode) override;
0034 int process_event(PHCompositeNode *topNode) override;
0035 int End(PHCompositeNode *topNode) override;
0036
0037 void DoOnlyFits() { _fitsonly = 1; }
0038 void SetCalPass(const int calpass) { _calpass = calpass; }
0039 void SetProcChargeCh(const bool s) { _always_process_charge = s; }
0040 void SetMbdTrigOnly(const int m) { _mbdonly = m; }
0041
0042 private:
0043 int createNodes(PHCompositeNode *topNode);
0044 int getNodes(PHCompositeNode *topNode);
0045 int _simflag{0};
0046 int _calpass{0};
0047 bool _always_process_charge{0};
0048 int _mbdonly{0};
0049 int _rawdstflag{0};
0050 int _fitsonly{0};
0051
0052 float m_tres = 0.05;
0053 std::unique_ptr<TF1> m_gaussian = nullptr;
0054
0055 std::unique_ptr<MbdEvent> m_mbdevent{nullptr};
0056 Event *m_event{nullptr};
0057 std::array<CaloPacket *,2>m_mbdpacket{nullptr};
0058 CaloPacketContainer *m_mbdpackets{nullptr};
0059 Gl1Packet *m_gl1packet{nullptr};
0060 MbdOut *m_mbdout{nullptr};
0061 MbdPmtContainer *m_mbdpmts{nullptr};
0062 MbdRawContainer *m_mbdraws{nullptr};
0063 MbdGeom *m_mbdgeom{nullptr};
0064 MbdVertexMap *m_mbdvtxmap{nullptr};
0065 EventHeader *m_evtheader{nullptr};
0066 };
0067
0068 #endif