Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef PROTOTYPE4_CALOCALIBRATION_H
0004 #define PROTOTYPE4_CALOCALIBRATION_H
0005 
0006 //* Unpacks raw HCAL PRDF files *//
0007 // Abhisek Sen
0008 
0009 #include <fun4all/SubsysReco.h>
0010 
0011 #include <phparameter/PHParameters.h>
0012 
0013 #include <string>
0014 
0015 class PHCompositeNode;
0016 class RawTowerContainer;
0017 
0018 class CaloCalibration : public SubsysReco
0019 {
0020  public:
0021   CaloCalibration(const std::string &name);
0022 
0023   int InitRun(PHCompositeNode *topNode);
0024 
0025   int process_event(PHCompositeNode *topNode);
0026 
0027   void CreateNodeTree(PHCompositeNode *topNode);
0028 
0029   std::string get_calib_tower_node_prefix() const
0030   {
0031     return _calib_tower_node_prefix;
0032   }
0033 
0034   void set_calib_tower_node_prefix(const std::string &calibTowerNodePrefix)
0035   {
0036     _calib_tower_node_prefix = calibTowerNodePrefix;
0037   }
0038 
0039   std::string get_raw_tower_node_prefix() const
0040   {
0041     return _raw_tower_node_prefix;
0042   }
0043 
0044   void set_raw_tower_node_prefix(const std::string &rawTowerNodePrefix)
0045   {
0046     _raw_tower_node_prefix = rawTowerNodePrefix;
0047   }
0048 
0049   //! Get the parameters for readonly
0050   const PHParameters &GetCalibrationParameters() const { return _calib_params; }
0051 
0052   //! Get the parameters for update. Useful fields are listed in
0053   //! SetDefaultParameters();
0054   PHParameters &GetCalibrationParameters() { return _calib_params; }
0055 
0056   //! Overwrite the parameter. Useful fields are listed in
0057   //! SetDefaultParameters();
0058   void SetCalibrationParameters(const PHParameters &calib_params)
0059   {
0060     _calib_params = calib_params;
0061   }
0062 
0063   enum FitMethodType
0064   {
0065     //! single power-low-exp fit, PROTOTYPE4_FEM::SampleFit_PowerLawExp()
0066     kPowerLawExp,
0067 
0068     //! power-low-double-exp fit, PROTOTYPE4_FEM::SampleFit_PowerLawDoubleExp
0069     kPowerLawDoubleExp,
0070 
0071     //! power-low-double-exp fit, PROTOTYPE4_FEM::SampleFit_PowerLawDoubleExp,
0072     //! and constraining all tower take identical shape
0073     kPowerLawDoubleExpWithGlobalFitConstraint,
0074 
0075     //! just use the peak sample, PROTOTYPE4_FEM::SampleFit_PeakSample()
0076     kPeakSample
0077 
0078   };
0079 
0080   void SetFitType(FitMethodType t) { _fit_type = t; }
0081 
0082  private:
0083   RawTowerContainer *_calib_towers;
0084   RawTowerContainer *_raw_towers;
0085 
0086   std::string detector;
0087   std::string RawTowerNodeName;
0088   std::string CaliTowerNodeName;
0089 
0090   std::string _calib_tower_node_prefix;
0091   std::string _raw_tower_node_prefix;
0092 
0093   PHParameters _calib_params;
0094 
0095   FitMethodType _fit_type;
0096 
0097   //! load the default parameter to param
0098   void SetDefaultParameters(PHParameters &param);
0099 };
0100 
0101 #endif