File indexing completed on 2025-08-06 08:17:30
0001
0002
0003 #ifndef CALOTOWEREMBED_H
0004 #define CALOTOWEREMBED_H
0005
0006 #include <calobase/RawTowerGeom.h>
0007 #include <calobase/RawTowerGeomContainer.h>
0008 #include <calobase/TowerInfoContainer.h> // for TowerInfoContainer, TowerIn...
0009 #include <caloreco/CaloTowerDefs.h>
0010
0011 #include <fun4all/SubsysReco.h>
0012
0013 #include <TFile.h>
0014 #include <TTree.h>
0015
0016 #include <cassert>
0017 #include <iostream>
0018 #include <string>
0019
0020 class PHCompositeNode;
0021 class RawTowerGeomContainer;
0022
0023 class caloTowerEmbed : public SubsysReco
0024 {
0025 public:
0026 caloTowerEmbed(const std::string &name = "caloTowerEmbed");
0027
0028 ~caloTowerEmbed() override;
0029
0030 int InitRun(PHCompositeNode *topNode) override;
0031 int process_event(PHCompositeNode *topNode) override;
0032 int End(PHCompositeNode *topNode) override;
0033 void CreateNodeTree(PHCompositeNode *topNode);
0034
0035 void set_detector_type(CaloTowerDefs::DetectorSystem dettype)
0036 {
0037 m_dettype = dettype;
0038 return;
0039 }
0040
0041 void set_inputNodePrefix(const std::string &name)
0042 {
0043 m_inputNodePrefix = name;
0044 return;
0045 }
0046
0047 void set_useRetower(bool a)
0048 {
0049 m_useRetower = a;
0050 return;
0051 }
0052
0053 void set_removeBadTowers(bool a)
0054 {
0055 m_removeBadTowers = a;
0056 return;
0057 }
0058 void set_nsamples(int _nsamples)
0059 {
0060 m_nsamples = _nsamples;
0061 return;
0062 }
0063 void set_embedwaveform(bool embed = true)
0064 {
0065 m_embedwaveform = embed;
0066 return;
0067 }
0068
0069 private:
0070 TowerInfoContainer *_data_towers{nullptr};
0071 TowerInfoContainer *_sim_towers{nullptr};
0072 TowerInfoContainer *m_PedestalContainer{nullptr};
0073
0074 RawTowerGeomContainer *tower_geom{nullptr};
0075
0076 bool m_useRetower{false};
0077 bool m_removeBadTowers{false};
0078 bool m_embedwaveform{false};
0079
0080 CaloTowerDefs::DetectorSystem m_dettype{CaloTowerDefs::DETECTOR_INVALID};
0081
0082 std::string m_detector;
0083 std::string m_inputNodePrefix{"TOWERINFO_CALIB_"};
0084 std::string m_waveformNodePrefix{"WAVEFORM_"};
0085
0086 int m_eventNumber{-1};
0087 int m_nsamples{31};
0088 int m_datasamples{12};
0089 float m_pedestal_scale{1.};
0090 };
0091
0092 #endif