Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-19 09:24:41

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef PROTOTYPE2_RAWTOWERPROTOTYPE2_H
0004 #define PROTOTYPE2_RAWTOWERPROTOTYPE2_H
0005 
0006 #include "PROTOTYPE2_FEM.h"
0007 
0008 #include <calobase/RawTower.h>
0009 #include <calobase/RawTowerDefs.h>
0010 
0011 #include <iostream>  // for cout, ostream
0012 
0013 class RawTower_Prototype2 : public RawTower
0014 {
0015  public:
0016   RawTower_Prototype2();
0017   RawTower_Prototype2(const RawTower &tower);
0018   RawTower_Prototype2(RawTowerDefs::keytype id);
0019   RawTower_Prototype2(const unsigned int icol, const unsigned int irow);
0020   RawTower_Prototype2(const RawTowerDefs::CalorimeterId caloid,
0021                       const unsigned int ieta, const unsigned int iphi);
0022   virtual ~RawTower_Prototype2() {}
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 
0039   //---Raw data
0040   // access------------------------------------------------------------
0041 
0042   enum
0043   {
0044     NSAMPLES = PROTOTYPE2_FEM::NSAMPLES
0045   };
0046   typedef float signal_type;
0047 
0048   void set_signal_samples(int i, signal_type sig);
0049   signal_type get_signal_samples(int i) const;
0050   void set_HBD_channel_number(int i) { HBD_channel = i; }
0051   int get_HBD_channel_number() const { return HBD_channel; }
0052 
0053   //---Fits------------------------------------------------------------
0054 
0055   double get_energy_power_law_exp(int verbosity = 0);
0056 
0057  protected:
0058   RawTowerDefs::keytype towerid;
0059 
0060   //! energy assigned to the tower. Depending on stage of process and DST node
0061   //! name, it could be energy deposition, light yield or calibrated energies
0062   double energy;
0063   //! Time stamp assigned to the tower. Depending on the tower maker, it could
0064   //! be rise time or peak time.
0065   float time;
0066 
0067   // Signal samples from DATA
0068   signal_type signal_samples[NSAMPLES];  // Low Gain
0069   int HBD_channel;
0070 
0071   ClassDefOverride(RawTower_Prototype2, 3)
0072 };
0073 
0074 #endif