Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:22

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef PROTOTYPE4_RAWTOWERPROTOTYPE4_H
0004 #define PROTOTYPE4_RAWTOWERPROTOTYPE4_H
0005 
0006 #include "PROTOTYPE4_FEM.h"
0007 
0008 #include <calobase/RawTower.h>
0009 #include <calobase/RawTowerDefs.h>
0010 
0011 #include <iostream>  // for cout, ostream
0012 
0013 class RawTower_Prototype4 : public RawTower
0014 {
0015  public:
0016   RawTower_Prototype4();
0017   RawTower_Prototype4(const RawTower &tower);
0018   RawTower_Prototype4(RawTowerDefs::keytype id);
0019   RawTower_Prototype4(const unsigned int icol, const unsigned int irow);
0020   RawTower_Prototype4(const RawTowerDefs::CalorimeterId caloid,
0021                       const unsigned int ieta, const unsigned int iphi);
0022   virtual ~RawTower_Prototype4() {}
0023 
0024   void Reset() override;
0025   int isValid() const override;
0026   void identify(std::ostream &os = std::cout) const override;
0027 
0028   void set_id(RawTowerDefs::keytype id) override { towerid = id; }
0029   RawTowerDefs::keytype get_id() const override { return towerid; }
0030   int get_bineta() const override { return RawTowerDefs::decode_index1(towerid); }
0031   int get_binphi() const override { return RawTowerDefs::decode_index2(towerid); }
0032   int get_column() const override { return RawTowerDefs::decode_index1(towerid); }
0033   int get_row() const override { return RawTowerDefs::decode_index2(towerid); }
0034   double get_energy() const override { return energy; }
0035   void set_energy(const double e) override { energy = e; }
0036   float get_time() const override { return time; }
0037   void set_time(const float t) override { time = t; }
0038   //---Raw data
0039   //access------------------------------------------------------------
0040 
0041   enum
0042   {
0043     NSAMPLES = PROTOTYPE4_FEM::NSAMPLES
0044   };
0045   typedef float signal_type;
0046 
0047   void set_signal_samples(int i, signal_type sig);
0048   signal_type get_signal_samples(int i) const;
0049   void set_HBD_channel_number(int i) { HBD_channel = i; }
0050   int get_HBD_channel_number() const { return HBD_channel; }
0051 
0052   //---Fits------------------------------------------------------------
0053 
0054   double get_energy_peak_sample(int verbosity = 0);
0055   double get_energy_power_law_exp(int verbosity = 0);
0056   double get_energy_power_law_double_exp(int verbosity = 0);
0057 
0058  protected:
0059   RawTowerDefs::keytype towerid;
0060 
0061   //! energy assigned to the tower. Depending on stage of process and DST node
0062   //! name, it could be energy deposition, light yield or calibrated energies
0063   double energy;
0064   //! Time stamp assigned to the tower. Depending on the tower maker, it could
0065   //! be rise time or peak time.
0066   float time;
0067 
0068   // Signal samples from DATA
0069   signal_type signal_samples[NSAMPLES];  // Low Gain
0070   int HBD_channel;
0071 
0072   ClassDefOverride(RawTower_Prototype4, 3)
0073 };
0074 
0075 #endif