Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:54

0001 #ifndef MVTX_MVTXCOMBINEDRAWDATADECODER_H
0002 #define MVTX_MVTXCOMBINEDRAWDATADECODER_H
0003 
0004 /*!
0005  * \file MvtxCombinedRawDataDecoder.h
0006  * \author Cameron Dean <cameron.dean@cern.ch>
0007  * \author Jakub Kvapil <jakub.kvapil@cern.ch>
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 /// mvtx raw data decoder
0030 class MvtxCombinedRawDataDecoder : public SubsysReco
0031 {
0032  public:
0033   /// constructor
0034   explicit MvtxCombinedRawDataDecoder(const std::string& name = "MvtxCombinedRawDataDecoder");
0035 
0036   /// global initialization
0037   int Init(PHCompositeNode* /*dummy*/) override;
0038 
0039   /// run initialization
0040   int InitRun(PHCompositeNode* /*dummy*/) override;
0041 
0042   /// event processing
0043   int process_event(PHCompositeNode* /*dummy*/) override;
0044 
0045   /// end of processing
0046   int End(PHCompositeNode* /*dummy*/) 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   // static void removeDuplicates(std::vector<std::pair<uint64_t, uint32_t>>& v);
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.;  //! microseconds
0080 
0081   // mask hot pixels
0082   bool m_doOfflineMasking{false};
0083   MvtxPixelMask* m_hot_pixel_mask{nullptr};
0084 
0085   bool m_mvtx_is_triggered{false};
0086 };
0087 
0088 #endif